MicroBlaze最小系统+UART/CAN/GPIO

这篇具有很好参考价值的文章主要介绍了MicroBlaze最小系统+UART/CAN/GPIO。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 前言

平台是XCKU040,Vivado版本2019.1,不同的平台和软件IP配置界面会有些许不同哦。

官方文档:MicroBlaze Processor Reference Guide

MicroBlaze在FPGA的设计中经常被用到,MicroBlaze可以理解为使用FPGA逻辑资源实现的一个处理器软核。处理器所具有的功能,MicroBlaze也具有。

优点:

  1. 在完成控制任务时,处理器有FPGA无法比拟的优势
  2. 传统的FPGA+ARM外接方式还需要解决FPGA和ARM通信的问题。这是个非常麻烦的过程。
  3. 强大的开发库支持,大大节省开发时间
  4. 开发灵活

在带有MicroBlaze设计中,所有外设都通过AXI接口挂在总线上,可供MicroBlaze进行访问

Xilinx官方为MicroBlaze所能挂载的所有外设几乎都提供了基于C语言的Example Deign,Example Deign中的函数可以稍加修改就能直接使用。这极大地方便了软件工作者的开发。

FPGA工程师必须能够完成简单的C语言程序的开发。

注1:除了MicroBlaze软核方式,Xilinx官方还提供了ZYNQ的解决方案,它将FPGA与ARM硬核封装到了同一块芯片中,ARM和FPGA之前存在几种高速通信总线可选,ARM有自己的外设可选,处理速度更快,功能更加强大。这个以后有时间也会写博客说说ZYNQ。

注2:在MicroBlaze开发中也个人习惯用ZYNQ中PL(Progarmmable Logic)和PS(Processing System)的概念用来代指FPGA端的硬件开发和ARM端的软件开发。


2. 介绍

2.1 核架构介绍

MicroBlaze最小系统+UART/CAN/GPIO
有时间单独写一篇博客介绍MicrBlaze


2.2 工程介绍

本文章更多是从个人笔记的角度编写。从0开始搭建一个能够使用各种外设的简单设计。
包含一下内容:

  1. AXI_UARTLite
  2. AXI_GPIO
  3. AXI_CAN
  4. BARM
  5. 带中断功能

2.2 接口介绍

MicroBlaze接口中常见的有如下几种:

接口名 作用
INTERRUPT 中断控制器接口,用来连接中断控制器
DEBUG DEBUG接口,用来连接MDM,方便开发中进行DEBUG
Clk MicroBlaze系统运行时钟
Reset 系统复位,高有效
DLMB 处理器数据接口
ILMB 处理器指令接口
M_AXI_DP MB外围数据接口,可以用来连接片内的BARM,AXI-Lite类型 ,非必选
M_AXI_IP MB外围指令接口,用来挂载AXI总线形式的接口外设IP,AXI-Lite类型,必选
M_AXI_DC 外部存储器数据接口,AXI-FULL类型 ,非必选
M_AXI_IC 外部存储器指令接口,AXI-FULL类型 ,非必选

MicroBlaze最小系统+UART/CAN/GPIO


3. 工程搭建

  • 创建一个Block Design。
  • 在Block design中添加MicroBlaze IP后,双击,进入配置页。

3.1 MicroBlaze IP设置

3.1.1 欢迎页
  • 下面为第一页保持默认就好,模式选择PERFQRMANCE,位宽选择32位。

MicroBlaze最小系统+UART/CAN/GPIO

  • 布局布线的规则,可以根据自己设计的需求来确定。通常选择PERFORMANCE即可。

MicroBlaze最小系统+UART/CAN/GPIO

  • 如果要挂载外部存储器(如DDR),就要勾选Use Instruction and Data Caches。

3.1.2 General和Debug
  • General页和Debug页保持默认即可。

MicroBlaze最小系统+UART/CAN/GPIO


3.1.3 Buses
  • 这里就是选择处理器内部存储指令接口(ILMB),处理器内部存储数据接口(DLMB),AXI指令接口(M_AXI_IP)和AXI数据接口(M_AXI_DP)的地方。按照需要选择,本设计都勾选上。

MicroBlaze最小系统+UART/CAN/GPIO
最好点击OK。


3.2 MicroBlaze互联(最小系统)

