基于MicroBlaze 的嵌入式系统设计

reference: http://xilinx.eetrend.com/d6-xilinx/article/2013-03/3863.html

摘 要:当今时代,嵌入式系统已经无所不在,与人们的日常生活息息相关。嵌入式系统以微处理器为核心,以计算机技术为基础,其主要特征是实时性强。据统计,目前世界上微处理器每年生产总量的95 %以上都是面向嵌入式系统应用,围绕Xilinx 公司的MicroBlaze 微处理器,对其体系结构、设计流程和相关开发工具一一做出介绍,并且通过一个简单的实例来说明以MicroBlaze 处理器为内核的嵌入式系统的开发过程。

1  MicroBlaze 处理器结构
MicroBlaze 处理器是Xilinx 公司针对嵌入式处理器开发应用推出的一种32 位嵌入式处理器内核,他是一种软核结构,简单但灵活性强,在目标器件中可以进行任意配置。他采用RISC 指令集、Harvard 体系结构,该处理器有以下一些特征:
(1) 32 个32 位通用寄存器和2 个专用寄存器。
(2) 32 位指令系统, 支持3 个操作数和2 种寻址方式。
(3) 分离的32 位指令和数据总线,符合IBM 的OPB总线规范。
(4) 通过本地存储器总线(LMB) 直接访问片内块存储器(BRAM) 。
(5) 具有高速的指令和数据缓存(cache) ,三级流水线结构。
(6) 具有硬件调试模块(MDM) 。
(7) 带8 个输入/ 输出快速链路接口( FSL) 。

说明:
DOPB 器件内部的外围设备数据接口总线,用于处理器与片内的设备进行数据交换。
DLMB 实现数据交换的本地块存储器总线,该总线为处理器内核与块存储器(BRAM) 之间提供专用的高速数据交换通道。

IOPB 用于实现外部程序存储器的总线接口。当程序较大时,需要外接大容量的存储器,该总线提供读取指令的通道。

ILMB 用于取指令的本地存储器总线,该总线与器件内部的块存储器(BRAM) 相连,实现高速的指令读取。

MFSL0. . 7  主设备数据接口, 提供点对点的通信通道。

SFSL0. . 7  从设备数据接口, 提供点对点的通信通道。

2  EDK开发流程
EDK( Embedded Development Kit) 是Xilinx 公司针对FPGA 内部32 位嵌入式处理器开发而推出的开发套件。EDK的工具包中集成了硬件平台产生器、软件平台产生器、仿真模型生成器、软件编译器和软件调试等工具,利用其集成开发环境XPS( Xilinx Platform Studio) 可以方便、快速地完成嵌入式系统开发的整个流程。EDK 以IP core的形式,提供诸如LMB ,OPB 总线接口、外部存储控制器、SDRAM 控制器、UART 中断控制器、定时器及其他一些外围设备接口等资源,利用这些资源,设计者能够轻松构建一个完善的嵌入式处理器系统,其完整的设计框图如图2所示。

一个完整的嵌入式处理器系统设计通常包括3 个部分: 硬件系统的构建;存储器映射及软件的开发;应用程序开发。

在XPS 集成开发环境下,嵌入式处理器硬件系统的构建由微处理器硬件规范(MHS) 文件和微处理器外围设备描述(MPD) 文件定义; 软件系统结构由微处理器软件规范(MSS) 文件定义,其开发流程如图3 所示。

MHS 文件用于描述硬件系统结构,定义处理器类型、总线接口、外设接口、中断处理和地址空间。该文件可用任意文本编辑器创建,是文本化的原理图输入。MPD 文件包含外围设备的所有有效输入/ 输出接口和硬件参数。MSS 文件主要用来定义软件库、驱动程序和文件系统。

说明:Data2BRAM 的作用是把软件代码文件( 3 .elf) 、FPGA 位流文件( 3 . bit) 和块存储器(BRAM) 初始化数据文件( 3 . bmm) 转换成新的FPGA 位流文件( 3 . bit )和存储器数据文件( 3 . mem) 。关于应用程序的编写将在下面的实例中详细介绍。

3  一个简单的实例
本实例基于e 元素科技的数字刀剑系列之火龙刀3评估板,简要叙述一个嵌入式处理器系统的开发流程,着重讲述应用程序的编写。对于其他评估板,只需对用户约束文件( 3 . ucf) 稍做修改即可。为简单起见,与图2 所示一个完整的系统相比,本例所述系统只在OPB 总线上挂MDM(硬件调试模块) 和GPIO(通用输入/ 输出设备) 2 个外围设备,GPIO 对应评估板上8 个L ED 输出,当完成下载到FPGA 后,8 个L ED 将不停地闪烁。具体描述如下:

第一步,硬件系统构建,在XPS 集成开发环境下,利用BSP(Base System Builder ) 向导自动创建一个以Mi-croBlaze 处理器为核心的简单硬件系统,设置处理器时钟频率为50 MHz ,总线时钟频率为50 MHz ,设置片上读/写调试模块为调试接口,在处理器IP 中,只加入MDM 和GPIO。根据向导逐步操作,即可完成硬件系统的构建。

第二步,在硬件系统建立后,利用XPS 的集成工具,完成网表的生成和软件的配置,存储器地址映射(默认由系统自动生成,分配的地址随系统而异) 如表1 所示。驱动配置和存储器映射的标识符及地址分配包含在文件xparameter s. h 中, 以上两步具体操作实现细节可参考EDK相关文档。

第三步,应用程序的开发。应用程序的编写使用C 语言,其方法有2 种,第一种是可以采用EDK 提供的应用程序接口函数(API) ,接口函数既多又复杂,不易搞懂;第二种方法是采用访问硬件的通用方式即简单的对地址赋值的方式。本例选用后者,要采用地址赋值方式,首先要了解GPIO 的寄存器地址映射,参见表2 。

相关代码及描述如下:
首先设定一个指针变量,将系统分配给GPIO 的地址赋给指针变量, 即让指针指向GPIO 的基地址, 也就是GPIO 的数据寄存器( GPIO DATA) ,接着向GPIO 三态控制寄存器写零(其地址为基地址加上偏移量4 ,即让指针变量加4) ,将GPIO 设置为输出,接下来就可以往GPIO数据寄存器送数,以控制8 个L ED 的状态。
# include " xbasic_types. h"
# include " xparameters. h"
# include " xutil. h"
# include " xgpio_l. h"
# define L ED DELA Y 2000000
void main ()
{
 Xuint32 Data = 0xaa ;
 int Delay ;
 int count = 0 ;
 Xuint32 3 ledpt r ;
 ledpt r = (int 3 ) 0x80002200 ; / / 指针指向GPIO
 *(ledpt r + 4) = 0x00000000 ;
/ / 向GPIO_TRI 寄存器写零,将GPIO 初始化为输出
 while (1)
  { count + + ;
  if (count %2 = = 0)
  {
   *ledpt r = 0x55 ;
/ / 向GPIO_DATA 寄存器送数,驱动L ED
  }
  else
  {
* ledpt r = 0xaa ;
/ / 向GPIO_DATA 寄存器送数,驱动L ED
  }
  for (Delay = 0 ; Delay < L ED_DELA Y; Delay + + ) ;
/ / 延时以看清L ED 在闪烁
  if (count %2 = = 0)
  {
   * ledpt r = 0x0f ;
/ / 向GPIO_DATA 寄存器送数,驱动L ED
  }
  else
  {
   * ledpt r = 0xf0 ;
/ / 向GPIO_DATA 寄存器送数,驱动L ED
  }
  for (Delay = 0 ; Delay < L ED_DELA Y; Delay + + ) ;
/ / 延时以看清L ED 在闪烁
  }
}

原文地址:https://www.cnblogs.com/limanjihe/p/9864121.html

时间: 2024-08-04 08:09:02

基于MicroBlaze 的嵌入式系统设计的相关文章

嵌入式系统设计

嵌入式系统(Embedded system),是一种"嵌入机械或电气系统内部.具有专属功能的计算机系统",通常要求实时计算性能.被嵌入的系统通常是包含硬件和机械部件的完整设备.相反,通用计算机如个人计算机则设计灵活,以满足广大终端用户的需求.现在常见的很多设备都采用嵌入式系统控制. 现代嵌入式系统通常是基于单片机(如含集成内存和/或外设接口的中央处理单元)的:但普通微处理器(使用外部存储芯片和外设接口电路)也很常见,特别是在较复杂的系统中.通用型处理器.专门进行某类计算的处理器.为手持

Xilinx Zynq-7000嵌入式系统设计与实现 学习教程(1)

学习资料下载地址:http://www.edawiki.com 开篇体会; Xilinx的ZYNQ系列FPGA是二种看上去对立面的思想的融合,ARM处理器的串行执行+FPGA的并行执行,着力于解决大数据处理.人工智能等复杂高性能算法处理. 新的设计工具的推出,vivado HLS,更加注重嵌入式系统的系统级建模,通过HLS工具,用户只需要编写C语言代码,就可以让工具自动转换和生成HDL代码 随着异构架构和片上系统技术的不断发展,协同设计.协同仿真和协同调试将成为未来嵌入式系统开发者必备的素质.所

