Assembly Logisim ALU红线-不了解原因和修复方法
我正在进行一个项目,需要为MIPS的特定指令子集创建自己的CPU。我承认在这个项目之前我一直认为我理解单周期数据路径。请原谅我的困惑 我的问题是我的ALU。ALUAssembly Logisim ALU红线-不了解原因和修复方法,assembly,alu,Assembly,Alu,我正在进行一个项目,需要为MIPS的特定指令子集创建自己的CPU。我承认在这个项目之前我一直认为我理解单周期数据路径。请原谅我的困惑 我的问题是我的ALU。ALUOpcode是一个4位数字,SubOp是一个单位值。当我尝试测试我的ALU时,我的所有输出行都是红色的。我不知道为什么。如果我删除或门的输出,所有其他行都变黑。然后,当我将我的操作码(图像左下角)从和门(0x00)更改为另一个值时,输出行再次变为红色 虽然这个ALU还没有完成,但我想问一下为什么会发生这种情况?输入为8位长。我已经把它分
Opcode
是一个4位数字,SubOp
是一个单位值。当我尝试测试我的ALU时,我的所有输出行都是红色的。我不知道为什么。如果我删除或门的输出,所有其他行都变黑。然后,当我将我的操作码(图像左下角)从和门(0x00)更改为另一个值时,输出行再次变为红色
虽然这个ALU还没有完成,但我想问一下为什么会发生这种情况?输入为8位长。我已经把它分解成一个简单的和门,接受8位输入,我仍然收到红线。无论选择操作码
,结果
(中下)都会产生错误
我错过了什么
我知道有一个更简单的方法来说明这一点。但我正试图将ALU“操作码”分解成一些在测试完成之前更容易理解的东西。这是我计划在了解红线问题后解决的问题。我不确定,但我认为使用解复用器不起作用:
通常,解复用器的“未选择”信道的输出具有恒定值(例如0或2^N-1)而不是高Z
即使是high-Z:如果某个门(如And门)的输入是high-Z,输出也不一定是high-Z。这取决于使用的工具
假设你想做加法,把数字4和3相加。假设解复用器的非选定通道输出0
在这种情况下,将发生以下情况:
将输出传递给加法器和减法器的两个解复用器之一将返回4和0,另一个将返回3和0
加法器将计算:4+3=7,而减法器将计算0-0=0
这两个(!!!)值现在都将馈送到“ALUresult”导线
您通常要做的是进行所有计算(将寄存器传递给所有操作)。所以你总是有所有的结果(或,和,和,差,积,商,…)
然后使用多路复用器(而不是解复用器)选择您感兴趣的结果。ahhhhh!!!回答得很好。现在完全有道理了。非常感谢。我不知道Demux发出了两个这样的信号。它可以解释为什么当其中一根导线被切断时,它会将所有其他导线清除为黑色。然后,当我使用我的操作码
输入选择另一组函数时,它们再次变为红色!