常用电路的Verilog描述_第1页
常用电路的Verilog描述_第2页
常用电路的Verilog描述_第3页
常用电路的Verilog描述_第4页
常用电路的Verilog描述_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1常用电路的常用电路的Verilog描述描述21. 常用组合电路的设计方法常用组合电路的设计方法组合电路特点:组合电路特点:n任意时刻的输出仅仅决定于该时刻的输入,与电路原来任意时刻的输出仅仅决定于该时刻的输入,与电路原来的状态无关。的状态无关。n电路中无存储器、无反馈结构;无记忆功能。电路中无存储器、无反馈结构;无记忆功能。常用的组合电路:常用的组合电路:n编码器编码器n译码器译码器n数据选择器数据选择器n加法器加法器n数数值比较器值比较器n奇偶校验器奇偶校验器1.常用组合电路的设计方法常用组合电路的设计方法3l简单的组合关系可用门原语或简单的组合关系可用门原语或assign语句或语句或al

2、ways语句实现;语句实现;l复杂的最好用复杂的最好用always语句实现。语句实现。l用用verilog语句设计组合电路比较简单,常用语句语句设计组合电路比较简单,常用语句:门原语调用、门原语调用、assign语句、语句、 always语句语句1.常用组合电路的设计方法常用组合电路的设计方法常见的四种已知情况:常见的四种已知情况:1. 已知逻辑图;已知逻辑图;2. 已知逻辑式;已知逻辑式;3. 已已知真值表;知真值表;4. 已已知逻辑功能。知逻辑功能。1.常用组合电路的设计方法常用组合电路的设计方法例例1:已知逻辑式写出已知逻辑式写出.v代码代码SABCI BCIACIABCO 用用assi

3、gn语句或语句或always语句语句全加器全加器关键语关键语句句assign S=ABCI;assign CO=(A&B)|(A&CI)|(B&CI);always (A,B,CI)begin S=ABCI; CO=(A&B)|(A&CI)|(B&CI);end或者或者1. 常用组合电路的设计方法常用组合电路的设计方法例例2:已知逻辑图,写出已知逻辑图,写出.v代码代码适合用门原适合用门原语或语或assign语句语句全加器全加器and (m1,A,B,C);or (m2,A,B,C);and (m3,A,B);and (m4,A,C);and (m5,B,C);or (Y2,m3,m4,m5)

4、;not (m6,Y2);and (m7,m2,m6);or (Y1,m1,m7);关键语关键语句句1. 常用组合电路的设计方法常用组合电路的设计方法例例3:已知真值表,写出:已知真值表,写出.V代码。代码。用用always语语句句(配合配合case语语句)句)全减器全减器always (A,B,C)begincase (A,B,C)3b000 : D,V=2b00;3b001 : D,V=2b11;3b010 : D,V=2b11;3b011 : D,V=2b01;3b100 : D,V=2b10;3b101 : D,V=2b10;3b110 : D,V=2b00;3b110 : D,V=2

