|
楼主 |
发表于 2011-9-1 17:23:01
|
显示全部楼层
自己写了一下代码:是错的,而且知道错误的原因,但如何修改呢?
========================================================================================================================
module ALU(clk, a, b, cin, result, cout);
input[7:0] a, b;
input cin;
input clk;
output[7:0] result;
output cout;
wire carry0;
wire carry1;
reg [2:0] counter;
// module 实例化
// 8-bit ripple adder
always @(posedge clk)begin
case (counter)
0: begin
FullAdder fa(a[0], b[0], cin, result[0], carry0);
counter<=counter+1;
end
1: begin
FullAdder fa(a[1], b[1], carry0, result[1], carry1);
counter<=counter+1;
end
2:begin
FullAdder fa(a[2], b[2], carry1, result[2], carry0);
counter<=counter+1;
end
3: begin
FullAdder fa(a[3], b[3], carry0, result[3], carry1);
counter<=counter+1;
end
4: begin
FullAdder fa(a[4], b[4], carry1, result[4], carry0);
counter<=counter+1;
end
5: begin
FullAdder fa(a[5], b[5], carry0, result[5], carry1);
counter<=counter+1;
end
6: begin
FullAdder fa(a[6], b[6], carry1, result[6], carry0);
counter<=counter+1;
end
7: begin
FullAdder fa(a[7], b[7], carry0, result[7], cout);
counter<=0;
end
default:
result=0;
endcase
end
endmodule
module FullAdder(a, b, cin, sum, cout);
input a, b, cin;
output sum, cout;
assign {cout, sum} = a + b + cin;
endmodule |
|