45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“

摘要

:前面实验都是在PL端进行,PL端开发和FPGA开发流程没什么区别,ZYNQ的主要优势就是FPGA和ARM的合理结合。开始使用ARM,也就是PS,使用串口打印输出Hello World
**FPGA工程师:**负责把vivado工程搭建好,提供好硬件给软件开发人员。
**软件工程师:**在硬件基础上开发应用程序。
ZYNQ芯片分PL端和PS端,PS端的IO分配相对固定,ZYNQ中需要将ARM硬核添加到工程中才能使用。

一、FPGA工程师工作内容

创建一个ps_hello工程
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
点击"Create Block Design",创建一个Block设计,也就是图形化设计,“Design name”默认"design_1"名字尽量短
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
点击"Add IP"快捷图标,搜索"zynq"在搜索的结果列表双击"ZYNQ Processing System",然后双击Block图中的"processing_system7_0"配置相关参数。
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
首先界面是ZYNQ的硬核架构图,图中绿色部分是可配置模块。
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
PS-PL Configuration界面,是进行PS与PL之间接口的配置,主要是AXI接口,可扩展为PL端的AXI接口外设,PL与PS进行数据交互,要按照AXI总线协议进行,赛灵思为我们提供了大量的AXI接口的IP核
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
PS外设配置端,Peripheral I/O Pins,ZYNQ的PS端外设很多都是复用的,相同的引脚标号可以配置成不一样的功能,至于怎么去选择,由原理图和PCB决定,可以通过查看原理图和用户手册。
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
按照如下图进行配置,Bank0原理图中BANK500电压选择“LVCMOS 3.3V”,Bank1就是原理图中的BANK501,电压选择"LVCMOS 3.3V"
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
MIO配置
修改Enet0的电平标准为HSTL1.8VSpeed为fast,如果不修改,网络可能不同。其他部门保持默认。

45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
时钟配置
在“Clock Configuration”选项卡中配置PS时钟输入频率默认是33.333333CPU频率默认是666.666666Mhz,PS还可以给PL提供四路时钟,频率可配置,这里不需要保持默认即可,PS端外设时钟也可以配置,保持默认

45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
DDR配置
在“DDR Configuration”选项卡中可配置PS端ddr参数,AX7010配置的DDR3型号为"MT41J128M16HA-125",AX7020配置DDR3型号为“MT41J256M16 RE125”,DDR3型号并不是板子上DDR3型号,而是参数最接近的型号。Effective DRAM Bus Width选择"32 Bit"
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
点击OK配置结束。

45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
点击“Run Block Automation”,vivado软件会自动完成一些导出端口工作
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“

按照默认点击OK
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
点击OK,看到PS端的管脚,包括DDR还有输入时钟,PS端复位,MIO等。
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
连接FCLK_CLK0到M_AXI_GP0_ACLK,按Ctrl+S保存设计。
PS_PORB为PS端上电复位信号,不能用于PL端复位,不要将PL端的复位绑定到这个引脚上
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
选择Block设计,右键“Create HDL Wrapper”,创建一个Verilog文件,为block design生成HDL顶层文件。
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“

选择block设计,右键"Generate Output Products"此步骤会生成block的输出文件,包括IP,例化末班,RTL源文件,XDC约束,第三方综合源文件。
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
点击Generation

生成的输出文件里已包含了PS端引脚分配的XDC文件,在IP Sources,Block Designs->design_1->Synthesis中可以看到处理器的XDC文件,绑定PS端的IO,因此不需要新建XDC文件
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“

FPGA工程师终结步骤

在菜单栏“File->Export->Export Hardware…”导出硬件信息,这里包含PS端的配置信息。
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
弹出的对话点击OK,因为实验只是使用到了PS端的串口,不需要PL端参与,这里没有使能"Include bitstream"
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
此时会多出xx.sdk文件夹,并且有个hdf文件,这个文件包含了Vivado硬件设计的信息,供给软件开发恩怨使用。

45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“

FPGA工程师工作告一段落

软件工程师内容

点击Vivado菜单“File -> Launch SDK”,启动SDK
45_ZYNQ7020开发板SDK_逻辑ARM输出“Hello World“
启动后我们会看到一个文件夹,名字为"system.hdf"文件,这个文件包含了Vivado硬件设计信息,可以给软件开发使用,也可以看到PS端外设的寄存器列表。