本系列文章我们介绍下Xilinx公司的ZYNQ SOC软件开发,软件设计采用的硬件平台为Xilinx XC7Z035-2FFG676。通过该系列文章我们学习ZYNQ SOC软件开发的基本流程、MIO使用、EMIO使用以及中断资源的使用等相关入门类知识,同时掌握Xilinx Vivado软件调试相关的方法等。作为本系列开篇文章,本文学习以下内容:
ZYNQ-7000 SOC是Xilinx公司推出的FPGA+ARM架构的单芯片片上系统(SOC),它在性价比、性能、成本及可升级性等众多方面相对于单纯的FPGA逻辑或者ARM处理器具有很大优势。目前,市面上ZYNQ SOC的应用也是非常的广泛,如自动驾驶、视听娱乐、机器视觉、蜂窝网通信等等。
ZYNQ SOC的开发流程与以往的纯FPGA逻辑开发有所不同,这一点我们在后续文章专门进行相关的介绍。图1给出了进行ZYNQ SOC开发的流程框图。
图1、ZYNQ SOC开发的流程框图
从图1中我们可以看到:
1.项目任务需求实现功能划分
我们在进行ZYNQ SOC项目开发时,一般先对项目需求展开分析,将设计任务合理划分为硬件设计(Vivado:FPGA逻辑设计)和软件设计(SDK:ARM嵌入式软件设计)。一般来说FPGA逻辑执行速度快,延迟小,实现固定算法、高速接口处理等,软件则实现执行速度慢,复杂控制部分功能。
2.硬件平台设计
利用Vivado开发环境搭建SDK硬件配置环境是ZYNQ SOC设计的第一步。我们在IP Integrator集成环境内实现PS配置,如DDR3、时钟、MIO、PL和PS时钟、中断等;完成各个IP模块信号连接;验证各个IP连接正确性;生成整个硬件平台的顶层HDL文件。
然后,对工程添加管脚约束(不使用FPGA外设管脚,可不添加),经过综合、实现,生成硬件bit流文件。最后将硬件配置信息导入到SDK完成硬件平台搭建。
3.SDK软件设计
硬件配置信息导入到SDK后,我们就可以创建板级支持包(.bsp),建立应用工程,进行软件开发与调试,最终生成.elf文件。
4.配置文件下载
生成.elf文件后,我们可以将比特流文件和该文件一起产生可执行文件,并下载到配置存储器中,完成配置文件存储。待电路板上时,按照对应的启动模式加载配置文件,实现硬件和软件启动。
本实验通过使用SDK自带的测试例程实现Hello Word语句输出,系统框图如2所示。
图2、实验系统框图
我们利用Xilinx Vivado集成开发环境搭建硬件平台。
1.建立Vivado工程
step2.输入工程名称及工程路径,点击NEXT。
Step3:建立空工程,点击NEXT。
Step4:选择芯片型号。
Step5:点击Finish,完成工程建立。
Step6:点击IP INTEGRATOR,然后点击Create Block Design,创建系统框图。
Step7:点击图中“+”,添加IP
Step8:在Serach里搜索ZYNQ,然后双击过滤显示的ZYNQ7 Processing System。
Step9:点击Run Block Automation,自动添加ARM外设I/O
Step10:点击OK
Step11:将鼠标放置在FCLK_CLK0,弹出铅笔符号时,按住左键拖到M_AXI_GP0_ACLK管脚,完成PS时钟到PL时钟连接(不用FPGA逻辑资源,可以不用连接)。
Step12:双击processing_system7_0,进行配置PS,首先配置PS和PL时钟。
Step13:PS DDR3 内存配置,电路板上使用的内存型号:MT41K256M16 RE 125。
Step14:配置PS MIO接口电压和MIO管脚配置。配置完成后,点击OK,完成PS配置
Step15:连接IP配置及连接后,验证模块连接的正确性;另外可以刷新模块布局。
Step16:选择system.bd,右击选择Generate Output Products
Step17:点击Generate
Step19:选择system.bd,右击选择Create HDL Wrapper,产生工程顶层文件。
Step20:选择选择 Leave Let Vivado manager wrapper and auto update,单击 OK
Step21:查看顶层文件。
Step22:产生硬件bit流文件。点击Generate Bitstream,在弹出的对话框中选择Yes
Step23:点击OK,进行编译。
Step24:完成比特流文件生成,点击Cancel,至此完成硬件设计。
Step25:导入硬件SOC配置信息到SDK,File->export->–>Export Hardware
Step26:如果包括FPGA比特流文件,需要勾选Include bitstream
Step27:导入配置文件到SDK,File->–>Launch SDK,弹出的菜单,点击OK,完成SDK导入。
Step1:硬件设计加载到SDK后,显示界面如图所示。
Step2:新建软件应用工程,File->New->–>Application Project
Step3:新建应用工程,命名HelloWord,点击NEXT
Step4:我们选择SDK自带的Hello Word测试例程,点击Finish
Step5:生成应用工程
Step6:开始调试,右击HelloWord,选择Debug As->Debug Configurations
Step7:双击Xilinx C/C++ application(System Debugger),生成应用工程调试文件
Step8:配置调试信息
Step9:配置串口信息,选择串口号,波特率。
Step10:点击运行按钮,
Step11:在SDK Terminal可以看到,打印出了Hello Word信息,表明实验测试成功。