《【教学课件】第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
26、 结果为x。|B 结果为1&B 结果为0A 结果为1,7.移位操作符移位操作符有:(右移)。移位操作的格式:移位次数。例如:reg 0:7 Q;Q=8b00000111;那么:Q2是8b00000001,8.条件操作符 条件操作符根据条件表达式的值选择表达式:条件表达式?表达式1:表达式2 如果条件表达式为真,选择表达式1;否则选择表达式2。例:wire 0:2 S=M18?A:C;Ctr=(Ctr!=25)?(Ctr+1):5;always#5 Ctr=(Ctr!=25)?(Ctr+1):5;,9.连接操作 将短表达式合并成长表达式的操作:表达式1,表达式2,.,表达式N例如:wire 7:
27、0 D;wire 11:0 A;assign D 7:4=D0,D1,D2,D3;/以反转的顺序将低端4位赋给高端4位。assign D=D3:0,D7:4;/高4位与低4位交换。不允许连接非定长常数,例如下式非法:D,5/5没有说明长度。,10.复制操作 通过指定重复次数来执行操作:重复次数表达式1,表达式2,.,表达式N 实例:A=34b1011;/位向量12b1011_1011_1011。A=4D7,D;/符号扩展。31b1;/结果为111。3Abc/为Abc,Abc,Abc。,10.1.2 硬件描述语言VHDL,VHDL VHSIC Hardware Description Langu
28、age.VHSIC Very High Speed Integrated Circuit.VHDL 的标准版本1987年 IEEE-Std 1076-19871993年 IEEE-Std 1076-1993,1.实体,一个电路单元在VHDL 中称为实体(design entity)。实体=实体说明+结构体。一个实体可有多种构造形式。,architecture test_arch of test isbegin-end test_arch;,VHDL程序实例,entity test is port(a,b:in STD_LOGIC;c:out STD_LOGIC);end test;,libra
29、ry IEEE;use IEEE.std_logic_1164.all;,库说明,实体说明,结构体,实体说明的一般形式为:entity(实体名)is(外观说明);end(实体名);,例如:一个全加器的外观:,全加器的实体说明为:entity full_adder is port(x,y,cin:in Bit;sum,cout:out Bit);end full_adder;,端口port提供了动态信息通道;每个port都必须有:名字;通信模式;数据类型。VHDL提供了4种端口模式:in;out;inout;buffer。inout 和buffer的相似之处是可读可写,而不同之处是buffer端
30、口只能有一个源。,entity full_adder is port(x,y,cin:in Bit;sum,cout:out Bit);end full_adder;,全加器实体说明的分析,2.结构体结构体用来描述实体的内部情况,一般形式为:architecture(结构体名)of(实体名)is(说明);begin(构造语句);end(结构体名);实现构造所需的:内部连线、变量、常量、元件等均在begin之前加以说明。,结构体构造的不同方法:1.行为级构造 2.数据流级构造3.结构级构造,1.行为级构造,entity full_adder is port(x,y,cin:in Bit;sum,
31、cout:out Bit);end full_adder;architecture behavior of full-adder isbegin process variable N:Integer;constant Sum_vector:Bit_vector(0 to 3):=“0101”;constant Carry_vector:Bit_vector(0 to 3):=“0011”;begin wait on x,y,cin;N:=0;if X=1then N:=N+1;end if;if Y=1then N:=N+1;end if;if Cin=1then N:=N+1;end if;
32、Sum=Sum_vector(N);Cout=Carry_vector(N);end process;end behavior;,entity full_adder is port(x,y,cin:in Bit;sum,cout:out Bit);end full_adder;architecture behavior of full-adder isbegin process variable N:Integer;constant Sum_vector:Bit_vector(0 to 3):=“0101”;constant Carry_vector:Bit_vector(0 to 3):=“
33、0011”;begin wait on x,y,cin;N:=0;if X=1then N:=N+1;end if;if Y=1then N:=N+1;end if;if Cin=1then N:=N+1;end if;Sum=Sum_vector(N);Cout=Carry_vector(N);end process;end behavior;,进程结构;顺序执行语句;只描述了全加器的外部行为、功能和性能指标,没有涉及内部。可用于仿真,但不能进行逻辑综合,变量之间没有显式逻辑关系。,2.数据流级构造 数据流级(寄存器传输级 RTL:Register Transfer Level)构造。这种构
34、造不仅能用于仿真,而且可以进行逻辑综合。,entity full_adder is port(x,y,cin:in Bit;sum,cout:out Bit);end full_adder;architecture RTL of full-adder is signal S:Bit begin S=x xor y after 10 ns;Sum=S xor cin after 10 ns;cout=(S and cin)or(x and y)after 20 ns;end RTL;,architecture rtl of full-adder is signal S:Bit begin S=x
35、 xor y;Sum=S xor cin;cout=(S and cin)or(x and y);end rtl;,全加器的输出与输入之间的逻辑关系为:,S是引入的一个内部信号,上两式描绘了从输入到输出的数据流。,构造中“=”为信号赋值符,关键字and、or和xor分别表示逻辑“与”、“或”和“异或”。这种构造比行为描述要具体,但仍未反映实体内的具体结构。,architecture rtl of full-adder is signal S:Bit begin S=x xor y;Sum=S xor cin;cout=(S and cin)or(x and y);end rtl;,3.结构级构
36、造,全加器的一种逻辑结构图,三个元件:两个半加器、一个或门;元件之间、元件与实体端口之间用信号线相连。,定义了两类元件的名称half-adder/or-gate及各自的端口;定义构造中的内部信号线:a、b、c;U1、U2和U3是三个引用元件的标号;,architecture structure of full-adder iscomponent half-adder port(A,B:in Bit;S,C:out Bit);end component;component or-gate port(In1,In2:in Bit;Out1:out Bit);end component;signal
37、 a,b,c;begin U1:half-adder port map(x,y,a,b);U2:half-adder port map(a,cin,sum,c);U3:or-gate port map(b,c,cout);end structure;,端口映射port map建立元件及各端口所连信号的对应关系。整个构造直接对应逻辑图。,3.VHDL中的对象和数据类型,VHDL有三类对象(object):1)常量(constant);2)变量(variable);3)信号(signal)。对象的赋值:1)常量(constant);定义时赋值!2)变量(variable);赋值后立即生效!3)信号
38、(signal)。赋值后经延迟才能 生效!,entity full_adder is port(x,y,cin:in Bit;sum,cout:out Bit);end full_adder;architecture behavior of full-adder isbegin process variable N:Integer;constant Sum_vector:Bit_vector(0 to 3):=“0101”;constant Carry_vector:Bit_vector(0 to 3):=“0011”;begin wait on x,y,cin;N:=0;if X=1then
39、 N:=N+1;end if;if Y=1then N:=N+1;end if;if Cin=1then N:=N+1;end if;Sum=Sum_vector(N);Cout=Carry_vector(N);end process;end behavior;,architecture rtl of full-adder is signal S:Bit begin S=x xor y;Sum=S xor cin;cout=(S and cin)or(x and y);end rtl;,259,0,10E4,16#D2#(16进制),8#702#(8进制),2#11010010#(2进制),1
40、.0,0.0,8#43.6#E-4,4 3.6E-4。a(字符)、“abcd”(字符串)。B“10101000”(2进制位串)、X“AC”(16进制位串)、O“574”(8进制位串)。2.3ns(物理数)、15 kohm(15k物理数)ns、kohm是专门定义的物理单位。下划线与可读性:65_971.333_333,B”1010_1011_1100”,对象的数据类型 1)整数;2)浮点数;3)字符;4)字符串;5)位串;6)物理数。,数据类型,数据类型由type语句定义,数据类型分纯量类型和复合类型。1.纯量类型 纯量类型对象只能保存一个数。形式:type is;例如:type Integer
41、 is range-2147483648 to 2147483647;type Real is range-16#0.7FFFFF8#E+32 to 16#0.7FFFFF8E+32;type Bit is(0,1);枚举方法 type Boolean is(False,True);枚举方法 均是VHDL预定义的。可以用type语句定义其他的纯量数据类型。,物理数的定义:数值范围+物理单位。例如下面是“时间”的定义:type Time is range(2*311)to(2*311)units fs;fs,是基本单位。以下为导出单位 ps=1 000 fs;ps ns=1 000 ps;ns
42、us=1 000 ns;us ms=1 000 us;ms sec=1 000 ms;s min=60 ps;min hr=60 min;h end units;,2.数组类型 复合数据类型,数组元素数据类型相同。定义数组类型用关键字array:type Word is array(15 downto 0)of Bit;下标范围不定,如:type Bit_vector is array(Natural range)of Bit;下标的数据类型为自然数Natural,VHDL预定义数据类型,具体定义某个对象时,再确定对象的下标范围。,3.记录类型记录是复合数据类型、由多个元素组成;各个元素有各自
43、的名字和不同的数据类型。用关键字record,要说明记录中每个元素的名字及其数据类型。实例:type Regist is recordF0,F1:Real;R0,R1:Integer;end record;,对象的说明 使用的对象都要预先说明,对象说明的一般形式为:=实例:constant A:Bit_vector(0 to 3);variable N:Integer:0;signal S:Bit;,枚举形式:constant A:Bit_vector:=(0,0,1,0);constant A:Bit_vector:=(3=0,2=1,1=0,0=0);constant A:Bit_vect
44、or:=(2=1,others=0);constant A:Bit_vector:=“0010”;0123,先定义类型:type Rational is record Numerator:Integer;Denominator:Integer;end record;再定义对象S:signal S:Rational:=(155,2077);signal S:Ratoinal:=(Denominator=2077,Numerator=155);使用:S.Numerator=2077;,VHDL中数的运算,求模与求余两种运算必须是整数。整数的必须是正整数。浮点数的乘方运算的幂是整数。两运算数的类型必
45、须相同。,type Arr is array(Natural range)of Integer;constant A1:Arr:=(3,4);constant A2:Arr:=(5,6);constant B1:Integer:=1;constant B2:Integer:=2;constant A3:Arr:=A1,10.2 数字系统结构设计,仙童公司的CPU芯片照片,VLSI的规模:80年代,2万50万个晶体管。,80 年代,出现了超大规模集成电路(VLSI),采用计算机辅助设计(CAD)和辅助工程技术(CAE)进行 芯片的设计和生产;90 年代,出现了甚大规模集成电路(ULSI),采用电
46、子设计自动化(EDA)技术进行芯片的设计;,到了21 世纪初,出现了SOC 技术,半导体工艺和电路设计 水平的发展已使在一个芯片上集成一个系统成为可能;,SOC芯片实例:Intel手机芯片PXA800F,主频为312MHz的XScale处理器;4兆片上集成闪存;512K的SRAM;,著名的摩尔定律还将使用至少10年!目前的工艺仍有巨大的改进潜力,作为VLSI基础的 CMOS工艺到了0.1微米以下将进入纳米时代,纳米 技术将为SOC技术的实现提供更加优越的基础。目前90纳米CMOS工艺已经加入量产阶段;65纳米工艺已经加入最后实验阶段,30、10纳米工艺已 进入研究计划;目前主流工艺从0.18微
47、米CMOS向0.13微米CMOS工艺过渡,设计方法将有很大变化。,10.2.1 主要设计方法自顶向下方法,采用自顶向下(Top-down)方法进行设计,设计次序:,行为设计,结构设计,逻辑设计,电路设计,版图设计,行为设计阶段要确定芯片的功能、性能、面积、工艺和成本。,根据芯片的特点,将其分解为接口清晰、关系明确、尽可能简单的子系统;利用子系统设计出一个较好的总体结构。(子系统举例:算术运算单元、控制单元、数据通道、算法状态机等。),结构设计阶段,考虑各功能模块的具体实现问题;同一功能块可能有多种实现方法,要尽可能采用规则结构;要充分利用已经过考验的逻辑单元或模块。,(各种IP核,如:ARM核
48、,M-Core核,Altera核,Xilinx核等),逻辑设计阶段,逻辑图将进一步转换成电路图,在这个阶段,一般需要进行硬件仿真,以确定逻辑设计的正确性。,电路设计阶段,要根据电路图绘制用于生产的电路版图。,版图设计阶段,10.2.2 设计流程中的重点问题,设计流程可分3个综合阶段:高层综合、逻辑综合和物理综合。,行为设计,结构设计,逻辑设计,电路设计,版图设计,高层综合,逻辑综合,物理综合,在英语文献中,表现综合的词是Synthesize,Synthesize 的原义是合成、综合,意指用合成方法合成出新的事物,在集成电路设计领域,综合是指将一种形式的设计转换成另一种设计形式的过程。,高层综合
49、也称行为级综合(behavioral synthesize),高层综合就是将系统的行为、各个组成部分的功能及其输入和输出,用硬件描述语言HDL(VHDL、Verilog)加以描述,然后进行行为级综合,同时通过高层次硬件仿真进行验证。,例如:Xilinx,Alteras FPGA Developers Kit and system,1.高层综合,高层综合的任务是将一个设计的行为级描述转换成寄存器传输级的结构描述。它首先翻译和分析用HDL语言描述的设计,并在给定的一组性能、面积或功耗的约束条件下,确定需要哪些硬件资源,如执行单元、存储器、控制器、总线等,以及确定在这一结构中各种操作的次序。还可通过
50、行为级和寄存器传输级硬件仿真进行验证。,一个设计可能有多种硬件结构实现方式,因此,高层综合要在满足目标和约束的条件下,找到一个代价最小的硬件结构,并使设计的功能最佳化。,逻辑综合将逻辑级行为描述转换成使用门级单元的结构描述(门级结构描述称为网表描述),同时还要进行门级逻辑仿真和测试综合。,2.逻辑综合,逻辑级行为描述可以是状态转换图、有限状态机、也可以是布尔方程、真值表或硬件描述语言。,逻辑综合过程还包括一系列优化步骤,如资源共享、连接优化和时钟分配等。优化的目标是面积、速度、功耗等指标中的一种或几种的折衷。,优化,逻辑综合一般分两个阶段:(1)与工艺无关的阶段,采用布尔操作 或代数操作技术来