這段代碼描述了這個表達式 - >(a+b)(c+d)
。我使用了兩個總和,首先總結a和b,然後總結c和d。然後再增加一個結果。不幸的是,我對Verilog非常不滿,所以我無法理解哪裏出了問題。告訴我這個代碼有什麼問題
module automate(a,b,c,d,clk,start,result,ready);
parameter n=8;
input [7:0] a,b,c,d;
input start,clk;
output reg[17:0] result;
output reg ready;
reg[7:0] ra;
reg[7:0] rb;
reg[7:0] rc;
reg[7:0] rd;
reg[8:0] sm1;
reg[8:0] sm2;
reg[8:0] acc,q;
[email protected](posedge start)
begin
ra=a;
rb=b;
rc=c;
rd=d;
sm1=ra+rb;
sm2=rc+rd;
q=sm2;
acc=0;
ready=0;
repeat(9)
begin
@(posedge clk)
if(q[0])
acc=acc+sm1;
else
acc=acc;
q=q>>1;
q[8] = acc[0];
acc=acc>>1;
end
ready=1;
result={acc[8:0],q};
end
endmodule
測試平臺:
module test_bench;
reg[7:0] a,b,c,d;
reg clk,start;
wire ready;
wire[17:0] result;
automate res(a,b,c,d,clk,start,result,ready);
initial begin
start = 0;
clk=0;
a=8'd7;
b=8'd5;
c=8'd9;
d=8'd3;
#30 start = 1;
wait(ready);
#20 start = 0;
#500 $finish;
end
always #10 clk=~clk;
endmodule
但這裏是我得到:
https://www.dropbox.com/s/1w6qbrmrj22f4gs/Untitled.png?dl=0 – Tatev
我的猜測是你模擬模塊自動化,而不是測試臺。 –
謝謝你的回覆。是的,你是對的,我模擬模塊自動化...是不是錯誤?當我添加到wave testbench時,出現錯誤 - > https://www.dropbox.com/s/1w6qbrmrj22f4gs/Untitled.png?dl=0。你能告訴我該怎麼辦? – Tatev