选择Run Block Automation,自动生成MicroBlaze最小系统。

配置页修改以下几个参数:

  • Local Memory: 选择处理器本地内存的大小,越大越好,我们选择32K。(但是片内的BARM也是有限)
  • Debug Module: 选择Debug &UART可以使用一个虚拟的调试串口,能够在SDK开发中打印部分信息,方便调试。(逻辑资源够用的时候选上就好了,会方便很多!)
  • Interrupt Controller: 添加中断控制器,可以自行添加。

MicroBlaze最小系统+UART/CAN/GPIO


连接效果图如下:表格分别介绍图中IP的作用。

IP名 作用
Clocking Wizard 生成时钟
Processor system Reset 生成复位
Concat 将多个信号转换成一个多位的信号
AXI interrupt Controller 中断控制器,管理中断信号,可以设置触发模式
AXI interconnect AXI连接器,连接多个AXI总线的IP,管理数据的收发,仲裁
MicroBlaze Debug Module(MDM) MB调试模块,方便进行调试。
Local memory 本地存储*

MicroBlaze最小系统+UART/CAN/GPIO


3.2.1 By the Way

那个深蓝色的模块其实是封装起来的,可以展开看一下:无非通过两个LMB BARM Controller连接了一块BRAM。
BARM Controller的作用就是实现总线的切换,毕竟总线格式不同。
MicroBlaze最小系统+UART/CAN/GPIO
点开Block Memory Generator 发现它的大小刚好等于之前设置的值32KB。32乘以1024乘以8bit=32KB。


MicroBlaze最小系统+UART/CAN/GPIO


3.3 添加AXI 外设

这部分内容大家可以根据自己的需求和硬件进行筛选。没有硬件电路是不可能能够正常工作的。

对于MicroBlaze来说,不同的外设可能存在配置上的不同(协议不同),但是数据的读写都是对指定基地址的读写。


3.3.1 UART

有两个IP可以选择

  • AXI UART16550 可以在PS端对UART的波特率等参数进行修改。
  • AXI Uartlite 参数定死无法修改。

按照需求确定,在PS端的开发略有不同。本文选择AXI Uartlite,怎么简单怎么来。

MicroBlaze最小系统+UART/CAN/GPIO

  • IP配置详情页,选择时钟,波特率,数据位宽,奇偶校验。

MicroBlaze最小系统+UART/CAN/GPIO
注意:对于RS485其实也能够使用,如何处理呢,加一组AXI GPIO即可。


3.3.2 GPIO

AXI GPIO的配置主要由几个点。

  • GPIO的类型,如果不选择All input/output,则IO的类型为inout类型,对比图如左边的展示栏。
  • GPIO Width GPIO的位宽,有多少个IO选多少
  • Enable Dual Channel 是否使能两个通道,按照需求选择就好。
  • Enable interrupt GPIO通常是作为中断的形式使用的,一般都勾选。硬件开发要保证可能要用的时候有得用

注意:当GPIO上的电平发送变化时,IP会输出中断信号。但是是那个IO有数据进来要读数据寄存器。

  • 在PS端的开发中会提到。
    MicroBlaze最小系统+UART/CAN/GPIO

  • GPIO除了触发中断,很多时候还用来做按键和LED控制。


3.3.3 CAN

CAN也有多个IP,但是绝大多数场合大家应该用不到CANFD,CANFD是CAN协议的升级版,具体介绍可以查看我的另一篇博客CAN协议笔记

  • 这里我们选择 AXI CAN。

MicroBlaze最小系统+UART/CAN/GPIO

  • 这里可以选择CAN IP TxRx的FIFO深度,越大越好。但是我们选择2即可。

MicroBlaze最小系统+UART/CAN/GPIO

注意: CAN总线的can_clk是需要从CAN_INTERFACE输入的。根据需求选择,这个值必须被设计师确定,因为在PS端的开发中时钟的频率要被用来计算波特率,这与CAN协议有关!


懒得算的可以直接用Clocking Wizard生成一个24Mhz的时钟,因为PS端的Example使用的就是24M,相当于CAN的初始化可以直接使用Example中的设置

MicroBlaze最小系统+UART/CAN/GPIO


3.3.4 BRAM

