【发布时间】:2015-01-21 02:10:06
【问题描述】:
大家好,我在 VHDL 中尝试做的是取一个 8 位二进制值并将其表示为 BCD,但有一个问题,因为这个值必须是最大输入 9 的一小部分。
1- 将输入转换为整数,例如 1000 0000 -> 128
2- 整数除以 255 然后乘以 90(90 这样我就得到一个位,小数点后的第一个数字都在小数点后)
例如 128/255*90 = 45.17(假设为 signal_in)
3.除以20提取45的两位数,并将它们存储为单独的整数 例如我会使用类似的东西:
LSB_int = signal_in mod 10
然后我将信号除以 10,因此将其更改为 4.517,然后让它等于 MSB_int..(这将截断小数并正确存储 4)
4.将LSB_int和MSB_int都转换为4位BCD
..从那里我会是完美的......但遗憾的是我遇到了很多麻烦......使用不同的数据类型(签名 unsigend std_logic_vectors)和除法。所以我只需要帮助解决我思维过程中的任何缺陷和这样做时我应该注意的事情..
我实际上已经完成了我的代码并认为我保存了这个..但我没有而且我仍然相信这个解决方案可以工作我会用我认为是我的旧代码的内容来回复......我会尽快记住这一切..
这是我的新代码的另一个问题..(只是为了表明我确实做了一些事情..) Convert 8bit binary number to BCD in VHDL
【问题讨论】:
-
注意一个8位的值只需要3个BCD数字来表示(最大值为255)。你有一个具体的问题吗?也许您可以展示您的代码并询问特定的语法或语义错误?结果不正确?
标签: binary type-conversion vhdl bcd adc