Jas*_*n S 9 algorithm error-correction
我正在寻找一种在微控制器上编码相对容易/快速的前向纠错码; 解码将在PC上完成,因此可能更复杂.
我不太了解纠错码,除了简单的汉明码,它们似乎都比我能处理的更复杂.
有什么建议?
编辑:我要简短地接受卡尔的回答......我想有两件事我没有提到:
(1)我并不严格需要纠错,这对我来说是有利的,我认为可能会有一些纠错算法,这对于最小的成本来说是一个合理的好处.汉明码可能是合适的,甚至看起来它们对我的编码应用来说可能太昂贵了.
(2)比纠错本身更大的优点是能够正确地重新同步到出错的数据包.(如果我长时间不同步,这很糟糕)所以我认为如果我保持简单,那就更好了.
纠错码的问题在于,它们可以让您从一位或两位错误中恢复,但通常无法检测或修补重大损坏。
因此,我的建议是将数据流分成块(1 KB、10 KB,...最多 1 MB)并计算每个块的校验和。然后,当数据到达另一个CPU时,您可以确定它是否正确,如果不正确,则请求重传该块。因此,接收计算机要么确认并等待下一个块,要么否定确认并期望重新发送。
是的,我们在这里实现了 TCP/IP 的一个子集。但该协议如此成功是有原因的:它有效!
对于校验和,我建议使用 CRC-32。它需要一个(我认为)256 个 32 位数字的表和一些相当简单的计算(主要是数组索引、OR 和 XOR),因此对于“哑”CPU 来说计算相当容易。
| 归档时间: |
|
| 查看次数: |
1124 次 |
| 最近记录: |