通信工程专业综合实训-实验指导书2

MicroBlaze 嵌入式软核实验流程
概述
MicroBlaze 是基于 Xilinx 公司 FPGA 的微处理器 IP 核,和其它外设 IP 核一起,可以完成可编 程系统芯片(SOPC)的设计。MicroBlaze 处理器采用 RISC 架构和哈佛结构的 32 位指令和数据 总线,可以全速执行存储在片上存储器和外部存储器中的程序,并访问其的数据。 本实验基于 Microblaze 微处理器 IP 核,在 EGo1 平台上实现一个最小嵌入式系统,该系统具 有基本输入输出功能,通过超级终端将数据(ASCII 码)发送给 FPGA,并通过 LED 以 2 进制 数据的形式显示。通过本实验用户可以掌握在 FPGA 实现嵌入式开发的最基本的流程。

说明
本 实 验 使 用 Vivado Design Suite(Vivado)2017.2 创 建 和 构 建 硬 件 设 计 , 并 结 合 Software Development Kit(SDK)创建和构建软件程序。本实验手册提供一套完整的实验设计流程,可作 为使用者学习和熟悉 Xilinx MicroBlaze 嵌入式软核设计的参考, 并允许使用者以此为基础拓展搭 建自己的 MicroBlaze 嵌入式系统。 硬件环境
● PC 1 台 ● EGo1 开发板 1 套 ● USB Type-C 数据线 1 根

软件环境
● 64 位 Windows 操作系统(推荐 Win7) ● 安装有 Vivado Design Suite 2017.2 工具 ● 安装有 Software Development Kit 工具

使用规范
● 电路板建议在绝缘平台上使用,否则可能引起电路板损坏。 ● 电路使用时应防止静电。 ● 液晶显示器件或模块结雾时,不要通电工作,防止电极化学反应,产生断线。 ● 电源正负极、输入/输出端口定义时需谨慎,避免应接反引起开发板的损坏。 ● 保持电路板的表面清洁。 ● 小心轻放,避免不必要的硬件损伤

实验目标
当完成本实验后,会学习到:
● 通过 Vivado 在 Block Design 界面实现模块化设计 ● MicroBlaze 核使用方法 ● GPIO IP 核使用方法 1

● UART IP 核使用方法 ● 导出硬件信息,通过 SDK 工具实现应用程序开发

实验流程

设计框图
本实验的硬件框架为基本 MicroBlaze 系统,该系统由三部分组成 :MicroBlaze 软核、AXI GPIO IP 、AXI Uartlite IP

创建设计
1. 双击桌面图标启动 Vivado2017.2 并点击 Create Project 新建一个新的设计工程, 进入创建引导 后,点击 Next 进入下一步

2

2. 输入工程名,并选择工程目录后,点击 Next

3

3. 选择创建类型为 RTL Project 设计,点击 Next

4. 在 Search 界面输入 XC7A35TCSG324-1,选择该器件点击 Next

4

5. 在弹出的 New Project Summary 中重新检查所选器件型号是否与板卡芯片型号一致, 若确认无 误,点击 Finish 完成工程创建

5

确保语言类型选择为“Verilog”

6

6. 完成工程创建后,进入到工程操作界面,在 Flow Navigator 栏选择 Create Block Design 创建 Block Design 设计,并输入 Block Design 设计名,点击 OK

7

IP 调用
1. 点击 Diagram 窗口中心?或右击 Diagram 窗口空白处选择 (快捷键 Ctrl+I),打开添加 IP 核窗 口,输入并双击添加 MicroBlaze 软核到 Diagram 中

8

9

2. 使用同样的方式将 AXI Uartlite、AXI GPIO 添加到 Diagram 设计中 3. 选择 Run Block Automation 配置并自动创建 MicroBlaze 所需必要模块, 本实验只需要将 Local Memory 配置配成 64KB,其他设计保持默认,配置完成后点击 OK

10

11

4. 点击进入 AXI GPIO/AXI Uartlite/Clocking wizard 的配置选项,分别参照以下配置参数,配置 GPIO 模块、Uart 模块与时钟模块

GPIO: 输入/输出模式设置为: All Output 数据位宽设置为: 8

