1、FPGA设计基础设计基础l重点重点 Verilog HDL基础知识基础知识 嵌入式处理器介绍嵌入式处理器介绍 FPGA设计流程设计流程 l概概 述述 HDL(Hardware Description Language)是)是一种用形式化方法来描述数字电路和数字逻辑系统一种用形式化方法来描述数字电路和数字逻辑系统的硬件描述语言。的硬件描述语言。有两种类型:有两种类型:VHDL 和和 Verilog HDL。 1 Verilog HDL基础知识基础知识 Verilog HDL语言具有这样的描述能力:设计的行语言具有这样的描述能力:设计的行为特性、设计的数据流特性、设计的结构组成,为特性、设计的数据
2、流特性、设计的结构组成,以及包含响应监控与设计验证方面的时延和波形以及包含响应监控与设计验证方面的时延和波形产生机制。产生机制。 lVerilog与与C语言的比较语言的比较 (1)Verilog是一种硬件语言,最终是为了产生实际的硬件是一种硬件语言,最终是为了产生实际的硬件电路或对硬件电路进行仿真;而电路或对硬件电路进行仿真;而C语言是一种软件语言,是语言是一种软件语言,是控制硬件来实现某些功能的语言。控制硬件来实现某些功能的语言。(2)C语言只要是语法正确,都可以编译执行;而语言只要是语法正确,都可以编译执行;而Verilog语言有可综合的限制,即在所有的语言有可综合的限制,即在所有的Ver
3、ilog语句中,只有一部语句中,只有一部分可以被综合,而另外的部分则不能被综合,只能用来仿真。分可以被综合,而另外的部分则不能被综合,只能用来仿真。(3)C语言是一种软件编程语言,其基本思想是语句的循序语言是一种软件编程语言,其基本思想是语句的循序执行;而执行;而Verilog语言的基本思想是模块的并行执行。语言的基本思想是模块的并行执行。(4)利用)利用Verilog编程时,要时刻记得编程时,要时刻记得Verilog是硬件语言,是硬件语言,要时刻将要时刻将Verilog与硬件电路对应起来。与硬件电路对应起来。C语言语言Verilog语言语言sub-functionmodule, functi
4、on, taskif-then-elseif-then-elseCaseCase,begin, endForForWhileWhileBreakDisableDefineDefineIntIntPrintfmonitor, display,strobe常用的常用的C语言与语言与Verilog语言相语言相对应的关键字与对应的关键字与控制结构控制结构 常用的常用的C语言与语言与Verilog语言相对应的运算符语言相对应的运算符 C语言语言Verilog语言语言功功 能能*乘/除+加-减%取模!反逻辑&逻辑且|逻辑或大于=大于等于=右移HERE 用用8位位ASCII值表示的字符可看做是无符号整值表示
5、的字符可看做是无符号整数,因此字符串是数,因此字符串是8位位ASCII值的序列。为存储字值的序列。为存储字符串符串“INTERNAL ERROR ”,变量需要,变量需要8*14位:位:reg1:8*14 Message;Message = INTERNAL ERROR5.数据类型数据类型 Verilog HDL主要包括两种数据类型主要包括两种数据类型: 线网类型线网类型(net type) 寄存器类型寄存器类型(reg type) (1)线网类型线网类型 线网类型主要有线网类型主要有wire和和tri两种。线网类型用于对结构两种。线网类型用于对结构化器件之间的物理连线进行建模,如器件的管脚、内
6、部器化器件之间的物理连线进行建模,如器件的管脚、内部器件如与门的输出等。件如与门的输出等。 线网类型代表的是物理连接线,因此它不存贮逻辑值,线网类型代表的是物理连接线,因此它不存贮逻辑值,必须由器件所驱动,通常由必须由器件所驱动,通常由assign进行赋值,如进行赋值,如assign A=BC。 reg是最常用的寄存器类型,寄存器类型通是最常用的寄存器类型,寄存器类型通常用于对存储单元进行描述,如常用于对存储单元进行描述,如D触发器触发器、ROM等。等。 (2)寄存器类型寄存器类型 寄存器类型的存储单元建模举例寄存器类型的存储单元建模举例用寄存器类型来构建两位用寄存器类型来构建两位D触发器如下
7、:触发器如下:reg 1:0 Dout;always(posedge Clk)Dout 45 结果为假(结果为假(0)52 = b01110 等价于等价于 b01000 = b01110 结果为假(结果为假(0) ?(大于)(大于) ?=(不小于)(不小于) ?=(不大于)(不大于) = = (逻辑相等)(逻辑相等) != (逻辑不等)(逻辑不等)(3)逻辑运算符逻辑运算符 这些运算符在逻辑值这些运算符在逻辑值0(假)或(假)或1(真)上操作。逻(真)上操作。逻辑运算的结果为辑运算的结果为0或或1,例如:例如:假定假定Crd = b0; /0为假为假 Dgs = b1; /1为真为真那么那么C
8、rd & Dgs的结果为的结果为0 (假假) Crd | Dgs的结果为的结果为1 (真真) !Dgs的结果为的结果为0 (假假)& (逻辑与逻辑与) | (逻辑或逻辑或) !(逻辑非逻辑非)用法为:(表达式用法为:(表达式1) 逻辑运算符逻辑运算符 (表达式(表达式2) 这些操作符在输入操作数的对应位上按位操作,并产生向这些操作符在输入操作数的对应位上按位操作,并产生向量结果。量结果。例如例如: 假定假定A = b0110,B = b0100;那么;那么A | B的结果为的结果为0110,A & B的结果为的结果为0100。如果操作数长度不相等如果操作数长度不相等, 长度较小的操作数在最左侧
9、添长度较小的操作数在最左侧添0补补位,例如位,例如:b0110 b10000 与下面的操作相同与下面的操作相同b00110 b10000 结果为结果为b10110 (4)按位逻辑运算符按位逻辑运算符?(一元非):(相当于非门运算)(一元非):(相当于非门运算)?&(二元与):(相当于与门运算)(二元与):(相当于与门运算)?|(二元或):(相当于或门运算)(二元或):(相当于或门运算)?(二元异或):(相当于异或门运算)(二元异或):(相当于异或门运算)? , (二元异或非即同或):(相当于同或门运算)(二元异或非即同或):(相当于同或门运算)(5)条件运算符条件运算符 如果如果cond_ex
10、pr为真为真(即值为即值为1),选择,选择expr1;如;如果果cond_expr为假为假(值为值为0),选择,选择expr2。如果。如果cond_expr为为x或或z,结果将是按以下逻辑,结果将是按以下逻辑expr1和和expr2按位操作的值:按位操作的值: 0与与0得得0,1与与1得得1,其余情况为,其余情况为x。条件操作符根据条件表达式的值选择表达式,形条件操作符根据条件表达式的值选择表达式,形式如下:式如下:cond_expr ? expr1 : expr2(5)连接运算符连接运算符 例如例如:wire 7:0 Dbus;assign Dbus7:4 = Dbus 0, Dbus 1,
11、 Dbus2, Dbus3;/ /以反转的顺序将低端以反转的顺序将低端4位赋给高端位赋给高端4位位assign Dbus = Dbus3:0, Dbus 7:4 ; / /高高4位与低位与低4位交换位交换由于非定长常数的长度未知,不允许连接非定长常数。由于非定长常数的长度未知,不允许连接非定长常数。例如,下列式子非法:例如,下列式子非法:Dbus, 5 / /不允许连接操作非定长常数不允许连接操作非定长常数连接操作是将小表达式合并形成大表达式的操作。连接操作是将小表达式合并形成大表达式的操作。形式如下:形式如下:expr1, expr2, , exprN(7)条件语句条件语句如果对如果对con
12、dition_1求值的结果为非零值,那么求值的结果为非零值,那么procedural_statement_1被执行;如果被执行;如果condition_1的的值为值为0, x或或z,那么,那么procedural_statement_1不执行。不执行。如果存在一个如果存在一个else分支,那么这个分支被执行。分支,那么这个分支被执行。if语句的语法如下:语句的语法如下:if(condition_1)procedural_statement_1else if(condition_2)procedural_statement_2else procedural_statement_3例如例如 if(
13、Sum 60)beginGrade = C;Total_C = Total _c + 1;endelse if(Sum 75)beginGrade = B;Total_B = Total_B + 1;endelsebeginGrade = A;Total_A = Total_A + 1;end注意,条件表达式必须总是被括起来的。注意,条件表达式必须总是被括起来的。(8) case语句语句 case语句首先对条件表达式语句首先对条件表达式case_expr求值,然后依次求值,然后依次对各分支项求值并进行比较,第一个与条件表达式值相对各分支项求值并进行比较,第一个与条件表达式值相匹配的分支中的语句
14、被执行。可以在匹配的分支中的语句被执行。可以在1个分支中定义多个个分支中定义多个分支项;这些值不需要互斥,缺省分支覆盖所有没有被分支项;这些值不需要互斥,缺省分支覆盖所有没有被分支表达式覆盖的其他分支。分支表达式覆盖的其他分支。case语句是一个多路条件分支形式,其语法如下:语句是一个多路条件分支形式,其语法如下:case(case_expr)case_item_expr ,case_item_expr :procedural_statement default:procedural_statementendcase例如例如 case (HEX)4b0001 : LED = 7b1111001
15、; / 14b0010: LED = 7b0100100; / 24b0011: LED = 7b0110000; / 34b0100: LED = 7b0011001; / 44b0101: LED = 7b0010010; / 54b0110: LED = 7b0000010; / 64b0111: LED = 7b1111000; / 74b1000: LED = 7b0000000; / 84b1001: LED = 7b0010000; / 94b1010: LED = 7b0001000; / A4b1011: LED = 7b0000011; / B4b1100: LED = 7
16、b1000110; / C4b1101: LED = 7b0100001; / D4b1110: LED = 7b0000110; / E4b1111: LED = 7b0001110; / Fdefault :LED = 7b1000000; / 0endcase7.例化语句例化语句 模块例化语句形式为模块例化语句形式为module_name instance_name(port_associations);(1)定义定义 信号端口可以通过位置或名称关联,但是关联方信号端口可以通过位置或名称关联,但是关联方式不能够混合使用。端口关联形式如下:式不能够混合使用。端口关联形式如下:port_ex
17、pr / /通过位置通过位置.PortName (port_expr) / /通过名称通过名称例如例如 module and(C,A,B););input A, B;output C;and A1 (T3, A, B); /实例化时采用位置关联,实例化时采用位置关联,T3对应输出对应输出端口端口C,A对应对应A,B对应对应Band A2 /实例化时采用名字关联,实例化时采用名字关联,.C是是and 器件的端口,器件的端口,其与信号其与信号T3相连相连.C(T3),),.A(A),),.B(B)port_expr可以是以下的任何类型:可以是以下的任何类型:1) 标识符(标识符(reg或或net)
18、如)如.C(T3),),T3为为wire型标型标识符。识符。2) 位选择,如位选择,如.C(D0),),C端口接到端口接到D信号的第信号的第0 bit位。位。3) 部分选择,如部分选择,如.Bus(Din5:4)。)。4) 上述类型的合并,如上述类型的合并,如.Addr( A1,A210。5) 表达式(只适用于输入端口),如表达式(只适用于输入端口),如.A(wire Zire=0)。)。(2)悬空端口的处理悬空端口的处理 在实际例化中,可能有些管脚没用到,可在映射在实际例化中,可能有些管脚没用到,可在映射中采用空白处理,如中采用空白处理,如DFF d1 (.Q(QS), .Qbar ( ),
19、 .Data (D ) ,.Preset ( ), /该管脚悬空该管脚悬空.Clock (CK); /名称对应方式名称对应方式若输入管脚悬空,则该管脚输入为高阻若输入管脚悬空,则该管脚输入为高阻Z,若输,若输出管脚被悬空,则该输出管脚废弃不用。出管脚被悬空,则该输出管脚废弃不用。 (3)不同端口长度的处理不同端口长度的处理 当端口和局部端口表达式的长度不同时,端口通过当端口和局部端口表达式的长度不同时,端口通过无符号数的右对齐或截断方式进行匹配。无符号数的右对齐或截断方式进行匹配。8.连续赋值语句连续赋值语句 数据流的描述是采用连续赋值语句数据流的描述是采用连续赋值语句(assign )语句来
20、实现的,语法如下:语句来实现的,语法如下:assign net_type=表达式;表达式;连续赋值语句用于组合逻辑的建模。等式左边是连续赋值语句用于组合逻辑的建模。等式左边是wire类型类型的变量,等式右边可以是常量,或是由运算符如逻辑运算的变量,等式右边可以是常量,或是由运算符如逻辑运算符、算术运算符参与的表达。例如,符、算术运算符参与的表达。例如,wire 3:0 Z, Preset, Clear; /线网说明线网说明assign Z = Preset & Clear; /连续赋值语句连续赋值语句注意两个方面的问题:注意两个方面的问题:(1)连续赋值语句的执行是:只要右边表达式任一个变量有
21、)连续赋值语句的执行是:只要右边表达式任一个变量有变化,表达式立即被计算,计算的结果立即赋给左边信号。变化,表达式立即被计算,计算的结果立即赋给左边信号。(2)连续赋值语句之间是并行语句,因此与位置顺序无关。)连续赋值语句之间是并行语句,因此与位置顺序无关。9.阻塞赋值语句与非阻塞赋值语句阻塞赋值语句与非阻塞赋值语句 阻塞赋值语句,从字面上理解,该条语句阻塞了下阻塞赋值语句,从字面上理解,该条语句阻塞了下面语句的执行,面语句的执行,“=”用于阻塞的赋值,凡是在组合用于阻塞的赋值,凡是在组合逻辑(如在逻辑(如在assign语句中)赋值的请用阻塞赋值。语句中)赋值的请用阻塞赋值。 非阻塞赋值操作符
22、用小于等于号(即非阻塞赋值操作符用小于等于号(即=)表示,只)表示,只能用于对寄存器类型变量进行赋值,因此只能用在能用于对寄存器类型变量进行赋值,因此只能用在“initial ”和和“always”等过程块中。等过程块中。 10.过程赋值语句过程赋值语句 Verilog HDL中提供两种过程赋值语句中提供两种过程赋值语句initial和和always,这两种语句之间的执行是并行的,即语,这两种语句之间的执行是并行的,即语句的执行与位置顺序无关。这两种语句通常与语句句的执行与位置顺序无关。这两种语句通常与语句块(块(begin end)相结合,则语句块中的执行是)相结合,则语句块中的执行是按顺序
23、执行的。按顺序执行的。例如例如: initial Clk = 0; always #5 Clk = Clk;因为因为always语句是重复执行的,因此语句是重复执行的,因此Clk是初始值为是初始值为0、周、周期为期为10的方波。的方波。 l嵌入式处理器的体系结构嵌入式处理器的体系结构 2 嵌入式处理器介绍嵌入式处理器介绍 l嵌入式处理器嵌入式处理器 嵌入式微处理器的基础是通用计算机中的嵌入式微处理器的基础是通用计算机中的CPU,在应用中,将微处理器装配在专门设计的电路板上,在应用中,将微处理器装配在专门设计的电路板上,只保留和嵌入式应用有关的功能,这样可以大幅度只保留和嵌入式应用有关的功能,这
24、样可以大幅度减小系统体积和功耗。为了满足嵌入式应用的特殊减小系统体积和功耗。为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。靠性等方面一般都做了各种增强。 嵌入式处理器目前主要有嵌入式处理器目前主要有Am186/88, 386EX, SC-400, Power PC, 68000, MIPS, ARM系列等。系列等。 嵌入式微处理器又可分为嵌入式微处理器又可分为CISC和和RISC两类。两类。 l嵌入式微控制器嵌入
25、式微控制器 嵌入式微控制器又称为单片机,顾名思义,就嵌入式微控制器又称为单片机,顾名思义,就是将整个计算机系统集成到一块芯片中。嵌入式微是将整个计算机系统集成到一块芯片中。嵌入式微控制器一般以某一种微处理器内核为核心,芯片内控制器一般以某一种微处理器内核为核心,芯片内部集成部集成ROM/EPROM、RAM、总线、总线逻辑、总线、总线逻辑、定时定时/计数器、计数器、WatchDog、I/O、串行口、脉宽调、串行口、脉宽调制输出、制输出、A/D、D/A、Flash RAM、EEPROM等各等各种必要功能模块。为适应不同的应用需求,一般一种必要功能模块。为适应不同的应用需求,一般一个系列的单片机具有
26、多种衍生产品,每种衍生产品个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的,不同的是存储器和外设的处理器内核都是一样的,不同的是存储器和外设的配置及封装。这样可以使单片机最大限度地和应的配置及封装。这样可以使单片机最大限度地和应用需求相匹配,从而减少功耗和成本。用需求相匹配,从而减少功耗和成本。 l嵌入式嵌入式DSP处理器处理器 嵌入式微控制器又称为单片机,顾名思义,就嵌入式微控制器又称为单片机,顾名思义,就是将整个计算机系统集成到一块芯片中。嵌入式微是将整个计算机系统集成到一块芯片中。嵌入式微控制器一般以某一种微处理器内核为核心,芯片内控制器一般以某一种微处理器内核为核心,
27、芯片内部集成部集成ROM/EPROM、RAM、总线、总线逻辑、总线、总线逻辑、定时定时/计数器、计数器、WatchDog、I/O、串行口、脉宽调、串行口、脉宽调制输出、制输出、A/D、D/A、Flash RAM、EEPROM等各等各种必要功能模块。为适应不同的应用需求,一般一种必要功能模块。为适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的,不同的是存储器和外设的处理器内核都是一样的,不同的是存储器和外设的配置及封装。这样可以使单片机最大限度地和应的配置及封装。这样可以使单片机最大限度地和应用需求相匹配,从
28、而减少功耗和成本。用需求相匹配,从而减少功耗和成本。 l嵌入式片上系统嵌入式片上系统 随着随着VLSI设计的普及化及半导体工艺的迅速发展,可设计的普及化及半导体工艺的迅速发展,可以在一块硅片上实现一个更为复杂的系统,这就是以在一块硅片上实现一个更为复杂的系统,这就是System On Chip(SoC)。各种通用处理器内核将作为。各种通用处理器内核将作为SoC设计公司设计公司的标准库,和许多其他嵌入式系统外设一样,成为的标准库,和许多其他嵌入式系统外设一样,成为VLSI设设计中一种标准的器件,用标准的计中一种标准的器件,用标准的VHDL 等语言描述,存储在等语言描述,存储在器件库中。用户只需定
29、义出整个应用系统,仿真通过后就器件库中。用户只需定义出整个应用系统,仿真通过后就可以将设计图交给半导体工厂制作样品。这样除个别无法可以将设计图交给半导体工厂制作样品。这样除个别无法集成的器件以外,整个嵌入式系统大部分均可集成到一块集成的器件以外,整个嵌入式系统大部分均可集成到一块或几块芯片中去,应用系统电路板将变得很简洁,对于减或几块芯片中去,应用系统电路板将变得很简洁,对于减小体积和功耗、提高可靠性非常有利。小体积和功耗、提高可靠性非常有利。 SoC可以分为通用和专用两类。通用系列包括可以分为通用和专用两类。通用系列包括Motorola的的M-Core,某些,某些ARM系列器件,系列器件,E
30、chelon和和Motorola联合研制的联合研制的Neuron芯片等。芯片等。 l FPGA嵌入式处理器嵌入式处理器 1. PowerPC405 2. CPU-FGPA接口接口 CPU-FGPA接口主要用于接口主要用于PowerPC405模块与模块与FPGA其其他资源的相互连接。他资源的相互连接。(1)处理器局部总线接口用于)处理器局部总线接口用于PowerPC405模块与外部资模块与外部资源的高速连接,它支持源的高速连接,它支持32 bit地址宽度和地址宽度和64 bit数据宽度。数据宽度。PLB包括包括ISPLB和和DSPLB两部分,两部分,ISPLB接口用于外部设接口用于外部设备与备与
31、PowerPC指令缓存的连接,指令缓存的连接,DSPLB接口用于外部设备接口用于外部设备与与PowerPC405数据缓存的连接。数据缓存的连接。(2)设备控制寄存器接口用于)设备控制寄存器接口用于PowerPC405模块与外部设模块与外部设备的状态寄存器和配置寄存器的连接,它支持备的状态寄存器和配置寄存器的连接,它支持10 bit地址宽地址宽度和度和32 bit数据宽度。数据宽度。(3)片上存储器接口用于)片上存储器接口用于PowerPC405模块与模块与FPGA内部内部BRAM的直接连接。通常的直接连接。通常ISBRAM用于存放启动代码、中断用于存放启动代码、中断向量和中断处理等,向量和中断
32、处理等,DSRAM用于中断数据或关键数据存储。用于中断数据或关键数据存储。(4)外部中断控制接口用于)外部中断控制接口用于PowerPC405模块与模块与外部中断的连接,它支持关键和非关键两级中断。外部中断的连接,它支持关键和非关键两级中断。(5)时钟电源管理接口用于)时钟电源管理接口用于PowerPC405模块与模块与外部时钟信号和电源信号的连接。外部时钟信号和电源信号的连接。(6)初始化接口用于)初始化接口用于PowerPC405模块与外部初模块与外部初始化信号的连接,它支持始化信号的连接,它支持Core, Chip, System三级三级初始化。初始化。(7)调试接口用于)调试接口用于P
33、owerPC405模块的跟踪和调模块的跟踪和调试,通过试,通过JIAG边缘扫描功能提供系统内部测试和边缘扫描功能提供系统内部测试和调试功能。调试功能。3. PowerPC405 RISC硬核特点硬核特点 (1)高性能)高性能RISC运行速率可达运行速率可达300 MHz。(2)支持低损耗设计。)支持低损耗设计。(3)支持)支持PowerPC用户指令集(用户指令集(UISA),包括用户应用),包括用户应用级的指令和这些指令访问的寄存器。级的指令和这些指令访问的寄存器。UISA还定义了与指令还定义了与指令相关的参数,例如寻址方式和指令格式。相关的参数,例如寻址方式和指令格式。(4)具有)具有32个
34、个32 bit的通用寄存器、的通用寄存器、16 kb指令缓存和指令缓存和16 kb数据缓存。数据缓存。(5)支持)支持IBM CoreConnect总线结构和专用片上存储接口总线结构和专用片上存储接口(OCM),总线包括处理器局部总线),总线包括处理器局部总线PLB、片上外设总线、片上外设总线OPB和设备控制存储器和设备控制存储器DCR。PLB总线接口用于总线接口用于PowerPC405内核与高性能设备的连接,内核与高性能设备的连接,PLB接口包括接口包括ISPLB接口和接口和DSPLB接口两种。其中,接口两种。其中,ISPLB接口用于外接口用于外设与设与PowerPC405指令缓冲的连接,指
35、令缓冲的连接,DSPLB接口用于外设接口用于外设与与PowerPC405数据缓冲的连接。数据缓冲的连接。(6)支持多种调试方式和二级中断。)支持多种调试方式和二级中断。4. CoreConnect技术技术 CoreConnect是由是由IBM开发的片上总线通信链,开发的片上总线通信链,它使多个芯片核相互连接成为一个完整的新芯片成它使多个芯片核相互连接成为一个完整的新芯片成为可能。为可能。CoreConnect技术使整合变得更为容易,技术使整合变得更为容易,而且在标准产品平台设计中,处理器、系统以及外而且在标准产品平台设计中,处理器、系统以及外围的核可以重复使用,以达到更高的整体系统性能。围的核
36、可以重复使用,以达到更高的整体系统性能。CoreConnect结构提供处理器局部总线(结构提供处理器局部总线(PLB)、)、片内外设总线(片内外设总线(OPB)和设备控制寄存器()和设备控制寄存器(DCR)总线,利用这三个总线来互联处理器模块、总线,利用这三个总线来互联处理器模块、Xilinx IP软核、第三方软核、第三方IP核和定制的逻辑。高性能外设连核和定制的逻辑。高性能外设连接到高带宽低滞后的接到高带宽低滞后的PLB总线,较慢速的外设连接总线,较慢速的外设连接到到OPB总线,可以减少总线,可以减少PLB总线的流量,提高整个总线的流量,提高整个系统的性能。系统的性能。 高性能CPU核高性能
37、存储器仲裁器PLB2OPB总线桥高性能DMA核外部总线接口单元键盘UARTGPIO定时器仲裁器PLBDCR busOPBAddrDataDRAMIODCRPLB或OPBCoreConnect总线架构框图总线架构框图 5. MicroBlaze MicroBlaze是基于是基于Xilinx公司公司FPGA的微处理的微处理器器IP核,与其他外设核,与其他外设IP核一起,可以完成可编程系核一起,可以完成可编程系统芯片(统芯片(SOPC)的设计。)的设计。MicroBlaze处理器采用处理器采用RISC架构和哈佛结构的架构和哈佛结构的32位指令和数据总线,内位指令和数据总线,内部有部有32个个32位宽
38、度的通用寄存器,在位宽度的通用寄存器,在150 MHz的时的时钟频率下,最高可达到钟频率下,最高可达到125 DMIPS的处理性能,可的处理性能,可以全速执行存储在片上存储器和外部存储器中的程以全速执行存储在片上存储器和外部存储器中的程序,并和其他外设序,并和其他外设IP核一起,完成可编程系统芯片核一起,完成可编程系统芯片(SOPC)的设计。的设计。 MicroBlaze的的内部结构框图内部结构框图 MicroBlaze系系统架构框图统架构框图 6. MicroBlaze与与PowerPC405的比较的比较 PowerPC是硬核处理器,而是硬核处理器,而Microblaze处理器则是用处理器则
39、是用FPGA芯片的逻辑资源生成的软核处理器,这使得它可以在芯片的逻辑资源生成的软核处理器,这使得它可以在更多的场合被选用。这两种处理器都是更多的场合被选用。这两种处理器都是32位的哈佛体系结构位的哈佛体系结构的的RISC处理器,所支持的指令集系统也都比较丰富,理论处理器,所支持的指令集系统也都比较丰富,理论上讲,利用它们加上合适的外设都可以搭建出所需的系统硬上讲,利用它们加上合适的外设都可以搭建出所需的系统硬件电路,只是由于这两种处理器的系统架构不一样,在选择件电路,只是由于这两种处理器的系统架构不一样,在选择外设外设IP核时会不一样,具体搭建电路要根据具体的应用来选核时会不一样,具体搭建电路
40、要根据具体的应用来选择。择。 PowerPC硬核处理器和硬核处理器和Microblaze软核处理器都是软核处理器都是Xilinx公司公司FPGA系列芯片中的嵌入式微处理器,系列芯片中的嵌入式微处理器,Xilinx公司公司的的Vertex II Pro和和Vertex 4-FX嵌入了嵌入了PowerPC405的硬核,的硬核,Spartan-3E和和Virtex-5嵌入了嵌入了Microblaze软核处理器。软核处理器。3 FPGA设计流程设计流程FPGA的基本开发流程主要包括的基本开发流程主要包括设计输入(设计输入(Design Entry)设计仿真(设计仿真(Simulation)设计综合(设
41、计综合(Synthesize)布局布线(布局布线(Place & Route)配置(配置(Configuration)这五个主要步骤。这五个主要步骤。 集成综合环境(集成综合环境(ISE)的功能涵盖了)的功能涵盖了FPGA开开发的全过程,从功能上讲,其工作流程无需借助任发的全过程,从功能上讲,其工作流程无需借助任何第三方何第三方EDA软件。软件。 FPGA的一般开的一般开发流程发流程 (1)设计输入)设计输入 设计输入是根据工程师的设计方法将所设计的功能设计输入是根据工程师的设计方法将所设计的功能描述给描述给EDA软件,常用的设计输入方法有硬件描述语言软件,常用的设计输入方法有硬件描述语言HD
42、L和原理图设计输入方法。原理图设计输入法在早期和原理图设计输入方法。原理图设计输入法在早期应用得比较广泛,它根据设计要求,选用器件,绘制原应用得比较广泛,它根据设计要求,选用器件,绘制原理图,完成输入过程。这种方法的优点是直观、便于理理图,完成输入过程。这种方法的优点是直观、便于理解、元件库资源丰富。但是在大型设计中,这种方法的解、元件库资源丰富。但是在大型设计中,这种方法的可维护性较差,不利于模块建设与重用。可维护性较差,不利于模块建设与重用。 ISE提供的设计输入工具包括用于提供的设计输入工具包括用于HDL代码输入和代码输入和查看报告的文本编辑器(查看报告的文本编辑器(ISE Text E
43、ditor)、用于原理)、用于原理图编辑的工具图编辑的工具ECS(Enginerring Capture System)、)、用于生成用于生成IP Core的的Core Generator、用于状态机设计、用于状态机设计的的StateCAD以及用于约束文件编辑的以及用于约束文件编辑的Constraint Editor等。等。(2)设计综合)设计综合 综合优化综合优化(Synthesize)是指将是指将HDL语言、原理图等设计语言、原理图等设计输入翻译成由与门、或门、非门、输入翻译成由与门、或门、非门、RAM、寄存器等基本逻、寄存器等基本逻辑单元组成的逻辑连接辑单元组成的逻辑连接(网表网表),并
44、根据目标与要求,并根据目标与要求(约束条约束条件件)优化所生成的逻辑连接,输出优化所生成的逻辑连接,输出edf和和edn等文件,供等文件,供FPGA厂家的布局布线器进行实现。综合工具有厂家的布局布线器进行实现。综合工具有Xilinx ISE集成的集成的XST(Xilinx Synthesis Technology), 还有比较流还有比较流行且高效的行且高效的Mentor Graphics公司的公司的Leonardospectrum和和Synplicity公司的公司的Synplify。Synplify综合工具综合出的结综合工具综合出的结果占用面积小,工作频率高,综合速度快。果占用面积小,工作频率
45、高,综合速度快。 ISE的综合工具不但包括了的综合工具不但包括了Xilinx自身提供的综合工具自身提供的综合工具XST,同时还可以内嵌,同时还可以内嵌Mentor Graphics公司的公司的Leonardospectrum和和Synplicity公司的公司的Synplify,实现无,实现无缝链接。缝链接。 (3)设计仿真)设计仿真 设计仿真主要有功能仿真和时序仿真两种。设计仿真主要有功能仿真和时序仿真两种。 功能仿真是验证电路功能是否符合设计要求,仿真前,功能仿真是验证电路功能是否符合设计要求,仿真前,要先利用波形编辑器和硬件描述语言等建立波形文件和测要先利用波形编辑器和硬件描述语言等建立波
46、形文件和测试向量(即将所关心的输入信号组合成序列),仿真结果试向量(即将所关心的输入信号组合成序列),仿真结果将会生成报告文件和输出信号波形,从中便可以观察到各将会生成报告文件和输出信号波形,从中便可以观察到各个节点的信号变化。如果发现错误,则返回设计输入中修个节点的信号变化。如果发现错误,则返回设计输入中修改逻辑设计。改逻辑设计。 时序仿真在布局布线之后,由于不同器件的内部延时不时序仿真在布局布线之后,由于不同器件的内部延时不一样,不同的布局布线方案也给延时造成不同的影响,因一样,不同的布局布线方案也给延时造成不同的影响,因此在设计处理以后,对系统和各模块进行时序仿真,分析此在设计处理以后,
47、对系统和各模块进行时序仿真,分析其时序关系,估计设计的性能,以及检查和消除竞争冒险其时序关系,估计设计的性能,以及检查和消除竞争冒险等是非常有必要的。等是非常有必要的。(4)实现)实现 综合结果的本质是一些由与门、或门、非门触发器,综合结果的本质是一些由与门、或门、非门触发器,RAM等基本逻辑单元组成的逻辑网表,它与芯片实际的配等基本逻辑单元组成的逻辑网表,它与芯片实际的配置情况还有较大差距。此时应该使用置情况还有较大差距。此时应该使用FPGA厂商提供的工具厂商提供的工具软件,根据所选芯片的型号,将综合输出的逻辑网表适配软件,根据所选芯片的型号,将综合输出的逻辑网表适配到具体的到具体的FPGA
48、器件上,这个过程就叫做实现过程。器件上,这个过程就叫做实现过程。Xilinx的实现过程分为:翻译的实现过程分为:翻译(Translate)、映射、映射(Map)和布局布线和布局布线(Place & Route)等三个步骤。因为只有器件开发商最了解等三个步骤。因为只有器件开发商最了解器件的内部结构,所以实现步骤必须选用器件开发商提供器件的内部结构,所以实现步骤必须选用器件开发商提供的工具软件。的工具软件。(5)下载)下载 下载功能包括了下载功能包括了BitGen,用于将布局布线后的,用于将布局布线后的设计文件转化为位流文件,还包括设计文件转化为位流文件,还包括IMPACT,其功,其功能是进行设备
49、配置和通信,控制将程序烧写到能是进行设备配置和通信,控制将程序烧写到FPGA芯片中去。芯片中去。思考题思考题 1 Verilog HDL语言与语言与C语言有哪些异同点?语言有哪些异同点?2什么是系统级、算法级、什么是系统级、算法级、RTL级、门级、开关级?级、门级、开关级?3 什么是自顶向下的设计方法?什么是自顶向下的设计方法?4 嵌入式处理器的体系结构是怎样的?嵌入式设计方嵌入式处理器的体系结构是怎样的?嵌入式设计方法和设计流程如何?法和设计流程如何?PPC405有何特点?有何特点?5 阻塞赋值语句和非阻塞赋值语句的区别是什么?在阻塞赋值语句和非阻塞赋值语句的区别是什么?在使用时应当注意什么?使用时应当注意什么?6 试考虑用试考虑用Verilog HDL语言编写程序,实现语言编写程序,实现4位加法位加法器。器。7 FPGA的设计流程如何?流程各部分实现了什么功的设计流程如何?流程各部分实现了什么功能?能?