我想在verilog中爲進位選擇加法器創建一個模塊。除了以下導致編譯錯誤的部分,一切正常。<<module name>>不是verilog中的任務或void函數
module csa(a,b,s,cout);
input[15:0] a,b;
output [15:0] s;
output cout;
wire zero_c1, zero_c2,zero_c3,zero_c4,zero_c5;
wire one_c1, one_c2,one_c3,one_c4,one_c5;
wire temp_c1,temp_c2,temp_c3,temp_c4,temp_c5;
wire [15:0] s_zero, s_one;
initial
begin
fork
fa(s[0], temp_c1,a[0],b[0],0);
fa_one(s_zero[1],s_one[1],zero_c1,one_c1,a[1],b[1]);
fa_two(s_zero[3:2],s_one[3:2],zero_c2,one_c2,a[3:2],b[3:2]);
fa_three(s_zero[6:4],s_one[6:4],zero_c3,one_c3,a[6:4],b[6:4]);
fa_four(s_zero[10:7],s_one[10:7],zero_c4,one_c4,a[10:7],b[10:7]);
fa_five(s_zero[15:11],s_one[15:11],zero_c5,one_c5,a[15:11],b[15:11]);
join
end
當我嘗試編譯它說 -
模塊 「FA」, 「fa_one」 不是一個任務或void函數
我刪除了 「初始」聲明,現在它說 -
「叉」附近的語法錯誤,期待「endmodule」
我只是想在並行和連接之間運行代碼。我也確認模塊fa,fa_one正常工作。
希望如果有人能幫我指出我在這裏做錯了什麼。謝謝。
謝謝。我修改了代碼。現在編譯好了。只是一個問題。所以「fa」,「fa_one」的所有實例現在都會並行運行?如果它們之間有某種關係(例如fa_one使用fa的輸出)會怎麼樣? – DataEnthusiastic
是的,所有實例都將並行運行。它取決於你如何編寫模塊,但是如果它們只包含原語和/或連續賦值,那麼只要輸入改變就會重新計算輸出。 – mark4o