Logisim ALU 红线 - 不了解原因以及如何修复
Posted
技术标签:
【中文标题】Logisim ALU 红线 - 不了解原因以及如何修复【英文标题】:Logisim ALU Red Lines - Not Understanding Causes and How to Fix 【发布时间】:2017-04-19 02:07:30 【问题描述】:我正在进行一个项目,我需要为 MIPS 的特定指令子集创建自己的 CPU。我承认在这个项目之前我认为我理解单周期数据路径。所以请原谅我的困惑。
我的问题在于我的 ALU。 ALU Opcode
是一个 4 位数字,SubOp
是一个单位值。当我尝试测试我的 ALU 时,输出的所有行都是红色的。我不确定为什么。如果我删除NOR
Gate 的输出,所有其他行都会变黑。然后,当我将Opcode
(图像的左下角)从AND
门(0x00)更改为另一个值时,输出线再次变红。
虽然此 ALU 尚未完成,但我想请教一下为什么会发生这种情况?输入为 8 位长。我已经将其分解为一个简单的AND
门,采用 8 位输入,但我仍然收到红线。无论选择Opcode
,ALUresult
(中下)都会产生错误。
我错过了什么?
我知道有一种更简单的方法可以解决这个问题。但我正试图将 ALU 的“操作码”分解成更容易理解的东西,直到测试完成。一旦我了解了这个红线问题,我就打算做这件事。
【问题讨论】:
【参考方案1】:我不确定,但我认为使用解复用器将不起作用:
通常,解复用器的“未选择”通道的输出具有恒定值(例如 0 或 2^N-1),而不是高阻抗。
即使它是高阻态:如果某个门(例如与门)的输入是高阻态,则输出不一定是高阻态。这取决于使用的工具。
假设您要进行加法并将数字 4 和 3 相加。假设解复用器的未选择通道输出 0。
在这种情况下会发生以下情况:
将输出传递给加法器和减法器的两个解复用器中的一个将返回 4 和 0,另一个将返回 3 和 0。
加法器将计算:4+3=7,而减法器将计算 0-0=0。
两个 (!!!) 值现在都将被馈送到“ALUresult”线!!!
您通常做的是进行所有计算(将寄存器传递给所有操作)。所以你总是有所有的结果(或、与、和、差、积、商……)。
然后你使用多路复用器(不是解复用器)来选择你感兴趣的结果。
【讨论】:
啊啊啊啊!!!很好的答案。现在完全有道理。谢谢你。我没有意识到 Demux 发出了两个这样的信号。它可以解释为什么当其中一根电线被切断时,它会将所有其他电线清除为黑色。然后当我使用Opcode
输入选择另一组函数时,它们又变红了!以上是关于Logisim ALU 红线 - 不了解原因以及如何修复的主要内容,如果未能解决你的问题,请参考以下文章