iverilog实现4位CLA加法器,4bit超前进位加法器verilog,并测试
作者:互联网
1.建立adder_CLA4.v文件。在终端输入“vim adder_CLA4.v”,如下图所示。
2.回车进入下图所示。点击键盘i进入编辑模式,输入程序。但这里输入不方便。按键盘“Esc”进入命令模式,然后输入“:wq”,保存并退出。
3.编程。在桌面(或其他位置)找到adder_CLA4.v文件,打开,输入以下程序。
`timescale 1ns / 1ns
module adder_CLA4(
input wire [3:0] a ,
b ,
input wire ci,
output wire co,
output wire [3:0] s
);
wire [4:0] c ;
wire [3:0] g, p;
wire [3:0] G, P;
assign g = a & b;
assign p = a ^ b;
assign {G[0], P[0]} = {g[0], p[0]} ;
assign {G[1], P[1]} = {g[1]|(p[1] & G[0]), p[1] & P[0]} ;
assign {G[2], P[2]} = {g[2]|(p[2] & G[1]), p[2] & P[1]} ;
assign {G[3], P[3]} = {g[3]|(p[3] & G[2]), p[3] & P[2]} ;
assign co = c[4] ;
assign c[0] = ci ;
assign c[4:1] = G|(P & c[3:0]) ;
assign s = p ^ c[3:0] ;
endmodule
4.编译。终端输入“iverilog adder_CLA4.v”并Enter。无错误。
5.建立并编写测试文件。终端输入“vim adder_CLA4tb.v”。输入以下程序。
`timescale 1ns/1ns
module adder_CLA4tb;
reg [3:0] a, b;
reg ci ;
wire co ;
wire [3:0]s ;
adder_CLA4 uadder_CLA4(
.a(a) ,
.b(b) ,
.ci(ci),
.s(s) ,
.co(co)
);
integer i, j;
initial begin
ci = 1'b0;
a = 4'b0 ;
b = 4'b0 ;
for (i = 0; i < 16; i = i+1)
begin
for (j = 0; j < 16; j = j+1)
begin
#5
a = i ;
b = j ;
ci = ~ci;
end
end
end
initial
$monitor("%d %d %b: %b %d", a, b, ci, co, s);
initial begin
$dumpfile("adder_CLA4.vcd");
$dumpvars(0, adder_CLA4tb) ;
end
endmodule
6.编译。终端输入“iverilog adder_CLA4.v adder_CLA4tb.v”。
7.生成输出文件。用-o指定文件名称。生成的文件名为adder_CLA4test。
8.生成波形文件。输入“vvp -n adder_CLA4test -1xt2”。生成vcd文件。
9.打开vcd文件,看到波形。
标签:ci,wire,co,4bit,iverilog,加法器,adder,CLA4,assign 来源: https://blog.csdn.net/weixin_45121327/article/details/121185226