Verilog:将BCD(或二进制)转换为BCH

Verilog:将BCD(或二进制)转换为BCH,verilog,Verilog,我希望将BCD(或二进制)编码为二进制编码的十六进制,然后将其转换为7段显示代码,并串行发送到锁存移位寄存器以驱动显示器。它适用于16位微处理器,输出有符号的16位数字 我已经使用shift和add 3算法成功地编码并全面测试了二进制到BCD转换器。如果数字为负数,且符号标志设置为notate sign,则该数字将转换为正数。我在网上看到的大多数设计例子都是组合的。我采用了一种循序渐进的方法,大约需要35个时钟周期 我的问题是,有没有办法将我必须的BCD转换为BCH?或者,将二进制文件转换为BC

我希望将BCD(或二进制)编码为二进制编码的十六进制,然后将其转换为7段显示代码,并串行发送到锁存移位寄存器以驱动显示器。它适用于16位微处理器,输出有符号的16位数字

我已经使用shift和add 3算法成功地编码并全面测试了二进制到BCD转换器。如果数字为负数,且符号标志设置为notate sign,则该数字将转换为正数。我在网上看到的大多数设计例子都是组合的。我采用了一种循序渐进的方法,大约需要35个时钟周期

我的问题是,有没有办法将我必须的BCD转换为BCH?或者,将二进制文件转换为BCH可能更容易。无论哪种方法更可行。性能不是问题。是否有一个现有的算法可以这样做


感谢您的回复。

您只需使用查找表即可。让案例陈述的输入为BCD数字,输出为BCH数字。两者都保证4位宽,因此您可以一次解析一个BCD数字,每个数字将产生4位输出


从二进制转换为BCD比较困难,因为您需要使用双涉猎算法(正如您所发现的)。但是一旦进入BCD,你去BCH应该不会有问题。

我不知道你的意思。BCD是BCH的一个子集,因此在不查看前一个数字的情况下,没有可能的函数为我提供与BCD数相等的BCH,因为BCD将携带9以上的任何内容。你能详细说明一下这样一个查找表是如何工作的吗?如果我误解了你,我向你道歉。此外,我无法查找所有显式状态,因为有65536个可能的状态。我确定我在前面的评论@Russell中标记了您。抱歉,抱歉,我误解你了。你的意思是直接从二进制转换为十六进制,我相信这是可行的。我不认为通过这种方式从BCD到BCH查找是可能的。