首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Verilog中将1位ALU转换为8位ALU

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

Stack Overflow用户
提问于 2017-08-19 09:28:46
回答 1查看 1.5K关注 0票数 0

下面是我的1位算术逻辑单元,它被证明是有效的。现在我想把这个1位的aLU用在一个8位的alu上,它需要通过测试。到目前为止,我编译了一个8位的ALU代码,但它似乎不能工作。有什么帮助吗?

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-19 11:09:20

如果没有对所有事情都有一个更完整的了解,就很难判断这是否是你唯一的问题。但这可能会失败的一个原因是,您似乎没有在ALUBit中正确地连接您的ALUSlice模块。ALUSlice模块的端口(io)顺序应该是输入,然后是输出,但是在实例化中,输出后面是输入。避免这些类型的bug的最好方法是显式地将端口连接到它们各自的线路,而不是依赖于顺序,如下所示:

代码语言:javascript
复制
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]连接到BCarryIn连接到CI等),而不会出现订单错误,或者当您添加新端口或移除任何端口时,一切仍会按预期连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45766832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档