问题标签 [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.

0 投票
1 回答
1107 浏览

logic - 我有几个关于 ALU 的问题......

所以,在过去的几个月里,我一直在尝试了解计算机,并真正详细了解它们是如何工作的。我最近在学习减法器,我想知道..

首先,据我了解,减法器使用二进制的补码来获得结果。但是,为什么要减去呢?例如,2 的补码 5 (0101) 是 1011。但是,这也是正的 11。即使这个数字被否定了,是什么让减法器把它当作一个负数而不是另一个正数呢?如果问题是 8 - 5,是什么阻止了它做 8 +11?是什么让它从无符号位中识别出有符号位?我听说程序运行已决定,但问题是什么使程序能够决定是加还是减,以及如何将其解释给 CPU 和 AlU。

另外,我了解到 AlU 使用一种在加法和减法之间切换的电路。这个电路是如何工作的?是什么让它决定是加还是减?

最后,这个电路如何从加法切换到减法?我看到的唯一减法器是一个没有门的加法器?电路在可以改变功能的方面有何不同?

0 投票
2 回答
18802 浏览

vhdl - VHDL 中的 32 位 ALU 执行

我应该用 VHDL 编写一个简单的 32 位 Alu。一切都很好,除了两件事。ALU 应该有一个执行和溢出标志,我不知道如何实现它。

首先是一个一般性问题。电路图显示,对于减法,ALU 将减数取反并加“1”以在 2 秒补码中创建输入值的负等效值。这是否意味着我应该为输入使用无符号值?还是我应该坚持使用 std_logic_vector?

由于进位位是不“适合”结果字的位,因此我尝试将 Summands 零扩展,创建一个临时的 33 位 Sum 信号,然后简单地将结果分为进位和实际总和。不幸的是,我在模拟时得到的只是“UU...U”作为总和的输出。(我按照这里的描述做了:https ://en.wikibooks.org/wiki/VHDL_for_FPGA_Design/4-Bit_ALU )

对于溢出标志:由于 ALU 的描述是行为性的,我无法访问任何进位,这意味着我无法通过简单地对最后两个进位进行异或来确定是否发生溢出(假设值在 2 秒内-补充,但我在这一点上不太确定,因为我的第一个问题显示......)。是否有另一种方法来识别溢出?就像简单地将在互联网上找到的“溢出发生时...”规则变成 if 语句?

到目前为止,这是我的代码。这个版本在加/减时给了我“UUU...U”的输出。

对代码的任何评论将不胜感激,因为我对 VHDL 完全陌生(我们讨论了半场讲座......),这是我通过谷歌搜索和玩耍发现的。

这是给定的电路图:

诊断

//编辑:

另一件事。我的零标志在“000”之后无法正常工作。除了第一种情况,知道为什么它的输出很好吗?

0 投票
1 回答
1476 浏览

verilog - x86 ALU 中的进位/辅助标志函数

我正在尝试在 Verilog 中创建一个 8086 处理器,并且我对大多数体系结构的基本理解要好于平均水平(一旦我通过这一点就可以愉快地相处),但我似乎无法包装我对进位和辅助标志在 ALU 中的作用感到头疼。

我知道 CF 是在加法或减法(在这种情况下称为借位)时触发的,这会导致结果大于 ALU 的位宽。

但是,我将如何编写用于加法和减法的 Verilog 代码,以允许我写入 FLAGS[0] (CF) 位,然后重新访问它以继续操作?谁能给我可以解构的例子?

此外,这更像是一个 n00b 问题,但是如果 SI 和 DI 寄存器的宽度仅为 16 位,那么带进位运算的 ALU 怎么能支持创建 17 位数字呢?多余的部分去哪里了,或者用它做了什么?如果乘法产生相同的位溢出会发生什么?

对于新手级别的问题,我们深表歉意。我几乎觉得我会因为一些明显的无知或对此缺乏理解而大喊大叫。非常感谢任何可以提供帮助并提供代码行以帮助我理解这一点的人。

0 投票
2 回答
7086 浏览

vhdl - 测试台多架构

抱歉,我是这个网站的新手,但我已经连续 2 天在寻找答案。

我是 vhdl 的新手,一个作业要求制作一个简单的 16 位 ALU。此 ALU 需要 2 个架构:行为设计和 RTL 设计。就我而言,我有完整的代码。

我想不通的是如何编写一个测试平台,让我可以在 modelsim 中为两种架构运行仿真。我有两个文件(测试台和 ALU)都编译得很好,但是我在模拟中得到错误,说“未初始化的输入端口没有驱动程序”

我不确定要为这个问题显示什么代码,所以我只会向您展示我的 TB 的开头。

我基本上不顾一切地按时完成这项工作。

谢谢。

0 投票
1 回答
457 浏览

compiler-construction - VHDL ALU综合期间的进位输出问题

我正在尝试用 VHDL 构建和合成一个 ALU,但我一合成就遇到了问题。我希望我的 ALU 有一个操作码,用于添加我的两个 N 位输入和一个进位,该进位可以由输入或之前计算的总和设置。我感兴趣的代码部分如下:

我不确定代码是否可以在这里工作,因为我没有定义信号类型,但基本上它归结为我上面写的。这样做的问题是,当我使用适当的测试平台模拟我的 VHDL 时,它可以正常工作,但是当我合成此代码并使用相同的测试平台模拟合成代码时,它无法正常工作,因为不知何故第一个过程是即使 a、b 或 op 没有改变,也会再次重复。因此,当总和的结果有进位时,使用这个新的进位再次进行计算,即使 a、b 或 op 没有改变,结果也会加一!

后来我发现这篇文章说编译器“忽略”了敏感度列表,他认为他比你更了解程序并制作自己的敏感度列表。如果这是真的,我将编译器添加到第一个进程的敏感度列表中,以便在 op =“011”时在每个 clk 周期运行计算。

现在我的问题来了:我能做些什么来解决这个问题,以便计算运行一次,然后改变进位?

亲切的问候

0 投票
1 回答
86 浏览

cuda - 使用 CUDA/OpenCL 将指令/算法分配给特定的 ALU?

我对 GPU 编程很陌生。我阅读了一些解释基本概念的材料。

但是,我想知道是否可以将一组指令或整个算法/二进制文件分配给特定的 ALU,以便我可以确定这些指令仅由该 ALU 执行(因此,绕过自动负责并行化)?

我必须对 GPU 上的各个 ALU 进行“基准测试”,了解它们之间的任何潜在计算延迟。因此,我想将一组(相似的)指令分配给几个特定的​​ ALU,测量执行这组指令所需的时间,并比较结果是否有任何差异。

一般来说,我想检查 GPU 是否有某些竞争条件来源。我首先想到的是不同 ALU 的执行速度可能存在微小的差异。也许你们知道其他潜在的竞争条件来源。

但是,由于我的目标与 GPU 的典型使用(并行化等)截然相反,因此很难理解如何使用通用工具在低级别访问单个 ALU。

此致,

0 投票
3 回答
651 浏览

if-statement - 在 VHDL 中生成 For/IF 的 nbit Bitslice ALU

我正在用 GENERATE 设计一个 n 位 bitslice ALU,我写了这段代码:

它编译得很好,但它不起作用,尽管在生成块中有一堆警告说 IF 语句必须是静态的。我想知道我在哪里做错了。

0 投票
2 回答
4334 浏览

compiler-errors - Generate Keyword in VHDL

I am trying to create a carry-look-ahead adder/subtractor unit as part of an ALU using VHDL. unlike a conventional adder, this unit must recognize both 32-bit unpacked data and 16-bit packed data and treat them accordingly. So, if I choose to add two 32-bit unpacked quantities, it should give me a 32-bit unpacked result. However, if I want to add four 16-bit packed quantities, it should give me two 16-bit packed results.

ie.

32_bit_A + 32_bit_B = 32_bit_A+B

16_bit_A + 16_bit_B, 16_bit_C + 16_bit_D = 16_bit_A+B, 16_bit_C+D

I've tried to implement such a thing using a MODE bit which will determine whether or not I'm using packed or unpacked data, however, my VHDL compiler keeps telling me that it it is expecting the generate keyword, among other errors that I am rather confused about. I should note that this design compiles and works perfectly for unpacked data, that is, without the conditional statements and cla4 and cla5. I would appreciate some explanation as to what I'm doing wrong. Thanks

Errors:

0 投票
0 回答
96 浏览

processor - 如果我们需要在 32 位系统中计算 2 的幂(比如 2 的 32 次幂),ALU 实际是如何做的,这可能吗?

如果我们需要在 32 位系统中计算 2 (2^32) 的幂,ALU 实际上是如何做的,这可能吗?简单来说,假设我必须在给定的基础上计算能力,那么如果计算的结果大于计算机一次可以处理的位数(称为字),我很困惑,因为我属于高仅级别编程,并且很想知道它。

0 投票
0 回答
60 浏览

memory - 是否可以将计算值保存到文件系统而不将其写入内存?

假设我有两个整数变量 a 和 b。我想总结 a 和 b 并将计算结果写入标准输出或文件。是否可以在不将结果写入现代 CPU 架构中的内存的情况下做到这一点?