我有一盘旧的录音带,里面有我转换成 .wav 格式的数字数据,我正在尝试恢复原始数据。我用 minimodem 解调了 4K/2K FSK 调制。我最初以为可能是 NRZI,但由于对 NRZI 位填充算法的理解不够,我陷入了困境。捷径:有人知道通过 Linux 管道进行 NRZI 解码的 sox 类或 minimodem 类程序吗?
许多参考资料解释说,在 NRZI 数据流中,位是在 5 个连续的同极性位之后填充的。但确切地说,我还没有找到明确的解释。这是否意味着:
- 5 位之后发生了一些事情,或者
- 为了防止 6 位连续运行,是否会发生一些事情?
例如,如果原始数据是 ...11111001...,它会按原样传输吗?还是会发生位填充以发送数据 ...111110001...?如果位填充只会在 5 位之后引起转换,则填充是不必要的。但文档说“5 位之后”,如果原始数据具有恰好 5 位的固有运行,则会产生不必要的填充。
这是我已解调但未解码的特定比特流。它来自 Sharp EL5500III 计算器/计算机。如能提供任何帮助来解调它,我将不胜感激!
root@kali:~# minimodem --rx -R 44100 --mark 4000 --space 2000 --binary-raw 26 -f monoshort8008.wav 500 CARRIER 500 @ 4000.0 Hz 11111111111111111111111111 11111111111111111111111111 11111111111111111110111010 00001111100000100000111110 00001000001111100000100000 11111000001000001111100000 10000011111000001000001111 10000010000011111010101011 11111110100010001011111000 00100000110000010010111000 00101100110101110111111000 10101000110000010101111000 00100000110100010001011000 00100101110101110101011000 10101001110110010101111000 10101000110101110000011011 00100000110101110100011001 00101011110110010100011000 00101011110000010000011010 00100111110000010110011010 11101011110001010100111000 00101011110000010000011001 00100001110000010110011010 11101001110001010100111000 00101011110000010000011011 00100100110000010110011000 11100010110001010100011000 00101011110111110111111011 11101111110000110111011110 NOCARRIER ndata=29 confidence=150.653 ampl=0.126 bps=500.04 (0.0% fast)
注意开头附近的 5 位组。还要注意 13 个字节的周期,可见垂直列中 1 或 0 贯穿整个数据。
答案1
否,NRZI不是协议. 不,NRZI没有定义任何特定的位数来填充位。
NRZI 甚至不意味着您使用位填充;给出另一种同步时钟的方法,您不需要它。协议使用NRZI定义位填充长度。
USB 使用 NRZI,并定义在 6 位之后对第 7 位进行位填充。
SDLC 和 HDLC 使用 NRZI,并定义在 5 位之后对第 6 位进行位填充。
这就是为什么维基百科的段落内容如下:
... 而 HDLC 和 USB 使用位填充:它们在 5 或 6 个(分别)连续的 1 位之后插入一个额外的 0 位(强制转换)。
“5位”用于SDLC/HDLC,“6位”用于USB。
因此在 USB 中,序列0111110
和01111110
是允许的。序列011111110
是被禁止的(作为数据项),必须通过位填充将其更改为允许的序列。
在SDLC/HDLC中,序列0111110
是允许的。序列01111110
和011111110
是被禁止的,必须通过位填充将其更改为允许的序列。
这意味着在两种都使用 NRZI 的协议中,允许和禁止序列不同。因此NRZI 没有定义位填充的具体位数。
那么你需要来引用您使用的实际协议,因为如果不命名该协议,它可以是任意数量的位。
我解调了 4K/2K FSK 调制
表示它不是 USB。
我有一盘旧的数字数据录音带
也意味着它可能不是像 SDLC 或 HDLC 这样的 IBM 大型机协议,尽管它可能是像 X.25 这样的派生协议。
所以如果你想要帮助弄清楚那是什么,你需要包含更多信息。如果您不愿意提供这些信息,那么我们就无法帮助您。
如果您不知道它是什么协议,您仍然会有一些关于您从哪里获得录音带等的信息,这将有助于缩小范围。
如果您甚至没有这些,那么您仍然可以进行统计分析:查看不同长度的序列发生的频率,并从中得出结论或假设。