4位超前进位加法器-Verilog HDL
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=4b0001;b=4b0101;c_in=1b0; #100 a=4b0001;b=4b0111; #100 a=4b0111;b=4b1100; #100 b=4b1111;c_in=1b1; #100 a=4b1101;b=4b0100; #100 a=4b0000;b=4b1001;c_in=1b0; #100 a=4b1000;b=4b0110; end endmodule
仿真波形图: