基于MicroBlaze的嵌入式系统设计.docx
- 文档编号:29350582
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:7
- 大小:156.58KB
基于MicroBlaze的嵌入式系统设计.docx
《基于MicroBlaze的嵌入式系统设计.docx》由会员分享,可在线阅读,更多相关《基于MicroBlaze的嵌入式系统设计.docx(7页珍藏版)》请在冰豆网上搜索。
基于MicroBlaze的嵌入式系统设计
基于MicroBlaze-的嵌入式系统设计
基于MicroBlaze的嵌入式系统设计
由 技术编辑 于星期二,03/26/2013-23:
06发表
摘 要:
当今时代,嵌入式系统已经无所不在,与人们的日常生活息息相关。
嵌入式系统以微处理器为核心,以计算机技术为基础,其主要特征是实时性强。
据统计,目前世界上微处理器每年生产总量的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(EmbeddedDevelopmentKit)是Xilinx公司针对FPGA内部32位嵌入式处理器开发而推出的开发套件。
EDK的工具包中集成了硬件平台产生器、软件平台产生器、仿真模型生成器、软件编译器和软件调试等工具,利用其集成开发环境XPS(XilinxPlatformStudio)可以方便、快速地完成嵌入式系统开发的整个流程。
EDK以IPcore的形式,提供诸如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个LED输出,当完成下载到FPGA后,8个LED将不停地闪烁。
具体描述如下:
第一步,硬件系统构建,在XPS集成开发环境下,利用BSP(BaseSystemBuilder)向导自动创建一个以Mi-croBlaze处理器为核心的简单硬件系统,设置处理器时钟频率为50MHz,总线时钟频率为50MHz,设置片上读/写调试模块为调试接口,在处理器IP中,只加入MDM和GPIO。
根据向导逐步操作,即可完成硬件系统的构建。
第二步,在硬件系统建立后,利用XPS的集成工具,完成网表的生成和软件的配置,存储器地址映射(默认由系统自动生成,分配的地址随系统而异)如表1所示。
驱动配置和存储器映射的标识符及地址分配包含在文件xparameters.h中,以上两步具体操作实现细节可参考EDK相关文档。
第三步,应用程序的开发。
应用程序的编写使用C语言,其方法有2种,第一种是可以采用EDK提供的应用程序接口函数(API),接口函数既多又复杂,不易搞懂;第二种方法是采用访问硬件的通用方式即简单的对地址赋值的方式。
本例选用后者,要采用地址赋值方式,首先要了解GPIO的寄存器地址映射,参见表2。
相关代码及描述如下:
首先设定一个指针变量,将系统分配给GPIO的地址赋给指针变量,即让指针指向GPIO的基地址,也就是GPIO的数据寄存器(GPIODATA),接着向GPIO三态控制寄存器写零(其地址为基地址加上偏移量4,即让指针变量加4),将GPIO设置为输出,接下来就可以往GPIO数据寄存器送数,以控制8个LED的状态。
#include"xbasic_types.h"
#include"xparameters.h"
#include"xutil.h"
#include"xgpio_l.h"
#defineLEDDELAY2000000
voidmain()
{
Xuint32Data=0xaa;
intDelay;
intcount=0;
Xuint323ledptr;
ledptr=(int3)0x80002200;//指针指向GPIO
*(ledptr+4)=0x00000000;
//向GPIO_TRI寄存器写零,将GPIO初始化为输出
while
(1)
{count++;
if(count%2==0)
{
*ledptr=0x55;
//向GPIO_DATA寄存器送数,驱动LED
}
else
{
*ledptr=0xaa;
//向GPIO_DATA寄存器送数,驱动LED
}
for(Delay=0;Delay //延时以看清LED在闪烁 if(count%2==0) { *ledptr=0x0f; //向GPIO_DATA寄存器送数,驱动LED } else { *ledptr=0xf0; //向GPIO_DATA寄存器送数,驱动LED } for(Delay=0;Delay //延时以看清LED在闪烁 } } 作者: 赵泽才,常 青 ∙EDK ∙FPGA ∙MicroBlaze ∙SOPC ∙嵌入式系统 ∙微处理器 ∙初级知识库 ∙要发表评论,请先登录 或 注册 ∙1303次点击
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MicroBlaze 嵌入式 系统 设计