fpga设计基础

上传人:第*** 文档编号:56548704 上传时间:2018-10-13 格式:PPT 页数:60 大小:452.50KB
返回 下载 相关 举报
fpga设计基础_第1页
第1页 / 共60页
fpga设计基础_第2页
第2页 / 共60页
fpga设计基础_第3页
第3页 / 共60页
fpga设计基础_第4页
第4页 / 共60页
fpga设计基础_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《fpga设计基础》由会员分享,可在线阅读,更多相关《fpga设计基础(60页珍藏版)》请在金锄头文库上搜索。

1、FPGA设计基础,重点,Verilog HDL基础知识,嵌入式处理器介绍,FPGA设计流程,概 述,HDL(Hardware Description Language)是一种用形式化方法来描述数字电路和数字逻辑系统的硬件描述语言。 有两种类型:VHDL 和 Verilog HDL。,1 Verilog HDL基础知识,Verilog HDL语言具有这样的描述能力:设计的行为特性、设计的数据流特性、设计的结构组成,以及包含响应监控与设计验证方面的时延和波形产生机制。,Verilog与C语言的比较,(1)Verilog是一种硬件语言,最终是为了产生实际的硬件电路或对硬件电路进行仿真;而C语言是一种

2、软件语言,是控制硬件来实现某些功能的语言。 (2)C语言只要是语法正确,都可以编译执行;而Verilog语言有可综合的限制,即在所有的Verilog语句中,只有一部分可以被综合,而另外的部分则不能被综合,只能用来仿真。 (3)C语言是一种软件编程语言,其基本思想是语句的循序执行;而Verilog语言的基本思想是模块的并行执行。 (4)利用Verilog编程时,要时刻记得Verilog是硬件语言,要时刻将Verilog与硬件电路对应起来。,常用的C语言与Verilog语言相对应的关键字与控制结构,常用的C语言与Verilog语言相对应的运算符,自顶向下的设计方法,通过自顶向下的设计方法,可以实现

3、设计的结构化,可以使一个复杂的系统设计由多个设计者分工合作,还可以实现层次化的管理。,模块,模块(module)是Verilog的基本描述单位,用于描述某个设计的功能或结构以及与其他模块通信的外部端口。,例,3位加法器的形成语言为 module addr (a, b, cin, count, sum); / /模块名及输入输出端口列表 input 2:0 a; / /定义信号流向及位宽 input 2:0 b; input cin; output count; output 2:0 sum; assign count,sum = a +b + cin; / /功能描述 endmodule,Ve

4、rilog HDL基本语法,Verilog HDL中的标识符可以是任意一组字母、数字、$符号和_(下划线)符号的组合,但标识符的第一个字符必须是字母或者下划线。另外,标识符是区分大小写的。,1.标识符,例,Count COUNT /与Count不同 R56_68 FIVE$,Verilog HDL定义的一些常用的关键词,2.注释,Verilog HDL中有两种注释方式,一种是以“/*”符号开始,“*/” 结束,在两个符号之间的语句都是注释语句,因此可扩展到多行。,例,/* statement1, statement2, statementn */,另一种是以/开头的语句,它表示以/开始到本行结

5、束都属于注释语句。,3. 格式,Verilog HDL是区分大小写的,即大小写不同的标识符是不同的。另外其书写格式自由,即一条语句可多行书写,一行可写多个语句。空白(新行、制表符、空格)没有特殊意义。,例,input A;input B;与 input A; input B; 是一样的。,4. 数字值集合,(1) 值集合,Verilog HDL中规定了四种基本的值类型,这四类基本值组成了Verilog HDL中的常量,即 0:逻辑0或“假”; 1:逻辑1或“真”; X:未知值; Z:高阻。,注意,这四种值的解释都内置于语言中。如一个为z的值总是意味着高阻抗,一个为0 的值通常是指逻辑0;在门的

6、输入或一个表达式中为“z”的值通常解释成“x ”。此外,x值和z值都是不分大小写的,也就是说,值0x1z与值0X1Z相同。,(2)常量,Verilog HDL中有三种常量:整型、实型和字符串型。下划线符号( _ )可以随意用在整数或实数中,它们就数量本身没有意义,可用来提高易读性,唯一的限制是下划线符号不能用做首字符。,整型数可以按如下两种方式书写:,十进制形式整数的例子: 32 十进制数32 -15 十进制数-15,基数表示形式整数的例子: 5O37 5位八进制数(二进制11111) 4D2 4位十进制数(二进制0011) 4B1x_01 4位二进制数 7Hx 7位x(扩展的x),即xxxx

7、xxx 4hZ 4位z(扩展的z),即zzzz 4d-4 非法:数值不能为负 8h 2A 在位长和字符之间,以及基数和数值 之间允许出现空格 3 b001 非法:和基数b之间不允许出现空格 (2+3)b10 非法:位长不能够为表达式,实型数可以用下列两种形式定义:,十进制计数法 2.0 5.678 11572.12 0.1 2. /非法:小数点两侧必须有1位数字,科学计数法 23_5.1e2 其值为23510.0; 忽略下划线 3.6E2 其值为360.0 (e与E相同) 5E4 其值为0.0005,字符串是双引号内的字符序列,字符串不能分成多行书写,“INTERNAL ERROR“ “ RE

