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=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


仿真波形图:

4位超前进位加法器-Verilog HDL_第1张图片

你可能感兴趣的:(VerilogHDL)