这一篇在干嘛?

FPGA 在通信里的两大应用:加密(编码理论、分组码、卷积码)与调制解调(相干/非相干解调的设计实现)。 原书代码为 VHDL,本篇所有代码已改写为 Verilog。

  • 第7章
  • 通信系统
  • 7.1 差错控制和加密技术
    1. 使用海明码纠错
    1. 纠错码综述
    1. 编码边界
    1. 编码器
    1. 译码器
    1. 维特比极大似然序列译码器
    1. QLI 译码器的纠错性能
    1. 伴随式代数译码器
    1. 逐次逼近译码器的纠错能力
    1. 最终的比较
    1. 线性反馈移位寄存器算法
  • 例7.1 长度为6的LFSR
  • 例7.2 三同步LFSR
    1. 组合 LFSR
    1. 基于 DES 的算法
    1. 加密性能比较
    1. 加密安全的注意事项
  • 7.2 调制和解调
  • 例7.3 采用CORDIC的通用调制器
  • 例7.4 零IF接收器
  • 窄带接收器的简化
    1. 线性锁相环
    1. 数字锁相环
    1. 边环(Costas loop)
  • 7.3 练习

自测一下

第7章 通信系统

FPGA 有一个 PDSP(可编程数字信号处理器)难以匹敌的天然优势:它可以按”位”来构造电路。通信系统里的差错控制和加密算法,恰恰大量使用逐位运算和移位寄存器,这类结构在 FPGA 上实现得又快又省。一个直观的例子:如果用一个 位的 LFSR 做 步多步数字发生器,FPGA 相比 PDSP 或微处理器至少有 倍的速度优势。本章先介绍差错控制与加密的两个基本构件——有限域运算和线性反馈移位寄存器(LFSR),再用一个 FPGA 接收器设计说明低系统成本、高吞吐量和快速原型设计的可行性。

7.1 差错控制和加密技术

是什么:纠错编码能在受频带限制的信道上比专用调制模式更好地利用信道容量(图 7-1 给出了各种调制模式的性能对比)。所以寻呼机、移动电话、卫星传输等现代通信系统都用算法来纠正传输错误;此外大多数系统还会叠加加密算法,既防止消息被窃听,也防止消息被篡改。

图 7-1 调制模式的性能。实线表示相干解调,虚线表示非相干解调

放在哪里:如图 7-2 所示,编码器(纠错或加密)位于数据源和调制器之间;接收端译码器位于解调器和数据目的地之间。编码器和译码器通常合并成一个电路,叫 CODEC(coder/decoder,编/译码器)。

图 7-2 典型的通信系统配置

为什么用 FPGA:典型的纠错和加密算法都依赖有限域运算,可以用逐位运算或 LFSR 高效实现,这正对 FPGA 的胃口;而 PDSP 是面向乘加优化的,做这类位级运算并不划算。有些 CODEC 需要大容量查找表,选算法时就要注意哪些才适合 FPGA。本节给出的算法已实际用于低频寻呼系统和无线电控制监视器的纠错模式。

7.1.1 编码理论的基本概念

1. 从重复码到海明码

最笨但最直白的办法——重复码:把消息原样发几遍。例如重复 5 次:

左边是第 个信息位,右边是 位码字。两个码字之间的最短距离叫海明距离(Hamming Distance),重复码的 ,记作 ,最多能纠正 个随机错误(5 位里错 2 位以内都能投票投回来)。但信道效率只有 1/5,太浪费。如果信道是双向的,用奇偶校验加自动重复请求(ARQ)更划算——PC 内存里的奇偶校验就是这个思路。

聪明一点——海明码:把几个奇偶校验位组合起来,就能不但发现错误,还能定位错误。设校验位用模 2 运算(即 XOR)计算:

译码端把”新算出的校验”与”收到的校验”逐个 XOR,得到的 称为伴随式(syndrome)。巧妙之处在于校验的选择:伴随式模式正好等于二进制表示的差错位位置,于是用一个 译码器(信号分离器)就能直接指出错在哪一位。图 7-3(a) 是编码器,图 7-3(b) 是含校正逻辑的译码器。

图 7-3(a) 海明码的编码器

图 7-3(b) 海明码的译码器

用矩阵可以写得更紧凑。奇偶校验矩阵:

编码器则用生成矩阵 (单位矩阵 + 奇偶位矩阵),码字由信息字与生成矩阵模 2 相乘得到:

图 7-3 的编码器对应 海明码,可检测并纠正 1 个差错。一般地,4 个校验位最多可保护 15 个信息位,即 码可以缩短成 。距离为 3 的海明码结构是 。例如无线电控制监视器里的日期编码成 22 位,把 海明码缩短成 ,就得到单差错纠错码,其奇偶校验矩阵为:

此时校正逻辑就是一个简单的 译码器。表 7-1 给出了该监视器用 Xilinx FPGA 实现时按 CLB 计的预计工作量,分钟、小时、日期三个数据块各用一套。

表 7-1 海明码纠错的预计工作量

分组海明码分钟(11,7,3)小时(10,6,3)日期(27,22,3)
寄存器6614
伴随式计算5516
校正逻辑4422
输出寄存器4411
和191963
总计101

总之,对分钟块用额外的 位校验(约 100 个 CLB),就能纠正三个数据块各自的一个差错。

2. 纠错码综述

实际系统通常一个发射器对多个接收器(寻呼机、无线电都是如此),所以译码器的工作量更受关注。图 7-4 给出了可行的译码器框图。

图 7-4 用于纠错的译码器

按生成过程是否使用”存储器”,编码分两大类。两者都用编码率 (信息位数与码长的比)描述。对带存储器的树型码,当前输出的 位不仅取决于当前的 个信息位,还依赖前面 个符号(图 7-5);其特征还有存储长度 、距离剖面、自由距离 和最小距离 。分组码通常用有限域代数方法构造,而树型码一般只出现在计算机仿真中。

图 7-5 卷积编码器的参数

若限定为线性码(两个码字之和仍是码字),译码器实现会简化:海明距离总可以按”码字与零字之差”来计算,便于比较编码性能。线性树型码因可用类 FIR 结构构造而得名卷积码。卷积码分灾难性与非灾难性:灾难性编码会把单个差错一直传播下去,可以证明系统卷积码总是非灾难性的。此外还常区分随机差错校正码(差错可出现在码字任意位置)与突发差错校正码(能对付一长串连续差错或删除)。

3. 编码边界

编码边界给出编码纠错能力的理论上限,译码器不可能超过它;实际设计常故意低于边界以降低译码复杂度。

辛格顿界(Singleton Bound):最小海明距离的上限受奇偶位数量 限制。可纠正差错数 与可删除数 满足:

的码叫最大距离可分码,但二进制下除重复码和奇偶校验码外不存在。对表 7-1 的例子,11 个校验位的上限是纠正 5 个差错。

海明界: 位纠错二进制码须满足

直观理解:奇偶校验模式的可能数量()必须覆盖所有可能的差错模式数量。等号成立时称为完全码(Perfect Code)——海明码就是完全码。举一个计算示例:要保护无线电控制监视器每分钟传输的全部 44 位,试用 13 个校验位:

但

也就是说,能找到纠正 2 个随机差错的编码,但纠正 3 个差错的编码不存在。

7.1.2 分组码