FPGA设计基础课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《FPGA设计基础课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 设计 基础 课件
- 资源描述:
-
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嵌入式微控制器嵌入
展开阅读全文