8、ACHEDHERE “,用8位ASCII值表示的字符可看做是无符号整数,因此字符串是8位ASCII值的序列。为存储字符串“INTERNAL ERROR ”,变量需要8*14位: reg1:8*14 Message; Message = “INTERNAL ERROR“,5.数据类型,Verilog HDL主要包括两种数据类型: 线网类型(net type) 寄存器类型(reg type),(1)线网类型,线网类型主要有wire和tri两种。线网类型用于对结构化器件之间的物理连线进行建模,如器件的管脚、内部器件如与门的输出等。 线网类型代表的是物理连接线,因此它不存贮逻辑值,必须由器件所驱动,通

9、常由assign进行赋值,如assign A=BC。,reg是最常用的寄存器类型,寄存器类型通常用于对存储单元进行描述,如D触发器、ROM等。,(2)寄存器类型,寄存器类型的存储单元建模举例 用寄存器类型来构建两位D触发器如下: reg 1:0 Dout; always(posedge Clk) Dout = Din; ,6.运算符和表达式,常用的算术运算符主要有 加法(二元运算符):“+” 减法(二元运算符): “-” 乘法(二元运算符):“*”,(1)算术操作结果的位数长度,算术表达式结果的长度由最长的操作数决定。在赋值语句中,算术操作结果的长度由操作符左端目标长度决定。,reg 3:0

10、Arc, Bar, Crt; reg 5:0 Frx; Arc = Bar + Crt; Frx = Bar + Crt; 第一个加法操作的长度由Bar, Crt和Arc的长度决定,长度为4位。 第二个加法操作的长度由Frx的长度决定(Frx, Bat和Crt中的最长长度),长度为6位。,例如,(2)关系运算符,关系操作符的结果为真(1)或假(0)。如果操作数中有一位为X或Z,那么结果为X。 例如: 23 45 结果为假(0) 52 = b01110 等价于 b01000 = b01110 结果为假(0),?(大于) ?=(不小于) ?=(不大于) = = (逻辑相等) != (逻辑不等),(

11、3)逻辑运算符,这些运算符在逻辑值0(假)或1(真)上操作。逻辑运算的结果为0或1, 例如: 假定Crd = b0; /0为假 Dgs = b1; /1为真 那么Crd & Dgs的结果为0 (假) Crd | Dgs的结果为1 (真) !Dgs的结果为0 (假),& (逻辑与) | (逻辑或) !(逻辑非) 用法为:(表达式1) 逻辑运算符 (表达式2) ,这些操作符在输入操作数的对应位上按位操作,并产生向量结果。 例如: 假定A = b0110,B = b0100;那么A | B的结果为0110,A & B的结果为0100。 如果操作数长度不相等, 长度较小的操作数在最左侧添0补位,例如:

12、 b0110 b10000 与下面的操作相同 b00110 b10000 结果为b10110,(4)按位逻辑运算符,?(一元非):(相当于非门运算) ?&(二元与):(相当于与门运算) ?|(二元或):(相当于或门运算) ?(二元异或):(相当于异或门运算) ? , (二元异或非即同或):(相当于同或门运算),(5)条件运算符,如果cond_expr为真(即值为1),选择expr1;如果cond_expr为假(值为0),选择expr2。如果cond_expr为x或z,结果将是按以下逻辑expr1和expr2按位操作的值: 0与0得0,1与1得1,其余情况为x。,条件操作符根据条件表达式的值选择

13、表达式,形式如下: cond_expr ? expr1 : expr2,(5)连接运算符,例如: wire 7:0 Dbus; assign Dbus7:4 = Dbus 0, Dbus 1, Dbus2, Dbus3; / /以反转的顺序将低端4位赋给高端4位 assign Dbus = Dbus3:0, Dbus 7:4 ; / /高4位与低4位交换 由于非定长常数的长度未知,不允许连接非定长常数。例如,下列式子非法: Dbus, 5 / /不允许连接操作非定长常数,连接操作是将小表达式合并形成大表达式的操作。形式如下: expr1, expr2, , exprN,(7)条件语句,如果对c

14、ondition_1求值的结果为非零值,那么procedural_statement_1被执行;如果condition_1的值为0, x或z,那么procedural_statement_1不执行。如果存在一个else分支,那么这个分支被执行。,if语句的语法如下: if(condition_1) procedural_statement_1 else if(condition_2) procedural_statement_2 else procedural_statement_3,例如,if(Sum 60) begin Grade = C; Total_C = Total _c + 1;

15、end else if(Sum 75) begin Grade = B; Total_B = Total_B + 1; end else begin Grade = A; Total_A = Total_A + 1; end 注意,条件表达式必须总是被括起来的。,(8) case语句,case语句首先对条件表达式case_expr求值,然后依次对各分支项求值并进行比较,第一个与条件表达式值相匹配的分支中的语句被执行。可以在1个分支中定义多个分支项;这些值不需要互斥,缺省分支覆盖所有没有被分支表达式覆盖的其他分支。,case语句是一个多路条件分支形式,其语法如下: case(case_expr)

16、 case_item_expr ,case_item_expr :procedural_statement default:procedural_statement endcase,例如,case (HEX) 4b0001 : LED = 7b1111001; / 1 4b0010: LED = 7b0100100; / 2 4b0011: LED = 7b0110000; / 3 4b0100: LED = 7b0011001; / 4 4b0101: LED = 7b0010010; / 5 4b0110: LED = 7b0000010; / 6 4b0111: LED = 7b1111000; / 7 4b1000: LED = 7b0000000; / 8 4b1001: LED = 7b0010000; / 9 4b1010: LED = 7b0001000; / A 4b1011: LED = 7b0000011; / B 4b1100: LED = 7b1000110; / C 4b1101: LED = 7b0100001; / D 4b1110: LED = 7b0000110; / E 4b1111: LED = 7b0001110; / F default :LED = 7b1000000; / 0 endcase,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号