Uart: 波特率设置: 115200 Data Bits:8bits

12

时钟模块 Clocking wizard 模块并不是主动添加的, 而是由 Run Block Automation 自动生成的必要 模块。

时钟: Clocking Options 将时钟设置为单端时钟源

时钟模块支持多个时钟配置,同时支持对时钟进行详细配置。

时钟:Output Clocks 将时钟使能选项全部取消

13

5. 完成所有 IP 模块配置后,点击 Run Connection Automation,进入自动化布线连接选项

6. 勾选 All Automation 自动连接本设计中所有的模块,点击 OK

14

7. 可以通过选项对连线设计进行检验、重新布局、对齐等处理

15

可以修改端口名称

16

硬件实现
1. 在 Source 窗口右键 system.bd 文件,选择 Generate Ouput Products

17

2. 并在弹出 Generate Ouput Products 对话框内选择 Out of context per IP,选择 Generate.

18

19

3. 在 Source 窗口右键 system.bd 文件,选择 Create HDL Wrapper 为 IP 子系统生成一个顶层 文件。

20

在弹出的 Create HDL Wrapper 中默认选择第二项,点击 OK 完成创建,并可以在 Source 窗口 看到生成了包含有 system.bd 的 system_wrapper.v 的顶层文件。

21

4. 在 Flow Navigator 执行 Run Synthesis 综合生成网表文件

5. 在弹出的 Lanch Runs 窗口 保持默认选择,点击 OK 执行 Synthesis,完成 Synthesis 后在弹出的 Synthesis Completed 窗口, 选择 Run Implementation 执行实现布局布线。 (若未弹出该对话框则可 通过 Flow Navigator 中的 Run Implementation 执行综合操作 )
注意: 点击 Synthesis/Run Implementation/Generator Bitstream 选项后会弹出 Launch Runs 选项,默认选项点 击 OK 进行运行。

22

23

24

6. 在弹出 Implementation Completed 选择 Open Implementation Design 或者执行 Flow Navigator 中的 Open Implementation Design ,打开进入综合设计。

25

7. 进入 Open Implementation Design 之后,点击右上角下拉菜单选择 I/O Planning,进入管脚约束 界面,并在此界面下方,I/O Port 窗口内进行管教配置。 (若未成功打开 I/O Port 窗口,可通过工具 栏选择 Windows>>I/O Port 启动该窗口)

26

8. 在 I/O Port 内对于 Package Pin 和 I/O Std 进行选择配置,Package Pin 可以从 EGO1 手册中对 应查找出想要约束的引脚位置,I/O Std 选择 LVCMOS33* ,本实验配置详细内容参照下图,管脚 约束完毕后,点击 Vivado 右上角 存盘符号(Ctrl+S)进行保存

可能会弹出“Out of Date Design”过期设计对话框, 可先点击 OK 忽略之, 后续若生成 Bitstream 文件时遇到问题,则重新 Run Synthesis->Run Implementaion->Generate Bitstream 即可。

27

28

进行保存之后,会弹出 Save Constraints 窗口,输入想要保存的文件名后,点击 OK 完成管脚约 束创建,并且可以在 Source 界面观察到生成的.xdc 文件以及约束内容

29

9. 完成管脚约束后,在 Flow Navigator 执行 Generator Bitstream,生成 Bit 文件

30

生成 bit 流文件时可能会报错,如下

31

重新执行 Implementation,错误消失
10. 在弹出 Bitstream Generation Completed 选择 View Reports 或者直接点击 Cancel。

11. 点击菜单栏 File>>Export>>Export Hardware,将生成的硬件导出到 SDK 中,为后面进行软 件应用开发做好准备

32

12. 在点击 Export Hardware 后,需要勾选 Include bitstream,以确保导出的硬件信息会包含有 bit 文件

软件应用
1. 点击 File >> Launch SDK,并在弹出的对话框中点击 OK,启动 SDK 工具

33

SDK 工具被启动,如下

34

打开工程,如下

35

选择前文由 Vivado 生成的工程

2. SDK 工具成功启动后, 打开 Vivado 生成的工程后, 会进入以下界面, 可以在左侧 Project Explorer 中找到 system_wrapper_hw_plaform_0,其中包含有导出的 bit 文件与相关硬件信息

