-
创建嵌入式工程时,没有用到FPGA,那么就不需要生成bit流。FPGA是作为一个ARM CPU外设存在的。
-
ZYNQ的架构如下图所示,白色底的部分为PS部分,灰色底部分为PL。PS可以通过EMIO(部分外设可以)与PL通信及ZYNQ的引脚,也可以通过MIO连接到ZYNQ的引脚。
-
APU是PS部分的核心,包括双核处理器等
-
central interconnect:内部互联资源
-
Flash memory interface:存储器接口
-
DDR2/3 LPDDR2 Controller:符合和ZYNQ片外的DDR存储芯片进行通信,ARM就是运行在外部存储芯片的。除此之外,存储芯片也可以用来存储数据。我们用的是MT41J256M16 RE-125,位宽是16位。
-
I/O peripherals:包含了一些常用的IP,如uart连接串口设备、gpio连接通用IO
-
MIO:共计54bit,[15:0]属于bank0,[53:16]属于bank1.以uart为例,我们用到的是48,49这两个MIO,具体在设置时选哪个MIO需要和PCB原理图对应。ARM不同bank的电平标准不同,可能是3.3V/1.8V要注意在MIO Configuration中修改。
-
配置好PS之后进行如下操作
-
1.
-
2.一般默认让vivado自动更新顶层
-
3.若不含FPGA则不包含bit流
-
生成的SDK文件夹内容如下,对hdf进行解压
-
启动SDK
-
编译完成后右键点击工程文件,若只有软件则run as 1
-
若有PL则需要先配置PL,点击xilinx-》program FPGA,之后重复上面步骤。
-
在ZYNQ7000中,bank500和501(501/502共计54个)包含PS部分的MIO,502包括PS的DDR控制器
-
MIO(multiuse IO)对应共计54个引脚,但是PS部分的示意图中,IO外设和存储器接口都需要通过MIO和外部发生联系所需引脚数量多于54,因此需要用到功能复用。用户可以通过软件编程控制MIO来确定为哪一个外设提供引脚使用。即MIO(multiuse IO)将来自PS外设和静态存储器访问的多路复用到PS的引脚上,起到了多路复用的作用。
-
GPIO是PS的外设,用于对器件的引脚进行观测(输入)或控制(输出)、中断。软件通过一组**存储映射(memory map)**的寄存器来控制GPIO。一个GPIO也是通过多个一组寄存器控制的。
-
GPIO被分成4bank。如下所示,0123分别有32/22/32/32个寄存器。图中可见MIO有54个引脚。bank01通过MIO连接到PS引脚,bank23通过EMIO(extendable multiuse IO)连接到PL部分(既可以使用PL的引脚又可以和模块通信)。EMIOGPIOI是输入,EMIOGPIOO是输出,EMIOGPIOTN输出使能
-
对于MIO
- GPIO通过DATA_RO寄存器实现input功能(特殊地,DATA_RO可以在输出时反应当前GPIO引脚的状态,向其写入会被忽略)
- 在GPIO被配置为输出时,通过DATA寄存器(32bit)控制输出数值。读该寄存器会返回上次输出的数据。每次操作该寄存器时会同时对32位进行操作。先读32bit,再修改其中的部分位,最后将32bit写回。
- MASK_DATA_M/LSW:改变DATA寄存器中的高/低字部分(一个字16bit),MASK对应bit为高则对应的DATA寄存器bit被屏蔽,无法对其进行修改。
- 通过DIRM(direction mode控制IO作为输入还是输出,由于读IO总能反映引脚状态因此实际上控制的是输出的使能与否,1为输出)和OEN(output enable,1为使能,若为0则该引脚是3state由外围电路控制其状态)实现输出使能。类似32单片机,我们通过库函数完成对寄存器的读写,完成外设的功能。
- MIO[8:7]在系统复位过程中作为Vmode引脚(作为固定的输入),用于配置MIO bank的电压;复位结束后,只能作为输出信号。
- 向GPIO写数据的方法:
-
EMIO是PL和PS的接口,但是也并不是所有PS的外设都可以连接到EMIO,见下表。
-
EMIO和MIO的区别:
- MIO 的输入不受OEN影响,可通过读取DATA_RO的值获取(当DIRM为0表示其为输入)
- EMIO连接到PL,输出不支持3state,不受OEN影响。EMIO输出只取决于DATA、MASK_DATA_LSW,MASK_DATA_MSW。MIRM设置为1,标志着为输出。
- 输出使能OEN也连接到了PL部分,OEN和O可以在PL部分组合起来使用。这一点有助于I2C接口使用,即一个GPIO可以被配置为三态的。
-
对ZYNQ的process system重新配置后需要点击source中的图Generate output products;若先前设置了自动更新例化wrapper,那就不用要手动更新;PS端引脚不需要分配,PL端的需要手动分配;最后重新生成hardware。
-
什么是软核?在ZYNQ中,AXI4-GPIO是一个32位的soft IP(软核,ZYNQ本身不存在这样的电路,是用PL部分逻辑资源搭建的GPIO),提供GPIO到AXI总线。在ZYNQ中PS的外设中也有GPIO,他是硬核的GPIO,有一个实实在在的硬件电路。
-
PL和PS之间存在多种交互方式,并且速度较快,若无法解决高速通信就和ARM+FPGA的设计没有区别了。
- 功能接口:EMIO、中断、DMA、debug等
- 配置接口:AXI_ACP、AXI_HP、AXI_GP