基于W5500的嵌入式SNMP代理端实现

 一 实验背景 最近一个做焊接设备的朋友想在焊机上添加监控的新功能,实时获取焊机的温度.功耗等参数,还可简单控制,实现对集群焊接设备的网络化管理.而这个朋友不想在开发管理系统上花太多精力,想找一个开源的管理软件来实现他的需求.这让我想到了简单邮件管理协议SNMP,它生来就是为搞网络管理服务的.能广泛兼容各网络设备,一经推出就得到了广泛的应用和支持,几乎所有的网络设备生产厂家都实现了对SNMP的支持,大多数网络管理系统和平台也都是基于SNMP的.事实上,目前SNMP已成为网络管理领域中的工业标

【小蜜蜂老师主讲】基于STM32CubeMX的嵌入式开发基础教程

基于STM32CubeMX的嵌入式开发基础教程 广东职业技术学院/小蜜蜂笔记网  欧浩源 [第01单元]:STM32CubeMX的安装与快速入门 教案资源链接,视频教程链接. [第02单元]:STM32的GPIO开发基础 教案资源链接,视频教程链接. [第03单元]:STM32的按键开发基础 教案资源链接,视频教程链接. [第04单元]:STM32的中断系统与外部中断基础 教案资源链接,视频教程链接. [第05单元]:STM32的定时器开发基础 教案资源链接,视频教程链接. [第06单元]:ST

基于80251的嵌入式语音识别

一.文档介绍 嵌入式语音识别技术在251内核的实现. 缩写.术语 解 释 Specific Person Isolated Word Speech Recognition 特定人孤立词语音识别 Endpoint detection 端点检测 Feature parameter extraction 特征参数提取 DTW (Dynamic Time Warping) 动态时间规整 LPCC 线性预测倒谱参数 二.语音识别技术介绍 1.应用分类 (1)特定人与非特定人识别,特定人识别相对简单,训练者

哪里有基于JAVA的程序系统设计定做

一,关于我们我们的团队所有工作人员均为软件开发人员,信誉保证,有着多年毕业设计经验,我们在多年的一线开发岗位上积累了丰富的经验,保证服务的水平与专业性,拥有多年工作经验,能为各位即将参与答辩的同学们提供专业的毕业设计的定制服务. 联系我们:.扣.扣.号(幺零三贰三七幺贰幺) 根据毕设的复杂度,双方协商价格,不以任何理由收取押金或定金,我们会根据您提出的需求,完全按照您交代的任务书来进行完全基于原创而定制的设计产品,做出来的成品设计完全基于原创,绝非市场上其他的玳做同行们的修改模板的劣质产品.课题

哪里有基于J2EE的网站系统设计定做

一,关于我们我们的团队所有工作人员均为软件开发人员,信誉保证,有着多年毕业设计经验,我们在多年的一线开发岗位上积累了丰富的经验,保证服务的水平与专业性,拥有多年工作经验,能为各位即将参与答辩的同学们提供专业的毕业设计的定制服务. 联系我们:.扣.扣.号(幺零三贰三七幺贰幺) 根据毕设的复杂度,双方协商价格,不以任何理由收取押金或定金,我们会根据您提出的需求,完全按照您交代的任务书来进行完全基于原创而定制的设计产品,做出来的成品设计完全基于原创,绝非市场上其他的玳做同行们的修改模板的劣质产品.课题

基于S3C2440的嵌入式Linux驱动——看门狗(watchdog)驱动解读

本文将介绍看门狗驱动的实现. 目标平台:TQ2440 CPU:s3c2440 内核版本:2.6.30 1. 看门狗概述 看门狗其实就是一个定时器,当该定时器溢出前必须对看门狗进行"喂狗",如果不这样做,定时器溢出后则将复位CPU. 因此,看门狗通常用于对处于异常状态的CPU进行复位. 具体的概念请自行百度. 2. S3C2440看门狗 s3c2440的看门狗的原理框图如下: 可以看出,看门狗定时器的频率由PCLK提供,其预分频器最大取值为255+1:另外,通过MUX,可以进一步降低频率

2014025628《嵌入式系统设计》第四周总结

本周学习内容 一.学会了安装arm-linux-gcc交叉编译工具 解压了arm-linux-gcc交叉编译工具的压缩包,测试arm-linux-gcc是否可运行,解决了64位系统下安装32位软件的问题,并将arm-linxu-gcc加入环境变量PATH中. 二.学会了bootloader的配置.移植和编译 获取了u-boot源码,建立板级支持包 将eduk2410目录下的smdk2410.c文件更名为eduk2410.c,并修改了eduk2410.c 和Makefile文件.