36

3. 点击 File >> New >> Application Project 创建新的软件应用

4. 进入 New Project 窗口之后输入 Project name:MicroBlaze_Lab,按照如下内容进行配置后,点击 Next,选择 Empty Application 创建空白工程

37

5. 右键 MicroBlaze_Lab 文件夹下的 src 文件夹,选择 New >> Source File 创建软件应用程序

38

6. 在 New Source File 窗口输入 MicroBlaze_Lab.c 文件,注意一定要输入文件的后缀.c 否则将创 建位置文件

7. 双击 MicroBlaze_Lab.c 并在右边编辑窗口,输入下面软件应用代码 /* * MicroBlaze_Lab.c * * Created on: 2018年9月6日 * */ #include "xparameters.h" #include "xgpio.h"
39

Author: Klaus-Win10

#include "xuartlite.h" #define TEST_BUFFER_SIZE 16 u8 SendBuffer[TEST_BUFFER_SIZE]; /* Buffer for Transmitting Data */ u8 RecvBuffer[TEST_BUFFER_SIZE]; /* Buffer for Receiving Data */ int main(void) { XGpio led; XUartLite UartLite; u8 led_check; XGpio_Initialize(&led, XPAR_AXI_GPIO_0_DEVICE_ID); // Modify this XGpio_SetDataDirection(&led, 1, 0x0000000); XUartLite_Initialize(&UartLite, XPAR_UARTLITE_0_DEVICE_ID); while(1) { XUartLite_Recv (&UartLite, RecvBuffer, TEST_BUFFER_SIZE); led_check=RecvBuffer[0]; xil_printf("show led"); XGpio_DiscreteWrite (&led, 1, led_check); } }

8. 软件应用代码编写完成后,点击 Rroject >> Build All 将 MicroBlaze_Lab.c 编译成可执行的 MicroBlaze_Lab.elf

40

9. 通过 USB Type-C 数据线连接 EGo1 板卡与电脑, 并打开开关将 EGo1 板卡上电, 并等待 EGo1 板卡指示灯亮起,表示上电完成,板卡处于启动等在下载状态。

41

10. 在工具栏中点击 Program FPGA 按键 , 或菜单栏点击 Xilinx >> Program FPGA, 打开 Program FPGA 窗口,将 Hardware Platform 选择为 system_wrapper_Hw_platform_0,SoftwareConfiguration 选项将 ELF/MEM File to Initialize in Block RAM 中的 bootloop 更改成生成的 MicroBlaze_Lab.elf

42

注意 如果此步弹出错误,说明 FPGA 下载失败,可能出现以下问题: 1.FPGA 板卡没有上电 2.电脑驱动问题:即 USB/Xilinx 下载器驱动有问题 3.FPGA 板卡下载器存在问题 解决办法: 1.连接板卡并打开开关 2.检查电脑 USB 驱动是否完整,重装 Xilinx 下载器驱动 3.如果以上两个解决办法均无法解决下载问题,请与技术支持联系

11. 下载完成之后可观察到以下结果,通过 PC 端串口调试工输入任意按键,FPGA 将会将收到 的按键信息对应的 ASCII 码以二进制的形式显示到 LED 上。并且 PC 端串口调试工具看到由
43

FPGA 循环打印的 ledshow。 Ego 板子用 USB 线连至电脑并上电后, 在电脑的 Windows 设备管理界面中, 观察是否出现了 COM 口(串口) ,如下。此处为 COM13。

在串口调试软件界面中,设置端口号、波特率等参数,如下图。输入并发送大写 U 的时候,开 发板 LED 灯对应显示 U 的 ASCII 码:01010101,输入并发送其他字符则显示不同的 ASCII 码。 此时串口循环打印 ledshow 字符串。

44

45


相关文档

通信工程专业综合实训-实验指导书4(1)
通信工程专业综合实验指导书
专业综合实习实验指导书
生产实习指导书(通信工程专业)
试验五(2) 微博实训指导书
dds专业综合实习实验指导书
《金融专业综合实验》实训教学指导书
实习2实验指导书
综合布线实验(实习)指导书
Java程序设计实训实验指导书 (2)
电脑版