Floating point verilog中的浮点
我在verilog中有一个浮点数,我想把它向右移动,使之成为IEEE标准,但我不知道点在哪里,以了解它是否是标准的(停止移动) 我能做什么 第二个问题: 如果我像这样移动浮点:10001.11到右边,verilog会发生什么?0100.111还是0100.11 最新的SystemVerilog规范规定: 5.7.2实文字常量 实数常量应按照IEEE标准754的规定表示,IEEE标准为 双精度浮点数 6.12实时、短实时和实时数据类型Floating point verilog中的浮点,floating-point,verilog,Floating Point,Verilog,我在verilog中有一个浮点数,我想把它向右移动,使之成为IEEE标准,但我不知道点在哪里,以了解它是否是标准的(停止移动) 我能做什么 第二个问题: 如果我像这样移动浮点:10001.11到右边,verilog会发生什么?0100.111还是0100.11 最新的SystemVerilog规范规定: 5.7.2实文字常量 实数常量应按照IEEE标准754的规定表示,IEEE标准为 双精度浮点数 6.12实时、短实时和实时数据类型 real*数据类型与C double相同。shortreal
real*数据类型与C double相同。shortreal数据类型与C浮点相同。实时声明应与真实声明同义,并且可以互换使用。这三种类型的变量统称为实变量 *实数和短实数类型如IEEE标准754所述
要确定的一件事是,你是在处理一个数字,还是一个数字。实际上,它们的存储方式非常不同,定点数字更容易处理
- 固定点号的存储方式与任何其他整数相同。不同之处在于,在解释它们时,在位位置添加一个小数点。例如,您可以存储一个16 but数字,但最后4位位于小数点之后。这有时被称为12.4,请确保您对代码进行了注释,以明确这一点。您还需要跟踪数字是纯正值还是2的补码值
- 浮点使用尾数和指数存储。它们可以代表更大范围的值,但操作起来更复杂
请注意,如果您的数字是带符号的2的补码,则MSB将从移位前数字的MSB复制(这将保持移位前后的符号)。您将讲述定点操作。移位操作不适用于浮点数 Verilog有float类型-real,但该类型不用于合成,不支持opation>>(shift) 对于浮点数,所有语言中都未定义移位
但若你们想将数字相乘,你们必须使用指数和尾数部分,使之成为IEEE标准。您需要遵循IEEE-754格式来表示浮点数。标准中有不同类型的浮点表示法
您可以使用FP16和FP32表示法执行任何类型的操作,如加法、减法、,乘法等。为什么你需要移位以使其成为IEEE标准这是IEEE标准754当你尝试
>
移位时发生了什么我得到:`实表达式的非法运算符:>>。`为什么不直接乘以0.5。我想使其成为1.000111以进行规范化(说使其成为标准是我的错),tnxi将乘以0.5,但会发生什么?0100.111 ? @Morgan您不能在reals上使用>
操作符,因此不会发生任何事情。也只是为了确保您知道real是不可合成的。好的,我将使用*0.5,但会发生什么?0100.11还是0100.111?@morgan