下冰雹 · 2024年12月04日

MicroBlaze 串口设计(附源工程)

大侠好,欢迎来到 FPGA 技术江湖,江湖偌大,相见即是缘分。大侠可以关注 FPGA 技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

今天给大侠带来 MicroBlaze 串口设计,开发板实现使用的是 Digilent basys 3。话不多说,上货。

需要源工程可以在以下资料获取里获取。

image.png

本篇通过原理图设计,学习 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’;

Image

3)  添加一个 clock IP,在原理图(Diagram)界面中鼠标右击,选择‘Add IP’。在 IP 搜索框中输入‘clocking’,双击添加 Clocking Wizard;

Image

4)  双击 Clocking Wizard 模块进行自定义配置,选择 Output Clocks 一栏,确定 clk_out1 频率为 100(MHz),Reset Type 为 Active High;

Image

Image

5)  鼠标右击‘clk_in1’,选择 Make External 添加引脚;

Image

6)  完成后,如下图所示:

Image

7)  同样的,在 Diagram 中添加 MicroBlaze IP;

Image

8)  添加完成后如下图所示,点击‘Run Block Automation’;

Image

9)  在弹出窗口中,使用以下设置替换默认设置;

Local Memory: 128KBLocal Memory ECC: NoneCache Configuration: NoneDebug Module: Debug OnlyPeripheral AXI Port: EnabledInterrupt Controller: 不勾选 Clock Connection: /clk_wiz0/clk_out1(100 MHZ)

Image

10)  完成之后,Vivado 会基于之前的设置自动生成一些额外的 IP,并且会自动连接完毕,此时不要点击‘Run Connection Automation’;

Image

11)  在 Diagram 中添加 AXI Uartlite IP,在搜索框输入‘uart’,选择相应的 IP;

Image

12)  鼠标右击 Clocking Wizard 的‘reset’,选择 Make External 添加引脚;

Image

13)  使用连线工具将 Processor System Reset 的‘ext_reset_in’与‘reset’相连接。

Image

14)  完成后,点击‘Run Connection Automation’,在弹出窗口中勾选所有端口,点击 OK 继续;

Image

15)  完成后,点击按钮重新布局,完成后如下图所示:

Image

16)  点击按钮验证设计是否正确

17)  验证成功,设计与连线都正确,点击 OK,Ctrl+S 保存设计。

Image

18)  在 Sources 窗格中鼠标右键‘MB_UART’,选择‘Create HDL Wrapper’。

Image

19)  使用默认选项,点击 OK 继续,完成 HDL 文件的创建。

Image

20)  添加约束文件

a)  在 Flow Navigator 中,展开 PROJECT MANAGER,点击‘Add Sources’。

b)  选择‘Add or create constraints’,点击 Next 继续。

Image

c)  选择‘Add Files’,找到并添加‘MB_Uart.xdc’文件。注意,要勾选 Copy constraints files into project

(文件路径:\Basys3_workshop\sources\lab6\Src\Constraint)

Image

3.  综合、实现、生成比特流文件

1)  在 Flow Navigator 中展开 PROGRAM AND DEBUG,点击 Generate Bitstream。Vivado 工具会提示没有已经实现的结果,点击‘Yes’,Vivado 工具会依次执行综合、实现和生成比特流文件。

Image

二、基于 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;

Image

2)  在弹出窗口中勾选‘Include bitstream’,点击 OK 继续;

Image

3)  在工具栏中,选择 File>Launch SDK,使用默认工程,启动 Vivado SDK;

Image

4)  在 SDK 上方工具栏中,选择 File>New>Application Project,新建一个 SDK 应用工程;

Image

5)  工程取名为‘helloworld’,点击 Finish 完成创建;

Image

6)  可以看到 SDK 界面左侧如下,新增加了 helloworld 和 helloworld_bsp 两项。其中 helloworld_bsp 为 helloworld 应用工程的板级支持包:

Image

7)  双击 helloworld 下的 src 下的 helloworld.c。这个文件为包含主函数的 C 语言文件,然后可以通过 CTRL+B 完成工程的 build;

Image

8)  连接 Basys3 开发板,打开电源,点击 SDK 任务栏 Xilinx Tools>Program FPGA;

Image

9)  在弹出窗口中点击 Program 完成比特流文件的下载:

Image

10)  连接 Basys3 的串口。选择 SDK 界面下方的 Terminal 窗口,点击下图的连接按钮:

Image

11)  在弹出窗口中,将 Connection Type 设置为 Serial,在 Port 一栏选择正确的串口,点击 OK 完成串口配置并连接;

Image

12)  在 SDK 界面左侧 Project Explorer 中鼠标右击 helloworld,选 Run As>Launch on Hardware(GDB),运行 SDK 软件工程;

Image

13)  稍等几秒,可以看到 Terminal 界面出现了打印的‘Hello World’字样。

Image

END

作者:The last one
来源:FPGA技术江湖

相关文章推荐

更多 FPGA 干货请关注 FPGA 的逻辑技术专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
10617
内容数
588
FPGA Logic 二三事
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息