首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实数计算,Verilog HDL

实数计算,Verilog HDL
EN

Stack Overflow用户
提问于 2012-03-17 07:58:42
回答 1查看 9.5K关注 0票数 2

我注意到Verilog将实数结果舍入为整数结果。例如,当我查看模拟器时,它将17/2的结果显示为9。我该怎么办?有没有什么办法定义像:output real reg [11:0] output_value这样的东西?或者这是必须由模拟器设置完成的事情?

仅模拟(无合成)。示例:

X定义为带符号的输入,output_value定义为输出寄存器。

代码语言:javascript
复制
output_value = ((x >>> 1) + x) + 5; 

如果为x=+1,则输出值必须为:13/2=6.5

然而,当我模拟时,我看到的是output_value = 6

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-17 19:30:45

代码会有所帮助,但我怀疑你根本没有区分reals。17和2是整数,所以像这样的简单语句将进行整数除法。

代码语言:javascript
复制
17   / 2   = 8 (not 9, always rounds towards 0)
17.0 / 2.0 = 8.5

在第二种情况下

代码语言:javascript
复制
output_value = ((x >>> 1) + x) + 5

如果x为1,则x >>> 1为0,而不是0.5,因为您刚刚离开了单词的底部。

代码语言:javascript
复制
output_value = ((1 >>> 1) + 1) + 5 = 0 + 1 + 5 = 6

这里的verilog没有什么特别之处。这对于大多数语言都是正确的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9745989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档