BRAM在FPGA有特定的资源,数量是有限的,所以我们在使用时也要注意资源的使用。
BARM的学习可以参考这篇知乎:BARM是什么-知乎
搜索Block,选择Block Memory Generator,双击进入。
MicroBlaze最小系统+UART/CAN/GPIO
通常习惯设置为真双口RAM,其余保持默认即可

MicroBlaze最小系统+UART/CAN/GPIO

  • 要想去除rsta_busy信号,可以在Other Options中取消下图的勾选。

MicroBlaze最小系统+UART/CAN/GPIO

  • 像之前的Local Memory一样添加一个AXI BRAM Contraller,将BARM也挂载在AXI总线上。IP设置保持默认即可。

MicroBlaze最小系统+UART/CAN/GPIO
注意:对于PS端来说,一个BARM Contraller对应一个的基地址,PS端无法控制数据从PORTA还是PORTB读出或写入数据。

这个是个人经验,之前用到多块BARM时候发现的。


3.3.5 中断
  • 点击Concat,我有三个外设,所以将number of ports修改为3。然后在将线连起来

MicroBlaze最小系统+UART/CAN/GPIO

  • 点开AXI Interrupt Controller。可以选择外部输入中断的触发方式,点击AUTO开关后,可以单独进行配置,对应位为1表示前面的模式,如下图中为:Edge 触发,高电平有效 ,上升沿触发。(边沿处触发时,Level的设置无效)。

  • MicroBlaze的中断方式在下面的下拉列表中选择。

MicroBlaze最小系统+UART/CAN/GPIO
注意:这里可以看到一个中断控制器最多支持32个中断,如果想要多个的话,可以采用中断控制器级联的方式


3.4 连接IP

都添加完成后点击Run Connection Automation。
MicroBlaze最小系统+UART/CAN/GPIO
我的最终工程架构如下图:
注意:AXI总线的互联自动完成了,但是有些时候得自己连接,最好保持各个IP运行在同一个时钟域下。

MicroBlaze最小系统+UART/CAN/GPIO

  • 可以清楚的看到M_AXI_DP和M_AXI_IP通过名为microblaze_0_axi_preiph的AXI Interconnect将所有外设都连接到了MicroBlaze核。

MicroBlaze最小系统+UART/CAN/GPIO


3.5 地址分配

  • 最后点击Address Editor,可以看到每个外设的基地址已经被自动分配了,还是那句话,对哪个外设操作就是对哪片基地址写值。

MicroBlaze最小系统+UART/CAN/GPIO

  • 点击2可以自动整理设计的排版
    MicroBlaze最小系统+UART/CAN/GPIO
  • 完成所有设计以后要点击1。完成设计的实现,这个过程可能会报错,根据提示完成修改即可。
    MicroBlaze最小系统+UART/CAN/GPIO

3.5 生成HDL文件

  • 生成HDL Wrapper。
    MicroBlaze最小系统+UART/CAN/GPIO
  • 通常会在Wrapper外面再包一层,因为很多时候Block Design并不是主要的设计,还需要在外部添加一些设计。
    MicroBlaze最小系统+UART/CAN/GPIO
  • 生成Bit文件之后,我们要导出硬件。还要勾选include bitstream。
    MicroBlaze最小系统+UART/CAN/GPIO

MicroBlaze最小系统+UART/CAN/GPIO


4. 结语

PL端的开发完成后,接下来就是PS端的开发,我会在下一篇博客中进行论述。文章来源地址https://www.toymoban.com/news/detail-475236.html

