【发布时间】:2016-03-18 13:39:56
【问题描述】:
我已将一些十进制值转换为定点,并希望进行一些乘法,但是其中一些值是负数,谁能告诉我一个简单的方法来进行乘法我尝试过但没有成功:
pix_r2m<=($signed({1'b0,pix_rld})*8'b11101101;// the binary is:-0.148.
这是以同步方式发生的,pix_r2m、pix_rld 定义为:
reg [16:0]pix_r2m;
reg [7:0]pix_rld;
【问题讨论】:
-
@morgan 你能把我的verilog整体看一下吗?还有很多代码
-
如果代码处于编译状态,则可以将其发布到Code Review SE。否则,这里是单独解决每个问题的最佳地点。
-
@Morgan 我如何将 -0.148 表示为 8 位并以十进制表示应该给我 -38 我如何将其表示为十进制而不是二进制?
-
您实际上并没有说明您的数据是什么格式。假设 8 位小数。 0.148 * 2^8 是 38(8 个小数位)。在命令行上将 8 位十进制转换为 ruby (irb) 中的二进制我可以这样做
38.to_s(2)=> "100110" 如果想要对它进行负数补码,这是正数版本。 -
Verilog 不关心十进制、二进制或十六进制,因为它们都只表示二进制位模式。我在问,以便我可以检查小数点/二进制点是您放置的位置。但在这种情况下,我认为问题在于 verilog 恢复为无符号算术。但是您没有提供输入刺激和预期输出以及您实际看到的错误输出,因此很难判断我是否解决了正确的问题。
标签: math verilog fixed-point