//BCD.v
module BCD(A,B,Sum,Cout);
input [3:0]A,B;
output [3:0]Sum;
output Cout;
// reg [3:0]Sum;
// reg Cout?
wire [4:0]Temp;
assign Temp = A + B;
assign {Cout , Sum} = (Temp > 9 )? Temp +6 : Temp;
/* always@(A or B)
begin
{Cout , Sum} = A + B;
if({Cout , Sum} > 9 )
{Cout , Sum} = {Cout , Sum} + 6;
end
*/
endmodule
//BCD_tb.v
`timescale 1ns/1ns
module BCD_tb;
reg [3:0]addend1,addend2;
wire [3:0]sum;
wire C;
parameter DELAY = 100; //
integer i,j;
BCD U1( .A(addend1),
.B(addend2),
.Cout(C),
.Sum(sum)
);
initial
begin
addend1 = 0;
addend2 = 0;
for(i = 0;i < 10;i = i + 1)
for(j = 0;j < 10;j = j + 1)
begin
#DELAY addend1 = i;
addend2 = j;
end
end
initial
$monitor($time,,,"%d + %d = %d , carry = %d ",addend1,addend2,sum,C);
endmodule
文件编译可以成功
进入
仿真界面
点击Run 后
运行一个单位时间后就停止了。。。。。
刚开始以为是自己代码写错了。但是从网上弄来很多别人的代码测试后,发现每个代码都是这样的。。。。。。
我在找是我软件出问题了需要重装,还是我的配置有问题。。。。
一周热门 更多>