繁体   English   中英

在Verilog中将ALU 1位转换为ALU 8位

[英]Turning an ALU 1-bit into ALU 8-bit in Verilog

下面是我的1位ALU,它被证明可以工作。 现在,我想将此1位aLU转换为8位alu,并且它需要通过测试平台。 到目前为止,我已经编译了一个8位的ALU代码,但是它似乎不起作用。 有什么帮助吗?

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

如果没有更全面的描述,很难判断这是否是您唯一的问题。 但是一个原因,这可能是失败,似乎你没连上你的ALUSlice在正确的模块ALUBit ALUSlice模块的端口(io)顺序应该是输入,然后是输出,但是在实例化中,输出的后面是输入。 消除这些错误的最好方法是将端口显式连接到它们各自的行,而不是依赖顺序,如下所示:

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等),而不会因顺序错误或添加新端口时出错或带走任何东西,一切依旧按预期进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM