大侠好,欢迎来到 FPGA 技术江湖,江湖偌大,相见即是缘分。大侠可以关注 FPGA 技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。
今天给大侠带来 MicroBlaze 串口设计,开发板实现使用的是 Digilent basys 3。话不多说,上货。
需要源工程可以在以下资料获取里获取。
本篇通过原理图设计,学习 MicroBlaze 基本结构,通过 Tcl 脚本创建简单的 MicroBlaze 工程,实现 MicroBlaze 调用 UART 模块,完成串口打印功能,掌握在模块化设计中,MicroBlaze 最小系统的组成,学会导出、建立以及运行基于 SDK 的工程。获取本篇相关源工程代码,可在公众号内回复“MicroBlaze 串口设计源工程”。
设计原理
本系统中,Basys3 的 MicroBlaze 模块调用基于 AXI 协议的 UART IP 核,通过 AXI 总线实现 MicroBlaze-UART 之间的通信,完成串口打印。
操作步骤
一、基于 GUI 界面创建工程
1. 创建新的工程项目
1) 双击桌面图标打开 Vivado 2017.2,或者选择开始>所有程序>Xilinx Design Tools> Vivado 2017.2>Vivado 2017.2;
2) 点击‘Create Project’,或者单击 File>New Project 创建工程文件;
3) 将新的工程项目命名为‘lab6’,选择工程保存路径,勾选‘Create project subdirectory’,创建一个新的工程文件夹,点击 Next 继续;
4) 选择新建一个 RTL 工程,由于本工程无需创建源文件,故将 Do not specify sources at this time(不指定添加源文件)勾选上。点击 Next 继续;
5) 选择目标 FPGA 器件:xc7a35tcpg236-1 或 Basys3;
6) 最后在新工程总结中,检查工程创建是否有误。没有问题,则点击 Finish,完成新工程的创建。
2. 创建原理图,添加 IP,进行原理图设计。
1) 在 Project Navigator 下,展开 IP INTEGRATOR,选择‘Create Block Design’创建新的原理图设计;
2) 将新的设计命名为‘MB_UART’;
3) 添加一个 clock IP,在原理图(Diagram)界面中鼠标右击,选择‘Add IP’。在 IP 搜索框中输入‘clocking’,双击添加 Clocking Wizard;
4) 双击 Clocking Wizard 模块进行自定义配置,选择 Output Clocks 一栏,确定 clk_out1 频率为 100(MHz),Reset Type 为 Active High;
5) 鼠标右击‘clk_in1’,选择 Make External 添加引脚;
6) 完成后,如下图所示:
7) 同样的,在 Diagram 中添加 MicroBlaze IP;
8) 添加完成后如下图所示,点击‘Run Block Automation’;
9) 在弹出窗口中,使用以下设置替换默认设置;
Local Memory: 128KBLocal Memory ECC: NoneCache Configuration: NoneDebug Module: Debug OnlyPeripheral AXI Port: EnabledInterrupt Controller: 不勾选 Clock Connection: /clk_wiz0/clk_out1(100 MHZ)
10) 完成之后,Vivado 会基于之前的设置自动生成一些额外的 IP,并且会自动连接完毕,此时不要点击‘Run Connection Automation’;
11) 在 Diagram 中添加 AXI Uartlite IP,在搜索框输入‘uart’,选择相应的 IP;
12) 鼠标右击 Clocking Wizard 的‘reset’,选择 Make External 添加引脚;
13) 使用连线工具将 Processor System Reset 的‘ext_reset_in’与‘reset’相连接。
14) 完成后,点击‘Run Connection Automation’,在弹出窗口中勾选所有端口,点击 OK 继续;
15) 完成后,点击按钮重新布局,完成后如下图所示:
16) 点击按钮验证设计是否正确
17) 验证成功,设计与连线都正确,点击 OK,Ctrl+S 保存设计。
18) 在 Sources 窗格中鼠标右键‘MB_UART’,选择‘Create HDL Wrapper’。
19) 使用默认选项,点击 OK 继续,完成 HDL 文件的创建。
20) 添加约束文件
a) 在 Flow Navigator 中,展开 PROJECT MANAGER,点击‘Add Sources’。
b) 选择‘Add or create constraints’,点击 Next 继续。
c) 选择‘Add Files’,找到并添加‘MB_Uart.xdc’文件。注意,要勾选 Copy constraints files into project
(文件路径:\Basys3_workshop\sources\lab6\Src\Constraint)
3. 综合、实现、生成比特流文件
1) 在 Flow Navigator 中展开 PROGRAM AND DEBUG,点击 Generate Bitstream。Vivado 工具会提示没有已经实现的结果,点击‘Yes’,Vivado 工具会依次执行综合、实现和生成比特流文件。
二、基于 Tcl 脚本创建工程
1. 打开 Vivado 2017.2
2. 在底部 Tcl 命令框使用‘cd’命令,进入 MB_Uart.tcl 文件所在路径。参考路径:C:\Basys3_workshop\sources\lab6\Src\Tcl,在 Tcl 命令框输入:cd C:/Basys3_workshop/sources/lab6/Src/Tcl (注意:Vivado 使用‘/’)
3. 在 Tcl 命令框中,输入命令:source ./ MB_Uart.tcl。输入完毕按回车,运行 Tcl,等待 Tcl 进行创建、综合、实现,最后生成比特流文件。
4. 建立 SDK 应用工程
1) 在顶部工具栏中,选择 File>Export>Export Hardware 导出硬件工程到 Vivado SDK;
2) 在弹出窗口中勾选‘Include bitstream’,点击 OK 继续;
3) 在工具栏中,选择 File>Launch SDK,使用默认工程,启动 Vivado SDK;
4) 在 SDK 上方工具栏中,选择 File>New>Application Project,新建一个 SDK 应用工程;
5) 工程取名为‘helloworld’,点击 Finish 完成创建;
6) 可以看到 SDK 界面左侧如下,新增加了 helloworld 和 helloworld_bsp 两项。其中 helloworld_bsp 为 helloworld 应用工程的板级支持包:
7) 双击 helloworld 下的 src 下的 helloworld.c。这个文件为包含主函数的 C 语言文件,然后可以通过 CTRL+B 完成工程的 build;
8) 连接 Basys3 开发板,打开电源,点击 SDK 任务栏 Xilinx Tools>Program FPGA;
9) 在弹出窗口中点击 Program 完成比特流文件的下载:
10) 连接 Basys3 的串口。选择 SDK 界面下方的 Terminal 窗口,点击下图的连接按钮:
11) 在弹出窗口中,将 Connection Type 设置为 Serial,在 Port 一栏选择正确的串口,点击 OK 完成串口配置并连接;
12) 在 SDK 界面左侧 Project Explorer 中鼠标右击 helloworld,选 Run As>Launch on Hardware(GDB),运行 SDK 软件工程;
13) 稍等几秒,可以看到 Terminal 界面出现了打印的‘Hello World’字样。
END
作者:The last one
来源:FPGA技术江湖
相关文章推荐
- 使用 FPGA 搭建逻辑分析仪
- Vivado 使用 Simulink 设计 FIR 滤波器
- Vivado DDS IP 核仿真
- 基于 matlab FPGA verilog 的 FIR 滤波器设计
- 一篇文章搞懂软核(MicroBlaze)的固化和启动
更多 FPGA 干货请关注 FPGA 的逻辑技术专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。