创作时间:2021-07-08
开发环境:vivado2019.1
电脑环境:Windows 10
开发板: KC705(xilinx xc7k325tfgg900i)
–
先确定一下我们的目标。
使用microblaze控制,向串口一直发送Hello World。
包括三大部分
1)硬件搭台部分(这个台就是Mciroblaze)
2)软件代码编写实现部分(结合自带库函数,写C代码)
3)测试环境搭建与测试
(一)硬件搭台部分
step1:创建block design
step2:添加microblaze IP
step3: 再添加一个 uart IP
step4:
自动会变成如下图:
step5:自动连线
自动连线后,如下图:
step6:进一步配置clk以及uart
1)配置clk wiz
输入时钟为:差分200Mhz,
输出时钟为单端100Mhz,
复位类型:高电平复位。
2) 配置uart
波特率为:9600,
数据位数:8,
校验类型:无校验。
step7:microblaze硬件管脚对应绑定
至此,microblaze基本搭建完成,接下来我们需要进行硬件管脚约束绑定。
建立约束文件,注意管脚的命名要和block design 里面的相同。
约束文件如下:
#vivado管脚约束XDC文件
#**********************************
#clk
set_property PACKAGE_PIN AD12 [get_ports {sys_diff_clock_clk_in1_p}]
set_property IOSTANDARD DIFF_SSTL15 [get_ports {sys_diff_clock_clk_in1_p}]
#rst(SW3常低,高电平复位)
set_property PACKAGE_PIN AG5 [get_ports reset]
set_property IOSTANDARD LVCMOS15 [get_ports reset]
#uart
set_property PACKAGE_PIN K24 [get_ports rs232_uart_tx]#FPGA output
set_property IOSTANDARD LVCMOS25 [get_ports rs232_uart_tx]
set_property PACKAGE_PIN M19 [get_ports rs232_uart_rx]#FPGA input
set_property IOSTANDARD LVCMOS25 [get_ports rs232_uart_rx]
#led_8bits 暂时不用
#set_property PACKAGE_PIN AB8 [get_ports {led_8bits_tri_o[0]}]
#set_property IOSTANDARD LVCMOS15 [get_ports {led_8bits_tri_o[0]}]
#set_property PACKAGE_PIN AA8 [get_ports {led_8bits_tri_o[1]}]
#set_property IOSTANDARD LVCMOS15 [get_ports {led_8bits_tri_o[1]}]
#set_property PACKAGE_PIN AC9 [get_ports {led_8bits_tri_o[2]}]
#set_property IOSTANDARD LVCMOS15 [get_ports {led_8bits_tri_o[2]}]
#set_property PACKAGE_PIN AB9 [get_ports {led_8bits_tri_o[3]}]
#set_property IOSTANDARD LVCMOS15 [get_ports {led_8bits_tri_o[3]}]
#set_property PACKAGE_PIN AE26 [get_ports {led_8bits_tri_o[4]}]
#set_property IOSTANDARD LVCMOS25 [get_ports {led_8bits_tri_o[4]}]
#set_property PACKAGE_PIN G19 [get_ports {led_8bits_tri_o[5]}]
#set_property IOSTANDARD LVCMOS25 [get_ports {led_8bits_tri_o[5]}]
#set_property PACKAGE_PIN E18 [get_ports {led_8bits_tri_o[6]}]
#set_property IOSTANDARD LVCMOS25 [get_ports {led_8bits_tri_o[6]}]
#set_property PACKAGE_PIN F16 [get_ports {led_8bits_tri_o[7]}]
#set_property IOSTANDARD LVCMOS25 [get_ports {led_8bits_tri_o[7]}]
#other其他约束
set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]
step8:验证设计是否有效
Tools ->> Valid Design
验证成功。
step9:仿真-综合-生成bitstream
仿真-综合-生成bitstream
此时发现综合不成功,报错如下:
查找解决方案,在这个链接中找到了答案。
https://forums.xilinx.com/t5/Design-Entry/v2019-1-ERROR-Could-not-find-a-top-module-in-the-fileset/m-p/990842
注:wrapper翻译为:包装包裹。
step10:Create HDL Wrapper
一定要记着:Create HDL Wrapper,否则无法综合。
可以打开这个顶层看看,自动生成了这个顶层module.
step11:重新综合-实现-生成bitstream
如果已经避坑了,就不用“重新综合-实现-生成bitstream”了。
step12:导出硬件设计文件hdf
File ->> Export ->> Export Hardware
导出成功,如下:
(二)软件代码实现部分
step13:lauch SDK
File ->>Lauch SDK
进入SDK
编写软核 hello world
step14:建立软核工程
File ->>New Project ->>Aplication
弹出这些文件夹
文件夹说明:
step15:修改与编写代码
为了方便显示,我们让软核一直输出 Hello world.修改如下:
step16:烧写文件
硬件KC705连接好JTAG,上电。
bit 文件就在这里。
烧写完毕。
(三) 测试环境搭建与测试
step17:测试环境搭建
打开串口助手,设置好串口的属性(串口端口号、波特率、数据宽度、校验位)。
step18:测试与测试结果
Run–>Run As–>Lauch on Hardware(System Debugger).
串口接收到数据。
MicroBlaze小试-串口输出Hello World,一个demo,至此完成。主要就是熟悉流程。
THE END~