2017-08-19 144 views
0

以下是我的1位ALU,經驗證可以正常工作。現在我想將這個1位aLU用於8位alu,它需要通過一個測試平臺。到目前爲止,我編譯了一個8位的ALU代碼,但它似乎沒有工作。任何幫助?在Verilog中將ALU 1位轉換爲ALU 8位

module ALUSlice(A,B,CI,M,S,F,CO); //Code for 1-bit 
input A,B,CI,M,S; 
output F,CO; 
wire [3:0] TF; 
wire [3:0] TC; 

FullAdder F1(TF[3],TC[3],A,B,CI); 
assign TF[0] = A & B; 
assign TF[1] = A | B; 
assign TF[2] = ~A; 

assign TC[2:0] = 0; 
Dual4to1Mux Mux1(F,CO,{M,S},TF,TC); 
endmodule 




module ALU8Bit(S1,S0, A, B, CarryIn, CarryOut, F);//What I have so far 
input [7:0] A,B; 
input S1,S0,CarryIn; 
output [7:0] F; 
output CarryOut; 

wire [7:0] C; 

ALUSlice A0(F[0],C[0],A[0],B[0],CarryIn,S0,S1); 
ALUSlice A1(F[1],C[1],A[1],B[1],C[0],S0,S1); 
ALUSlice A2(F[2],C[2],A[2],B[2],C[1],S0,S1); 
ALUSlice A3(F[3],C[3],A[3],B[3],C[2],S0,S1); 
ALUSlice A4(F[4],C[4],A[4],B[4],C[3],S0,S1); 
ALUSlice A5(F[5],C[5],A[5],B[5],C[4],S0,S1); 
ALUSlice A6(F[6],C[6],A[6],B[6],C[5],S0,S1); 
ALUSlice A7(F[7],CarryOut,A[7],B[7],C[6],S0,S1); 

endmodule 

回答

0

如果沒有一個更全面的圖片,不容易判斷這是否是您唯一的問題。但是這可能會失敗的一個原因是您似乎沒有在您的ALUBit中正確連接ALUSlice模塊。 ALUSlice模塊的端口(io)順序應該是輸入,然後是輸出,但在您的實例中輸出後面跟着輸入。作廢的bug這類的最佳方式是明確的端口連接到各自的線路,而不是依靠秩序,就像這樣:

ALUSlice A0(.A(A[0]), .B(B[0]), .CI(CarryIn), .M(S1), .S(S0), .F(F[0]), .CO(C[0])); 

這樣,一切都連接完全按照自己的打算(即A[0]連接到A輸入,B[0]BCarryInCI等),而不會犯命令錯誤,或者當您添加新端口或取走任何東西時,所有內容仍按預期方式掛鉤。

+0

因此對於下面的代碼行,我會用括號中的1s而不是0代碼編寫完全相同的代碼。 – itstgtc

+0

仍然收到錯誤 – itstgtc

+0

@itstgtc對於你的第一個問題,基本上是的。不像你在問題中那樣使用端口順序連接線,而是使用上面給出的語法顯式連接它們。雖然不是所有東西都只是一個'X [n]',你有'CarryIn'和'CarryOut',並且確保正確連接你的進位鏈。我不知道現在怎麼了,你能發佈關於你所看到的錯誤的更多細節嗎? – Unn