2.1 运行平台介绍

了解运行硬件平台要从两个方面入手,一是其基本硬件特性和外围接口I/O的情况,二是微处理器的相关情况。了解外围接口是为了了解嵌入式操作系统中可能需要编写哪些外围设备驱动程序。了解基本硬件特性如内存大小,将了解嵌入式操作系统中存储管理的相关问题和是否适合运行嵌入式操作系统。以此为目标,下面将首先介绍硬件平台Spartan-6的特性和外围接口。

Spartan-6系列不仅拥有先进系统集成能力,同时还能实现适用于大批量应用的最低总成本。该系列由13个成员组成,可提供的密度从3840个逻辑单元到147443个逻辑单元不等。与上一代Spartan系列相比,该系列功耗仅为其50%,且速度更快,连接功能更丰富全面。Spartan-6系列采用成熟的45nm低功耗铜制程技术制造,实现了性价比与功耗的完美平衡,能够提供全新且更高效的双寄存器6输入查找表(LUT)逻辑和一系列丰富的内置系统级模块,其中包括18KB(2×9KB)Block RAM、第二代DSP48A1 Slice、SDRAM存储器控制器、增强型混合模式时钟管理模块、SelectI/O技术、功率优化的高速串行收发器模块、PCI Express兼容端点模块、高级系统级电源管理模式、自动检测配置选项,以及通过AES和Device DNA保护功能实现的增强型IP安全性。这些优异特性以前所未有的易用性为定制ASIC产品提供了低成本的可编程替代方案。Spartan-6 FPGA可为大批量逻辑设计、以消费类为导向的DSP设计以及成本敏感型嵌入式应用提供最佳解决方案。

Spartan-6 系列产品的主要技术特征见表2.1。

表2.1 Spartan-6系列产品的主要技术特征

了解了以上一些基本的硬件信息后,还需要继续了解这个硬件中的核心即微处理器相关的信息。所有的操作系统必然是运行在一个微处理器里的,此类FPGA可以采用MircoBlaze软核作为微处理器来运行操作系统。MicroBlaze软核内部采用RISC架构和哈佛结构的32位指令及数据总线,内部有32个通用寄存器R0~R31、2个特殊寄存器程序指针(PC)和处理器状态寄存器(MSR)、1个ALU单元、1个移位单元和两级中断响应单元等基本模块,还可具有3/5级流水线、桶形移位器、内存管理/内存保护单元、浮点单元(FPU)、高速缓存、异常处理和调试逻辑等可根据性能需求和逻辑区域成本任意裁剪的高级特性,极大地扩展了MicroBlaze的应用范围。MicroBlaze内部架构如图2.1所示。MicroBlaze支持的外设接口如图2.2所示。

图2.1 MicroBlaze内部架构示意图

OPB是对IBM Core Connect片上总线标准的部分实现,适用于将IP核作为外设连接到MicroBlaze系统中。LMB用于实现对片上的Block RAM的高速访问。FSL是MicroBlaze软核特有的一个基于FIFO的单向链路,可以实现用户自定义IP核与MicroBlaze内部通用寄存器的直接相连;而XCL则是MicroBlaze软核新增加的,用于实现对片外存储器的高速访问。MicroBlaze软核还有专门的调试接口,通过参数设置,开发人员可以只使用特定应用所需要的处理器特性。Xilinx提供了大量的外设IP Core,可外挂到MicroBlaze的OPB总线上,如DMA单元、以太网MAC层处理器、PCI/PCIe接口、串口以及USB等(图2.2)。

图2.2 MicroBlaze支持的外设接口示意图

MicroBlaze的内核结构如图2.1所示,其内部有32个通用寄存器和5个特殊寄存器(均为32位);它以大端、位翻转的格式来描述数据,支持的数据类型有字、半字、字节;所有指令字长为32位,采用三级流水线结构;处理器有三个访问存储器的接口,分别为Local Memory Bus(LMB)、On2Chip Perip Heral Bus (OPB)、Xilinx Cache Link (XCL)。

1.通用寄存器

MicroBlaze内核中的32个32位通用寄存器记为R0~R31。寄存器并不是由外部复位输入(如reset或debug-rst脚)复位,而是在比特流下载的时候复位。通用寄存器功能表见2.2。

表2.2 MicroBlaze通用寄存器功能表

2.特殊寄存器

程序指针(PC)寄存器:存储下一条指令的地址。它可以由一个MFS指令读出且不能由MTS指令写入。当使用MFS指令的时候,将sa置为00000或rpc将定义PC寄存器。表中内容为程序指针执行中的指令的地址。也就是说,“mfs r2 rpc” 指令将把mfs指令自己的地址存入R2中。

机器状态寄存器(MSR):包含了处理器的控制和状态比特,可以通过MFS指令读,也可以通过MTS指令或者专用的指令MSRSET、MSRCLR写。当对MSR进行读操作时,bit29作为进位位被复制到bit0位。写MSR需要一个时钟周期的延时,当用MTS指令向MSR写指令时,在MTS指令执行结束一个时钟周期之后,写入的值才生效。所有写入bit0的值将被忽略。当使用MTS指令或MFS指令的时候,将sx置为0001或rmsr被定义为对MSR的操作。

3.MicroBlaze指令集

MicroBlaze指令字为32位,有A型和B型两种类型的指令。A型指令有两个源寄存器和一个目的寄存器,用于完成寄存器到寄存器间的数据运算。B型指令有一个源寄存器、一个目的寄存器和一个16位的立即数(通过在B型指令前加一个IMM指令可将其扩展到32位),可以进行寄存器和立即数间的数据运算。其指令按功能划分为逻辑运算、算术运算、分支、存储器读写和特殊指令等。A型和B型指令格式如图2.3所示。

图2.3 MicroBlaze指令格式

MicroBlaze指令执行的流水线是并行流水线,它分为三级流水:取指、译码和执行,如图2.4所示。

图2.4 MicroBlaze的流水线

EDK是Xilinx公司推出的基于FPGA的嵌入式开发工具,包括了嵌入式硬件平台开发工具(Platform Studio)、嵌入式软件开发工具(Platform Studio SDK)、嵌入式IBM PowerPC硬件处理器核、Xilinx MicroBlaze软处理器核、开发所需的技术文档和IP,为设计嵌入式可编程系统提供了全面的解决方案。