Verilog-HDL数字集成电路设计原理与应用-作者-蔡觉平-第4章.ppt
《Verilog-HDL数字集成电路设计原理与应用-作者-蔡觉平-第4章.ppt》由会员分享,可在线阅读,更多相关《Verilog-HDL数字集成电路设计原理与应用-作者-蔡觉平-第4章.ppt(239页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2在线教务辅导网:在线教务辅导网:http:/教材其余课件及动画素材请查阅在线教务辅导网教材其余课件及动画素材请查阅在线教务辅导网QQ:349134187 或者直接输入下面地址:或者直接输入下面地址:http:/3在数字集成电路设计过程中,设计者使用Verilog HDL硬件描述语言进行关键性步骤的开发和设计。其基本过程是,首先使用Verilog HDL对硬件电路进行描述性设计,利用EDA综合工具将其综合成一个物理电路,然后进行功能验证、定时验证和故障覆盖验证。4.1 Verilog HDL语言的设计思想语言的设计思想和可综合特性和可综合特性4与计算机软件所采用的高级程序语言(C语言)类似,V
2、erilog HDL是一种高级程序设计语言,程序编写较简单,设计效率很高。然而,它们面向的对象和设计思想却完全不同。软件高级程序语句是对通用型处理器(如CPU)的编程,主要是在固定硬件体系结构下的软件化程序设计。处理器的体系结构和功能决定了可以用于编程的固定指令集,设计人员的工作是调用这些指令,在固化的体系结构下实现特定的功能。5Verilog HDL和VHDL等硬件描述语言对电路的设计是将基本的最小数字电路单元(如门单元、寄存器、存储器等)通过连接方式,构成具有特定功能的硬件电路。在数字集成电路中,这种最小的单元是工艺厂商提供的设计标准库或定制单元;在FPGA中,这种最小的单元是芯片内部已经
3、布局的基本逻辑单元。设计人员通过描述性语言调用和组合这些基本单元实现特定的功能,其基本的电路是灵活的。6Verilog HDL给设计者提供了几种描述电路的方法。设计者可以使用结构性描述方式把逻辑单元互连在一起进行电路设计,也可以采用抽象性描述方式对大规模复杂电路进行设计,如对有限状态机、数字滤波器、总线和接口电路的描述等。由于硬件电路的设计目标是最终产生的电路,因此Verilog HDL程序设计的正确性需要通过对综合后电路的正确性进行验证来实现。逻辑上相同的电路在物理电路中的形式却有可能完全不同。对于Verilog HDL程序设计而言,数字电路的描述性设计具有一定的设计模式,这与C语言等高级软
4、件程序设计是不同的。7例4.1-1是对模256(8 bit)计数器的两种描述。程序(a)是通常的Verilog HDL语言对计数器的描述方式,通过改变计数器状态寄存器组的位宽和进位条件,可以实现对不同计数器的硬件电路设计。程序(b)是初学者经常出现的一种错误描述方式,刚开始编写Verilog HDL程序时经常会套用C语言等高级程序设计的模式,这样往往得不到目标数字电路的功能。8例4.1-1 用Verilog HDL语言设计模256(8 bit)计数器。(a) 可综合程序描述方式:module counter (count,clk,reset);output count;input clk,re
5、set;reg 7:0 count;reg out;always (posedge clk)9 if (!reset) count=0;else if (count=8b11111111) count=0; else count=count+1;endmodule(b) 常见的错误描述方式:module counter (count,clk,reset);output count;input reset,clk;10reg 7:0 count;reg out;integer i;always (posedge clk,reset) begin if (!reset) count=0;else
6、for (i=0;i=255;i=i+1) 11count=count+1;endendmoduleVerilog HDL的电路描述方式具有多样性,这也决定了电路设计的多样性。例4.1-2是对一个多路选择器的设计,程序(a)采用的是真值表的形式,程序(b)采用的是逻辑表达式的形式,程序(c)采用的是基本逻辑单元的结构性描述形式。12例4.1-2 用Verilog HDL设计数字多路选择器。(a) 采用真值表形式的代码:module MUX (out,data,sel);output out;input 3:0 data;input 1:0 sel;reg out;always (data or
7、 sel)13 case (sel) 2b00 : out=data0; 2b01 : out=data1; 2b10 : out=data2; 2b11 : out=data3; endcaseendmodule14(b) 采用逻辑表达式形式的代码:module MUX (out,data,sel);output out;input 3:0 data;input 1:0 sel;wire w1,w2,w3,w4;assign w1=(sel1)&(sel0)&data0;assign w2=(sel1)&sel0&data1;15assign w3=sel1&(sel0)&data2;ass
8、ign w4=sel1&sel0&data3;assign out=w1|w2|w3|w4;endmodule(c) 采用结构性描述的代码:module MUX (out,data,sel);output out;16input 3:0 data;input 1:0 sel;wire w1,w2,w3,w4,w5,w6;not U1 (w1,sel1);U2 (w2,sel0);and U3 (w3,w1,w2,data0);U4 (w4,w1,sel0,data1);U5 (w5,sel1,w2,data2);17U6 (w6,sel1,sel0,data3);or U7 (out,w3,w
9、4,w5,w6);endmoduleVerilog HDL语言主要用于电路设计和验证,部分语言是为电路的测试和仿真制定的,因此其语言分为用于电路设计的可综合性语言和用于测试仿真的不可综合性语言。对于可综合性语言,EDA综合工具可以将其综合为物理电路,而对于其中的部分语言,EDA工具的综合性很差,设计人员往往得不到与设计思想相符合的物理电路。18正是由于Verilog HDL语言的特殊性,初学者往往很难把握可综合电路的设计方法,得不到最终期望的电路,这也是采用Verilog HDL进行设计所面对的一个困难。为了解决这一问题,降低Verilog HDL的设计门槛,EDA工具厂商正努力设计综合性工具
10、,使综合性工具能够适应C语言程序设计思想,但这需要一个很长的过程。在现阶段,作为设计人员,熟练掌握Verilog HDL程序设计的多样性和可综合性是至关重要的。作为数字集成电路的基础,基本数字逻辑电路的设计是进行复杂电路设计的前提。19本章通过数字电路中基本逻辑电路的Verilog HDL程序设计进行讲述,要求读者掌握基本逻辑电路的可综合性设计,为具有特定功能的复杂电路的设计打下基础。逻辑电路可以分成两大类:一类是组合逻辑电路,简称组合电路;另一类是时序逻辑电路,简称时序电路。本章将分别从这两种电路的原理和Verilog HDL程序设计方法出发,对数字逻辑电路的基本功能电路进行设计,这也是复杂
11、数字集成电路系统设计的基础。20组合电路的特点是,电路中任意时刻的稳态输出仅仅取决于该时刻的输入,而与电路原来的状态无关。组合电路没有记忆功能,只有从输入到输出的通路,没有从输出到输入的回路。4.2 组合电路的设计组合电路的设计21组合电路的设计需要从以下几个方面考虑:首先,所用的逻辑器件数目最少,器件的种类最少,且器件之间的连线最简单,这样的电路称为“最小化”电路。其次,为了满足速度要求,应使级数尽量少,以减少门电路的延迟;电路的功耗应尽可能地小,工作时稳定可靠。组合逻辑电路的描述方式有四种:真值表、逻辑代数、结构描述、抽象描述。采用Verilog HDL进行组合逻辑电路设计主要采用的就是这
12、几种方式。下面结合具体的实例简单介绍达四种描述方式。22例4.2-1 设计一个3个裁判的表决电路,当两个或两个以上裁判同意时,判决器输出“1”,否则输出“0”。方法1:真值表方式。真值表是对电路功能最直接和简单的描述方式。根据电路的功能,可以通过真值表直接建立起输出与输入之间的逻辑关系。例4.2-1有三个输入端A、B、C和一个输出端OUT,其真值表如表4.2-1所示。23表4.2-1 例4.2-1真值表24在Verilog HDL中,可以使用case语句对电路进行描述性设计,表4.2-1的真值表设计代码如下:module design(OUT,A,B,C);output OUT;input A
13、,B,C;reg OUT;always (A or B or C) case (A,B,C)25 3b000 : OUT=0; 3b001 : OUT=0; 3b010 : OUT=0; 3b100 : OUT=0; 3b011 : OUT=1; 3b101 : OUT=1; 3b110 : OUT=1; 3b111 : OUT1) OUT=1; else OUT=0;endmodule34可以看到,以上4种Verilog HDL描述方式都可以对表决电路进行设计。这里应该指出的是,Verilog HDL程序是对逻辑电路功能的描述性设计,并非最终得到的电路。EDA综合工具可以将Verilog H
14、DL程序综合成物理电路形式,通过电路优化,从而得到符合设计要求的最简化电路。采用Synplify软件对上面4种方法中任一种方法设计的Verilog HDL程序进行综合(采用Altera公司的Stratix 器件),可以得到相同的最简化电路,如图4.2-4所示。35图4.2-4 例4.2-1综合优化后的电路36Verilog HDL语言对同一个电路有不同风格的描述,对于简单的电路,其各种描述之间的差异不大。但对于复杂的电路,不同风格的代码综合出的电路将会不同,生成电路的性能也会不同。因此Verilog HDL语言是与电路对应的,要求设计者在编写代码时对所设计电路应有清楚的认识,这需要平时大量的积
15、累。下面以典型的组合电路为例,分别对Verilog HDL基本数字逻辑组合电路的设计方法进行说明。374.2.1 数字加法器数字加法器数字加法器是一种较为常用的逻辑运算器件,被广泛用于计算机、通信和多媒体数字集成电路中。广义的加法器包括加法器和减法器,在实际系统中加法器输入通常采用补码形式,因此就电路结构而言,加法和减法电路是一样的,只不过输入信号采用的是补码输入。例4.2-2 2输入1 bit信号全加器。如果运算考虑了来自低位的进位,那么该运算就为全加运算。实现全加运算的电路称为全加器。2输入1 bit信号全加器的真值表如表4.2-2所示。38表4.2-2 2输入1 bit信号全加器真值表3
16、9代数逻辑表示为SUM=A B C_IN (4.2-2) C_OUT=AB+(A B)C_IN (4.2-3)对应的电路如图4.2-5所示。40图4.2-5 2输入1 bit全加器电路41Verilog HDL可以用不同的描述方式写出1 bit全加器,其综合电路是相同的,仅仅是描述风格不同。在此给出两种不同的风格:利用连续赋值语句实现和利用行为描述方式实现。(1) 利用连续赋值语句实现。module one_bit_fulladder(SUM, C_OUT, A, B, C_IN);input A, B, C_IN;output SUM, C_OUT;assign SUM=(AB)C_IN;4
17、2assign C_OUT=(A&B)|(AB)&C_IN); /全加器的输出endmodule (2) 利用行为描述方式实现。module one_bit_fulladder(SUM, C_OUT, A, B, C_IN);output SUM, C_OUT;input A, B, C_IN;assign C_OUT,SUM=A+B+C_IN;endmodule43采用行为描述方式可以提高设计的效率,对于一个典型的多位加法器的行为描述设计,仅需改变代码中输入和输出信号的位宽即可。例如一个2输入8 bit加法器,可以采用下面的Verilog HDL程序代码实现。module eight_bit
18、s_fulladder(SUM, C_OUT, A, B, C_IN);output7:0 SUM;output C_OUT;input 7:0A, B;input C_IN;44assign C_OUT,SUM=A+B+C_IN;endmodule45例4.2-3 4位超前进位加法器。超前进位加法器是一种高速加法器,每级进位由附加的组合电路产生,高位的运算不需等待低位运算完成,因此可以提高运算速度。对于输入信号位宽为N的全加器,其进位信号是C_OUT=CN (4.2-4)输出的加法结果是 SUM_OUTNn-1=Pn-1 Cn-1 nN, 1 (4.2-5)46超前进位标志信号是Cn=Gn-
19、1+Pn-1Cn-1 nN, 1C0=C_IN (4.2-6)进位产生函数是Gn-1=An-1Bn-1 nN, 1 (4.2-7)进位传输函数是Pn-1=An-1 Bn-1 n1, N (4.2-8)上述公式中N为加法器位数,在4位加法器中,N=4。由此可以推出各级进位信号表达式,并构成快速进位逻辑电路。 47C1=G0+P0C0C2=G1+P1G0+P1P0C0C3=G2+P2G1+P2P1G0+P2P1P0C0C4=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C0 (4.2-9)4位超前进位加法器的电路如图4.2-6所示。48图4.2-6 4位超前进位加法器的电路494
20、位超前进位加法器对应的Verilog HDL代码如下:module four_bits_fast_addder (sum_out,c_out,a,b,c_in);input 3:0 a,b; /加数,被加数input c_in; /来自前级的进位output 3:0sum_out; /和output c_out; /进位输出wire 4:0 g,p,c; /产生函数、传输函数和内部进位assign c0=c_in;50assign p=a|b;assign g=a&b;assign c1=g0|(p0&c0);assign c2=g1|(p1&(g0|(p0&c0); assign c3=g2
21、|(p2&(g1|(p1&(g0|(p0&c0); assign c4=g3|(p3&(g2|(p2&(g1|(p1&(g0|(p0&c0); assign sum_out=pc3:0;51assign c_out=c4;endmodule524.2.2 数据比较器数据比较器数据比较器用来对两个二进制数的大小进行比较,或检测逻辑电路是否相等。数据比较器包含两部分功能:一是比较两个数的大小;二是检测两个数是否一致。例4.2-4 4位数值比较器。多位数值比较器的比较过程由高位到低位逐位进行,而且只有在高位相等时,才进行低位比较。4位数值比较器中进行A3A2A1A0和B3B2B1B0的比较时,首先比
22、较最高位A3和B3。如果A3B3,那么不管其它几位数为何值,53结果均为AB;若A3B3,结果为AB、CA=B、CAB、CA=B、CAB,FA=B,FAB,CA=B,CAB) F=3b100; else if (AB)F=3b001; else F=C;endmodule574.2.3 数据选择器数据选择器数据选择器又称多路选择器(Multiplexer,简称MUX),它有n位地址输入、2n位数据输入、1位数据输出。每次在输入地址的控制下,从多路输入数据中选择一路输出,其功能类似于一个单刀多掷开关,见图4.2-7。在ASIC和FPGA的器件库中,通常都有不同输入端口的多路选择器,可以利用这些选
23、择器构成功能更加复杂的数据选择电路。58图4.2-7 数据选择器框图及等效开关59例4.2-5 8选1数据选择器。8选1数据选择器可以由多个2选1数据选择器构成,也可以采用抽象描述方式进行设计;可以采用2选1数据选择器串行连接,也可以用树形连接分成三级实现。(1) 多个2选1数据选择器的结构级描述(见图4.2-8)。module mux8to1_2(d_out, d_in, sel);output d_out;input 7:0 d_in;input 2:0 sel;60wire3:0 w1;wire1:0w2;assign w1=sel0? d_in7,d_in5,d_in3,d_in1 :
24、d_in6,d_in4,d_in2,d_in0;assign w2=sel1? w13,w11 :w12,w10;assign d_out=sel2?w21:w20;endmodule61图4.2-8 树形连接的8选1数据选择器电路62(2) 抽象描述方式。多路选择器的设计可以采用case语句直接进行设计。在这种设计方式中,只需考虑选择信号列表就可以实现功能更为复杂的数据选择器。module mux8to1(out,sel,data_in);output out;input 7:0 data_in;input 3:0 sel;reg out;always (data_in or sel)63
25、case (sel) 3b000 : out=data_in0; 3b001 : out=data_in1; 3b010 : out=data_in2; 3b011 : out=data_in3; 3b100 : out=data_in4; 3b101 : out=data_in5; 3b110 : out=data_in6; 3b111 : out=data_in7; endcaseendmodule644.2.4 数字编码器数字编码器用文字、符号或数码表示特定对象的过程称为编码。在数字电路中用二进制代码表示有关的信号称为二进制编码。实现编码操作的电路叫做编码器。例4.2-6 3位二进制8线
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Verilog HDL 数字 集成电路设计 原理 应用 作者 蔡觉平
限制150内