资源描述:
《VerilogHDL设计与综合ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十四章Verilog的可综合描述风格蔡觉平8/18/20211MicroelectronicsSchoolXidianUniversity第14章VerilogHDL数字逻辑电路设计方法1VerilogHDL语言的设计思想和可综合特性用VerilogHDL设计模256(8bits)计数器(a)可综合程序描述方式modulecounter(count,clk,reset);outputcount;inputclk,reset;reg[7:0]count;regout;always@(posedgeclk)if(!reset)count<=0;
2、elseif(count==8'b11111111)count<=0;elsecount<=count+1;endmodule(b)常见的错误描述方式modulecounter(count,clk,reset);outputcount;inputreset,clk;reg[7:0]count;regout;integeri;always@(posedgeclk,reset)beginif(!reset)count<=0;elsefor(i=0;i<=255;i=i+1)count<=count+1;endendmoduleVerilogHDL的
3、电路描述方式具有多样性例2:用VerilogHDL设计数字多路选择器(a)采用真值表形式moduleMUX(out,data,sel);outputout;input[3:0]data;input[1:0]sel;regout;always@(dataorsel)case(sel)2'b00:out<=data[0];2'b01:out<=data[1];2'b10:out<=data[2];2'b11:out<=data[3];endcaseendmodule(b)采用逻辑表达式形式moduleMUX(out,data,sel);output
4、out;input[3:0]data;input[1:0]sel;wirew1,w2,w3,w4;assignw1=(~sel[1])&(~sel[0])&data[0];assignw2=(~sel[1])&sel[0]&data[1];assignw3=sel[1]&(~sel[0])&data[2];assignw4=sel[1]&sel[0]&data[3];assignout=w1
5、w2
6、w3
7、w4;endmodule(c)采用结构性描述moduleMUX(out,data,sel);outputout;input[3:0]data;
8、input[1:0]sel;wirew1,w2,w3,w4;notU1(w1,sel[1]);U2(w2,sel[0]);andU3(w3,w1,w2,data[0]);U4(w4,w1,sel[0],data[1]);U5(w5,sel[1],w2,data[2]);U6(w6,sel[1],sel[0],data[3]);orU7(out,w3,w4,w5,w6);endmoduleVerilogHDL组合电路设计描述组合逻辑电路有四种方式:结构描述、逻辑代数、真值表、抽象描述。采用VerilogHDL进行组合逻辑电路设计主要采用这几种方式
9、。例3:设计一个3个裁判的表决电路,当两个或两个以上裁判同意时,判决器输出“1”,否则输出“0”。方法1:真值表方式ABCOUT00000010010010000111101111011111真值表moduledesingn(OUT,A,B,C);outputOUT;inputA,B,C;regOUT;always@(AorBorC)case({A,B,C})3'b000:OUT<=0;3'b001:OUT<=0;3'b010:OUT<=0;3'b100:OUT<=0;3'b011:OUT<=1;3'b101:OUT<=1;3'b110:OUT
10、<=1;3'b111:OUT<=1;endcaseendmodule方法2:逻辑代数方式卡诺图moduledesingn(OUT,A,B,C);outputOUT;inputA,B,C;assignOUT=(A&B)
11、(B&C)
12、(A&C);endmodule方法3:结构描述方式moduledesingn(OUT,A,B,C);outputOUT;inputA,B,C;andU1(w1,A,B);andU2(w2,B,C);andU3(w3,A,C);orU4(OUT,w1,w2,w3);endmodule方法4:抽象描述方式moduledes
13、ingn(OUT,A,B,C);outputOUT;inputA,B,C;wire[1:0]sum;regOUT;assignsum=A+B+C;al