【发布时间】:2015-12-21 01:21:29
【问题描述】:
我在这里看到了 2 个帖子 Verilog - Floating points multiplication
和 how can I apply fixed fraction to the integer
如您所知,这些都是关于 Verilog 分数乘法的。 但我可以混淆莫干对此的回答。
reg [7:0] a = 0010_1000; reg [7:0] b = 0010_1000;
他怎么能得到这个二进制文件?这是 CSD 条款吗?
更新
我知道整数 * CSD 术语。它将像这样转换(整数>>2)+(整数>> 5).. 但我想知道 CSD 术语 * CSD 术语。
这个怎么样?
wire [11:0] y;
wire [11:0] x;
wire [11:0] z;
y= {3.1, 10'b0}
x= {2.5, 10'b0}
z= y*x
z = z >> 10;
现在我认为这比你的方式有点贵。 你可以只使用一个乘法。 但是我的方法是需要右移。
【问题讨论】:
-
Looking at this answer 问题涉及乘以 2.5 * 2.5。答案描述了如何解释由 4 个整数位和 4 个小数位组成的 8 位数字。使用
_作为二进制点标记0010_1000表示2.5。 CSD 将包含用 1 BAR (T) 表示的否定项,这只是一个具有 4 个小数位的二进制字。如果您能详细说明您卡住的部分,我可以尝试更好地解释它。 -
@Morgan 我的卡点是,如果我想乘法计算像 2.5 x 2.5 这样的分数,那么我如何在 verilog 中使用 CSD 项?例如 2.5 是 0010_0111,这可以转换 CSD 0010_100T。正如您已经知道的那样,T 只是表达式,它不会在 verilog 中使用。所以我的问题是我们如何将 CSD 术语编号应用于 Verilog 乘法? CSD 期限 x CSD 期限。
-
CSD 术语是什么意思,完整的 CSD 编号 (
0010_100T) 还是只是其中的一部分(T、-2^4)? -
@Morgan 我的意思是完整的数字 T。
-
你如何在verilog中代表
0010_100T。我不知道为什么您最终会使用两种 CSD 格式进行乘法运算。因为数字的 CSD 转换旨在简化乘法运算。
标签: verilog