天天看点

ZYNQ平台学习--(1)新建工程

打开Vivado软件,在欢迎界面点击 <code>Create New Project</code>,即可新建工程。如图1所示,点击<code>Next</code>。 

ZYNQ平台学习--(1)新建工程

图1 新建工程

输入工程名和工程位置,并勾选<code>Create project subdirectory</code>,然后点击<code>Next</code>,如图2所示。 

ZYNQ平台学习--(1)新建工程

图2 工程设置

选择<code>RTL Project</code>,勾选<code>Do not specify......</code>(这样可以跳过添加源文件的步骤,源文件可以后面再添加),点击<code>Next</code>,如图3所示。 

图3 工程类型

根据自己的开发板选择器件型号,可以直接通过型号进行搜索,例如本项目中使用的芯片型号为<code>xc7z010clg400-1</code>,点击<code>Next</code>,如图4所示。 

ZYNQ平台学习--(1)新建工程

图4 器件选择

点击<code>Finish</code>,如图5所示,项目新建完成。 

ZYNQ平台学习--(1)新建工程

图5 完成

在<code>Flow Navigater</code>窗口中,点击<code>Create Block Design</code>,新建Block并命名,如图6所示。点击<code>OK</code>添加。 

ZYNQ平台学习--(1)新建工程

图6 新建Block

在<code>Diagram</code>窗口中,点击中间的图标添加ARM核,如图7所示。添加<code>ZYNQ7 Processing System</code>。 

ZYNQ平台学习--(1)新建工程

图7 添加ARM

然后点击<code>Run Block Automation</code>,进行I/O连接,在弹出的窗口中,点击<code>OK</code>,如图8所示。 

ZYNQ平台学习--(1)新建工程

图8 自动连线

ARM添加完成,如图9所示。 

ZYNQ平台学习--(1)新建工程

图9 添加完成

在<code>Diagram</code>窗口中,双击ARM核,弹出配置窗口,如图10所示。 

ZYNQ平台学习--(1)新建工程

图10 ARM配置

点击<code>PS-PL Configuration</code>,配置PL与PS之间的AMBA总线。PL与PS之间的总线主要有三种: 

- AXI_ACP接口,是ARM多核架构下定义的一种接口,中文翻译为加速器一致性端口,用来管理DMA之类的不带缓存的AXI外设,PS端是Slave接口。 

- AXI_HP接口,是高性能/带宽的AXI3.0标准的接口,总共有四个,PL模块作为主设备连接。主要用于PL访问PS上的存储器(DDR和On-Chip RAM)。 

- AXI_GP接口,是通用的AXI接口,总共有四个,包括两个32位主设备接口和两个32位从设备接口 

展开<code>AXI Non Secure Enablement</code>和<code>GP Master AXI Interface</code>,勾选<code>M AXI GP0 interface</code>;展开<code>HP Slave AXI Interface</code>,勾选<code>S AXI HP0 interface</code>和<code>S AXI HP2 interface</code>。如图11所示。 

ZYNQ平台学习--(1)新建工程

图11 AXI总线配置

点击<code>MIO Configuration</code>,配置PS的引脚功能。在本项目中,Bank0的电压为3.3V,Bank1的电压为1.8V,如图12所示。 

注:当使用eMMC的时候,SD的CP引脚和WP引脚需要配置EMIO,并连接到低电平上。 

图12 MIO配置

点击<code>Clock Configuration</code>,配置Zynq的时钟,如图13所示。 

注:如出现SD卡识别异常的时候,可以降低SDIO的时钟频率。 

ZYNQ平台学习--(1)新建工程

图13 时钟配置

点击<code>DDR Configuration</code>,根据DDR芯片的要求,配置DDR的时序。如图14所示。 

ZYNQ平台学习--(1)新建工程

图14 DDR配置

点击<code>Interrupts</code>,设置PL到PS的中断,勾选<code>Fabric Interrupts</code>,然后展开<code>PL-PS Interrupt ports</code>,勾选<code>IRQ_F2P[15:0]</code>。如图15所示。 

ZYNQ平台学习--(1)新建工程

图15 中断配置

选择<code>Flow Navigator</code>窗口中的<code>IP Catalog</code>,如图16所示。在IP列表中选择需要使用的IP,添加到<code>Diagram</code>中,并进行配置。 

ZYNQ平台学习--(1)新建工程

图16 IP列表

在Vivado中,IP一般都使用的AXI-Lite总线或AXI-Stream总线,而PS提供的AXI_GP和AXI_HP都是标准AXI4总线,需要使用AXI互联模块进行适配后与其他的IP连接。不过Vivado提供自动连接功能的,当IP添加完成后,点击<code>Run Connection Automation</code>就可以自动连接。如图17所示。 

ZYNQ平台学习--(1)新建工程

图17 AXI总线连接

然后添加需要的IO口,最后连接好的效果如图18所示。 

ZYNQ平台学习--(1)新建工程

图18 连接拓扑图

然后选择<code>Address Editor</code>对各个AXI外设的地址空间进行配置。对每个外设点右键,选择<code>Assign Address</code>,自动给外设分配地址控制。如图19所示。 

ZYNQ平台学习--(1)新建工程

图19 外设地址配置

然后点击<code>Validate Design</code>对整个设计进行检查,如图20所示。如果出现异常,需要查找问题并进行修改,知道检查通过后才能进行下一步。 

ZYNQ平台学习--(1)新建工程

图20 检查

在<code>Block Design</code>下的<code>Source</code>窗口中,对上面新建的Block点右键,选择<code>Generate Output Products...</code>,生成各个IP的代码等文件,如图21所示。在弹出的窗口中,点击<code>Generate</code>。 

图21 IP文件生成

然后再对Block点右键,选择<code>Create HDL Wrapper...</code>,生成顶层模块,如图22所示。在弹出的窗口中,点击<code>Let Vivado manage wrapper and auto-update</code>。 

ZYNQ平台学习--(1)新建工程

图22 生成顶层模块

在<code>Block Design</code>下的<code>Source</code>窗口中,选择<code>Constraints</code>,点右键选择<code>Add Source...</code>,如图23所示。选择<code>Add or create constraints</code>,新建一个约束文件。 

ZYNQ平台学习--(1)新建工程

图23 增加约束

然后在<code>Flow Navigator</code>中,选择<code>Generate Bitstream</code>,来进行编译和综合。如图24所示。 

ZYNQ平台学习--(1)新建工程

图24 生产BIT文件