已知二进制信息码为 1000011000001,试画出出其单极性不归零、单极性归零、双极性不归零、双极性归零、HDB3码的码型图。
时间: 2024-10-08 18:27:09 浏览: 126
为了绘制这些不同编码方式的码型图,我们首先需要了解每种编码规则:
1. 单极性不归零(NRZ):每一位的电平变化表示该位的不同值。给定的二进制序列1000011000001就是NRZ码的基础。
2. 单极性归零(RZ):每个0位后紧跟一个1位,形成“01”对,即使数据流中没有实际的1位。
3. 双极性不归零(NRZI):类似于NRZ,但0和1之间的跳变方向相反,即0变为+1,1变为-1。
4. 双极性归零(RZI):与RZ类似,但是每个非0位(1或-1)后面都有一个反向跳变(-1或+1),使得0变成+1-1,1变成-1+1。
5. HDB3(三次样条编码):这是一种防止直流偏移和抑制噪声的编码,每三位添加一位校验位。前两位是原始信号,第三位是前两个奇偶性的反向。
接下来我会为你提供简单的Python代码来演示这几种编码的转换,然后你可以根据输出的比特串绘制相应的码型图。由于在这里无法直接生成图形,我将只提供编码后的二进制字符串,你可以用它们去创建自己的图表。
```python
def encode_binary(binary, encoding):
# 将输入的二进制字符串转换为整数
binary_int = int(binary, 2)
if encoding == 'NRZ':
return format(binary_int, '0{}b'.format(len(binary)))
elif encoding == 'RZ':
result = []
for bit in binary:
result.append(bit)
if bit == '0':
result.append('1')
return ''.join(result)
elif encoding == 'NRZI':
return ''.join(['1' if i < j else '0' for i, j in zip(binary, binary[1:] + ['1'])])
elif encoding == 'RZI':
result = []
for bit in binary:
result.append(bit)
if bit == '0':
result.append('-' if result[-1] == '1' else '+')
elif bit == '1':
result.append('+')
if result[-1] == '-':
result.pop()
return ''.join(result)
elif encoding == 'HDB3':
hdb3 = [binary[i:i+3] + ('1' if sum(int(b) for b in binary[i:i+3]) % 2 else '0') for i in range(0, len(binary), 3)]
return ''.join(hdb3)
binary_input = '1000011000001'
encodings = ['NRZ', 'RZ', 'NRZI', 'RZI', 'HDB3']
encoded_strings = {encoding: encode_binary(binary_input, encoding) for encoding in encodings}
# 打印编码后的结果
for encoding, encoded in encoded_strings.items():
print(f"{encoding}: {encoded}")
```
现在,你可以使用这些编码后的二进制字符串,结合相应的码型图工具(如波形表或在线模拟器)来绘制码型图。
阅读全文