本帖最后由 FPGA课程 于 2024-9-23 18:15 编辑
软件版本:VIVADO2021.1
操作系统:WIN10 64bit
硬件平台:适用 XILINX A7/K7/Z7/ZU/KU 系列 FPGA
实验平台:米联客-MLK-H3-CZ08-7100开发板
板卡获取平台:https://milianke.tmall.com/
登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑!
1概述 本实验是我们开始XILINX ZYNQ SOC的第一个入门demo。 实验目的: 1:掌握基于vitis-vivado创建SOC工程 2:掌握基于图形化Block Design的设计方法 3:掌握ZYNQ IP核的调用 4:掌握ZYNQ IP核的参数配置方法 5:掌握生成一个基于ZYNQ IP核的最小系统方法 6:导出硬件参数xsa文件 7:使用vitis-sdk创建sdk base工程 8:使用vitis-sdk创建自带sdk helloworld APP工程 10:使用vitis-sdk创建以太网测试程序 2系统框图本方案构建基于ZYNQ IP核的最小系统,包含了PS DDR、FLASH、EMMC、TF-Card、Uart、USB、ETH以太网 3搭建SOC系统工程Vitis-vivado和其他版本的vivado使用方法基本一致,只有最后导出的xsa文件是vitis才有的文件格式。对于初学者,请认真学习以下每一个步骤。 3.1创建soc_prj工程1:创建工程路径米联客新版本资料里面SOC工程一级目录一般包含3个文件夹,用于管理各类文件: soc_hw:文件夹放system.xsa文件 soc_prj:文件夹放FPGA工程 soc_sdk:文件夹放SDK相关的开发文件 2:启动vivado3:创建soc硬件工程由于已经创建好了路径,所以不需要让软件再次创建以工程命名的路径 这一步选择芯片型号,一定要选择和自己开发板相匹配的型号(本实验使用的开发平台是米联客 MLK_H3_CZ08- 7100-MZ7100FC 对应的芯片型号为 xc7z100ffg900-2)
3.2创建BD图形化模块
1:创建空的BD
米联客的BD统一命名为system
单击“+”号
双击ZYNQ7 Processing System
2:配置ZYNQ IP的参数双击IP对IP的各个功能参数进行配置,这个配置必须参考硬件原理图完成,所以FPGA或者SOC工程师必须具备一定的硬件分析能力,可以阅读原理图,实现对硬件资料在软件上的定义分配。
这里我们使用已经提供的配置文件对参数进行配置。
在本demo配套工程的uisrc/06/doc路径下,提供了配置参数
等待配置完成即可
3.3ZYNQ IP的配置参数以上通过已经提供的配置参数,快速完成了IP的基本配置。这个过程在后续的demo中不再重复,后续demo会对用到的资源说明分析,或对IP部分功能重新配置。以下我们针对主要的外设资源对IP的配置说明。 1:MIO的BANK电压米联客ZYNQ系列核心板的MIO BANK0对应核心板硬件原理图上的BANK500设置3.3V, MIO BANK1对应核心板硬件原理图上的BANK501设置1.8V
2:MIO接口功能定义2-1:QSPI-FLASH接口
2-2:PS以太网接口
2-3:USB接口
2-4:SDIO0-EMMC
2-5:SDIO1-SD卡
2-6:串口1
2-7:DDR配置
MLK_H3_CZ08-7100-MZ7100FC 的内存焊接 2 片 256M 的 DDR3L 设置如下:
2-8:时钟配置
相关PL的设置本demo没有用到,后面相关demo用到的时候再进行配置
3.4 ZYNQ IP的配置参数保存对于配置好的参数可以保存下来,方便后面新建工程使用,减少重复步骤
3.5自动连线完成配置后,可以自动连线,让软件自动引出接口
这里需要注意:VIVADO的自动化连线可以完成一些简单的信号连线设计,前提是开发者必须知道原理,否则自动连线可能会导致错误。 3.6检验BD工程通过Validate Design可以快速初步排查BD工程是否有错误
3.7地址空间分配由于没有使用任何PL资源,本demo中不需要分配地址
3.8编译并导出平台文件1:单击Block文件à右键àGenerate the Output ProductsàGlobalàGenerate。
2:单击Block文件à右键à Create a HDL wrapper(生成HDL顶层文件)àLet vivado manager wrapper and auto-update(自动更新)。 右击system.bd创建Create HDL Wrapper
该文件就是一个FPGA Verilog文件。而BD图形化工程,VIVADO把BD封装成了一个模块。顶层的verilog文件通过模块接口就可以调用BD图形代码了。
3:添加fpga_pin.xdc文件 该文件主要是对bit设置压缩,减少bit的大小
这个文件用户可以自己创建,也可以选择uisrc/04_pin路径下已经提供的fpga_pin.xdc文件
4:生成Bit文件。
单击Cancel
5:导出到硬件: FileàExport HardwareàInclude bitstream
6:导出完成后,对应工程路径的soc_hw路径下有硬件平台文件:system_wrapper.xsa的文件。根据硬件平台文件system_wrapper.xsa来创建需要Platform平台。
4搭建Vitis-sdk工程创建soc_base sdk platform和APP工程。 4.1创建SDK Platform工程启动Vitis-Sdk
设置好路径
米联客资料中的路径规范如下图: soc_prj里面是基于SOC的硬件工程源码 soc_hw里面是xsa格式文件,soc_prj编译会导出system_wrapper.xsa到这个文件 soc_sdk里面是裸机的sdk工程,sdk工程创建依赖soc_hw中的system_wrapper.xsa
单击Create Platform Project 创建基于开发平台的工程
添加之前创建的system_wrapper.xsa文件
创建完成后
LWIP库的修改: 1:ZU系以及米联客ZYNQ系列开发板列网口芯片是工业级RTL8211FDI(商业级为RTL8211FD)(国产YT8531DH或者YT8531DC完全兼容RTL8211,未来也会使用国产PHY芯片,使用方法一样),由于默认的驱动不支持,需要手动自己修改库文件。我们这里已经提供了修改好的库,解压到vivado的安装路径下的对于路径下:
修改好后,需要关闭vitis-sdk然后重新打开sdk,否则无法识别修改的库
4.2创建hello_world APP工程
可以看到,工程模板包括: 1-空的C或者C++工程 2-Hello World测试工程 3-lwip echo Server工程 4-lwip TCP Perf Client TCP 性能测试 等等…. 我们开发的SDK应用方案大多都基于XILINX SDK模板来实现,本方案通过模板创建要给HelloWorld工程 第一种编译方法,右击编译只产生elf文件
第二种编译方法,右击编译可以产生elf文件,和BOOT.BIN文件,但是时间较长一些 4.3以太网测试
1:创建lwip echo APP工程用同样的方法创建lwip_echo_server
2:创建lwip_tcp_perf_client APP工程
5程序分析
hello_word APP就是简单通过串口输出一些字符信息,本文重点演示软件使用方法,程序代码不做分析,后面SDK高级篇到以太网部分,用到相关功能再分析代码。 6方案演示
6.1硬件准备本实验需要用到 JTAG 下载器、USB 转串口外设,另外需要把核心板上的 2P模式开关设置到 JTAG 模式,即 ON ON (注意新版本的 MLK_H3_CZ08-7100-MZ7100FC),支持 JTAG 模式,对于老版本的核心板,JTAG 调试的时候 一定要拔掉 TF 卡,并且设置模式开关为 OFF OFF) 6.2 hello_world实验结果为了观察实现结果,需要打开串口 如果不清楚串口号的,可以查看下设备管理器,如果发现没装串口驱动的安装上驱动 选中hello_world APP并且右击,然后单击Debug As->Debug Configuration 双击Single Application Debug,之后选Debug 程序运行停在debug入口,单击file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml9028/wps92.jpg运行 输出打印结果 6.3以太网测试
1:lwip_echo_server APP实验结果给开发板通电,连接网口,并且根据以下步骤,设置电脑端IP地址 调试程序 打开网络调试助手,并且设置如下 单击发送数据 2:lwip_tcp_perf_server APP实验结果给开发板通电,连接网口, 并且根据以下步骤,设置电脑端IP地址 打开网络调试助手,设置接收数据不显示,否则速度太快会卡死 调试程序
|