【问题标题】:what is the difference between " CSD multiplication" "verilog multiplication"?“CSD 乘法”“verilog 乘法”有什么区别?
【发布时间】: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


【解决方案1】:

在评论中回答问题如何在 Signed 4 int 4 frac wordlength 中乘以 3.1*2.4。

3.1 => 0011_0001 (actually 3.0625) .1 is very difficult to represent in fixed point.
2.5 => 0010_1000

EDA Playground:

reg signed [15:0] mul;
initial begin
  mul = 8'sb0011_0001 * 8'sb0010_1000;
  $display("mul = %16b", mul);
end
//mul = 0000011110101000

结果分解:

     2^ 76543210 -1-2-3-4-5
  mul = 00000111_ 1 0 1 0 1 000
2^2 + 2^1 + 2^0 + 2^-1 + 2^-3 2^-5
  4 +   2 +   1 + 0.5 +0.125 + 0.03125
              =======
              7.65625

在普通计算器上:

3.0625 * 2.5 => 7.65625

从 3.1 到 3.0625 的舍入导致此错误3.1*2.5 => 7.75,量化误差为 0.09375。

【讨论】:

  • 我有 2 个问题 1。你能告诉我如何制作 3.1 => 0011_0001(实际上是 3.0625).1 很难用定点表示。 2.5 => 0010_1000 ?
  • 2.你用这种方法来计算输入 [9:0] a, wire [19:0] a_frac = { a, 10'b0};记住 Verilog 认为这是一个整数,但我们必须以不同的方式解释这个数字。线 [19:0] y = (a_frac>>1) - (a_frac>>5) - (a_frac>>7) + (a_frac>>10);我的问题是哪个更好?
  • 您是在问如何从 3.1 升级到 0011_0001?您对0011_0001 代表 3.0625 这一事实感到满意吗?
  • @bural 如果两者在功能上是等效的,你如何更好地定义?你有没有比较两者的合成结果,我建议你这样做。
  • 先生,是的,我在问如何从 3.1 到 0011_0001。你已经在里面申请 CSD 了吗?如果你是,我的问题是,我该如何治疗 T?
猜你喜欢
  • 2021-08-31
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 1970-01-01
相关资源
最近更新 更多