问题标签 [alu]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vhdl - 如何设计一个带有单独进位和借位标志的简单加法器?
我正在实现一个简单的加法器。但是,我需要一些独特的转折。
我正在实现的是跨代码段(CS)寄存器和指令指针(IP)寄存器的“翻转”功能。因此,当您进行 +20 的相对跳跃,并且 IP 为 254 时,IP 最终将滚动到 18,而 CS 最终将增加 1。
这部分容易,难的部分是相反的方向。检测借位时,例如跳转为 -20 且 IP 为 0,它需要将 CS 减 1 并使 IP 回滚到 236。
到目前为止我的代码是
但我不知道如何检测借用。有没有一种干净的方法可以做到这一点?
更新
我的新代码是这样的:
有符号数的加法按计划进行,并且 Temp 现在始终是正确的结果,但 SegmentOut 始终等于 SegmentIn。我不明白为什么,因为对于SegmentIn + 1
,我实际上是手动计算了 Addend=0x04、DataIn=0xFE、SegmentIn=0x00 和 CarryEnable=1 的输入,并且 if 语句等于 out (1 and ((not 0) and 1 and 1))='1'
,但是 SegmentOut 永远不会改变。有没有人看到这是如何实现的问题?
cpu - 如何在硬件层面实施转变?
当要移位的数字未知时,如何在硬件级别实现位移?
我无法想象每个可以移位的数字都有一个单独的电路(这将是 64 位机器上的 64 个移位电路),我也无法想象它会是一个移位循环(这将在 64 位机器上最多需要 64 个移位周期)。这是两者之间的某种妥协还是有一些巧妙的技巧?
x86 - x86 溢出标志的简明表达式?
我需要一种简洁的方式将 x86 溢出标志表示为两个操作数的函数。我知道两个操作数具有相同符号但结果具有不同符号时的核心集。
例如,
OF 可以合理地表示为 SRC 和 DEST 位的“单线”布尔函数吗?
microcontroller - Z80 标志 - 如何生成?
我正在设计一个Z80兼容项目。我负责设计标志寄存器。
我最初认为标志是直接从 ALU 生成的,具体取决于 ALU 操作的输入和类型。
但是在查看指令和标志结果之后,标志似乎并不总是与这个逻辑一致。
因此,我假设我还必须向 ALU 提供操作码,以便每次都生成正确的标志。但这似乎会使设计过于复杂。在进行这个巨大的设计步骤之前,我想在互联网上进行检查。
我对么?或者只是真的很困惑,它和我最初想的一样简单?
mips - 为单周期 MIPS 设计 ALU 控制块
希望这不是 Stack Overflow 的主题。
我正在学习 MIPS,但我一直卡在这一步。这是 ALU 控制块的真值表。
现在这是我第一次遇到如此复杂的真值表,其输入中包含无关条件。如果我将不关心扩展到 1 和 0(并保持其他所有内容相同),那么由于每个 X 的各种排列,表格将变得巨大。
为了简化电路或在计算机中计算,有没有其他简单的方法来简化这些表格?
logic - 算术逻辑单元实际上是如何工作的?
换言之,能量与金属结合后,如何进行逻辑运算?在我所做的研究中,我总是假设“魔法”是如何发生的,但通常缺乏对物理设备如何“理解”和执行逻辑性质的过程的解释。我认为首先将非常简单的设备理解为计算器是一种很好的方法,但即使如此,我也无法理解(并且感到非常惊讶)如何以能够执行“思考”活动的方式设计电路。谢谢!
vhdl - 8 bit ALU for microprocessor
I have a project where i am supposed to develop a RISC microprocessor . this involves creating an ALU in behavioral model . however there seems to be problems/errors/warnings while simulating the design . most of the operations work properly except following :
COMPARING THE 2 INPUTS : when numbers are equal , zero flag is not getting set . ( unequal numbers are working properly ) .
Warning: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, the result will be 'X'(es).
( this appears every 1 ps , presumably due to the wait statement in the process )
I Wish to work with std_logic_vector, even though i read that they are very messy .
also, there is a problem when i try to use comparing commands ( which update the flags but dont store the difference in the output register ) . How are if commands executed in VHDL ?? are they executed at the same time ?? or line by line ??
CODE BELOW :
testbench code
testing - ALU verilog 测试台未正确初始化
我正在尝试为我的 ALU 编写测试台,但是。我不确定它的编写方式是否使它起作用。例如,我应该使用dut
oruut
吗?我是否正确初始化了我的输入?输出波是直的(不会随着每个位 X 和一个 0 变化)。
这是模块
initialization - VHDL:信号初始化
我是 VHDL 的初学者,我在决定是否应该初始化信号时遇到问题......
这是一个例子:
我应该在这里初始化 Q 吗?=> Q <= "0000"; ?
非常感谢,
integer - 在 ALU 中区分有符号和无符号整数的最佳方法?
我正在开发自己的虚拟 4 位 ALU。我想创建计算器(+、-、*、/、%,只有整数,可能更多位)。我的目标是彻底理解它,而不是构建一个高效的设备。
目前我已经实现了4个功能:
- 添加。
- 添加一个。
- 正转负。
- 减法。
在所有函数中,结果的第 5 位被忽略。我想告诉 ALU 是否应该签署结果。最好的方法是什么?
我的想法:
- 使用另外 3 个函数(结果是第一个、第二个和第三个无符号整数)。
- 再使用一个输入字节(判断是否忽略第 5 位)。
其中哪一个更好?你知道更好的方法吗?