创作时间: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~

【FPGA】MicroBlaze小试01-串口输出Hello World(demo,熟悉开发流程)相关推荐

  1. 【Nios II】以SOPC开发流程完成流水灯以及串口输出实验

    一.前言 实验内容及步骤 使用 FPGA 资源搭建一个简单 Nios II 处理器系统,具体包括: (1) 在 Quartus Prime 中建立一个工程: (2) 使用 PD 建立并生成一个简单的基 ...

  2. FT2000+模块在麒麟系统下串口输出功能调试

    FT2000+芯片自带串口,于是模块可以通过前出CPU串口登录系统,查看系统IP地址等信息,在网络故障时方便用户进行问题定位. 打开串口功能需要在系统下配置两个地方 1.需要修改/boot/grub. ...

  3. STM32获取GY-25A倾角传感器串口输出数据

    STM32获取GY-25A倾角传感器串口输出数据 GY-25A模块是新型的倾角传感器模块,具有X和Y两轴模拟角度输出和串口角度输出的功能.这里介绍STM32获取GY-25A串口输出的角度数据.(获取模 ...

  4. 基本知识(1)有关打印格式以及串口输出形式整理

    有关打印格式以及串口输出形式整理 1.printf 打印格式: 1 printf(" "); //空格 2 printf("\n"); //换行 3 print ...

  5. 休眠 关闭串口输出_C#实例:串口通讯

    先看下运行结果: 最近在研究串口通讯,其中有几个比较重要的概念,RS-232这种适配于上位机和PC端进行连接,RS-232只限于PC串口和设备间点对点的通信.它很简单的就可以进行连接,由于串口通讯是异 ...

  6. android蓝牙串口 hc06,Android手机通过蓝牙模块HC-06连接Arduino串口输出

    通过手机进行通信是可以实现很多遥控功能,虽然距离是比较短,一般是10米,但对于我这种新手做测试,比起买一个几百块的多通道遥控器成本要低很多. 实验目的:用Android实现蓝牙连接通过Arduino串 ...

  7. 串口输出换行_stm32初学者必会操作----usart串口调试工具

    stm32初学者必会操作----usart串口调试工具 今天笔者介绍stm32初学者必会的工具 usart的串口设备. usart很重要,可以传输数据,可以检查代码的错误位置,查看输出数据. 下图就是 ...

  8. STM32串口输出字符串

    目录 串口 步骤 1.确定 IO 口并初始化 2.初始化 UATR 3.UART 中断配置 4.编写 UART 中断服务函数 5.1.方法一:重定向 fputc() 5.2.方法二:将字符串分割成一个 ...

  9. STC单片机获取红外解码从串口输出

    STC单片机获取红外解码从串口输出 串口数据演示 所使用的红外接收头VS1838 VS1838引脚定义 电气特性 所使用的红外按键板 红外遥控接收模块 VS/HX1838 相关的资料: https:/ ...

最新文章

  1. 怎么让电脑运行速度变快_分享几种电脑运行速度慢的解决方法_windows7教程
  2. Kafka科普系列 | 什么是LSO?
  3. Android 中 Activity 的生命周期
  4. secureCRT修改鼠标颜色
  5. Hibernate-----5、持久化对象
  6. ISA2004升级到ISA2006需要注意的事项
  7. 更改eclipse炫酷主题
  8. 办公环境大改造 澳洲健康食品激活生活每一天 VTN品牌俱乐部把关你的品质生活
  9. word2019关闭时无响应
  10. SWUSTOJ #69 偷菜时间表
  11. 我的世界中国版服务器家园系统,《我的世界》中国版“暑期更新”上线 家园系统休闲玩法亮点...
  12. 一些有意思的知识的网站
  13. C#VS工程报错:CS0234 命名空间“Microsoft.VisualStudio”中不存在类型或命名空间名“VCProjectEngine(是否缺少程序集引用)
  14. Kafka原理介绍+安装+基本操作
  15. java 用户留存率_【java】mongodb 数据统计(留存率) 应该怎么实现?
  16. 加了索引,mysql查询就一定会用吗?
  17. 【Σ-Δ型ADC芯片】
  18. Hibernate中的sessionFactory是做什么用的?
  19. 成绩忽好忽坏的孩子,往往缺乏良好的学习习惯--一语中的
  20. 用 MAUI 在Windows 和 Linux 绘制 PPT 图表

热门文章

  1. c语言输入一个字符判断是字母还是数字,输入一个字符,如何判断是字母,数字还是特殊字符...
  2. 利用python和前端三件套来一场线上烟花秀
  3. 皮影小游戏(1)——皮影基础知识
  4. 拉勾网董事长许单单:凡是让你痛苦的,都是让你成长的
  5. Postman接口测试——我看过最详细+全面的文章教程了【转载】
  6. 数字机顶盒的结构和技术发展趋势
  7. mysql主从有关参数_MySQL 主从复制相关参数
  8. 行为心理学:如何识别微表情(转)
  9. 今天母亲节,我做了三件事
  10. 独立域名博客的生存之道