|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
这是一个booth乘法器!
程序如下:
`timescale 1ns/1ns
module ceshi1(a,b,c);
input [3:0] a;
input [3:0] b;
output [7:0] c;
reg [8:0] q;
reg [7:0] c;
integer i;
always @ (a,b)
begin
q={4'b0000,b,1'b0};
for(i=4;i>=0;i=i-1)
if(i==0) c=q[8:1];
else
begin
case(q[1:0])
2'b01: q[8:5]<=q[8:5]+a[3:0];
2'b10: q[8:5]<=q[8:5]-a[3:0];
default: q<=q;
endcase
#2q<={q[8],q[8:1]};
#2 $display("q=%b,i=%d,c=%b",q,i,c); //************若不要此句,结果错误!
end
end
endmodule
这个$display在里面只起到显示结果的作用吧,可有可无,但是为什么么没有就不行呢!!
而且在我用红色标出的begin —end里面。语句应该是顺序执行的,但是没有延迟就不是顺序执行!!
我是在modelsi中运行的!!
敬请高手赐教!!! |
|