【ZYNQ Ultrascale+ MPSOC FPGA教程】第十八章 Hello World(上)

描述

原创声明:

本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处。

适用于板卡型号:

AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

 

vivado工程目录为“ps_hello/vivado”

从本章开始由FPGA工程师与软件开发工程师协同实现。

前面的实验都是在PL端进行的,可以看到和普通FPGA开发流程没有任何区别,ZYNQ的主要优势就是FPGA和ARM的合理结合,这对开发人员提出了更高的要求。从本章开始,我们开始使用ARM,也就是我们说的PS,本章我们使用一个简单的串口打印来体验一下Vivado Vitis和PS端的特性。

前面的实验都是FPGA工程师应该做的事情,从本章节开始就有了分工,FPGA工程师负责把Vivado工程搭建好,提供好硬件给软件开发人员,软件开发人员便能在这个基础上开发应用程序。做好分工,也有利于项目的推进。如果是软件开发人员想把所有的事情都做了,可能需要花费很多时间和精力去学习FPGA的知识,由软件思维转成硬件思维是个比较痛苦的过程,如果纯粹的学习,又有时间,就另当别论了。专业的人做专业的事,是个很好的选择。

1. 硬件介绍

我们从原理图中可以看到ZYNQ芯片分为PL和PS,PS端的IO分配相对是固定的,不能任意分配,而且不需要在Vivado软件里分配管脚,虽然本实验仅仅使用了PS,但是还要建立一个Vivado工程,用来配置PS管脚。虽然PS端的ARM是硬核,但是在ZYNQ当中也要将ARM硬核添加到工程当中才能使用。前面章节介绍的是代码形式的工程,本章开始介绍ZYNQ的图形化方式建立工程。

FPGA工程师工作内容

下面介绍FPGA工程师负责内容。

2. Vivado工程建立

2.1 创建一个名为“ps_hello”的工程,建立过程不再赘述,参考“PL的”Hello World”LED实验”。

2.2 点击“Create Block Design”,创建一个Block设计,也就是图形化设计

 

MPSoC

 

 

2.3 “Design name”这里不做修改,保持默认“design_1”,这里可以根据需要修改,不过名字要尽量简短,否则在Windows下编译会有问题。

 

MPSoC

 

2.4 点击“Add IP”快捷图标

 

MPSoC

 

2.5 搜索“zynq”,在搜索结果列表中双击”Zynq UltraScale+ MPSoC”

 

MPSoC

 

2.6 双击Block图中的ZYNQ核,配置相关参数

 

MPSoC

 

2.7 首先出现的界面是ZYNQ硬核的架构图,可以很清楚看到它的结构,可以参考ug1085文档,里面有对ZYNQ的详细介绍。图中绿色部分是可配置模块,可以点击进入相应的编辑界面,当然也可以在左侧的窗口进入编辑。下面对各个窗口的功能一一介绍。

 

MPSoC

 

2.7.1 Low Speed配置

1) 在I/O Configuration窗口,配置BANK0~BANK2电压为LVCMOS18,BANK3电压为LVCMOS33。首先配置Low Speed管脚,勾选QSPI,并设置为”Single”模式,Data Mode为”x4“,勾选Feedback Clk

 

MPSoC

 

2) (AXU2CGA开发板没有EMMC,不需要勾选此项)勾选SD 0,配置eMMC。选择MIO13..22,Slot Type选择eMMC,Data Transfer Mode为8Bit,勾选Reset,并选择MIO23。

 

MPSoC

 

3) 勾选SD 1,配置SD卡。选择MIO 46..51,Slot Type选择SD 2.0,Data Transfer Mode选择4Bit,勾选CD,用于检测SD卡插入,选择MIO45

 

MPSoC

 

4) 勾选I2C 1,用于EEPROM等的I2C,选择MIO 32..33

 

MPSoC

 

5) 勾选串口UART 1,选择MIO 42..43

 

MPSoC

 

6) 勾选TTC0~TTC 3

 

MPSoC

 

2.7.2High Speed配置

1) High Speed部分首先配置PS端以太网,勾选GEM 3,选择MIO 64..75,勾选MDIO 3,选择MIO 76..77

 

MPSoC

 

2) 勾选USB 0,选择MIO 52..63,勾选USB 3.0,选择GT Lane1

 

MPSoC

 

USB复位选择MIO 31

 

MPSoC

 

3) 勾选PCIe

 

MPSoC

 

4) 点开Switch To Advanced Mode,选择PCIe Configuration,修改以下几个参数,配置为ROOT模式

 

MPSoC

 

5) 回到I/O Configuration,选择GT Lane0,复位选择MIO 37;勾选Display Port,选择MIO 27..30,Lane Selection选择Dual Higher

 

MPSoC

 

至此,I/O部分配置完毕

2.7.3 时钟配置

1) 在Clock Configuration界面,Input Clocks窗口配置参考时钟,其中PSS_REF_CLOCK为ARM的参考时钟默认为33.333MHz;PCIe选择Ref Clk0,100MHz;Display Port选择Ref Clk2,27MHz;USB0选择Ref Clk1,26MHz。

 

MPSoC

 

2) 在Output Clocks窗口,如果不是IOPLL,改成IOPLL,保持一致,用同样的PLL

 

MPSoC

 

3) PL的时钟保持默认,这是给PL端逻辑提供的时钟。

 

MPSoC

 

4) Full Power部分,其他保持默认,将DP_VIDEO改为VPLL,DP_AUDIO和DP_STC改为RPLL。

 

MPSoC

 

最下面的Interconnect修改如下

 

MPSoC

 

其他部分保持默认,至此,时钟部分配置完成。

2.7.4 DDR配置

在DDR Configuration窗口中,Load DDR Presets选择”DDR4_MICRON_MT40A256M16GE_083E”

 

MPSoC

 

AXU2CGA开发板配置如下:

 

MPSoC

 

AXU2CGB开发板配置如下:

 

MPSoC

 

其它保持默认,点击OK,配置完成,并连接时钟如下:

 

MPSoC

 

1)选择Block设计,右键“Create HDL Wrapper...”,创建一个Verilog或VHDL文件,为block design生成HDL顶层文件。

 

MPSoC

 

2)保持默认选项,点击“OK”

 

MPSoC

 

3)展开设计可以看到PS被当成一个普通IP 来使用。

 

MPSoC

 

4)选择block设计,右键“Generate Output Products”,此步骤会生成block的输出文件,包括IP,例化模板,RTL源文件,XDC约束,第三方综合源文件等等。供后续操作使用。

 

MPSoC

 

5)点击“Generate”

 

MPSoC

 

6)在菜单栏“File -> Export -> Export Hardware...”导出硬件信息,这里就包含了PS端的配置信息。

 

MPSoC

 

7) 在弹出的窗口中选择Fixed,点击Next

 

MPSoC

 

8) 在弹出的对话框中点击“OK”,因为实验仅仅是使用了PS的串口,不需要PL参与,这里就没有使能不选择“Include bitstream”,点击Next

 

MPSoC

 

9) 可修改导出名字以及导出路径,默认是在vivado工程目录下的,这个文件可以根据自己的需要在合适的位置,不一定要放在vivado工程下面,vivado和vitis软件是独立的。在这里我们选择默认不做更改。点击Next

 

MPSoC

 

点击Finish

 

MPSoCMPSoC

 

此时在工程目录下可以看到xsa文件,这个文件就是这个文件就包含了Vivado硬件设计的信息,可交由软件开发人员使用。

 

MPSoC

 

到此为止,FPGA工程师工作告一段落。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分