Logisim ALU 红线 - 不了解原因以及如何修复
Logisim ALU Red Lines - Not Understanding Causes and How to Fix
我正在开展一个项目,我需要为 MIPS 的特定指令子集创建自己的 CPU。我承认在这个项目之前我认为我了解单周期数据路径。所以请原谅我的困惑。
我的问题出在我的 ALU 上。 ALU Opcode
是一个 4 位数字,SubOp
是一个单位值。当我尝试测试我的 ALU 时,我所有的输出线都是红色的。我不确定为什么。如果我删除 NOR
门的输出,所有其他行都会变黑。然后,当我将 Opcode
(图像左下方)从 AND
门 (0x00) 更改为另一个值时,输出线再次变为红色。
虽然这个 ALU 还没有完成,但我想请教一些关于为什么会这样的信息?输入为 8 位长。我已经把它分解成一个简单的 AND
门,接受 8 位输入,我仍然收到红线。无论选择 Opcode
,ALUresult
(中下)都会产生错误。
我错过了什么?
我知道有一种更简单的方法来布置它。但我正在尝试将 ALU 'Opcode' 分解成我更容易理解的东西,直到测试完成。一旦我了解了这个红线问题,我就计划着手解决这个问题。
我不确定,但我认为使用解复用器不起作用:
通常,多路分解器的 "non-selected" 通道的输出具有恒定值(例如 0 或 2^N-1)而不是高阻抗。
即使它是高阻态:如果某些门(例如与门)的输入是高阻态,则输出不一定是高阻态。这取决于使用的工具。
假设您要进行加法运算,将数字 4 和 3 相加。假设解复用器的非 selected 通道输出 0。
在这种情况下会发生以下情况:
将输出传递给加法器和减法器的两个解复用器之一将 return 4 和 0,另一个将 return 3 和 0。
加法器计算:4+3=7,减法器计算0-0=0。
两个 (!!!) 值现在都将馈送到 "ALUresult" 电线!!!
您通常做的是进行所有计算(将寄存器传递给所有操作)。所以你总是有所有的结果(或、与、和、差、积、商……)。
然后你使用多路复用器(不是多路分解器)来select你感兴趣的结果。
我正在开展一个项目,我需要为 MIPS 的特定指令子集创建自己的 CPU。我承认在这个项目之前我认为我了解单周期数据路径。所以请原谅我的困惑。
我的问题出在我的 ALU 上。 ALU Opcode
是一个 4 位数字,SubOp
是一个单位值。当我尝试测试我的 ALU 时,我所有的输出线都是红色的。我不确定为什么。如果我删除 NOR
门的输出,所有其他行都会变黑。然后,当我将 Opcode
(图像左下方)从 AND
门 (0x00) 更改为另一个值时,输出线再次变为红色。
虽然这个 ALU 还没有完成,但我想请教一些关于为什么会这样的信息?输入为 8 位长。我已经把它分解成一个简单的 AND
门,接受 8 位输入,我仍然收到红线。无论选择 Opcode
,ALUresult
(中下)都会产生错误。
我错过了什么?
我知道有一种更简单的方法来布置它。但我正在尝试将 ALU 'Opcode' 分解成我更容易理解的东西,直到测试完成。一旦我了解了这个红线问题,我就计划着手解决这个问题。
我不确定,但我认为使用解复用器不起作用:
通常,多路分解器的 "non-selected" 通道的输出具有恒定值(例如 0 或 2^N-1)而不是高阻抗。
即使它是高阻态:如果某些门(例如与门)的输入是高阻态,则输出不一定是高阻态。这取决于使用的工具。
假设您要进行加法运算,将数字 4 和 3 相加。假设解复用器的非 selected 通道输出 0。
在这种情况下会发生以下情况:
将输出传递给加法器和减法器的两个解复用器之一将 return 4 和 0,另一个将 return 3 和 0。
加法器计算:4+3=7,减法器计算0-0=0。
两个 (!!!) 值现在都将馈送到 "ALUresult" 电线!!!
您通常做的是进行所有计算(将寄存器传递给所有操作)。所以你总是有所有的结果(或、与、和、差、积、商……)。
然后你使用多路复用器(不是多路分解器)来select你感兴趣的结果。