到了这里,关于MicroBlaze最小系统+UART/CAN/GPIO的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UART、IIC、SPI、CAN通信的区别与应用

    数据通信基本方式可以分为 串行通信与并行通信 两种 1.1.1、串行通信 (1)定义:串行通信是指利用一条传输线将数据一位位地顺序传送。 (2)传输方式:传输一个字节(8个位)的数据时,串口是将8个位排好队,逐个地在1条连接线上传输。 (3)特点:通信线路简单,成

    2024年02月06日
    浏览(48)
  • STM32实现UART-CAN融合式高速串口

    STM32的UART硬件电路,在进行线接传输时,一般低于230400bps的波特率,因为单端信号传输的特性,限制了传输距离和传输速度。而在同一块PCB板內进行短距离UART传输,则可以达到2Mbps及至4Mbps的传输速率,所以STM32的UART接口,能支持配置为2M或4M波特率。 如果要实现接线方式的串

    2024年02月04日
    浏览(69)
  • 串行通信协议(I2C、SPI、UART、SCCB、CAN)

    推荐一部书,在这本书里面介绍了I2C、SPI、UART和CAN等通信协议,写的蛮不错的。 串行通信 :设备与设备之间,传输数据按顺序依次1bit位接1bit位进行传输。 并行通信 :设备与设备之间,通过多条传输线,可以同时传输多个bit位的信号。 1.简单的双向两线制总线协议标准、半

    2024年02月14日
    浏览(65)
  • 串口、TTL、UART、RS232、RS422、RS485、CAN、CAN FD的定义、工作原理和它们之间的区别

    串口是计算机与外部设备之间通过串行通信接口进行数据传输和控制的方式。常见的串口协议包括TTL、UART、RS232、RS422、RS485、CAN、CAN FD等。这些协议之间的定义、工作原理和区别如下: TTL(Transistor-Transistor Logic)串口协议是一种数字电平标准,工作电平为0V和5V,适用于短距

    2024年02月13日
    浏览(58)
  • Proteus平台下基于Arduino的通过UART串口可靠通信系统仿真、传感器数据采集、以及LCD屏幕二级菜单功能实现(附工程源码、设计报告)

    三个按键控制菜单,功能分别为:选择功能1,选择功能2,以及返回上一级; 通过三个外部中断对页面状态参量进行控制: 停止等待 当U1收到U2的ACK后才会发送下一次传感器采集到的数据 超时重传 当关闭U2后,U1到达设定的超时时间后,进行重传操作,直到收到U2的确认收到

    2024年02月16日
    浏览(46)
  • 【分布式系统】前言

    争取写一下阅读笔记,更新有关分布式系统的一切,先开个坑。 现在的心得如下: 不知道啥时候能破解哈~~ 内容包括部分6.824 + 读的论文 + DDIA: DDIA mapreduce GFS VMwareFT Raft zookeeper chain replication(CR)和 CRAQ time,clocks viewstamped replication paxos PBFT 分布式事务

    2024年02月14日
    浏览(253)
  • 【单片机】UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB、SD卡、1-WIRE、Ethernet等常见通信方式

    在单片机开发中,UART、I2C、RS485等普遍在用,这里做一个简单的介绍 UART口指的是一种物理接口形式(硬件)。 UART是异步(指不使用时钟同步,依靠帧长进行判断),全双工(收发可以同时进行)串口总线。它比同步串口复杂很多。有两根线,一根TXD用于发送,一根RXD用于接收

    2024年02月11日
    浏览(43)
  • 五.实战软件部署 1-3实战章节-前言&MYSQL 5.7版本在centos系统安装&MYSQL 8.0版本在centos系统安装

    目录 五.实战软件部署 1-实战章节-前言 五.实战软件部署 2-MYSQL 5.7版本在centos系统安装 1-配置yum仓库 2-使用yum安装mysql 3-安装完成后,启动mysql并配置开机自启动 4-检查mysql的运行状态 --配置 1-获取mysql的初识密码 2-登录mysql数据库系统 3-修改root用户密码 4-配置root的简单密码

    2024年02月21日
    浏览(49)
  • MicroBlaZe 相关知识点

    1.DDR3——存储.c的应用程序。需要两个时钟(200MHZ输入,还有一个是特权同学的166.6m) 2.QSPI FLASH——对flash进行固化(1.需要50M外部时钟输入2.在SDK里面需要修改值为5)。 3.MicroBlaZe的输入时钟(mig输出的时钟频率一般小于200MHZ)。 5.SDK里面会有个串口terminal可以显示打印信息。

    2024年02月13日
    浏览(57)
  • MicroBlaze Processor hello world实验

    搭建microblaze工程,通过串口打印hello world,了解microblaze的使用,加深对FPGA硬件和软件开发的理解。 MicroBlaze Processor是xilinx提供的一个软核处理器(使用FPGA资源实现的处理器,类似的arm也开源了一些单片机的软核如M3),支持32位或者64位,同时也有许多其他的配置。在使用软

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包