MicroBlaze简介---很好很全面

更新时间:2023-04-06 09:51:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第1章基于XILINX FPGA嵌入式系统片上系统开发概述

XILINX是全球领先的可编程逻辑完整解决方案的供应商。Xilinx公司成立于1984年。并首创了现场可编程逻辑阵列(FPGA)这一创新性的技术,并于1985年首次推出商业化产品。随着FPGA技术的发展,FPGA的逻辑容量越来越大,成本越来越低。在这种趋势下,FPGA 可以代替系统中越来越多的器件,最后发展到FPGA片上系统。

第1节XILINX简介

XILINX是全球领先的可编程逻辑完整解决方案的供应商。Xilinx公司成立于1984年。并首创了现场可编程逻辑阵列(FPGA)这一创新性的技术,并于1985年首次推出商业化产品。目前Xilinx满足了全世界对FPGA产品一半以上的需求。Xilinx可编程逻辑解决方案缩短了电子设备制造商开发产品的周期并加快了产品面市的速度,从而减小了制造商的风险。Xilinx 产品已经被广泛应用于从无线电话基站到DVD播放机的数字多媒体电子应用技术中。传统的半导体公司只有几百个客户,而Xilinx在全世界有7,500多家客户及50,000多个设计开端。其客户包括Alcatel,Cisco Systems,EMC,Ericsson,Fujitsu,Hewlett-Packard,IBM,Lucent Technologies,Motorola,NEC,Nokia,Nortel,Samsung,Siemens,Sony,Sun Microsystems以及Toshiba。

Xilinx的主流FPGA分为两大类,一种侧重低成本应用,容量中等,性能可以满足一般的逻辑设计要求的Spartan系列;还有一种侧重于高性能应用,容量大,性能能满足各类高端应用Virtex系列,用户可以根据自己实际应用要求进行选择。在性能可以满足的情况下,优先选择低成本器件。目前高端的Virtex系列已经从开始的Virtex发展到最近的Virtex5。如下图1.1.1所示。

第2节基于XILINX FPGA片上嵌入式系统简介

随着FPGA技术的发展,FPGA的逻辑容量越来越大,成本越来越低。在这种趋势下,FPGA 可以代替系统中越来越多的器件,最后发展到FPGA片上系统。

图1.2.1 系统设计的综合

为了迎合这种趋势,从Virtex-II Pro开始,XILINX在其高端的部分器件中增加了多个硬核PowerPC内核,以推动这种趋势。

第3节XILINX FPGA片内资源简介