5、b11;default:y=1b0;endcase关键语关键语句句81. 常用组合电路的设计方法常用组合电路的设计方法例例4:裁判电路,主裁判和两个副裁判之一同意则通过,:裁判电路,主裁判和两个副裁判之一同意则通过,否则不通过。否则不通过。用用always语语句(配合句(配合if语语句)句)always (A,B,C) if (A & (B | C) y=1b1; else Y=1b0;关键语关键语句句2. 常用组合电路的设计方法常用组合电路的设计方法用用always语句设计组合电路时要注意:语句设计组合电路时要注意:l 敏感条件为电平变化敏感条件为电平变化l 若若用用if语句或语句或case

6、语句,条件要完整,否则会综合出寄存器。语句,条件要完整,否则会综合出寄存器。1. 常用组合电路的设计方法常用组合电路的设计方法例:用例:用if语句实现语句实现3选选1数据选择器。数据选择器。module MUX31 (a,b,c,s1,s0,y);input a,b,c,s1,s0;output reg y;always (a,b,c,s1,s0)if (s1,s0=2b00) y=a;else if (s1,s0=2b01) y=b;else if (s1,s0=2b10) y=c;else y=1b0;endmodule111. 常用组合电路的设计方法常用组合电路的设计方法1.加加else

7、always (a,b) if (sel) Q=a; else Q=b;always (a,b) Q=b; if (sel) Q=a;使使if语句条件完整的两种方法:语句条件完整的两种方法:01QselQab01QabselQ2.在在if之前设初值之前设初值1. 常用组合电路的设计方法常用组合电路的设计方法用用case语句实现语句实现3选选1数据选择器:数据选择器:module MUX31 (a,b,c,s1,s0,y);input a,b,c,s1,s0;output reg y;always (a,b,c,s1,s0)begincase (s1,s0)2b00:y=a;2b01:y=b;2

8、b10:y=c;default:y=1b0;endcaseendendmodule131. 常用组合电路的设计方法常用组合电路的设计方法3. case所有情况所有情况case语句使条件完整的三种方法:语句使条件完整的三种方法:1. 加加defaultcase (s1,s0)2b00:y=a;2b01:y=b;2b10:y=c;default: y=1b0;endcasecase (s1,s0)2b00:y=a;2b01:y=b;2b10:y=c;2b11:y=0;endcase2.在在case前设初值前设初值y=1b0;case (s1,s0)2b00:y=a;2b01:y=b;2b10:y=

9、c;endcase 1. 常用组合电路的设计方法常用组合电路的设计方法编码器设计编码器设计always (I7,I6,I5,I4,I3,I2,I1,I0)case (I7,I6,I5,I4,I3,I2,I1)7b1000000 : Y2,Y1,Y0=3b111;7b0100000 : Y2,Y1,Y0=3b110;7b0010000 : Y2,Y1,Y0=3b101;7b0000001 : Y2,Y1,Y0=3b001;default : Y2,Y1,Y0=3b000;endcaseencoderI7I6I5I4I3I2I1I0Y2Y1Y0普通编码器:普通编码器:任意时刻有且只有一个输入有效任

10、意时刻有且只有一个输入有效关键语关键语句句用用case语句语句例例 8/3线编码器线编码器151. 常用组合电路的设计方法常用组合电路的设计方法always (*) if (I7) Y2,Y1,Y0=3b111;else if (I6) Y2,Y1,Y0=3b110;else if (I5) .优先编优先编码器码器:可以多个输可以多个输入有入有效,输出优先级高的信号编码效,输出优先级高的信号编码if语句能体现优先级功能,故可使用语句能体现优先级功能,故可使用if语句语句设计优先编码设计优先编码器器关键语关键语句句用用case语句语句161. 常用组合电路的设计方法常用组合电路的设计方法case

11、x语句也能体现优先级功能。语句也能体现优先级功能。case (A,B,C) 7b1xx : Y=3d1; 7b01x : Y=3d2; 7b001 : Y=3d3; default : Y=3d4;l case语句有三种:语句有三种:case、casez、czsex;l case语句语句0、1、x、z都要比都要比较,最严格;较,最严格;l casez只比只比较较0、1和和x,不,不比较比较z; l casex只比只比较较0、1,不,不比较比较z和和x。casex (A,B,C) 7b1xx : Y=3d1; 7b01x : Y=3d2; 7b001 : Y=3d3; default : Y=3

12、d4;若若A,B,C=010Y=4Y=2171. 常用组合电路的设计方法常用组合电路的设计方法casex (I7,I6,I5,I4,I3,I2,I1)7b1xxxxxx : Y2,Y1,Y0=3b111;7b01xxxxx : Y2,Y1,Y0=3b110;7b001xxxx : Y2,Y1,Y0=3b101;7b0001xxx : Y2,Y1,Y0=3b100;7b00001xx : Y2,Y1,Y0=3b011;7b000001x : Y2,Y1,Y0=3b010;7b0000001 : Y2,Y1,Y0=3b001;default : Y2,Y1,Y0=3b000;用用casex语句设计

13、优先编码器语句设计优先编码器181. 常用组合电路的设计方法常用组合电路的设计方法译码译码器设计器设计decoderY7Y6Y5Y4Y3Y2Y1Y0A2A1A0always (*)case (A2,A1,A0)3b000 : Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0=8b00000001;3b001 : Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0=8b00000010;3b010 : Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0=8b00000100;3b111 : Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0=8b10000000;default : Y7,Y6,Y5,Y4,Y

14、3,Y2,Y1,Y0=8b11111111;endcase用用case语句语句关关键语句键语句例例 3/8线译码器线译码器191. 常用组合电路的设计方法常用组合电路的设计方法带带片选端的译码器怎样设计?片选端的译码器怎样设计?always (*) if (S1,S2,S3=3b100) case (A2,A1,A0)3b000 : Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0=8b00000001;3b001 : Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0=8b00000010;3b010 : Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0=8b00000100;3b111 : Y7,

15、Y6,Y5,Y4,Y3,Y2,Y1,Y0=8b10000000;default : Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0=8b11111111; endcase else Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0=8b11111111;用用if语句设计片选功能。语句设计片选功能。1. 常用组合电路的设计方法常用组合电路的设计方法数据选择数据选择器设计器设计 MUXYalways (*)case (S1,S0)2b00 : Y=D0;2b01 : Y=D1;2b10 : Y=D2;2b11 : Y=D3;default : Y=1b0;endcaseD3D2D1D0S1S0关键语

16、句关键语句4选选1数据选择器数据选择器思考:思考:带片选端的数据选择器怎样设计?带片选端的数据选择器怎样设计?211. 常用组合电路的设计方法常用组合电路的设计方法加法加法器设计器设计always (*)Co,S3S2S1S0 = A3A2A1A0+B3B2B1B0 + Ci;ADDERCoA3A2A1A0B3B2B1B0S3S2S1S0Ci关键语句关键语句4位二进制加法器位二进制加法器1. 常用组合电路的设计方法常用组合电路的设计方法奇偶校验奇偶校验器设计器设计output reg 7:0 D;always (*)begin odd=D0D1D2D3D4D5D6D7 ;endassign e

17、ven=odd; parityDevenodd用异或运算用异或运算关键语句关键语句8位奇偶校验器位奇偶校验器always (*)begin odd=D; even=odd;end或者:或者:231. 常用组合电路的设计方法常用组合电路的设计方法output reg 7:0 D;always (*)begin odd=0; for (i=0; i7; i=i+1) begin odd=Diodd; endendassign even=odd; parityDevenodd用用for循环语句循环语句关键语句关键语句241. 常用组合电路的设计方法常用组合电路的设计方法for语句用法语句用法 循环语

18、句,只能在过程块中使用循环语句,只能在过程块中使用格式格式例:例:for (i=0; i=3; i=i+1)beginR=R+1;endfor ( 循环初始循环初始值设置表达式值设置表达式; 循环控制条循环控制条件表达式件表达式;循环控制变量增值表达式循环控制变量增值表达式)begin 循环体语句结构循环体语句结构 end初值、条件、调整初值、条件、调整251. 常用组合电路的设计方法常用组合电路的设计方法三态门及其应用电路设计三态门及其应用电路设计 三态门可以用门原语、条件赋值语句、三态门可以用门原语、条件赋值语句、if语句实现语句实现always (ENA or DIN) if (ENA)

19、 DOUT = DIN; else DOUT = 1bz;assign DOUT = ENA? DIN : 1bz; DOUTENADINbufif1 (DOUT,DIN,ENA); 261. 常用组合电路的设计方法常用组合电路的设计方法三态门构成的双向端口设计三态门构成的双向端口设计1.用两条门原语调用语句用两条门原语调用语句2.用两条用两条assign语句语句3.用两条用两条if 语句语句inoutseldata_indata_outassign data_in=!sel ? inout : 1bz;assign inout =sel ? dataout : 1bz;always (*)

20、if (!sel) data_in=inout; else data_in=1bz;always (*) if (sel) inout=data_out; else inout=1bz;技巧:先画出图,用连续赋值语句直接描述比较方便。技巧:先画出图,用连续赋值语句直接描述比较方便。bufif0 (data_in,inout,sel); bufif1 (inout,data_out,sel);271. 常用组合电路的设计方法常用组合电路的设计方法三态门构成的总线控制电路设计三态门构成的总线控制电路设计 IO_BUF (TRI)IO_BUF (TRI)DOUT0DOUT1IN1IN0ENADOUT

21、两个(或多个)输出接在一起,两个(或多个)输出接在一起,若若ENA=1,则,则DOUT=IN1;否则,否则,DOUT=IN0。注意不是数据选择器结构。注意不是数据选择器结构。1 用门原语设计用门原语设计2 用用assign语句描述语句描述3 用用if语句描述语句描述bufif0 (DOUT,IN0,ENA); bufif1 (DOUT,IN1,ENA);281. 常用组合电路的设计方法常用组合电路的设计方法用用assign语句描述语句描述IO_BUF (TRI)IO_BUF (TRI)DOUT0DOUT1IN1IN0ENADOUTmodule triBUS4 (IN1,IN0,ENA,DOUT

22、);input IN1,IN0;output DOUT;input ENA; assign DOUT=(ENA=1b0)? IN0 : 1bz;assign DOUT=(ENA=1b1)? IN1 : 1bz;endmodule这种情况下允许对同一个信号赋值。这种情况下允许对同一个信号赋值。但是如果不是三态门输出的话是不允许的。但是如果不是三态门输出的话是不允许的。291. 常用组合电路的设计方法常用组合电路的设计方法用用if语句描述语句描述IO_BUF (TRI)IO_BUF (TRI)DOUT0DOUT1IN1IN0ENADOUTmodule triBUS4 (IN1,IN0,ENA,DO

23、UT);input IN1,IN0;output reg DOUT;input ENA; always (ENA,IN0) beginif (ENA=1b0) DOUT=IN0;else DOUT=1hz ; end always (ENA,IN1) beginif (ENA=1b1) DOUT=IN1;else DOUT=1hz ; end endmodule这种情况下允许在两个这种情况下允许在两个always块中对同一个块中对同一个信号赋值,但是如果不信号赋值,但是如果不是三态门输出的话是不是三态门输出的话是不允许的。允许的。302. 常用时序电路的设计方法常用时序电路的设计方法时序电路的

24、描述特点:时序电路的描述特点:n任意时刻的输出不仅决定于该时刻的输入,而且与电路原来任意时刻的输出不仅决定于该时刻的输入,而且与电路原来的状态有关。的状态有关。n电路中有存储器或无反馈结构;有记忆功能。电路中有存储器或无反馈结构;有记忆功能。n时序电路多为边沿触发,也有电平触发。时序电路多为边沿触发,也有电平触发。常常用的时序电路用的时序电路基本基本SR锁存器锁存器电电平触发平触发D触发器触发器边沿触发边沿触发D触发器触发器计数计数器器移位寄存移位寄存器器顺顺序脉冲发生器序脉冲发生器序序列信号检测器列信号检测器312. 常用时序电路的设计方法常用时序电路的设计方法时序电路的描述特点:时序电路的

25、描述特点:l 时序电路一般用时序电路一般用always语句描述语句描述1.一般采用一般采用case语句、语句、if语句语句2. 经常利用经常利用case、if语句的条件不完整性实现寄存器(即不加语句的条件不完整性实现寄存器(即不加else)3. 一般采用非阻塞赋值一般采用非阻塞赋值4.边沿触发器敏感信号表中的时钟边沿触发器敏感信号表中的时钟条件用边沿变化条件用边沿变化5. 电平触发器敏感信号表中的时钟条件用电平变化电平触发器敏感信号表中的时钟条件用电平变化6. 边沿触发器型时序模块中异步控制信号的设计:在敏感信号表中给边沿触发器型时序模块中异步控制信号的设计:在敏感信号表中给出边沿敏感描述,在

26、过程结构中给出逻辑描述。出边沿敏感描述,在过程结构中给出逻辑描述。7. 边沿触发器型时序模块中同步控制信号的设计:不在敏感信号表中边沿触发器型时序模块中同步控制信号的设计:不在敏感信号表中列出该信号,在过程结构中给出逻辑描述。列出该信号,在过程结构中给出逻辑描述。8. 电平触发型时序模块中异步控制信号的设计:在敏感信号表中给出电平触发型时序模块中异步控制信号的设计:在敏感信号表中给出电平敏感描述,利用优先条件实现异步控制。电平敏感描述,利用优先条件实现异步控制。322. 常用时序电路的设计方法常用时序电路的设计方法基本基本SR锁存器设计锁存器设计QnQSR关键语句关键语句 nand (Q,S,

27、nQ);nand (nQ,R,Q); assign Q= (S & nQ);assign nQ=(R & Q);always (*)begin Q = (S & nQ); nQ =(R & Q);end 2. 常用时序电路的设计方法常用时序电路的设计方法电平触电平触发发D触发器触发器电平触发电平触发D触发器功触发器功能:能:当当CLK=1时,时,Q=D否则,否则,Q保持原值不变。保持原值不变。assign Q = CLK ? D : Q;always (D, CLK) if (CLK) Q=D;关键语句关键语句 2. 常用时序电路的设计方法常用时序电路的设计方法边沿边沿D触发器功能:触发器功能

28、:边沿边沿D触发触发器器always (posedge clk) Q=D;关键语句关键语句 边边沿触发器只能用沿触发器只能用always语句配合边沿敏感信号语句配合边沿敏感信号描述描述352. 常用时序电路的设计方法常用时序电路的设计方法含有复位控制端的边沿触含有复位控制端的边沿触发发器器异步复位:当复位信号有效时,触发器立即复位;(异步复位:当复位信号有效时,触发器立即复位;(即复位即复位控控制不受时钟控制)制不受时钟控制)同步复位:当复位信号有效时,触发器不会立即复位,而是同步复位:当复位信号有效时,触发器不会立即复位,而是要等到时钟信号到来时才复位。(即复位控制与时钟同步)要等到时钟信号

29、到来时才复位。(即复位控制与时钟同步)362. 常用时序电路的设计方法常用时序电路的设计方法异步复位控制描异步复位控制描述:述:方法:用方法:用if语句描述复位条件,且复位信号作为边沿敏感条件;语句描述复位条件,且复位信号作为边沿敏感条件;always (posedge CLK or negedge RST) if (!RST) Q=1b0; else Q=D;endmodule 同步复位控制描同步复位控制描述:述:always (posedge CLK) if (!RST) Q=1b0; else Q=D;方法:用方法:用if语句描述复位条件,但复位信号不作为敏感条件;语句描述复位条件,但复

30、位信号不作为敏感条件;当复位信号下降沿到来时当复位信号下降沿到来时,启动,启动always块,立即块,立即复位。不受时钟控制复位。不受时钟控制;当时钟上升沿当时钟上升沿到来时,启动到来时,启动always块块,如果复位条件成,如果复位条件成立则复立则复位位。复位受。复位受时钟控制时钟控制;372. 常用时序电路的设计方法常用时序电路的设计方法异步时序电路特点:异步时序电路特点:不是同一个时钟,例图不是同一个时钟,例图always (posedge CLK ) Q1=A|Q;always (posedge Q1)Q=D;Q1方法:分别用不同的方法:分别用不同的always块描述不同的时钟块描述不

31、同的时钟异步时异步时序电路设计序电路设计382. 常用时序电路的设计方法常用时序电路的设计方法计计数数器设计器设计二进制计数器功能:二进制计数器功能:392. 常用时序电路的设计方法常用时序电路的设计方法 方法方法: 用用always语句块实现。语句块实现。 计数时钟用边沿触发描述。计数时钟用边沿触发描述。 加法计数用加法实现,减法计数用减法实现;加法计数用加法实现,减法计数用减法实现; 计数容量控制用计数容量控制用ifelse语语句实现(配合比较条件);句实现(配合比较条件); 如果除计数容量控制以外还有清零、置数、使能等控制,可如果除计数容量控制以外还有清零、置数、使能等控制,可使用使用i

32、f else ifelse语语句实现,利用条件优先级实现句实现,利用条件优先级实现优先控制。优先控制。 进位输出用组合逻辑描述即可。进位输出用组合逻辑描述即可。40module Counter_4B (CLK,Q); input CLK; output 3:0 Q; reg Q; always (posedge CLK) Q=Q+1;endmodule无计数容无计数容量等控量等控制,简单的加制,简单的加1计算即可。计算即可。412. 常用时序电路的设计方法常用时序电路的设计方法功能更全面的计数器设计功能更全面的计数器设计 功能:功能:1 十进制计数,计数范围十进制计数,计数范围092 异步复位,低电平有效异步复位,低电平有效3 同步计数使能,高电平有同步计数使能,高电平有效,当使能有效时,效,当使能有效时,才能计数或置数才能计数或置数4 同步预置数,低电平有效同步预置数,低电平有效5 进位输出,高电平有效,计至进位输出,高电平有效,计至9,输出高电平,输出高电平控制优先级

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论