《常见组合与时序逻辑电路VerilogHDl描述.pptx》由会员分享,可在线阅读,更多相关《常见组合与时序逻辑电路VerilogHDl描述.pptx(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、主要内容主要内容一、常用组合电路模块的设计二、常用时序电路模块的设计三、多层次结构电路的设计第1页/共22页(一)简单组合电路的描述1 1、基本门电路的描述常用组合电路模块的设计第2页/共22页(2)用assign连续赋值语句描述module gate1(F,A,B,C,D);input A,B,C,D;output F;assign F=(A&B)|(B&C&D);/连续赋值语句endmodule(3)用过程语句always块描述module gate2(F,A,B,C,D);input A,B,C,D;output F;reg F;always(A or B or C or D)/alwa
2、ys过程语句 F=(A&B)|(B&C&D);endmodule(1)调用内置门元件描述module gate3(F,A,B,C,D);input A,B,C,D;output F;nand(F1,A,B);and(F2,B,C,D);or(F,F1,F2);/调用内置门endmodule第3页/共22页2 2、三态门的描述reg out;always(en or in)out=en?in:bz;end(2)用assign连续赋值语句描述 (3)用过程语句always块描述(1)调用内置门元件描述bufif1 b1(out,in,en);assign out=en?in:bz;第4页/共22页
3、在Verilog HDL中,描述简单的组合逻辑通常使用assign结构。注意:条件运算符是一种在组合逻辑实现分支判断时常使用的格式。第5页/共22页(二)复杂组合电路的描述一般用always块实现较复杂的组合逻辑电路1 1、3 3线-8-8线译码器module decoder_38(out,in);output7:0 out;input 2:0 in;reg7:0out;always(in)begin case(in)3b000:out=8b11111110;3b001:out=8b11111101;3b010:out=8b11111011;3b011:out=8b11110111;3b100
4、:out=8b11101111;3b101:out=8b11011111;3b110:out=8b10111111;3b111:out=8b01111111;endcaseendendmodule第6页/共22页MAX+PLUSII编译后的生成的模块符号:第7页/共22页module decode4_7(a,b,c,d,e,f,g,D3,D2,D1,D0);output a,b,c,d,e,f,g;input D3,D2,D1,D0;reg a,b,c,d,e,f,g;always(D3 or D2 or D1 or D0)begincase(D3,D2,D1,D0)4d0:a,b,c,d,e
5、,f,g=7b1111110;4d1:a,b,c,d,e,f,g=7b0110000;4d2:a,b,c,d,e,f,g=7b1101101;4d3:a,b,c,d,e,f,g=7b1111001;4d4:a,b,c,d,e,f,g=7b0110011;4d5:a,b,c,d,e,f,g=7b1011011;4d6:a,b,c,d,e,f,g=7b1011111;4d7:a,b,c,d,e,f,g=7b1110000;4d8:a,b,c,d,e,f,g=7b1111111;4d9:a,b,c,d,e,f,g=7b1111011;default:a,b,c,d,e,f,g=7bx;endcase
6、endendmodule2 2、BCDBCD码七段数码显示译码器第8页/共22页MAX+PLUSII编译后的生成的模块符号:第9页/共22页3 3、8 8线-3-3优先编码器module encoder8_3(outcode,a,b,c,d,e,f,g,h);output2:0 outcode;input a,b,c,d,e,f,g,h;reg2:0 outcode;always(a or b or c or d or e or f or g or h)beginif(h)outcode=3b111;else if(g)outcode=3b110;else if(f)outcode=3b101
7、;else if(e)outcode=3b100;else if(d)outcode=3b011;else if(c)outcode=3b010;else if(b)outcode=3b001;else if(a)outcode=3b000;endendmodule第10页/共22页MAX+PLUSII编译后的生成的模块符号:第11页/共22页4 4、数据选择器(2 2选1 1、4 4选1)1)(略)第12页/共22页(一)简单时序逻辑电路的描述通常使用always块((posedge clk)或(negedge clk)来描述时序逻辑。基本D D触发器module DFF(Q,D,CLK);
8、output Q;input D,CLK;reg Q;always(posedge CLK)Q=D;endmodule常用时序电路模块设计第13页/共22页(二)复杂时序逻辑电路的描述通常在always 过程语句里使用条件语句条件语句来实现较复杂的时序逻辑电路。第14页/共22页1 1、带清零端、置1 1端的D D触发器module DFF1(q,qn,d,clk,set,reset);output q,qn;input d,clk,set,reset;reg q,qn;always(posedge clk)beginif(!reset)begin q=0;qn=1;endelse if(!s
9、et)begin q=1;qn=0;endelsebeginq=d;qn=d;endendendmoduleor negedge set or negedge reset)第15页/共22页2 2、带清零端、置1 1端的JKJK触发器module JK_FF(CLK,J,K,Q,RS,SET);input CLK,J,K,SET,RS;output Q;reg Q;always(posedge CLK or negedge RS or negedge SET)beginif(!RS)Q=1B0;else if(!SET)q=1B1;else case(J,K)2b00:Q=Q;2b01:Q=1
10、b0;2b10:Q=1b1;2b11:Q=Q;endcaseendendmodule 第16页/共22页3 3、数据寄存器module reg8(out_data,in_data,clk,clr);output7:0 out_data;input7:0 in_data;input clk,clr;reg7:0 out_data;always(posedge clk or posedge clr)beginif(clr)out_data=0;else out_data=in_data;endendmodule 第17页/共22页module shifter(din,clk,clr,dout);i
11、nput din,clk,clr;output7:0 dout;reg7:0 dout;always(posedge clk)begin if(clr)dout=8b0;else begindout=dout1;dout0=din;endendendmodule4 4、移位寄存器第18页/共22页5 5、计数器module updown_count(d,clk,clear,load,up_down,qd);input 3:0 d;input clk,clear,load,up_down;output 3:0 qd;reg3:0 qd;always(posedge clk)beginif(!clear)qd=4h00;else if(load)qd=d;else if(up_dwon)qd=qd+1;elseqd=qd-1;endendmodule第19页/共22页练习:用Verilog HDL Verilog HDL 语言描述一个十进制的计数器。要求:时钟上升沿触发,异步清零端低电平有效.第20页/共22页本讲结束第21页/共22页感谢您的观看!第22页/共22页