电子科技大学
实 验 报 告
课程名称
微嵌实验
实验名称
SoC 平台环境搭建
任课教师 赖小红
实验教师 阎波
姓名
学号 2
实验地点 211 楼
分组号 5 班
时间 2018 年 10 月 27 日
一、实验目的
1. 了解 SoC 平台环境搭建的具体操作流程
2. 学习 Xilinx Vivado&SDK 2017.3 工具的使用
3. 熟悉 SoC 平台环境搭建过程和工作原理
一、实验内容
以 PS 与 PL 协同设计实现 GPIO 为例,自行搭建 SoC 平台环境。
将 FPGA 当做一个 PS 处理器的外设,通过寄存器地址映射到 PS 的寻址空间。在处理器中使用 C 程序访问这
些寄存器,来实现软件和逻辑结合的协同设计的效果。
具体步骤是先在 VIVADO 中配置 ZYNQ 处理器,做好 FPGA 的外设,互联完成之后生成 BIT 流文件下载到板
子。在 SDK 环境下开发好软件之后,进行在线调试运行。
微处理器系统结构与嵌入式系统设计实验报告
三、实验步骤
1. 打开桌面 VIVADO 2017.3,点击 Create Project 创建新工程。为新工程命名,选择工程保存路径,点击
Next。选择芯片 xc7z020clg484-1,点击 Next → Finish。点击 Create Block Design,创建块设计,并命
名
2. 在右侧 Diagram 窗口空白处右击 → Add IP。搜索 zynq,双击 ZYNQ7 Processing System,添加 zynq
处理器,并点击 Run Block Automation,勾选处理器→ 点击 OK,会自动进行一些配置
3. 再添加两个 GPIO 核,在 Diagram 窗口空白处右击 → Add IP → 搜索 gpio → 双击。操作两次,添加两
个 AXI GPIO 核,点击 Run Connection Automation,勾选 All Automation,点击 OK,进行自动配置。
自动连接之后在空白处右击选择 Regenerate Layout,重新布局
4. 双击 ZYNQ 处理器核,进行配置,更改 DDR 型号为 MT41K256M16 RE-15E,将 Bank1 I/O 电平设为
1.8V,勾选 Uart1,用于通过串口查看程序打印信息
5. 将 GPIO IP 核的名字和端口名称修改为 LED 和 SW。双击 LED IP 核,配置 LED 为输出,GPIO Width
设置为 8,对应 8 个 LED 灯,点击 OK。双击 SW IP 核,配置 SW 为输入,GPIO Width 设置为 8,对
应 8 个拨码开关,点击 OK
6. 新建约束文件:右击 Constraints → Add Sources → 点击 Next---Create File,为文件命名,点击 OK →
Finish。根据 EES331 用户手册中 LED 和 SW 的管脚约束表,在 PINS_SET.xdc 中添加引脚与电平约束并
保存
7. 生成顶层文件:先右击 system → Generate Output Products → Generate,再右击 system → Create
HDL Wrapper → OK。Vivado 会为 IP 子系统生成一个顶层文件,以便对该系统进行综合、实现并生成
比特流
8. 工程配置完成,点击左下侧 Generate Bitstream 生成比特流,点击 Yes → OK,等待比特流生成。若没
有其他错误,比特流生成完成后直接关闭弹出的窗口或选择查看报告
9. 硬件工程设计好之后,可在以下窗口中看到系统分配给外设的地址。接下来将硬件工程导出到 SDK,
在 SDK 中进行软件编译与运行(注:不要单独打开 SDK,是在 VIVADO 中导出)。VIVADO -> File →
Export Hardware Design to SDK,导出硬件到 SDK,打钩,包括比特流,点击 OK
10. 打开 SDK:File → Launch SDK → OK,进入 SDK 界面。在 SDK 中新建工程对 LED 和 SW 进行编程,实
现相应功能。为新工程命名,并产生相应的 BSP → 注意选 Next → 选择空工程 → Finish
11. 在新建的工程中添加源文件,新建 Source File 或者 Header File,为文件命名,注意要跟上文件类型.c
或.h,点击 Finish,在源文件中添加代码
12. 硬件和软件设计好之后,保存工程,接下来调试和运行程序,运行之前先把板子的上所有拨码开关拨
到下面。使用 USB 线连接 PC 机和开发板 J3 端口(JTAG/PS_UART),打开板子开关,在 Vivado 中点击
左下角 Open Hardware Manager → Open target → Auto Connection
若连接不上板子
1. 重启板子或电脑:开关断开或按下板子上的复位按钮(LED 和数码管旁边 S3/POR(B5))
2. 杀进程:打开任务管理器——进程——hw_server.exe
13. 下载比特流:点击 Program device,在弹出的窗口中找到工程的比特流,比特流文件在工程中的路径
为:project_name/project_name.runs/impl_1/system_wrapper.bit,如下图,点击 Program 下载比特流
到板子。
14. 若运行程序,则右击工程——Run As ——Launch on Hardware(GDB)
若调试程序,则右击工程——Debug As——Launch on Hardware(GDB)
15. 查看串口打印:使用桌面串口工具 Putty,设置波特率和端口号。
端口号查看方式:右击桌面电脑/计算机 → 管理 → 设备管理器 → 端口
16. 若工程正确,可看到 8 个 LED 灯循环闪烁,向上拨动任意一个拨码开关时,流水灯运行到最后一个
LD7 时停止。
四、实验结果
1 . 8 个 LED 灯循环闪烁,向上拨动任意⼀一个拨码开关时,流⽔水灯运⾏行行到最后⼀一个 LD7 时停
⽌止。
2 . Putty 窗⼝口显示 success ⼀一直在打印
六、实验总结
通过实验了解了 SoC 平台环境搭建的具体操作流程,并学习 Xilinx Vivado&SDK 2017.3 工具的使用,
熟悉 SoC 平台环境搭建过程和工作原理。
七、实验思考题
1.ZYNQ 7000 中提供了哪几种实现 GPIO 的方式,这几种之间有什么区别与联系?
ZYNQ 中 GPIO 有四种,其中 PS 中 MIO/EMIO 两种,而 PL 中同样有两种情况,AXI_GPIO 和 AXI_LITE 自
定义的 GPIO;
MIO 和 EMIO 方式使用 PS 部分的 GPIO 模块,其中 MIO 方式不占用 PL 部分资源,其输出管脚只能为固
定的 54 个(而且要在未被其它外设使用的情况下),EMIO 方式会占用 PL 的管脚资源,其管脚可在 PL 部分
任意选择(除特殊功能管脚),IP 方式除了占用 PL 部分管脚资源外还会占用 PL 部分逻辑资源,所以其
GPIO 功能在 PL 部分实现其调用函数也和前两种不同,最后 EMIO 和 IP 方式在 vivado 都需要绑定管脚。
2.Create Block Design 过 程 中 , 添 加 IP 核 之 后 不 点 击 Run Block Automation 和 Run Connection
Automation,尝试自己连接线,理解其工作原理,并叙述。
进行 zynq 系统管脚与 FPGA 芯片管脚之间的绑定关系。软件自动根据开始选择
的开发板型号进行 FPGA 芯片的外设管脚与 Zynq 子系统定义个功能管脚进行连接。