FPGA是英文Field-Programmable Gate Array的缩写,即现场可编程门阵。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB (Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。随着FPGA的发展,为了满足对信号处理和片上储存的需要,FPGA又增加了块RAM,时钟管理单元和硬件乘法器。之后又在部分的系列里增加了PPC 和高速串行IO。最新的Virtex5的片内结构资源如图1.3.1所示。

图1.3.1 Virtex5的片内资源

对于FPGA的开发,XILINX 公司已经提供了集成开发环境ISE,支持VHDL和VERILOG

及电原理图。所以对于初学FPGA的用户而言,并不需要细致的了解FPGA片内资源的所有细节。客户只需要用高级语言描述好自己的逻辑,工具即可以自动调用相应的逻辑资源并按要求进行互连。下面就基于,Virtex5分别介绍一下FPGA片内最常用的资源:CLB和BRAM。

1.3.1CLB

在Virtex5中一个CLB由2个SLICE组成如图7所示。SLICE是由4个查找表和4个D触发器组成.如图1.3.2所示。

查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。它把数据事先写入RAM 后,每当输入一个信号就等于输入一个地址进行查表,找出地址对应的内容,然后输出。对于任意逻辑,只要将其真值表写入查找表。就能实现其逻辑功能。Virtex5的查找表是6输入的。所以对于任意的6输入1输出逻辑。只要一个查找表就可以实现了。这个是FPGA开发和ASIC开发一个重要区别。在FPGA的代码中增加逻辑的复杂度并不会增加资源和降低

速度,而主要取决于逻辑的输入和输出个数。

图1.3.2

图1.3.3

在Virtex5部分SLICE中的查找表不仅可以作为逻辑,还可以用作分布式RAM和32位移位寄存器。我们把这样的SLICE 叫做SLICEM. 把仅可以做逻辑的SLICE叫做SLICEL.

在查找表和触发器的中间位置是2选1的选择器和快速进位链。主要用于宽输入的逻辑和加法中构成进位链。

1.3.2BRAM

在Virtex5,块RAM的大小是36kbit. 每个块RAM都是双端口的。两个端口是可以同时对BRAM里面的数据进行读写,而且两个端口可以工作在不同的时钟频率下。当两个端口同时读写同一地址时,可能会发生冲突。但是不会损坏器件。在本节避免冲突中会具体说明这种情况。此外在Virtex5中,BRAM还可以用做FIFO。

Virtex4/Spartan3 中每块RAM 也是双口的,不过和Virtex5相比大小是其一半为18Kbits。Virtex5每个块RAM可以在绝大多数情况下等价于Virtex4/Spartan3中的两块BRAM。

写入模式

BRAM有三种不同的写入模式,写入模式决定了在一个新数据写入后在输出端口上数据的情况。

这三种模式分别是WRITE_FIRST, READ_FIRST, and NO_CHANGE. 默认的模式是WRITE_FIRST。双口BRAM的两个口可以独立的设置写入模式。

WRITE_FIRST 输出口上出现新的数据当新数据写入;READ_FIRST 输出口上维持旧的数据当新数据写入时;NO_CHANGE 输出口上一直维持读操作时候读取得数据。

图1.3.4 WRITE_FIRST时序示意图

图1.3.5 READ_FIRST时序示意图

图1.3.6 NO_CHANGE时序示意图.

避免冲突

Virtex-5 的块RAM是一个双口RAM,两个口都可以在任意时间访问任何的地址。当两个端口同时读一处空间是允许的,对于同时读写一处地址空间是有限制的。下面就分两种情况来讨论:两个端口是用同步的时钟;两个端口使用的是异步时钟。

对于异步的时钟,当一个口在写入一个地址空间的瞬间,另一个是不可以读取或写人同一空间的,否则会导致读出错误的数据或写入的数据错误。

对于同步时钟,当一个口在写入一个地址空间的瞬间,另一个是不可以写人同一空间的,否则会导致读出错误的数据或写入的数据错误。如果这个端口是配置成READ_FIRST 或WRITE_FIRST 模式,可以同时读出有效的数据;配置成NO_CHANGE 模式会得到无效的数据。

硬件FIFO支持

许多FPGA设计需要使用FIFO. 在VIRTEX5中的BRAM可用用做FIFO。VIRTEX5 的BRAM 中内建了FIFO的逻辑,所以当用VIRTEX5的BRAM做FIFO的时候不需要使用额外的CLB 资源。VIRTEX5中的BRAM可以用作同步的FIFO,也可以用作异步的FIFO。同时VIRTEX5的BRAM还可以配置成标准的FIFO或FWFT(first-word fall-through)的FIFO

图1.2.2 PPC内核嵌入式系统设计

同时,XILINX还推出了自己的32位软核MicroBlaze,用来替代片上的微控制器,帮助客户缩小PCB板的面积和器件数量,并降低整个系统的成本。在最初MicroBlaze 是基于OPB(On-chip Peripheral Bus)总线, 在MicroBlaze 发展到7.0的时候(对应的EDK版本为9.2),MicroBlaze也采用了和PPC一样的PLB总线。同时XILINX还在EDK总整合了MPMC (多端口内存控制)。客户的数据可以直接从外设写入内存,也可以直接从内存读出,大大提高的系统的效率。这样大量的数据搬运可以不通过PLB总线而直接完成。PLB的带宽可以完全由MICROBALZE使用。MPMC的构架和使用会在第三章中详细讲述。

考虑到带有PPC的处理器的芯片和开发板价格较高,所以本书将以MicroBlaze 7.0和EDK9.2为基础来讲述怎样开发用户IP。由于MicroBlaze和PPC在目前使用同样的总线。所以并不需要改动或加入总线桥。

图1.2.3 基于OPB的MicroBlaze

图1.2.4 基于PLB和MPMC的MicroBlaze

第2章MicroBlaze 构架及接口

MicroBlaze是一个高度灵活可以配置的软核。你可以根据你设计的需要,对MicroBlaze进行裁减,用最少的资源完成设计的需要。MicroBlaze的基本特性:32个32位的通用寄存器、32位指令,3个操作数和两种地址模式、32位地址、单流水线。

第1节MicroBlaze处理器

2.1.1MicroBlaze性能介绍

MicroBlaze是一个高度灵活可以配置的软核。你可以根据你设计的需要,对MicroBlaze进行裁减,用最少的资源完成设计的需要。

MicroBlaze的基本特性:

? 32个32位的通用寄存器

?32位指令,3个操作数和两种地址模式

?32位地址

?单流水线

除了这些固定的特性以外,MicroBlaze还提供一系列的可选的特性以适应客户不同的设计需要。这些特性在不同版本的MicroBlaze中是不同的。目前最新版本的MicroBlaze (v7.00) 可以支持所有这些可选的特性。下表就列出了MicroBlaze各版本的特性。

表 2.1.1 不同版本MicroBlaze的性能

第2节MicroBlaze的结构、机制和特性

2.2.1MicroBlaze系统及内部结构

MicroBlaze采用32 位哈佛RISC 架构,32位独立的地址总线和数据总线。在采用缓存模式下,独立的指令和数据可以缓存并通过XCL(Xilinx CacheLink)接口连接到内存。在不采用缓存的机制下,地址和数据总线直接通过PLB46访问内存。MicroBlaze没有区分数据接口为I/O和存储,所以处理器存储的接口是PLB和LMB,且LMB存储地址空间不和PLB重合。MicroBlaze还提供最大256K的片上本地内存接口和片上BRAM连接,对于简单的设计,可以将代码直接放入片上BRAM;也可以将复杂设计的BOOTLOADER放在片上的BRAM中。用户IP可以通过PLB46总线或快速点对点连接(FSL)接入系统。一般而言:PLB64比较适合基于总线形式的用户IP 开发;FSL比较适合基于简单点对点输入输出或协处理器的用户IP 开发。图2.2.1是一个MicroBlaze片上系统的结构图。

图 2.2.1 MicroBlaze系统架构图

图 2.2.2 MicroBlaze的内部结构图2.2.2MicroBlaze的数据储存结构和指令

MicroBlaze支持8位(字节)、16位(半字)和32位(字)的数据形式并采用大字序方式. 其具体的形式如下表所示:

字节的储存类型

半字的储存类型

字的储存类型

MicroBlaze的所有指令都是32位的,且有两种定义模式。A型指令有至多2个寄存器源操作数和1个寄存器目的操作数;而B型指令有1个寄存器源操作数,1个16位立即数以及1个寄存器目的操作数。该立即数可以通过使用IMM指令将之扩展为32位。所有指令被分成下列5种指令类型:算术指令,逻辑指令,程序流控制指令,读取/存储指令和特殊指令类型。表2.1和表2.2各自列出了MicroBlaze指令集的语法定义和参考实例。

表 2.2.1 MicroBlaze指令集的语法定义

表 2.2.2 MicroBlaze指令集的参考实例

2.2.3 MicroBlaze的流水线结构

MicroBlaze 的指令采用流水线的结构执行。在大多数的情况下,一条指令在一个时钟周期内完成。一些指令需要不止一个时钟周期才能完成(比如除法指令),那么流水线就会停住并等待这个指令的完成。

当指令储存在片外的慢速度的内存时,取指令的操作可能要占用很多个时钟周期。为了提高性能,MicroBlaze内含一个取指令的缓存来减小指令存储器读取速度对处理器的影响。当MicroBlaze在执行一个多周期的指令时,预取指的缓存区就会持续地按顺序取指令。当流水线继续执行的时候,MicroBlaze 就从内部的指令缓存直接得到指令而不是从片外的存储器得到指令。注意这个指令缓存处于MicroBlaze内部并一直有效。其不等同于可以MicroBlaze可以配置的指令和数据Cache。

MicroBlaze可以配置成2种流水线深度,3级流水线和5级流水线。

三级流水线:

当面积优化使能后,MicroBlaze配置成3级流水线,三级分别是取指、译码和执行:

图 2.2.3 三级流水线

五级流水线:

当不使用面积优化使能,MicroBlaze配置成5级流水线以取得最大的性能,五级分别是取指、译码、执行、读取和写回。

图2.2.4 五级流水线

跳转:

通常当跳转发生的时候,流水线的取指令和译码都在是流水运行的。跳转指令使得流水线必须重新启动并在新的地址取指令。MicroBlaze需要3个时钟周期去完成跳转。其中2个周期是用于重新使流水正常工作。

MicroBlaze的中断机制

MicroBlaze支持重置、硬件异常、中断、用户异常、暂停等机制。它们的优先级排序如下(标号越小,优先级越高):

?重置

?硬件异常

?不可掩饰暂停

?暂停

?中断

?用户异常

表 2.2.3 MicroBlaze中断机制的返回地址寄存器和实例

MicroBlaze支持一个外接中断源(与中断入口相连)。处理器只有在状态寄存器中的中断允许(IE)被置1时才能对中断反应。在中断时,在执行阶段的指令完成而在编译阶段的指令被指向中断向量的地址(地址0x10)的分支代替。中断返回地址(在中断的时候与在编译阶段的指令联合的PC[Program Counter])自动载入到通用寄存器R14。而且,处理器也通过清理MSR中的IE位禁止其它中断。当执行RTID指令时,IE位又自动置1。

如果在MSR中的进程中断(BIP)位或进程例外(EIP)位任一被置1,中断将被处理器忽略掉。

从一个中断产生到进入中断服务程序(ISR)的MicroBlaze所花费的时间取决于处理器的配置和存储中断向量的内存控制器的反应时间。如果MicroBlaze配置有一个硬件除法器,当在

执行除法指令时产生中断,反应时间就会很大。

用户例外向量在地址0x8上。用户例外是通过在软件数据流插入―BRALID Rx,0x8‖指令产生的。虽然Rx可以是任意通用寄存器,Xilinx推荐使用R15来存储用户例外返回地址,并且使用RTSD指令从用户例外处理器返回。

2.2.5MicroBlaze的缓存机制和MMU (Memory Management Unit)

MicroBlaze使用了可配置的数据和指令Cache,用来执行LMB地址空间外的代码和数据。图2.2.5和图 2.2.6显示了数据Cache和指令Cache的结构图。

Cache具有如下特征:

?直接映射(1路联合)

?使用可选择的Cache存储地址空间

?可配置Cache和Tag的大小

?通过XCL接口Cache

?可选择4或者8字Cache-line

?MSR中的一位控制Cache的使用和关闭

?可选择用WIC/WDC指令使Cache-line中的指令无效

?直接写入(只是数据Cache的特点)

图 2.2.5 数据Cache结构图

图 2.2.6 指令Cache结构图

在MicroBlaze中,当C_USE_MMU被置3时,内存管理单元(MMU)将可以执行虚拟模式。MMU控制有效地址转化为物理地址布局,同时也支持内存保护。因此,系统软件可以执行所需要页面尺寸的虚拟内存和其它内存管理配置。

MMU的特征总结如下:

?将有效地址译成物理地址

?在地址编译时控制页面等级的存取

?在区域使用中提供附加的虚拟模式保护控制

?为指令地址和数据地址编译和保护提供独立的控制

?支持8种页面尺寸:1 kB, 4 kB, 16 kB, 64 kB, 256 kB, 1 MB, 4 MB,和16 MB 。所有页面尺寸之和都能被系统软件使用。软件控制页面替换策略。

2.2.6 MicroBlaze的高级特性介绍

桶形移位寄存器:

只需一条指令就能够对操作数进行任意位的逻辑左移或逻辑右移。

硬件乘法器:

利用片内的乘法器,可以单周期的完成乘法指令。(面积优化为3个周期)

硬件除法器:

可以在32个周期内完成除法指令。(面积优化为34个周期)

FPU:

MicroBlaze 可选的浮点单元是支持IEEE 754 standard中单精度的部分,提供:浮点加法,浮点减法,浮点乘法,浮点除法,浮点比较,浮点转换和浮点平方根指令。对溢出和非法操作有专门的标志,采用了硬件异常机制。对于溢出,除数为0,非正常操作数和非法操作进行异常处理。

第3节MicroBlaze的总线接口

MicroBlaze可以采用以下的接口和外设或内存进行数据交互

?PLB64:

PLB是IBM CoreConnect架构的一部分,是处理器连接到高性能外围设备的高性能同步总线。

Xilinx的PLB设备遵循下列PLB使用原则:

o PLB数据总线是64位宽,地址总线是32位宽。注意有些外设可以用参数表示宽度,但是现在只支持64位数据总线。比64位小的外设能以在在寻址方

面相对应的减少连在PLB。例如,基础地址为A的32位外设能被连在字节巷

的0-4位,但是字宽的访问只能在A,A+8,A+16等地址。

o PLB主线无需支持动态总线尺寸。PLB主线无需复制数据到不常用的字节。

PLB主线需要正确地驱动_MSize[0:1]。PLB从设备线需要为提供了

对话周期(例如PowerPC 405)的PLB主线正确地驱动_SSize[0:1]。

o所有的PLB从设备线必须在不激活时输出逻辑0。

o byte-enables和least-significant地址位被所有的主设备线驱动并包含常数。

? LMB

LMB是个起初用来存取片上RAM块的同步总线。它使用最少的控制信号和一个来保证RAM块在一个时钟周期被存取的简单协议。所有的LMB信号都是高电平有效。

?XCL

Xilinx CacheLink(XCL)是一个高性能的外部内存访问的方案。MicroBlaze 的缓存接口(CacheLink)设计为一个直接通过内嵌的FSL接口连接到内存控制器. 在配合多端口外部内存控制器(MPMC)的情况下。这是一个最小延时的方案。

XCL接口只有在MicroBlaze 的缓存使能的情况下才可以使用。指令缓存和数据焕存

本文来源:https://www.bwwdw.com/article/t02l.html

Top