打印
[Actel FPGA]

求解verilog

[复制链接]
1385|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fengyiyong|  楼主 | 2012-12-6 22:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
编了一个四位全加器、但是仿真结果不对,请大神们给看看指指错。
测试信号:
`include "adder.v"
module adder_tb();
reg[3:0]addend,adder;//加数和被加数
reg a1,a2,a3,a4,b1,b2,b3,b4,c0;//各个位和初始进位
initial
begin
addend=4'b0001;//被加数为1
adder=4'b0010;//加数为2
c0=1'b0;
a1=addend[0];
a2=addend[1];
a3=addend[2];
a4=addend[3];
b1=adder[0];
b2=adder[1];
b3=adder[2];
b4=adder[3];
end
adder m(.a1(a1),.a2(a2),.a3(a3),.a4(a4),.b1(b1),.b2(b2),.b3(b3),.b4(b4),.c0(c0));//调用
endmodule
adder:
module adder(a1,a2,a3,a4,b1,b2,b3,b4,c0,sum);
input a1,a2,a3,a4,b1,b2,b3,b4,c0;
output[4:0] sum;
reg[4:0] sum;
wire c1,c2,c3,c4;//中间进位
always@(*)
sum[0]=((~a1)&(~b1)&c0)|((~a1)&b1&(~c0))|(a1&(~b1)&(~c0))|(a1&b1&c0);
always@(*)
sum[1]=((~a2)&(~b2)&c1)|((~a2)&b2&(~c1))|(a2&(~b2)&(~c1))|(a2&b2&c1);
always@(*)
sum[2]=((~a3)&(~b3)&c2)|((~a3)&b3&(~c2))|(a3&(~b3)&(~c2))|(a3&b3&c2);
always@(*)
begin
sum[3]=((~a4)&(~b4)&c3)|((~a4)&b4&(~c3))|(a4&(~b4)&(~c3))|(a4&b4&c3);
sum[4]=c4;
end
assign c1=(a1&b1)|(a1&(~b1)&c0)|((~a1)&b1&c0);
assign c2=(a2&b2)|(a2&(~b2)&c1)|((~a2)&b2&c1);
assign c3=(a3&b3)|(a3&(~b3)&c2)|((~a3)&b3&c2);
assign c4=(a4&b4)|(a4&(~b4)&c3)|((~a4)&b4&c3);
endmodule

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

37

帖子

0

粉丝