【教学课件】第10章数字VLSI系统设计基础.ppt
《【教学课件】第10章数字VLSI系统设计基础.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第10章数字VLSI系统设计基础.ppt(221页珍藏版)》请在三一办公上搜索。
1、第10章 数字VLSI系统设计基础,10.1 HDL语言简介,10.1.1 Verilog HDL语言介绍,可用于算法级、门级、寄存器级、开关级建模;可用时序建模;大量的Verilog仿真器;与C语言类似,许多结构借鉴C语言;具备扩展的建模能力;语言标准为IEEE Std 1364-1995(1995年)。,Verilog的特点,模块是基本的电路描述单位,用于描述具体的设计。可描述模块的外部端口,以便于模块间的通信和系统设计。模块间可相互调用。,实例:半加器,module HalfAdder(A,B,Sum,Carry);input A,B;output Sum,Carry;assign#2
2、Sum=A B;assign#5 Carry=A endmodule,模块,说明语句,执行语句,1.模块,Verilog模块有四种描述方式:1)数据流描述方式;2)行为描述方式;3)结构描述方式;4)混合描述方式。,2.数据流描述方式,module HalfAdder(A,B,Sum,Carry);input A,B;output Sum,Carry;assign#2 Sum=A B;assign#5 Carry=A endmodule,基本机制:使用连续赋值语句,以assign为前缀的语句是连续赋值语句;连续赋值语句是并发执行的,执行顺序 与描述顺序无关。,例如:,2-4解码器电路 time
3、scale 1ns/1nsmodule Decoder2x4(A,B,EN,Z);input A,B,EN;output 0:3 Z;wire Abar,Bbar;assign#1 Abar=A;assign#1 Bbar=B;assign#2 Z0=(Abar endmodule,timescale 1ns/1nsmodule Decoder2x4(A,B,EN,Z);input A,B,EN;output 0:3 Z;wire Abar,Bbar;assign#1 Abar=A;assign#1 Bbar=B;assign#2 Z0=(Abar endmodule,3.行为描述方式,使用下
4、述过程语句描述:1)initial语句:此语句只执行一次。2)always语句:此语句总是循环执行。initial 和always语句中被赋值的对象只能是寄存器型。语句initial和always在0时刻开始并发执行。,1 位全加器电路,module v3(A,B,Cin,Sum,Cout);input A;input B;input Cin;output Sum;output Cout;reg Sum,Cout;reg T1,T2,T3;always(A or B or Cin)begin Sum=(A B)Cin;T1=A endendmodule,initial语句的实例:timesca
5、le 1ns/1nsmodule Test(Pop,Pid);output Pop,Pid;reg Pop,Pid;initial begin Pop=0;Pid=0;Pop=#5 1;Pid=#3 1;Pop=#6 0;Pid=#2 0;endendmodule,initial 语句中包含一个顺序过程。,Pop,Pid,4.结构描述方式,结构描述方式使用的结构:1)开关级原语(在晶体管级);2)内置门原语或用户定义的原语(在门级);3)模块实例(创建层次结构)。结构间通过使用连线来相互连接。,全加器电路实例module FA_S(A,B,Cin,Sum,Cout);input A,B,Cin
6、;output Sum,Cout;wire S1,T1,T2,T3;xor X1(S1,A,B),X2(Sum,S1,Cin);and A1(T3,A,B),A2(T2,B,Cin),A3(T1,A,Cin),or O1(Cout,T1,T2,T3);endmodule,内置门的实例语句。门实例由连线类型变量S1、T1、T2和T3互连。,5.混合描述方式,1位全加器的实例:module FA_M(A,B,Cin,Sum,Cout);input A,B,Cin;output Sum,Cout;reg Cout,T1,T2,T3;wire S1;xor X1(S1,A,B);/门实例语句。alwa
7、ys(A or B or Cin)/always 语句。begin T1=A/连续赋值语句。endmodule,结构行为数据流,6.语言要素,标识符、注释、数值、编译指令、系统任务、系统函数、连线、寄存器。,标识符、注释和语言书写的格式,标识符是任意一组字母、数字、$和下划线的组合;标识符的第一个字符必须是字母或下划线;标识符区分大小。,Count、COUNT、_R1_D2、R56_68、FIVE$,转义符常用于打印或显示的控制,它以(反斜线)开头。,7 4 0 0.*.$*Q,关键词总是小写:如always、begin等等。两种注释形式,与C+语言相同:形式一:/*注释字符串*/,可以扩展至
8、多行。形式二:/注释字符串,在本行结束。采用自由格式书写,其语句可以跨行编写,也可在一行内编写。,module FAM(A,B,Cin,Sum,Cout);input A,B,Cin;output Sum,Cout;reg Cout,T1,T2,T3;wire S1;xor X1(S1,A,B);/门实例语句。always(A or B or Cin)/*always 语句*/begin T1=A/*连续 赋值 语句*/endmodule,1.整数型,整型数有两种书写方式:1)简单的十进制数格式;2)基数格式。简单的十进制数格式如:32、15。基数格式的形式为:位长 基值其中,位长是可选的。基
9、有:o(O)(8进制);b(B)(2进制);d(D)(10进制);h(H)(16进制)。,5O37/5位8进制数4D2/4位10进制数4B1x01/4位二进制数7Hx/7位x,即xxxxxxx4hZ/4位z,即zzzzo721/9位八进制数hAF/8位十六进制数10b10/左边添0,得000000001010bx0 x1/左边添x,得xxxxxxx0 x13b10010011/最左边的位被截断,得3b011,x/z:在16进制值中代表4位x/z,在8进制中代表3位x/z,在2进制中代表1位x/z。基数格式的数为无符号数。,2.实数,实数可以用下列两种形式定义:1)十进制计数法;2.0 5.67
10、8 11572.12 0.1 2./非法:小数点两侧必须有1 位数字2)科学计数法;23_5.1e2 23510.0;忽略下划线 3.6E2 360.0(e与E相同)5E4 0.0005实数通过四舍五入被转换为最相近的整数。42.446,42.45 转换为整数42 92.5,92.699 转换为整数93 15.62 转换为整数16 26.22 转换为整数26,3.字符串,字符串用双引号给出,例如:INTERNAL ERROR,字符串是8位ASCII值的序列,存储“INTERNAL ERROR”需要8*14位。reg 1:112 Message;Message=INTERNAL ERROR;反斜
11、线()用于对确定的特殊字符转义,例如:n换行符、t制表符、,数据类型,Verilog有两大类数据类型:,连线类型:元件间的物理连线,值由驱动元件的值决定,例如门的输出。如果没有驱动元件连接到连线,连线的缺省值 为z。寄存器类型:抽象的数据存储单元,它只能在always语句 和initial语句中被赋值;寄存器中的值在两次赋值之间保持不变。寄存器类型变量缺省值为x。,1.连线类型连线数据类型表示结构实体之间的物理连接,连线数据类型有多种:wire tri,可用于描述多个驱动源驱动同一根线的连线类型 wor,trior,wand,triand,trireg,tri1,tri0,supply0,su
12、pply1。,用于连接单元的连线是最常见的连线类型,wire与tri的语法和语义一致;连线类型wire/tri的说明语法为:wire/tri m:l 数据1,数据2,.,数据N;连线中的值被解释为无符号数。,wire R,S;/2个1位的连线。wire 2:0 A;/A是3位向量连线。,当有多个驱动器时,wire/tri变量会产生不确定值。,多个驱动源驱动一个连线,连线的有效值如下:,wire 3:1 Cla,Pla,Sla;assign Cla=Pla,Cla是一个向量,Cla有两个驱动源,每位的计算是相关的。如果第一个右侧表达式的值为01x,并且第二个右测表达式的值为11z,那么Cla的有
13、效值是x1x。,2.向量和标量连线定义向量连线时可用scalared或vectored。一个vectored连线,不允许位选择和部分选择操作,只能整体赋值,例如:wire vectored 3:1 G;/不允许位选择G2和/部分选择G3:2。wire scalared 4:0 B;/允许位选择B2和/部分选择B3:1。如果没有定义关键词,缺省值为标量。,3.寄存器类型寄存器是数据存储单元的抽象,寄存器有多种类型:reg integer time real realtime其中,典型的是reg和memory。,(1)reg 寄存器类型 reg最常见:reg msb:lsb 寄存器名1,寄存器名2
14、,.寄存器名N;msb和lsb定义范围,均常数。范围定义的缺省值是1位寄存器。实例:reg 3:0 S;/S为4位寄存器。reg C;/1 位寄存器。reg 1:32 K,P,L;寄存器可以取任意长度。寄存器中的值为无符号数,例如:reg 1:4 C;reg 1:4 C;C=2;/C的值为1110,1110是2的补码。C=5;/C的值为0101。,存储器是一个寄存器数组,说明语句的形式如下:reg m:1 名1上限1:下限1,名2上限2:下限2,.;,例如:reg 0:3 M 0:63;/M为64个4位寄存器的数组。reg B1:5;/B为5个1位寄存器的数组。,reg 1:8 R 15:0,
15、D;R是存储器,是16个8位寄存器数组,而D是8位寄存器。,存储器赋值不能在一条赋值语句中完成,但是寄存器可以。例:reg 1:5 D;/D为5位寄存器。reg B 1:5;/B为5个1位寄存器的存储器。.D=5b11011;/赋值正确。B=5b11011;/赋值不正确。B1=1b1;/赋值正确。B2=1b1;B3=1b0;B4=1b1;B5=1b1;,对存储器赋值的方法是分别对存储器中的每个字赋值,例:reg 0:3 X1:4.X1=4hA;X2=4h8;X3=4hF;X4=4h2;,不允许对存储器变量值部分选择或位选择,例如:reg1:8 A,D0:63;D602/错。D602:4/错。,
16、在存储器中读取一个位或部分选择一个字的方法:1)将存储器单元赋值给寄存器变量,2)然后对寄存器变量采用部分选择或位选择操作。例如,A2和A2:4是合法的表达式。,(2)Integer寄存器类型 整数寄存器包含整数值,典型应用为高层次行为建模。整数寄存器说明形式:integer int1,int2,.intN msb:1sb;msb和lsb是常量表达式,数组界限的定义是可缺省的。一个整数最少容纳32位。实例:integer A,B,C;/三个整数型寄存器。integer Hist 3:6;/一组四个寄存器。整数型寄存器可存储有符号数,对算术操作符提供2的补码 运算结果。整数不能作为位向量访问,例
17、如:B6和B20:10 是非法的。,截取位值的方法:将整数赋值给reg类型变量,对reg操作后,赋还给整数。reg 31:0 R;integer I;.I 6 和 I 2 0:1 0 是不允许的。.R=I;R 6 和R 2 0:1 0 是允许的.I=R;类型转换自动完成.不必使用特定的函数。integer J;reg 3:0 Bcq;J=6;/J 的值为3 2 b 0000 0000 0000 0000 0000 0000 0000 0110。Bcq=J;/Bcq 的值为4 b 0110。Bcq=4b0101.J=Bcq;/J 的值为 32 b 0000 0000 0000 0000 0000
18、 0000 0000 0101。J=6;/J 的值为 32 b 1111 1111 1111 1111 1111 1111 11111010。Bcq=J;/Bcq的值为 4 b 1010。,(3)time类型time类型寄存器用于存储和处理时间。time类型寄存器说明方式:time timeid1,timeid2,.,timeidN msb:1sb;msb和lsb是表明范围界限的常量表达式。如果未定义界限,每个标识符存储一个至少64位的时间值。时间型寄存器只存储无符号数,例如:time Events0:31;/时间值数组。time CurrTime;/CurrTime存储一个时间值。,(4)r
19、eal寄存器和realtime寄存器类型 说明方式:real real_reg1,real_reg2,.,real_regN;实数时间说明:realtime realtime_reg1,realtime_reg2,.,realtime_regN;realtime与real类型完全相同,例如:real Swing,Top;realtime CurrTime;real说明的变量的缺省值为0。不允许对real声明值域、位界限或字节界限。当将值x和z赋予real类型寄存器时,这些值作0处理。real RamCnt;.RamCnt=b01x1Z;RamCnt在赋值后的值为b01010。,位选择从连线向量
20、或寄存器向量中抽取特定的位,形式如下:对象名选择表达式 State1&State 4/寄存器位选择。Prt0|Bbq/连线位选择。选择表达式的值为x、z或越界,则位选择的值为x,例如:Sx值为x。部分选择是选择连线或寄存器向量中的连续序列,形式如下:对象名常数表达式1:常数表达式2 State 1:4/寄存器部分选择。Prt1:3/线网部分选择。选择范围越界或为x、z时,部分选择的值为x。,位选择和部分选择,参数是一个常量,常用于定义时延和变量的宽度。说明形式:parameter 参数1=表达式1,参数2=表达式2,参数n=表达式n;实例:parameter LOAD=12;parameter
21、 LINELENGTH=132,ALL_X_S=16bx;parameter BIT=1,BYTE=8,PI=3.14;parameter STROBE_DELAY=(BYTE+BIT)/2;parameter TQ_FILE=/home/bhasker/TEST/add.tq;,参数,表达式与操作符,常数、参数、连线、寄存器、位选择、部分选择、存储器单元、函数调用。,算术操作符关系操作符、相等操作符、逻辑操作符;按位操作符;归约操作符;移位操作符;条件操作符;连接和复制操作符。,表达式:=操作数+操作符;,操作数,操作符,操作符的优先级:,高低,相同,可用圆扩号改变优先级的顺序:1+2*4-
22、4/6=1+8-0=9(1+2)*4-4/6=12,1.算术操作符,+/(一元和二元加/减)、*(乘)、/(除)、%(取模)。,算术表达式结果的长度由最长的操作数决定。,例:wire4:1B,D;wire1:5C;wire1:6P;wire1:8A;.assign A=(B+C)+(D+P);表达式左端的操作数长为8,所有的加操作 使用8位进行。,1.算术操作符,执行算术操作时,须区分无符号数和有符号数。无符号数存储在:线网、寄存器和基数格式的 整数中。有符号数存储在:整数寄存器和十进制形式的 整数中。,reg 0:5 B;integer T;.B=-4d12;/B值为110100,B是无符号
23、数。T=-4d12;/T值为 110100(即-12),是有符号数。,2.关系操作符(大于)、=(不小于)、=(不大于)。,关系操作符的结果为真(1)或假(0)。如果操作数中有一位为X 或Z,那么结果为X。例:23 45,结果为假;52=b01110 等价于:b01000=b01110,结果为假。,3.相等关系操作符=(逻辑相等)、!=(逻辑不等)、=(全等)、!=(非全等)逻辑比较:操作数包含x 或z,结果为未知。全等比较:严格按位比较。不进行解释,结果一定可知。例:D=b11x0;A=b11x0;那么:D=A的值为x,D=A的值为1。,如果操作数的长度不相等,长度较小的操作数在左侧添0补位
24、,例如:2b10=4b0010与下面的表达式相同:4b0010=4b0010结果为真(1)。,4.逻辑操作符&(逻辑与)、|(逻辑或)、!(逻辑非)操作符在逻辑值0或1上操作,操作结果为0或1。若操作数包含x,则结果为x。,!x 结果为x,C=b0;/0 为假D=b1;/1 为真,C&D 结果为0(假)C|D 结果为1(真)!D 结果为0(假),对于向量操作,非0向量作为1处理。,A=b0110;B=b0100;,A|B;结果为1A 结果均为0。,5.按位操作符(一元非)、&(二元与)、|(二元或)、(二元异或)、(二元异或非),5.按位操作符(一元非)、&(二元与)、|(二元或)、(二元异或
25、)、(二元异或非),假定:A=b0110;B=b0100;那么:A|B 结果为0 1 1 0 A&B 结果为0 1 0 0 如果操作数长度不等,长度较小的操作数在 左侧补0:b0110 b10000 b00110 b10000 结果为:b10110。,6.归约操作符 在单一操作数所有位上操作,产生1位结果。|(归约或)如果存在位值为1,那么结果为1;|(归约或非),与|相反。(归约异或)如果操作数中有偶数个1,结果为0;否则结果为1。(归约异或非),与相反。如果存在位值为x或z,则结果为x。归约异或操作符用于决定向量中是否有位为x。,假定:A=b0110;B=b0100;C=b01x0,则:C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 10 数字 VLSI 系统 设计 基础
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5657641.html