




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2节Xilinx嵌入式开发系统组成介绍MicroBlazePowerPC9.2.1片内微处理器软核MicroBlaze1.MicroBlaze体系结构MicroBlaze软核是一种针对XilinxFPGA器件而优化的功能强大的32位微处理器,是业界最快的软处理器IP核解决方案,支持CoreConnect总线的标准外设集合,具有兼容性和重复利用性,最精简的核只需要将近400个Slice。MicroBlaze软核内部采用RISC架构和哈佛结构的32位指令和数据总线,内部有32个通用寄存器R0〜R3、2个特殊寄存器程序指针(PC)和处理器状态寄存器(MSR)、1个ALU单元、1个移位单元和两级中断响应单元等基本模块,还可具有3/5级流水线、桶形移位器、内存管理/内存保护单元、浮点单元(FPU)、高速缓存、异常处理和调试逻辑等可根据性能需求和逻辑区域成本任意裁剪的高级特性,极大地扩展了MicroBlaze的应用范围。MicroBlaze处理器的内核仍在不断更新中,目前最新版为MicroBlazeV7.0,其内部架构如图9-1所示。图9-1MicroBlaze内部架构示意图MicroBlaze处理器架构均衡了执行性能和设计尺寸,但由于其最高工作频率由FPGA芯片提供,所以计算性能随处理器配置、实现工具结果、目标FPGA架构和器件速度级别的不同而不同。表9-1给出了不同FPGA芯片上的MicroBlaze性能对比表,其结果不代表一般嵌入式应用的计算性能。表9-1MicroBlaze内核的最大Dhrystone性能注:DMIPS表示每秒执行的Dhrystone指令数量。2.MicroBlaze的总线接口CoreConnect是由IBM开发的片上总线通信链,它使多个芯片核相互连接成为一个完整的新芯片成为可能。Xilinx以IBMCoreConnect为嵌入式处理器的设计基础,具有丰富的接口资源。目前,最新版本的MicroBlaze软核支持的接口标准有:带字节允许的OPB(On-chipPeripheralBus,片上外设总线)V2.0接口;高速的LMB(LocalMemoryBus,本地存储器总线)接口;FSL主从设备接口;XCL(XilinxCacheLink,Xilinx缓存链路)接口;与MDM(MicroprocessorDebugModule,微处理器调试模块)连接的调试接口。其中,OPB是对IBMCoreConnect片上总线标准的部分实现,适用于将IP核作为外设连接到MicroBlaze系统中。LMB用于实现对片上的blockRAM的高速访问。FSL是MicroBlaze软核特有的一个基于FIFO的单向链路,可以实现用户自定义IP核与MicroBlaze内部通用寄存器的直接相连;而XCL则是MicroBlaze软核新增加的,用于实现对片外存储器的高速访问。MicroBlaze软核还有专门的调试接口,通过参数设置,开发人员可以只使用特定应用所需要的处理器特性。Xilinx提供了大量的外设IPCore,可外挂到MicroBlaze的OPB总线上,如DMA单元、以太网MAC层处理器、PCI/PCIe接口、串口以及USB等,如图9-2所示。图9-2MicroBlaze支持的外设接口示意图其中,DMA和多端口存储器控制器是高速接口,OPB属于低速接口总线,一个外设一般不能同时和这两类总线相连。以太网MAC控制器模块之所以和两类总线连接,是因为其控制接口和OPB总线相连,数据接口和高速的DMA总线连接。3.MicroBlaze寄存器1)通用寄存器MicroBlaze内核中的32个32位的通用寄存器记为R0〜R31。寄存器并不是由外部复位输入(如reset或debug-rst脚)复位,而是在比特流下载的时候复位。通用寄存器的描述如表9-2所示。表9-2MicroBlaze通用寄存器功能表2)特殊寄存器程序指针(PC)寄存器:存储下一条指令的地址。它可以由一个MFS指令读出且不能由MTS指令写入。当使用MFS指令的时候,将Sa置为00000或rpc将定义PC寄存器。表中内容为程序指针执行中的指令的地址。也就是说,“mfsr2rp(指令将把mfs指令自己的地址存入R2中。机器状态寄存器(MSR):包含了处理器的控制和状态比特,可以通过MFS指令读,也可以通过MTS指令或者专用的指令MSRSET、MSRCLR指令写。当对MSR进行读操作时,bit29作为进位位被复制到bit0位。写MSR需要一个时钟周期的延时,当用MTS指令向MSR写指令时,在MTS指令执行结束一个时钟周期之后,写入的值才生效。所有写入bit0的值将被忽略。当使用MTS指令或MFS指令的时候,将sx置为0001或rmsr被定义为对MSR的操作。4.MicroBlaze指令集MicroBlaze指令字为32位,有A型和B型两种类型指令。A型指令有两个源寄存器和一个目的寄存器,用以完成寄存器到寄存器间的数据运算;B型指令有一个源寄存器、一个目的寄存器和一个16位的立即数(通过在B型指令前加一个IMM指令可将其扩展到32位),可以进行寄存器和立即数间的数据运算。其指令按功能划分有逻辑运算、算术运算、分支、存储器读/写和特殊指令等。类型A和类型B的指令格式如图9-3所示。图9-3(a)类型A指令格式图9-3(b)类型B指令格式图9-3MicroBlaze指令格式Microblaze指令执行的流水线是并行流水线,它分为3级流水:取指、译码和执行,如图9-4所示。1图9-4MicroBlaze的流水线完整的MicroBlaze指令集见参考文献[11]。9.2.2片内微处理器PowerPC1.PowerPC体系结构PowerPC是由苹果、IBM和摩托罗拉公司共同开发的微处理器结构,采用精简指令计算架构(RISC),并形成了一个开放的标准。Xilinx芯片中内嵌的PowerPC结构经过IBM公司优化,以较简单的、快速的运算为基础,促成微处理器在一个给定的时钟速度下执行较多的指令,主要包括PowerPC405系列。PowerPC提供了3个不同层面的应用,从下往上分别是用户指令集结构(UISA)、虚拟环境结构(VEA)和操作环境结构(OEA),各层功能如表9-3所列。表9-3PowerPC3层结构的说明这种层次结构提供了软件兼容的灵活性。此外,所有的PowerPC都符合UISA规范,保证PowerPC对应用程序的兼容性,而VEA和OEA则可以有不同版本。XilinxFPGA芯片中内嵌的32位硬PowerPC核,可以实现高性能嵌入式应用。目前,在单片FPGA芯片中可最多集成2个硬PowerPC核。PowerPC集成了5级标量流水线,具有独立的指令缓存和数据缓存、1个JTAG端口、TraceFIFO、多个定时器和一个内存管理单元(MMU)。此外,Xilinx的高端器件还集成了辅助处理器单元控制器(APU),可直接控制FPGA架构内的硬件指令协处理。PowerPC不占用FPGA内部任何逻辑资源,其内部架构如图9-5所示。图9-5PowerPC硬核的内部结构示意图PowerPC总线接口与传统的总线接口不同,由于PowerPC处理器内核被嵌入到FPGA芯片中,利用Xilinx的IP植入和主动互连技术,几百个处理器结点是直接连接到FPGA的逻辑和存储器阵列。这种总体植入在硬件/软件的系统结构中提供了超强的灵活性,可以有效地将复杂的功能成分在硬件中高速地实现和在软件中高度灵活地实现。这种直接连接的配置克服了利用总线在FPGA和附加外部处理器之间接口的瓶颈。PowerPC处理器也采用CoreConnect技术,可运行在100-133MHz的高带宽64位总线。为了使灵活性达到最大,CoreConnect结构是作为软IP在FPGA中实现的。和Microblaze软核一样,PowerPC也具备LMB和OPB总线,分别用来接口高速和低速外设到PowerPC处理器。此外,PowerPC还具有器件控制寄存器总线,可完成对通用外设器件寄存器的访问。PowerPC寄存器PowerPC的寄存器可分为通用寄存器、专用寄存器、机器状态寄存器、条件寄存器和芯片控制寄存器5大类,如表9-4所列。表9-4PowerPC寄存器列表11) 通用寄存器PPC(PowerPC的缩写)有32个32比特的通用寄存器,可通过加载指令从内存中读取数值或通过存储指令将数值写入内存。所有的计算指令的操作数都是通用寄存器,且输出结果也都存放于通用寄存器中,所有通用寄存器都可通过软件代码访问。2) 专用寄存器PPC有丰富的32位专用寄存器,可访问额外的处理器资源,如计数寄存器、连接寄存器、调试资源、计数器、中断寄存器以及其余寄存器资源等。大多数专用寄存器是应用程序所不能访问的,只有计数器和连接寄存器等少数专用寄存器能被所有的软件所访问。3) 机器状态寄存器32比特机器状态寄存器(MSR)定义了PowerPC处理器的工作状态,允许用户修改。4) 条件寄存器32位的条件寄存器(CR)可分为8个区域(CR0-CR7),每区域包含4个比特,可用于控制所有的条件分支。算术指令可配置CR0,比较指令可配置所有的CR数值。应用软件可访问所有的CR数值。5) 芯片控制寄存器32比特芯片控制寄存器用于配置、控制和读取外部处理器,虽然芯片控制寄存器不是PPC的一部分,但仍可在特殊软件中通过mtdcr和mfdcr指令来访问。3.PowerPC指令集PowerPC实现5级流水线,包括取指、译码、执行、写回、加载写回。PowerPC的指令包括数学运算、逻辑运算、比较、跳转、中断等指令,分为B、D、I、M、SC、X、XFX、XL以及XO类型,详细的指令集见参考文献[12]。PowerPC执行指令的速度接近每周期执行一条指令,各类指令的典型执行速度如表9-5所列。表9-5PowerPC的指令执行周期列表9.2.3常用的IP核以及设备驱动Xilinx在EDK环境中提供了嵌入式系统中常用的设备,包括:通用I/O设备、中断控制器设备、定时器、外部存储器控制器以及以太网、串口等高、低通信设备。上述外设以及外设驱动都以IPCore的形式给出,便于使用。本节主要介绍CPU系统所必需的基本外设,如通用I/O、中断以及外存储器控制器。1.通用I/O设备(GPIO)1)GPIO结构通用I/O设备是32位的OPB总线外设,每一位GPIO都可动态配置为输入、输出端口,包含一个寄存器和一个多路器。每个GPIO可最多包含两个通道,通过IPIF模块连接到OPB总线,如图9-6所示,其中的IPIF模块相当于外部总线控制器。图9-6GPIO模块的连接示意图GPIO的寄存器可以以双字(32比特)、字(16比特)以及字节(8比特)的方式访问。为了与OPB总线相连,需要和IPIF寄存器匹配,因此GPIO的寄存器是字边界访问的。GPIO的数据格式如图9-7所示。
图9-7GPIO的数据格式示意图GPIO设备完整的端口信号如表9-6所列,在系统中可根据实际需求配置相应的参数。其中C_OPB_AWIDTH为OPB外设地址总线宽度;C_OPB_DWIDTH为OPB外设数据总线宽度;C_GPIO_WIDTH为GPIO的总线宽度;C_BASEADDR为系统为GPIO设备分配的基地址,C_HIGHADDR为高地址。OPB总线对GPIO寄存器的读写时序如图9-8和图9-9所示。实际上,OPB总线有4种不同的总线访问方式:访问寄存器接口、访问SRAM接口、访问FIFO接口以及突发传送,每种方针方式用于不同的总线操作,具有不同的时序。图9-8OPB总线读取GPIO寄存器的时序逻辑图9-9OPB总线写GPIO寄存器的时序逻辑无论读、写操作,都是由OPB总线发出请求,经过几个时钟周期后,收到应答信号表明操作成功,是CPU、DSP等处理器最常见的读、写寄存器操作。2)GPIO驱动在EDK中,与GPIO有关的底层文件有:xgpio.c、xgpio.h、xgpio_i.h以及xgpio_l.h。其中xgpio.c定义了GPIO所有的驱动函数,所以在GPIO的用户代码中添加下列语句:#include“xgpio.h”#include、'xgpio_1.h”#include''xgpio_i.h〃在xgpio.c中定义了下面驱动函数,包含GPIO的初始化、配置、方向的设定、读取和赋值输出等函数。下面给出常用的GPIO操作函数:(1) 初始化函数XStatusXGpio_Initialize(XGpio*InstancePtr,Xuint16DeviceId);其中InstancePtr是Xgpio结构体指针,存储器的指针参数必须被预先指定;DeviceId是由Xgpio控制的唯一的设备ID,可在xparameter.h文件中找到。通过XGpio_Initialize函数将唯一的设备ID和Xgpio结构体联系起来指定设备。(2) 配置查找函数XGpio_Config*XGpio_LookupConfig(Xuint16DeviceId);该函数查找唯一标志符Deviceld所标识的设备配置,系统配置表里包含了每一个设备的配置信息。返回的m_XGpio即为设备配置结构指针,返回m_XNULL表明未找到标识设备。(3) 数据方向设置函数voidXGpio_SetDataDirection(XGpio*InstancePtr,unsignedChannel,Xuint32DirectionMask);XGpio_SetDataDirection配置GPIO的数据传输方向°InstancePtr是Xgpio结构体指针;Channel为GPIO的通道数(每个GPIO模块有两个通道),可选值为1或2;DirectionMask是输入输出的位标识,对应位的值为0表示输出,1表示输入。(4) 数取函数Xuint32XGpio_DiscreteRead(XGpio*InstancePtr,unsignedChannel);XGpio_DiscreteRead读寄存器的值°InstancePtr是Xgpi。结构体指针;Channel为GPIO的通道数,可选值为1或0。(5) 赋值函数voidXGpio_DiscreteWrite(XGpio*InstancePtr,unsignedChannel,Xuint32Mask);XGpio_DiscreteWrite写寄存器的值°InstancePtr是Xgpio结构体指针;Channel为GPIO的通道数,可选值为1或0。中断控制器1)GPIO结构中断控制器(opb_intc)由中断控制核和总线接口组成,中断核可通过参数配置,与相应的总线接口逻辑配合,接在OPB总线上或DCR总线上,即。pb_intc和dcr_intc,可用于MicroBlaze和PowerPC嵌入式系统。其和OPB总线的典型连接方式如图9-10所示。
图9-10中断控制器和OPB总线的连接示意图中断控制器包括8个可访问的寄存器,如表9-7所列。通过寄存器的配置,中断输入可以通过电平触发或沿触发,包括高电平触发、低电平触发、上升沿触发和下降沿触发。表9-7中断控制器以及地址偏移中断控制器完整的端口信号如表9-8所列,在系统中可根据实际需求配置相应的参数。表9-8中断控制器的端口信号
图9-11OPB总线中断控制器读写时序2)中断控制器驱动在EDK中,与中断控制器有关的底层文件有:xintc.c、xintc.h、xintc_g.c、xintc_i.h、xintc_intr.c、xintc_l.c、xintc_l.h、xintc_options.c以及xintc_selftest.c。所以在GPIO的用户代码中添加下列语句:#include“xintc.h”#include、'xintc_1.h”#include''xintc_i.h〃中断控制器的驱动函数,包含中断控制器的初始化、使能、撤销以及清除等函数。下面给出常用的中断控制器操作函数:(1)初始化函数XStatusXIntc_Initialize(XIntc*InstancePtr,Xuint16DeviceId);XIntc_Initialize用于指定中断控制模块,同时初始化中断结构域、中断向量表,撤销中断源以及中断输出使能。其中InstancePtr是Xintc的对象;Deviceld是中断模块的唯一设备ID号。返回m_XST_SUCCESS表明初始化成功,否则初始化失败。(2) 中断使能函数XStatusXIntc_Start(XIntc*InstancePtr,Xuint8Mode);XIntc_Start开始中断控制。其中InstancePtr是Xintc的对象;Mode为中断模式,可使能模拟中断以及真实的硬件中断。(3) 中断撤销函数voidXIntc_Stop(XIntc*InstancePtr);XIntc_Stop输出停止中断控制,其中InstancePtr是Xintc的对象。(4) 中断源连接函数XStatusXIntc_Connect(XIntc*InstancePtr,Xuint8Id,XInterruptHandlerHandlervoid*CallBackRef);XIntc_Connect连接中断源的ID以及与之关联的处理程序,当中断被确认后,处理程序将运行。其中InstancePtr是Xintc的对象;Id为中断源的序号,0是最高级别的中断;Handler是中断处理程序;CallBackRef是返回参数,通常为连接驱动器的对象指针。若返回mXST_SUCCESS表明连接正确,否则则连接失败。(5) 中断源撤销函数voidXIntc_Disconnect(XIntc*InstancePtr,Xuint8Id);XIntc_Disconnect撤销与中断源Id关联的处理程序。其中InstancePtr是Xintc的对象;Id为中断源的序号,0是最高级别的中断。(6) 特定中断使能函数voidXIntc_Enable(XIntc*InstancePtr,Xuint8Id);XIntc_Enable使能由竞争ID提供的中断源,任何一个未决的特定中断条件将导致一个功能调用。其中InstancePtr是Xintc的对象;Id为中断源的序号,0是最高级别的中断。(7)特定中断撤销函数voidXIntc_Disable(XIntc*InstancePtr,Xuint8Id);XIntc_Disable撤销由竞争ID提供的中断源,但中断控制器将不产生一个特定Id的中断,将继续保留该中断条件。其中InstancePtr是Xintc的对象;Id为中断源的序号,0是最高级别的中断。中断源响应函数voidXIntc_Acknowledge(XIntc*InstancePtr,Xuint8Id);XIntc_Acknowledge响应竞争后Id的中断源,响应中断后将清除中断条件。其中InstancePtr是Xintc的对象;Id为中断源的序号,0是最高级别的中断。外部存储器控制器外部存储器控制器基本涵盖了目前所有的外部存储器类型,包括片内BRAM、sram、sdrsdram、ddrsdram、ddr2sdram以及Flash等器件。这里以sdrsdram控制器为例介绍其结构和底层驱动。1)sdrsdram控制器结构sdrsdram存储器是动态同步存储器的一种,采用单时钟,其时钟频率就是数据存储的频率,如时钟信号为100或133MHz,则数据读写速率也为100或133MHz。但由于sdram依赖于电容的电量来区分逻辑、'0〃和''1〃,但电容器会不断漏电,需要周期性地刷新sdram的每一个存储单元,因此读写时序比较复杂,且读写速率也达不到工作时钟的频率。sdram控制器的作用就是将sdram存储器的初始化、刷新、地址转换、数据读取等操作封装起来,让使用者将其看成系统黑盒,读数直接按地址访问,写数直接往目的地址赋值即可。Xilinx提供了sdrsdram控制器的IPCore,在XPS中,直接将其添加到OPB总线上即可。sdrsdram控制器的内部结构以及与OPB总线的接口如图9-12所示。
图9-12sdram控制器和OPB总线的连接示意图sdram控制器完整的信号端口列表如表9-9所列。其中C_SDRAM_DWIDTH为sdram存储器的数据宽度,C_SDRAM_AWIDTH为sdram存储器的地址宽度,C_SDRAM_BANK_AWIDTH为存储器BANK的地址。表9-9sdrsdram控制器的端口信号列表sdram控制器支持不同数据位宽的读、写模式,且不同位宽以及不同刷新模式下的读写时序和配置都是不同的。例如,突发模式下16比特数据位宽的sdram控制器读写时序如图9-13和图9-14所示。图9-1316比特突发模式读数据的时序逻辑图
图9-1416比特突发模式写数据的时序逻辑图2)sdrsdram控制器驱动在嵌入式系统中,sdrsdram控制器对于用户来讲是透明的,即用户在功能使用上没有初始化、刷新等操作,直接用IO读写函数读写相应的地址即可。基本的IO读写函数在文件xio.h中定义,其本质就是简单的指针赋值语句,32比特位宽的读写函数如下所示。#defineXIo_In32(InputPtr)(*(volatileXuint32*)(InputPtr))#defineXIo_Out32(OutputPtr,Value)\(*(volatileXuint32*)((OutputPtr))=(Value))因此在操作sdram时,只需添加下列两个头文件。其中,xio.h定义了端口操作的函数,xparameters.h文件则给出了sdram存储器的基地址。#include"xio.h"#include"xparameters.h"9.2.4系统设计方案1.嵌入式总线介绍总线是多组信号的有效组合,处理器和周边设备通过总线地址、数据以及片选控制等信号进行通信。根据对总线的控制,可将外设分为仲裁设备、主设备、从设备以及主/从设备(桥)。Xilinx嵌入式系统中的总线可分为3类:片外
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 销售原酒合同范本
- 校园净水合同范本
- 废旧木厂转让合同范本
- 白酒供货合同范本
- 纹身店员合同范本
- 工厂企业劳务合同范本
- 预防医学展示
- 预防意外跌落托班
- 预防感染:公共区域防护指南
- 面试实验室管理员
- 河南省郑州市管城区2024-2025学年级九年级下学期第一次模拟数学试题(原卷版+解析版)
- 儿童各年龄期保健儿童保健学课件
- 苏教版数学一年级下册(2024)第七单元观察物体(一)综合素养测评 A 卷(含答案)
- 2025年中考英语第一次模拟试卷01(广州专用)(原卷版)
- 《石油工程事故案例分析》课件
- 甘肃卷2024年高考真题化学试题(含答案)
- 2024中国建筑第七工程局有限公司招聘笔试参考题库附带答案详解
- 初级咖啡师资格理论考试题及答案
- 2025高考语文一轮复习学案:语言连贯之语句补写-精读语段精确推导
- 2025年中国废旧轮胎循环利用行业市场发展监测及投资战略规划研究报告
- 2025年北京电子科技职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
评论
0/150
提交评论