好的,大家好,我在 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
..从那里我会是完美的......但遗憾的是我遇到了很多麻烦......使用不同的数据类型(签名无符号std_logic_vectors)和除法。所以我只需要帮助解决我思维过程中的任何缺陷和我应该做的事情做这个的时候要注意..
我实际上已经完成了我的代码并认为我保存了这个..但我没有,而且我仍然相信这个解决方案可以工作我会用我认为是我的旧代码来回复......只要我能记住这一切..
这是我的新代码的另一个问题..(只是为了表明我确实做了一些事情..) 在 VHDL 中将 8 位二进制数转换为 BCD