大家好,欢迎来到IT知识分享网。
Verilog HDL 简介
Verilog HDL是目前设计界通常采用的一种硬件描述语言,被广泛的应用在数字ASIC和可编程逻辑器件的设计开发工作。其按照一定的规则和风格编写代码,可以从系统级、电路级、门级、开关级等抽象层次,进行数字电路系统的建模、设计和验证工作。
4位超前进位加法器的编程实现
使用ModelSim仿真软件进行相关的编程与仿真。
4位超前进位加法器对应的Verilog HDL代码:
module fastAdder_4(sum,c_out,a,b,c_in);
input[3:0] a,b;
input c_in;
output[3:0] sum;
output c_out;
wire[4:0] g,p,c;
assign c[0]=c_in;
assign p=a^b;
assign g=a&b;
assign c[1]=g[0]|(p[0]&c[0]);
assign c[2]=g[1]|(p[1]&(g[0]|(p[0]&c[0])));
assign c[3]=g[2]|(p[2]&(g[1]|(p[1]&(g[0]|(p[0]&c[0])))));
assign c[4]=g[3]|(p[3]&(g[2]|(p[2]&(g[1]|(p[1]&(g[0]|(p[0]&c[0])))))));
assign sum=p^c[3:0];
assign c_out=c[4];
endmodulemodule fastAdder_4(sum,c_out,a,b,c_in);
input[3:0] a,b;
input c_in;
output[3:0] sum;
output c_out;
wire[4:0] g,p,c;
assign c[0]=c_in;
assign p=a^b;
assign g=a&b;
assign c[1]=g[0]|(p[0]&c[0]);
assign c[2]=g[1]|(p[1]&(g[0]|(p[0]&c[0])));
assign c[3]=g[2]|(p[2]&(g[1]|(p[1]&(g[0]|(p[0]&c[0])))));
assign c[4]=g[3]|(p[3]&(g[2]|(p[2]&(g[1]|(p[1]&(g[0]|(p[0]&c[0])))))));
assign sum=p^c[3:0];
assign c_out=c[4];
endmodule
TestBench 用于仿真的测试代码:
module fastAdder_4_tb;
reg [3:0] a,b;
reg c_in;
wire [3:0] sum;
wire c_out;
fastAdder_4 U3(.a(a),.b(b),.c_in(c_in),.sum(sum),.c_out(c_out));
initial
begin
a=4'b0001;b=4'b0101;c_in=1'b0;
#100 a=4'b0001;b=4'b0111;
#100 a=4'b0111;b=4'b1100;
#100 b=4'b1111;c_in=1'b1;
#100 a=4'b1101;b=4'b0100;
#100 a=4'b0000;b=4'b1001;c_in=1'b0;
#100 a=4'b1000;b=4'b0110;
end
endmodule
仿真波形图:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/10096.html