ZYNQ简介
什么是SOC?
1.若产品的货量小,更新换代的要求高,基于asic的soc就不适合(出货量小,前期流片成本高。而手机是反例)
2.传统的FPGA属于SOPC(硬件可编程),而ZYNQ属于APSoC(软硬件都可编程)
3.左上角以arm为核心的处理系统可进行软件编程,外部FPGA可进行硬件编程
SOPC与APSoC的比较
1.FPGA搭建成的SOPC处理器
优势:可灵活配置实现方式,外围电路
劣势:性能不高
2.ZYNQ搭建成的APSoC处理器
优势:内部集成arm硬核,性能大大提高,可运行完整的Linux操作系统。外部的FPGA可助其实现并行的算法:
(1)对需要高速运算的应用场景,用外部的FPGA做加速运算,加速计算过程
(2)对特殊的外设,使用FPGA进行定制
PL简介
背景知识:
右图中的CLB(可编程逻辑单元)有两个Slice,Slice中包含LUT和一系列的触发器(FF)
1.可编程逻辑单元(CLB)——最核心的结构
2.底层嵌入功能单元:锁相环,DSP,PLL。。。
3.硬核:功能专用,不是所有FPGA都有此结构
PL讲解:
1.IO:包含输入输出,DDR(双倍数据速率),串并转化等等功能
2.CLB:见上
3.DSP48EI:相当于上图的底层嵌入功能单元
4.XADC:属于硬核。用于数模转化
5.GTX触发器:属于硬核
PS简介
一、ALU内部
(1)FPU(浮点单元):可用于做浮点加速
(2)NEON(可实现单指令):多数据功能,专门用于做大量并行运算的算法加速
eg(1.快速傅里叶变换,FFT)
(2.对一个视频图像进行处理,需要对视频里每一个像素点分别做处理。而NEON可以对很多像素点在同一时间做并行处理)
(3)MMU,存储管理单元,实现物理地址到虚拟地址的映射
(4)一级缓存=I-cache(指令缓存)+D-cache(数据缓存)
(5)二级缓存(两个处理器共用),而一级缓存处理器间相互独立
(6)DMA(直接存储访问):可协助处理器做大量数据的搬移
(7)GIC,中档控制器:可帮助cpu接收并管理外部的中断
APU外部:
(1)Gentral interconnect(中央互联),看作一个开关。可实现不同模块,接口之间的通信
拓:其他互联——如OCM互联,PL to Memory互联
所有的互联用于管理并指挥所连接的AXI接口之间的通信
二、接口
左侧的接口通过复用的MIO与外界进行连接(MIO与FPGA的ROB有所区别)
ROB可配置成任何模块的接口,但MIO没有如此高的灵活性
通讯接口:
1.Gige:千兆以太网接口
2.SDIO:SD卡的接口
3.UART:通用异步收发器
4.can:控制器局域网络总线
5.I2C
6.GPIO:通用的IO,可用于控制简单的外设,如LED,按键
3.右侧的Memory Interfaces(动态的存储器接口)
动态存储器:DDR。。
- 左侧的Memory Interfaces(静态的存储器接口)
三.时钟生成模块
接收外部晶震产生的时钟,产生ps内部各个模块需要的时钟(不同的时钟频率由时钟生成模块内部的锁相环生成)
四、ps与pl之间的接口
1.EMIO
2.XADC:PS上的接口。可访问PL上的SADC数模转换硬核
3.DMA:实现PL到PS的直接存储访问
4.IRQ:中断请求,可在PL中产生中断,传入PS中的中断控制器
5.config AES/SHA:FPGA的配置接口。使用ZYNQ时,PS先启动,通过该接口配置Pl,启动pl
6.General-Purpose Ports、ACP、high-performmance=>都属于AXI接口
五、ASI接口(高级可扩展接口)
- General-Purpose Ports:
M开头代表主接口(PS为主机,PL为从机)
S开头代表从接口(PL为主机,PS为从机)
2.ACP:
(1)线直接连接进SCU中,可实现Pl到二级缓存/OCM的访问
(2)它还能实现pl到ps存储器的低延时的访问
(3)PL作主机,PS作从机
3.HP(高性能接口——相对于GP而言):
(1)数据量、数据传输速度都比GP快。
(2)HP的每一个接口上都有FIFOs,可实现数据的缓冲,可实现高带宽的数据访问
(3)PL作主机,PS作从机
(eg.使用摄像头存储摄像头图像时,需要访问ps端的DDR,而摄像头的驱动在PL中。摄像头的数据属于大量的数据,需要PL端通过HP访问PS端的存储器)
AMBA:高级微控制器总线架构
AXI-4 Memory Map:存储映射,用于中低速的储存
(给出读写访问请求时,同时会给出一个地址,该访问即存储映射的访问)
AXI-4 Stream:传输大量数据(只给数据不给地址)
AXI-4 Lite:用作简单的轻量配置,不支持突发传输(给一个地址,同时给很多数据)
ZYNQ核心板资源介绍
底板简介
供电方式:
(尽量少使用2,3方式,zynq功耗高,运行Linux易出错)
1.电源适配器
2.usbc接口
3.通过5v输入输出排针供电
引脚介绍:
*1.USB HOST接口与USB_SLAVE接口都通过usb芯片实现的,所以并不能同时工作在HOST与SLAVE模式,需要USB跳帽进行切换
FPGA开发流程
1.需求分析:明确需要的功能和各个细节
2.系统设计:对系统架构的设计。
Vivado使用
芯片选型
工程内部更改芯片型号
从上到下依次为:
1.添加设计文件
2.官方提供的语言模板
(eg.添加源语的语言模板)
3.调用IP的库
4.(大类)IP集成器
5.创建Block Design工程(嵌入式开发使用)
5.(大类)仿真
6.(大类)综合
7.(大类)实现
8.(大类)生成比特流
拓展:
1.可通过右上角的按钮调整界面
2.查看原理图约束管脚
查看核心板原理图
给系统时钟(PL_GCLK)做管脚约束–右上角的全pdf搜索!很好用