目前,xilinx的zynq系列FPGA炒的火热,SOC成为FPGA发展的必然趋势。可见所有功能均用硬件描述语言设计是不科学的。硬件逻辑独有的并行性使其在实时处理和并行算法中占尽优势,但当执行串行操作时却需要使用笨重的状态机来完成。因此,要实现对实时性要求不高的串行操作,对各类IP核的总体控制调度,亦或是快速移植软件协议栈时,利用FPGA内部CPU是个比较好的选择。

  硬核CPU只在特定系列FPGA芯片中,性能当然没的说,占用的资源也非常少。但相比硬核,microblaze可移植性较强,性能要求不高的场合下还是非常灵活的。本文依然以经典的串口打印字符串“hello,world”为例,搭建基于microblaze的简单嵌入式系统。

   create block design,添加microblaze软核后点击Run Block Automation。

  这里暂时不使用DDR之类的缓存设备,利用片内Memory存储代码,因此将Local Memory容量增大。

  点击OK后工具自动生成CPU系统所需要的所有必要硬件模块,包括:时钟管理单元,复位逻辑,调试模块,microblaze CPU,以及local memory。

  双击clk_wiz_1模块,根据开发板对其进行配置。本例中开发板上使用200MHz差分晶振作为时钟源,做如下改动。

  开发板上复位按键低电平有效,改为Active low。

  实现串口打印字符串功能,首先得有串口模块提供硬件支持,添加uartlite IP核。串口IP核同样可以根据需求重配置,这里保持默认设置:波特率9600,数据位是8bit,无校验位。

  IP核添加并配置完毕,同样利用工具自动连接。点击Run Connection Automation,选中所有可连接选项。重新布局后嵌入式硬件系统结构如下:

  点击左侧竖排工具栏中的Validate Design,保证系统没有连接错误。

  右击Source窗口中block design名称,依次选中Generate Output Products和Generate HDL Wrapper。前者生成可综合,布局布线的.v文件,后者产生工程顶层封装。

  需要注意的是,生成顶层文件时,可以选择顶层文件自动更新或手动编辑。当需要手动添加硬件模块到顶层文件时选择可手动编辑方式,这里保持默认。

  之后添加XDC文件,给出引脚号及电平标准即可。

  点击vivado界面上侧主选项栏File->Export->Export Hardware。这里要选中Include bitstream,否则SDK中无法识别硬件系统。最后点击File->Lanch SDK启动软件开发工具,开始软件设计流程。建立第一个软件工程时会自动生成BSP包,相当于硬件系统中物理约束了的映射,之后可重复利用,还是比较方便的。

  打开HelloWorld工程中.c文件,其中有三个函数,其实是对串口一些操作的封装。

  这了为了方便观察现象,将串口打印函数放置在while循环中,使其连续打印字符串。保存后代码自动编译。

  选中工具栏Xilinx Tools->Program FPGA下载代码。此处在下方选择生成的HelloWorld.elf可执行文件,将硬件比特流和软件代码同时下载到FPGA中。

  打开串口调试助手,设置好波特率以及显示格式,可以看到不断打印“Hello World”字符串。

  本文搭建了基于Microblaze的最简单的嵌入式系统,对IP Integrator和SDK环境有了初步的认识。在后续的博文中,会进一步阐述自定义总线形式IP核的生成,调用以及与CPU之间的数据交互。

嵌入式设计初体验:永远的hello,world的更多相关文章

  1. 痞子衡嵌入式:恩智浦机器视觉模块OpenMV-RT那些事(1)- 初体验

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是机器视觉模块OpenMV-RT初体验. 近些年机器视觉应用一直是个很火的方向,想象一下机器如果能长上"眼睛",是不 ...

  2. 痞子衡嵌入式:走进二维码(QR Code)的世界(2)- 初体验(PyQt5.11+MyQR2.3+ZXing+OpenCV4.2.0)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是走进二维码(QR Code)的世界专题之初体验. 接上篇 <走进二维码(QR Code)的世界(1)- 引言> 继续更文,在 ...

  3. 微软最新设计Fluent Design System初体验

    微软最新设计Fluent Design System初体验 本文图片不全!建议移步知乎专栏查看!!! https://zhuanlan.zhihu.com/p/30582886 原创 2017-11- ...

  4. 痞子衡嵌入式:MCUXpresso Config Tools初体验(Pins, Clocks, Peripherals)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso Config Tools三大件(Pins, Clocks, Peripherals). 不知道大家有没有这样的感受 ...

  5. OPhone SDK初体验

    OPhone SDK初体验 write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 背景说明 中国伟大的垄断龙头,世界上也是顶尖的中移动最 ...

  6. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  7. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  8. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

  9. 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验

    在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...

随机推荐

  1. Akka(38): Http:Entityof ByteString-数据传输基础

    我们说过Akka-http是一个好的系统集成工具,集成是通过数据交换方式实现的.Http是个在网上传输和接收的规范协议.所以,在使用Akka-http之前,可能我们还是需要把Http模式的网上数据交换 ...

  2. 【javaFX学习】(一) 建一个简单的界面

    转载注明出处:http://www.cnblogs.com/lensener/p/7976953.html 用过swing都知道有多蛋疼,界面有多丑.自从用了javaFX,腰也不酸了,腿也不疼了. 废 ...

  3. selenium定位tr及td,并获取其文本及属性

    #获取所有的trtrlist=brower.find_elements_by_tag_name("tr")for tr in trlist: #获取tr中的所有td tdlist= ...

  4. 简单了解enum

    enum的性质: 1.枚举类型的实例都是常量 2.要使用enum,需要创建一个该类型的引用,并将其赋值给某个实例 3.常用的方法:  *     toString():某个enum实例的名字  *   ...

  5. PHP大文件分割上传(分片上传)

    服务端为什么不能直接传大文件?跟php.ini里面的几个配置有关 upload_max_filesize = 2M //PHP最大能接受的文件大小 post_max_size = 8M //PHP能收 ...

  6. vs2015 制作安装包额外需要安装的软件VSI_bundle

    vs2015 制作安装包额外需要安装的软件VSI_bundle 下载地址:http://files.cnblogs.com/files/sdner/VSI_bundle.rar

  7. .NET Core 快速入门教程

    .NET Core 快速学习.入门系列教程.这个入门系列教程主要跟大家聊聊.NET Core的前世今生,以及Windows.Linux(CentOS.Ubuntu)基础开发环境的搭建.第一个.NET ...

  8. Ubuntu 14.4 Django模型迁移到数据库提示 LookupError: unknown encoding: utf8mb4 解决方法

    由于数据库中需要存储emoji表情,因此需要mysql支持utf8mb4,参考前面的文章升级数据库. 但是由于服务器上面的python-mysqldb连接包版本为1.2.3不支持utf8mb4,因此报 ...

  9. dubbo源码—SPI

    Java中的SPI SPI,Service Provider Interface,java中提供的一种使程序可扩展的方式,系统定义好接口规范,供其他服务提供方实现,服务提供方将自己jar包META-I ...

  10. Java爬虫——B站弹幕爬取

    如何通过B站视频AV号找到弹幕对应的xml文件号 首先爬取视频网页,将对应视频网页源码获得 就可以找到该视频的av号aid=8678034 还有弹幕序号,cid=14295428 弹幕存放位置为  h ...