FPGA-通信设计实例.ppt_第1页
FPGA-通信设计实例.ppt_第2页
FPGA-通信设计实例.ppt_第3页
FPGA-通信设计实例.ppt_第4页
FPGA-通信设计实例.ppt_第5页
已阅读5页,还剩171页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章FPGA电路设计实例 8 1m序列产生器8 2任意序列产生器8 3数字相关器8 4汉明距离的电路计算8 5交织编码器8 6直接数字频率合成8 7误码率在线测试 8 1m序列产生器 在扩展频谱通信系统中 伪随机序列起着十分关键的作用 在直接序列扩频系统的发射端 伪随机序列将信息序列的频谱扩展 在接收端 伪随机序列将扩频信号恢复为窄带信号 进而完成信息的接收 因此 伪随机序列产生器是扩频系统的核心单元 在实际的扩频通信系统中 伪随机序列一般用二进制序列表示 每个码片 即构成伪随机序列的元素 只有 1 和 0 两种取值 分别对应电信号的高电平和低电平 m序列又称为最长线性反馈移位寄存器序列 该序列具有很好的相关性能 所以在直接序列扩频系统中应用十分广泛 m序列的产生比较简单 可以利用r级移位寄存器产生长度为2r 1的m序列 m序列产生器的结构主要分为两类 一类称为简单型码序列发生器 SSRG SimpleShiftRegisterGenerator 另一类称为模块型码序列发生器 MSRG ModularShiftRegisterGenerator 图8 1给出了这两种产生器的基本结构 其中 Cr Cr 1 C0 和 D0 D1 Dr 为反馈系数 也是特征多项式系数 这些系数的取值为 1 或 0 1 表示该反馈支路连通 0 表示该反馈支路断开 图8 1m序列产生器的两种结构 r级移位寄存器的反馈路径由m序列的特征多项式决定 对于SSRG结构 m序列特征多项式的一般表达式为fSSRG x Grxr Cr 1xr 1 C3x3 C2x2 C1x1 C0 x0 8 1 对于MSRG结构 m序列特征多项式的一般表达式为fMSRG x D0 xr D1xr 1 Dr 3x3 Dr 2x2 Dr 1x1 Drx0 8 2 可以看出 SSRG结构的特征多项式系数 Cr Cr 1 C0 与MSRG结构特征多项式系数 D0 D1 Dr 之间的对应关系为Ci Dr i 其中i 0 1 2 r特征多项式系数决定了一个m序列的特征多项式 同时也就决定了一个m序列 表8 1给出了部分m序列的反馈系数 这些反馈系数实际上就是m序列特征多项式系数的八进制表示 例如想要产生一个码长为31的m序列 码序列产生器的寄存器级数为5 从表8 1中查到有 45 67 75 三个反馈系数 可从中选择反馈系数 45 来构成m序列产生器 反馈系数 45 是一个八进制数 转换为二进制数为 100101 这就是特征多项式的系数 对于SSRG结构 特征多项式系数的取值为C5 C2 C0 1 C4 C3 C1 0对于MSRG结构 特征多项式系数的取值为D5 D3 D0 1 D4 D2 D1 0 表8 1m序列产生器反馈系数表 根据特征多项式的系数可以构造出该m序列 图8 2是采用SSRG结构的m序列产生器电路 在这里 利用D触发器级联的方式完成移位寄存器的功能 在系统清零后 D触发器输出状态均为低电平 为了避免m序列产生器输出 全0 信号 图8 2在 模二加 运算后添加了一个 非门 这与图8 1中SSRG典型结构稍有不同 图8 3是该电路的仿真波形 CLRN 为系统清零端 低电平有效 CLK 为输入时钟 OUT 为m序列输出端口 图中还给出了 A B C D 四个节点的波形 从这些点均可得到同一m序列 只是序列的初始相位不同 图8 2SSRG结构的m序列产生器 图8 3SSRG结构m序列产生器的仿真波形 图8 4是采用MSRG结构实现的m序列产生器 图中在每个D触发器的输出端口上加了一个 非门 使系统清零后各级D触发器的初始状态均为高电平 这样做同样可以避免输出 全0 情况的出现 图8 5是该电路的仿真波形 图8 4MSRG结构的m序列产生器 图8 5MSRG结构m序列产生器的仿真波形 m序列虽然有很好的伪随机性和相关特性 但是数量太少 而基于m序列产生的Gold码继承了m序列的许多优点 更重要的是Gold码序列的数量较多 因此广泛应用于扩频通信系统中 利用m序列产生器可以很容易地构造出Gold码产生器 篇幅所限 这里就不详细介绍了 感兴趣的读者可参阅有关文献 8 2任意序列产生器 m序列产生器的结构可由特征多项式得到 但对于非m序列的产生电路的设计就比较复杂 很多有关脉冲与数字逻辑电路设计的书籍中都介绍了任意序列产生器的结构设计 如移存型序列产生器和计数器型序列产生器 这些方法虽然能够以最少的硬件产生所需的序列 但在设计时需要写出状态转移表 并通过组合逻辑运算产生所需序列 如果序列很长的话 整个设计过程是非常繁琐的 而且输出信号有可能出现毛刺 利用FPGA器件产生任意序列有很多种方法 上面提到的移存型和计数器型序列产生器的设计方法当然是可行的 但在这里将介绍一种存储型任意序列产生器的设计方法 在设计存储型任意序列产生器时 设计人员不需要写状态转移表 也不需要进行组合逻辑运算 设计十分简便 而且不会出现逻辑冒险 保证了输出序列的质量 存储型任意序列产生器就是将所需的序列事先存储到序列产生器中 序列产生器在时钟的激励下将存储的序列循环输出 它有两种实现形式 一种是利用移位寄存器实现 另一种是基于查找表 利用FPGA内的存储器 实现 00110000011111011010100100010111 是一个长度为32位的伪随机序列 下面就分别利用移位寄存器和查找表设计该序列的产生器 图8 6是基于寄存器的32位任意序列产生器电路 它将4个8位并入串出移位寄存器 cshifreg 模块级联 构成一个32位循环移位寄存器 32位数据放在寄存器的输入端口上 其中 0 接 GND 为低电平信号 1 接 VCC 为高电平信号 当 STLD 为低电平时 时钟脉冲将32位数据并行送入移位寄存器中 当 STLD 保持为高电平状态时 在时钟信号的激励下 32位数据在移位寄存器内循环移位 同时序列从 DATAOUT 端口输出 图8 7给出了仿真波形 图8 6基于寄存器的32位任意序列产生器 图8 7基于寄存器的32位任意序列产生器仿真波形 图8 8是基于查找表的32位任意序列产生器 整个电路由两部分组成 地址产生器和基于ROM的查找表 lpm rom 的参数设置为LPM WIDTH 1LPM WIDTHAD 5LPM FILE e max2work m mif 在 m mif 文件中 从32位序列 00110000011111011010100100010111 的MSB到LSB依次对应地址 00000 11111 地址产生器由 8count 构成 在时钟的激励下 8count 的 QE QA 端口循环产生信号 00000 11111 将该信号作为地址信息在ROM中寻址 从而将32位序列从查找表中依次读出 图8 8基于查找表的32位任意序列产生器 图8 9是基于查找表的32位任意序列产生器仿真波形 A 4 0 是地址信号 取值区间是 00000 11111 它与查找表中的32位数据一一对应 存储型任意序列产生器与移存型和计数器型序列产生器相比较 设计过程十分简单 但需要消耗较多的硬件 如触发器和存储器 由于FPGA拥有大量的逻辑单元和存储单元 因此FPGA器件非常适合于实现存储型任意序列产生器 在存储型任意序列产生器两种实现形式中 基于移位寄存器的实现方法 适于产生码长较短的序列 而基于查找表的实现方法 适于产生码长较长的序列 图8 9基于查找表的32位任意序列产生器仿真波形 8 3数字相关器 数字相关器在通信信号处理中实质上是起到数字匹配滤波器的作用 它可对特定码序列进行相关处理 从而完成信号的解码 恢复出传送的信息 数字相关器与模拟相关器相比 其灵活性强 功耗低 易于集成 广泛用于帧同步字检测 扩频接收机 误码校正以及模式匹配等领域 数字相关器一般包括 输入序列移位寄存器 参考序列移位寄存器 相关运算阵列和相关求和网络 图8 10给出了数字相关器的结构框图 图8 10数字相关器结构框图 在数字相关器工作时 参考序列首先被送入参考序列移位寄存器中 而输入数据流则在时钟驱动下被送入输入序列移位寄存器中 相关运算阵列对输入序列与参考序列之间进行相关运算 输入序列移位寄存器每更新一位数据 相关运算阵列就进行一次相关运算 然后将相关运算结果送入相关求和网络 由相关求和网络计算出相关值 一般情况下 相关求和网络输出的相关值还需要与一个检测门限做比较 判断是否出现相关峰 当求和网络计算出的相关值高于检验门限时 就认为出现了相关峰 因此 检测门限的高低决定了相关峰虚警检测概率和漏警检测概率的大小 所谓虚警是指没有相关峰时 相关器误认为此时有相关峰出现 而漏警则是指当相关峰出现时 相关器误认为此时没有相关峰 最理想的情况是相关峰检测的虚警概率和漏警概率都较小 这样就能得到可靠的判决结果 但是虚警概率和漏警概率不会同时减小 如果把检测门限设置得较低 漏警概率降低 但虚警概率增大 反之 如果提高检测门限 虚警概率降低 但漏警概率却增大了 例如相关数据长度为32位 如果把门限设为32 则不会发生虚警 但是如果这32位中任意一位数据在传输中发生差错 即使有相关峰出现 由于此时的相关峰值低于32 就会误认为此时没有相关峰 以至于发生漏警 合理设置检测门限 在相关器的虚警概率与漏警概率之间取一个折衷值是十分必要的 这样既不会明显降低相关器性能 又使得通信系统能够容忍少量的传输错误 在实际应用中 数字相关器前端一般都有一个预处理电路 如完成对接收信号的数字化处理 防混叠滤波 下采样等 进入到数字相关器中的样点值是用一定字长的二进制数表示的 本地参考序列如果包含有幅度信息的话 它的各个样点也是用一定字长的二进制数来表示的 输入数据序列与本地参考序列做相关运算 实际上就是这两个序列的对应位做乘法运算 然后再利用求和网络得到相关值 最简单的一种情况是序列中的各个样点都用一位二进制数表示 这样就可以用逻辑运算 如模二加 来取代复杂的乘法运算 我们知道 帧同步字用于指示帧的起始位置或结束位置 在典型的数字通信系统中 接收机需要在已解调的数据流中搜寻帧同步字 以确定帧的位置和帧定时信息 将数字相关器用于帧同步字检测的方法 特别适用于突发通信协议 如TDM 数字相关器是实现快速同步和锁定数据突发的关键 下面以一次群信号的帧同步字检测为例 讨论数字相关器的基本设计方法 根据CCITTG 732建议 A律30 32路 一次群 TDM PCM传输标准的一个复帧包含16帧 一帧长为125 s 每一帧含256位 分成32个时隙 时隙0 时隙31 每个时隙包含8位数据 帧分为奇数帧和偶数帧 偶数帧时隙0的后7位为帧定位信号 FAS FrameAlignmentSignal 0011011 也就是说 相邻的两个帧有一个帧同步码 相邻两个帧定位信号间距为512位 对一次群进行分接 首先要实现帧头的捕获 帧头捕获电路采用的数字相关检测方法 是数字相关器的一个典型作用 表8 2一次群帧同步码检测电路引脚 图8 11是一次群帧同步码检测电路 其中与 VCC 相连的线处于高电平 为 1 与 GND 相连的线处于低电平 为 0 表8 2给出了一次群帧同步码检测电路的引脚说明 该电路可以有效地检测出一次群信号数据流中的特殊码字 0011011 输入一次群数据流首先进入7位移位寄存器中 然后与本地参考序列 0011011 的对应位进行 异或 逻辑运算 然后再统计7位输出结果中 1 和 0 的数目 需要指出的是 在二进制数据传输中 高电平信号 1 与低电平信号 0 只是一个相对的概念 如果相关结果全部为 1 表明出现了相关峰 如果相关结果全部为 0 同样也表明出现了相关峰 只不过是极性发生了翻转 认识到这一点 对于检测门限的设置是十分重要的 为了简便起见 这里将相关峰检测门限设为7 也就是说只有在输入数据流中出现 0011011 或 1100100 字段时 才会判决输出正或负的相关峰 因此在图8 11中用一个七输入的 与门 完成正极性相关峰的检测 用一个七输入的 或非门 完成负极性相关峰的检测 输出引脚 SIG1 和 SIG0 分别表示相关峰的极性 当出现正相关峰时 SIG1 为高电平 当出现负相关峰时 SIG0 为高电平 一次群帧同步码检测电路的波形仿真结果如图8 12所示 其中分别仿真了输入数据流中出现 0011011 和 1100100 字段时检测电路的输出结果 图8 11一次群帧同步码检测电路 图8 12一次群帧同步码检测电路仿真波形 由于参考序列 0011011 是一个固定序列 因此在电路设计中没有使用参考序列移位寄存器 这样可以节省片内资源 如果要求参考序列是可在线编程的 就需要将参考序列放入到移位寄存器中 以便实时更新 在上面的例子中 将相关峰检测门限设置为7是一种最简单的情况 在实际应用中如果将相关峰的检测门限设置为其它值 就需要用计数器或其它逻辑电路来统计相关结果中 1 或 0 的数目 从另一个角度看 也就是要计算相关结果的汉明距离 有关汉明距离的电路计算方法 将在8 4节中做详细介绍 8 4汉明距离的电路计算 汉明距离是编码理论中的一个重要概念 它的定义是两个长为N的二元序列S和U之间对应位不相同的位数 用d S U 来表示 在扩频通信和数字突发通信 如TDMA 系统中 接收机进行的数字相关检测或独特码 UW 检测 实际上就是计算本地一组确定序列与接收到的未知序列之间汉明距离的过程 将汉明距离与事先确定的门限相比较 就可以得到检测结果 检测器结构如图8 13所示 设检测的序列长度为N 本地码型确定的序列为U U1 U2 UN 图8 13检测器结构图 接收机将接收到的数据连续不断地送入N位串行移位寄存器中 任一瞬间移位寄存器的内容为S S1 S2 SN S与U的对应位进行模二加 当S与U的对应位相同时结果为 0 不同时结果为 1 最后得到D D1 D2 DN 其中Di Si Ui i 1 2 N 8 3 序列D中 1 的数目就是S与U之间的汉明距离 可表示为 8 4 二元序列D是序列S与U的比较结果 要得到汉明距离的数值 必须从序列D中计算出 1 的个数 其电路的实现方法有多种 下面一一进行分析 8 4 1计数法在某一时刻 我们得到了一个二元序列D D1 D2 DN 它存在的时间基本上为一个时钟周期 在下一个时钟到来时 由于序列S发生了变化 从而将序列D更新 为了计算出每一个时钟周期内序列D中 1 的数目 首先将序列D并行送入一个 并入串出 的N位移位寄存器中 然后用一个高速时钟将数据送出 同时利用计数器来统计 1 的数目 最后用清洗脉冲将计数器清零 为下一周期的计数做好准备 参见图8 14 假设接收到的数据速率为R0 每位时间宽度为T0 则有 8 5 由此可以确定计数时钟的最低速率为 8 6 周期为 8 7 计数法的实现电路比较简单 但是当数据速率R0较高或N值较大时 计数时钟的速率R会很大 导致电路难以实现 因此 这种方法适合于低速数据 码序列不宜很长 而且需要有高速率的时钟和高速器件 图8 14计数法原理图 8 4 2逻辑函数法将序列D作为逻辑函数的输入变量 汉明距离作为输出变量 则输出变量的个数I为 I INT log2N 1 8 8 这里 N为序列D的长度 INT X 表示取X的整数部分 根据输入变量值写出对应的输出变量值 得到其真值表 从而建立逻辑函数表达式 但它不是最简的 通常采用公式法或卡诺图法对其进行简化 得到最简的逻辑计算电路 在N值较大的情况下可采用系统简化法 又称Q M法 这种方法适用于化简任意多变量的函数 并且具有较严格的算法 可以将此函数的简化问题编程 借助于计算机进行化简 逻辑函数法的计算电路使用了大量的与或非门 其计算速度决定于信号通过逻辑门的延迟时间及布线距离的长短 一般说来 可以达到较高的计算速度 但是随着N的增大 计算电路将越来越复杂 并且N值不同 实际电路结构也不相同 必须重新设计 同时 在电路设计中 必须消除逻辑冒险 8 4 3查找表法所谓查找表法 就是将存储器做成一个查找表 把序列D作为地址信号 从表中查找出其对应的汉明距离 图8 15说明了这种方法 序列D的长度为N 存储单元的数据宽度为P 则P INT log2N 1 8 9 从而要求存储器的容量M为M 2N P 8 10 图8 15查找表法 可见 随着序列长度N的增加 存储器容量成几何级数增长 当N 30时 存储量将超过5Gb 实际电路难以实现 所以 在码序列较短的情况下 使用查找表法比较方便 此方法的计算速度与存储器的寻址时间有关 选用高速器件 可以达到较高的计算速度 8 4 4求和网络法求和网络法的原理图见图8 16所示 它的工作原理很简单 即将序列D中的各项逐个加在一起 最终累加结果便是汉明距离 求和网络法在网络结构上可分为并行求和网络和串行求和网络两种 这两种结构所需加法器的数目J是一样的 均为J N 1 8 11 在一般情况下 为了保证计算结果的可靠性 需要将序列D用N位寄存器锁存 在求和网络中 信号每经过一次加法运算 就引入一定的延迟 但是 串行求和网络与并行求和网络的信号总延迟 是不同的 显然 串行 并行 8 12 因为信号总的延迟时间不能超过数据码元周期T0 即有T0 串行 并行 8 13 所以并行求和网络的工作速度要高于串行求和网络 图8 16求和网络法原理图 8 4 5组合应用以上介绍了四种计算汉明距离的方法 它们各有优缺点 在具体应用中 如果将几种方法组合使用 计算电路会更加合理 高效 图8 17给出了计数 求和网络法的原理框图 在这里 我们重点讨论图8 18所示的查找表 求和网络法 图8 17计数 求和网络法原理图 图8 18查找表 求和网络法原理图 在查找表 求和网络法中 需要解决的问题是 怎样才能使存储器总容量与求和网络中加法器的数目达到最佳 如图8 18所示 可将查找表分解成若干个子查找表 分别由存储器1 K构成 首先将长度为N的序列D等间距地分成K段 为了便于分析并不失一般性 令N 2m K 2n且m n 0 m n均为整数 那么存储器的地址线宽度为2m n 每个存储单元的数据宽度为 m n 1 则存储器1 K的容量均为M 2m n m n 1 8 14 进而可以计算出存储器的总容量为M总 K M 2m n m n 1 8 15 显然 与 8 10 式相比 将一个大的查找表分割成若干个子查找表 可以减少存储器的容量 同样 由 8 11 式可知 求和网络中加法器的总数目为J总 K 1 2n 1 8 16 图8 19m J总 log2M总关系曲线 在上述讨论中 我们曾令 N 2m K 2n 且m n 0 m n均为整数 当 2m N 2m 1 2n K 2n 1 且m n 1 m n均为整数 时 经同样分析 从略 可知 8 11 8 16 式给出了此时存储器容量和加法器数目的上限 由 8 15 和 8 16 式可知 当n m时 M总 2n J总 2m 1 原方法等效为求和网络法 当n 0时 M总 2N m 1 J总 0 原方法等效为查找表法 我们将 8 15 和 8 16 式结合起来 绘成m J总 log2M总关系曲线 如图8 19所示 值得注意的是 在序列长度确定的条件下 即m确定 M总与J总的大小是可以相互转换的 这个特点对于采用可编程逻辑器件计算汉明距离尤为重要 因为可编程逻辑器件的存储单元和逻辑单元属于两种不同的芯片资源 它们是有限的 加法器一般可由逻辑单元构成 在较复杂的专用集成电路设计中 其它功能模块可能已经占用了较多的存储单元 或者占用了较多的逻辑单元 而汉明距离的计算电路则可根据有效的芯片资源 恰当地选择M总与J总值 使整个系统的资源利用率达到最佳 下面我们给出查找表 求和网络法的一个应用实例 图8 2032位序列汉明距离计算电路原理图 在某通信系统的检测单元中 需要实时计算出长度为32位的接收序列与本地序列之间的汉明距离 同时要求实际电路能够充分利用Altera公司EPF10K10芯片内的存储单元 尽量节省逻辑单元以容纳其它的功能模块 EPF10K10芯片的存储单元由三个EAB块组成 每个EAB块的存储容量为2048位 可以配置成512 4的查找表 其中地址线宽度为9 数据线宽度为4 设序列D D1 D2 D32 分别将 D6 D7 D14 D15 D16 D23 D24 D25 D32 作为查找表的地址线 由此可以计算出序列 D6 D7 D32 的汉明距离 序列 D1 D2 D5 的汉明距离可以采用逻辑函数法获得 图8 20给出了32位序列汉明距离电路计算原理图 由 8 8 式可知 逻辑计算电路有三个二进制输出变量 由最高有效位到最低有效位依次设为A B C 其逻辑表达式为 图8 21是32位汉明距离计算的电路图 其中用三个 lpm rom 模块构建查找表 用 c5in3out 模块完成逻辑电路计算功能 最后用三个加法器将各项相加 就得到最终计算结果 整个计算电路使用了芯片100 的存储单元和5 的逻辑单元 其中 逻辑计算电路占2 加法器占3 如果完全采用逻辑函数法 则需要占用芯片15 的逻辑单元 因此图8 21所示的汉明距离计算电路为该通信系统的检测单元节省了10 的逻辑单元 图8 2132位序列汉明距离计算电路图 图8 22给出了部分电路仿真波形 其中序列D从端口 DATAIN 31 0 输入 用十六进制数表示 计算结果从 OUT 3 0 输出 用十进制数表示 图8 2232位序列汉明距离计算电路仿真波形 8 5交织编码器 8 5 1交织编码的原理数字通信系统进行数据传输时 不可避免地会在接收端产生差错 在这种情况下 如果单纯通过改进信道的性能来降低误码率 在某些情况下是不切实际或不经济的 因此 数字通信系统通常采用前向纠错编码的方法来纠正在传输过程中产生的误码 目前常用的纠错码包括分组码和卷积码 它们都是按一定规律在原始信息序列中有意加上一些不含信息的多余比特 其作用是监督所有码组经过信道传输后是否有差错 以便在接收端根据码组中规定的监督关系对出现差错的码组进行纠错 每一种纠错码都只具备有限的纠错能力 当连续误码个数超过它的纠错能力之后 接收端的纠错译码便不能有效地降低信道误码率 甚至还会造成某种程度的恶化 为了克服信道中出现突发性差错 需要使用交织编码技术 其作用就是将连续误码分散成非连续误码 增大纠错码的约束长度 数字通信系统采用纠错码和交织编码 就具有了既能纠正随机差错 又能克服突发性差错的功能 大大提高了通信质量 此外 交织编码器在Turbo码设计中也起着十分重要的作用 图8 23是纠错编码与交织编码电路连接关系图 交织编码根据交织图案形式的不同 可分为线性交织 卷积交织和伪随机交织 其中线性交织编码是一种比较常见的形式 在这里 我们主要向大家讲述线性交织编码器的FPGA设计 图8 23纠错编码与交织编码的连接关系 图8 24n m交织矩阵 所谓线性交织编码器 是指把纠错编码器输出信号均匀分成m个码组 每个码组由n段数据构成 这样就构成一个n m的矩阵 我们把这个矩阵称为交织矩阵 如图8 24所示 数据以a11 a12 a1n a21 a22 a2n aij am1 am2 amn i 1 2 m j 1 2 n 的顺序进入交织矩阵 再以a11 a21 am1 a12 a22 am2 aij a1n a2n amn的顺序从交织矩阵中送出 这样就完成了对数据的交织编码 当然还可以按照其它顺序从交织矩阵中读取数据 不管采用哪种形式 其最终目的都是把输入数据的次序打乱 如果aij只包含一个数据比特 称为按位交织 如果aij包含多个数据比特 则称为按字交织 接收端的交织译码同交织编码过程相类似 也是通过图8 24的交织矩阵来完成 它们的结构是一样的 在这里 我们只讨论交织编码器 当然它也可以用来做交织译码 根据Altera公司FLEX系列器件的内部结构特点 可以采用两种方法设计交织编码器 一种方法是利用FLEX器件的逻辑单元 用移位寄存器完成交织 另一种方法是利用EAB资源 用存储器实现交织编码 下面分别进行讨论 8 5 2利用移位寄存器实现交织编码图8 25所示为利用移位寄存器实现4 4交织编码器 m n 4 工作原理方框图 输入移位寄存器和输出移位寄存器的容量均为16比特 该交织器每次完成16比特数据的交织编码 图8 26为4 4交织编码器的交织矩阵 设 0 15 为输入16比特数据的编号 输入数据在时钟的作用下 按照 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 的顺序进入 输入移位寄存器 在时序控制单元的控制下 经过交织网络 进入 输出移位寄存器 然后以 0 4 8 12 1 5 9 13 2 6 10 14 3 7 11 15 的顺序输出 从而完成交织编码 图8 25基于移位寄存器的交织编码器工作原理方框图 表8 3基于移位寄存器的交织编码器引脚 图8 264 4交织矩阵 图8 27利用移位寄存器实现的交织编码器 图8 27利用移位寄存器实现的交织编码器 图8 27是利用移位寄存器所实现的交织编码器电路图 表8 3给出了交织编码器的引脚关系 输入移位寄存器 由两个 74164 级联实现 输出移位寄存器 由两个 cshifreg 级联实现 表8 4为输入数据和输出数据编号的对应关系 利用对应关系将相应编号的端口相连接 就构成了 交织网络 时序控制单元是一个模16同步计数器 当 输入移位寄存器 读入16比特数据后 时序控制单元产生一个脉冲信号 将这些数据通过 交织网络 送入 输出移位寄存器 此时该移位寄存器内的数据已经按照交织编码后的顺序排列 在时钟的驱动下 将 输出移位寄存器 内数据顺序送出 即为交织编码后的数据 图8 28是该交织编码器的仿真波形 节点 Q 处的脉冲信号每16个时钟周期出现一次 输入移位寄存器 中的数据在脉冲信号控制下被送入 输出移位寄存器 同时在交织网络中完成交织编码 时钟 CLKOUT 是输入时钟 CLK 的反相时钟 其上升沿对应着数据信号的中间位置 这样可以保证数据的可靠读取 DATAIN 是数据输入端 系统清零后输入的前16个数据比特为 1101010001001110 经交织后 DATAOUT 输出的数据比特为 1001111100011000 表8 4输入数据和输出数据编号的对应关系 图8 28交织编码器仿真波形 一 8 5 3利用存储器实现交织编码FPGA器件中的EAB可以实现复杂的逻辑功能 当用作存储器时 其存储数据的宽度和深度可由设计人员任意指定 甚至还可以把若干个EAB连接起来组成容量更大的存储单元 因此利用存储器可以方便地构造出交织深度很大的交织编码器 图8 29基于存储器的交织编码器工作原理方框图 图8 29是利用双端口RAM实现的交织编码器工作原理方框图 由图可看出 交织编码器设计的关键在于 读 写地址 的产生 一般说来 有两种设计 读 写地址 的方法 一种方法是 顺序写入 乱序读出 即输入数据以顺序地址写入存储器 然后再以交织地址从存储器中读出 另一种方法是 乱序写入 顺序读出 即输入数据以交织地址写入存储器 然后再以顺序地址从存储器中读出 这两种方法是等效的 在下面的例子中 我们采用 顺序写入 乱序读出 的方法 将双端口RAM存储空间划分为两部分 在交织器工作时 这两部分存储空间交替进行读 写操作 图8 30是4 4交织编码器的电路图 双端口RAM由 lpm ram dp 宏模块构成 该模块的逻辑参数见表8 5和表8 6所示 图8 30利用双端口RAM实现的交织编码器 图8 30利用双端口RAM实现的交织编码器 表8 5 lpm ram dp 宏模块的基本逻辑参数 一 表8 6 lpm ram dp 宏模块的基本逻辑参数 二 图8 30中 lpm ram dp 宏模块的参数设置为LPM WIDTH 1LPM WIDTHAD 5 输入输出数据线的宽度为 1 读 写地址线的宽度为 5 5位 写地址 为 WRADDRESS 4 0 5位 读地址 为 RDADDRESS 4 0 总寻址空间为 32 比特 写地址 的低4位 WRADDRESS 3 0 由计数器 4count 的输出端口 QA QD 产生 读地址线 的产生比较复杂 需要通过状态转移图得到 我们已经知道 交织器编码数据按照 0 4 8 12 1 5 9 13 2 6 10 14 3 7 11 15 的顺序输出 其地址 低4位地址 状态转移图为 表8 7 读地址 与时钟对应关系 由状态转移图可以得到 读地址 的低4位 RDADDRESS 3 0 与数据时钟之间有表8 7所述的对应关系 因此 可以很容易地用分频器得到 读地址 读 写地址 的最高位 RDADDRESS4 WRADDRESS4 是反相关系 使存储器在 00000 01111 和 10000 11111 两段地址空间内交替 读 写 操作 这两段空间交替 读 写 一次对应32个数据时钟周期 所以 RDADDRESS4 WRADDRESS4 可由数据时钟的32分频得到 图8 30用5个D触发器构成了一个32分频器 从各级D触发器输出端可得到5位 读地址 以及 写地址 的最高位 WRADDRESS4 表8 8给出了基于RAM结构的交织编码器的引脚关系 为了便于测试 将 读 写地址 和 模16计数信号 也用输出管脚引出 CLKOUT 是时钟 CLK 的反相信号 读 写 地址转换的时候会出现许多 毛刺 信号 用 CLKOUT 作为存储器 读 写 时钟可以避免 毛刺 的影响 保证数据的可靠读取 读地址线 的产生比较复杂 需要通过状态转移图得到 我们已经知道 交织器编码数据按照 0 4 8 12 1 5 9 13 2 6 10 14 3 7 11 15 的顺序输出 其地址 低4位地址 状态转移图为由状态转移图可以得到 读地址 的低4位 RDADDRESS 3 0 与数据时钟之间有表8 7所述的对应关系 因此 可以很容易地用分频器得到 读地址 表8 8基于RAM的交织编码器引脚 图8 31是交织编码器的仿真波形 从图中的局部放大图可以看到 读 写 地址的对应关系与交织矩阵完全一致 图中还标出了输入的前16个数据比特为 1100111000100101 经交织后 DATAOUT 输出的数据比特为 1100110101100001 从图8 28和图8 31的仿真波形中还可看到 交织编码器在数据输出前存在一段延时 延时的大小与交织矩阵有关 交织矩阵越大 延时越大 延时会对通信带来不利的影响 但可以通过对交织器的精心设计来降低延时 它的实现方法我们在这里就不详细讨论了 图8 31交织编码器仿真波形 二 通过本节的讲述可知 我们既可以利用FLEX系列芯片的逻辑单元 用寄存器阵列实现交织编码 又可以利用它的EAB资源 用存储器实现交织编码 相比较而言 第一种方法控制电路简单而易于实现 第二种方法的地址电路比较复杂 但能构造出约束长度很长的交织矩阵 需要指出的是 m和n是设计交织编码的重要参数 必须根据信道中突发误码的长度 出现的频率以及纠错码的约束长度 纠错能力适当选择 假设选用的纠错码具有纠正t个随机差错的能力 则在发生突发差错的情况下 允许突发性差错的最大长度b mt 显然 在n不小于纠错码译码长度的条件下 增大m可以提高系统克服突发差错的能力 所以 m n选得越大 信道编码的约束长度越大 从而对付信道中长突发差错的能力也就越强 如果采用按位交织 要实现连续数据流的交织 交织编码器需要有2 m n比特的存储空间 相应地在发 收端对信号进行交织编 译码处理时 分别会引入m n个码元的延时 这一点可以从仿真波形中清楚地看到 从另一个角度讲 m n选得越大 就需要越大的存储空间 同时会引入更长的延时 所以应根据数字通信系统的实际情况选择合适的m和n值 8 6直接数字频率合成 1971年 美国学者J Tierncy C M Rader和B Gold提出了以全数字技术 从相位概念出发直接合成所需波形的一种新的频率合成原理 随着技术和器件水平的提高 一种新的频率合成技术 直接数字频率合成 DDS DirectDigitalSynthesis 得到了飞速的发展 DDS技术是一种把一系列数字形式的信号通过DAC转换成模拟形式的信号的合成技术 目前使用最广泛的一种DDS方式是利用高速存储器作查找表 然后通过高速DAC输出已经用数字形式存入的正弦波 DDS的主要优点是 相位连续 频率分辨率高 频率转换速度快以及良好的可复制性能 它以有别于其它频率合成方法的优越性能和特点成为现代频率合成技术中的姣姣者 DDS广泛用于接收机本振 信号发生器 仪器 通信系统 雷达系统等 尤其适合于跳频无线通信系统 图8 32是DDS的基本原理框图 频率控制字M和相位控制字分别控制DDS输出正 余 弦波的频率和相位 DDS系统的核心是相位累加器 它由一个累加器和一个 位相位寄存器组成 每来一个时钟脉冲 相位寄存器以步长 增加 相位寄存器的输出与相位控制字相加 其结果作为正 余 弦查找表的地址 图8 32中正 余 弦查找表由ROM构成 内部存有一个完整周期正弦波的数字幅度信息 每个查找表的地址对应正弦波中0 360 范围的一个相位点 查找表把输入的地址信息映射成正 余 弦波幅度信号 同时输出到数模转换器 DAC 的输入端 DAC输出的模拟信号经过低通滤波器 LPF 可得到一个频谱纯净的正 余 弦波 图8 32DDS基本原理框图 图8 33DDS核心单元的FPGA电路设计图 相位寄存器每经过2N M个fc时钟周期后回到初始状态 相应地正 余 弦查找表经过一个循环回到初始位置 DDS输出一个正 余 弦波 输出的正 余 弦波周期为Tout 2N M Tc 频率为fout M 2N fc DDS的最小分辨率为 fmin fc 2N 当M 2N 1时 DDS最高的基波合成频率为foutmax fc 2 图8 32中虚方框内的部分是DDS的核心单元 它可以采用FPGA器件来实现 图8 33给出了DDS核心单元的FPGA电路设计图 其中字长N 10 为了便于大家理解 图8 33中各个功能单元的名称已在图中标明 其中在输出引脚 out c 7 0 和 out s 7 0 前分别放置了一个8位D触发器 正 余 弦查找表分别由两个ROM宏模块 lpm rom 构成 有关查找表的设计方法 请读者参阅6 3 3节的内容 图8 34是DDS电路的MAX PLUS 波形仿真结果 实际上 从MAX PLUS 波形仿真结果中我们很难直观地看出DDS输出正 余 弦波的情况 为了便于调试设计电路 我们可以利用计算机高级语言将MAX PLUS 波形仿真结果转换为波形曲线 这就需要借助于MAX PLUS 的表格文件 tbl文件 图8 34DDS电路的波形仿真结果 MAX PLUS 的设计软件中的 tbl文件是纯文本文件 它包含了 scf文件或 wdf文件中的所有信息 tbl文件的生成很简单 在MAX PLUS 波形仿真结束后 打开 scf文件 然后从 File 菜单中选择 CreateTableFiles 选项 就可产生 tbl文件 tbl文件的基本格式如表8 9所示 文件的结构可分为四大部分 其中第三和第四部分对我们来说是最关键的 我们可以从中获取仿真波形数据 并利用计算机高级语言处理这些数据 将其转换为直观的波形曲线 需要读者注意的是 每做一次MAX PLUS 波形仿真 都要重新生成一次 tbl文件 以更新 tbl文件内的数据 表8 9 tbl文件基本格式 图8 35给出了DDS电路波形仿真结果所对应的 tbl文件的第三和第四部分内容 tbl文件的第三部分按照 scf文件 参见图8 34 中显示的输入输出引脚的排列顺序 从左至右依次列出输入引脚和输出引脚 tbl文件的第四部分给出了仿真数据 这些数据按时间顺序排列 并与相应的输入 输出引脚处于同一列 输入引脚数据与输出引脚数据之间用 隔开 仔细观察图8 35 我们可以发现当 CLK 取值为 0 时 此时的输出数据是我们希望得到的 所以可编程将这些数据抽取出来并将其转换为十进制 就可获得直观的仿真波形 图8 35 tbl文件的部分内容 图8 35 tbl文件的部分内容 下面给出了一段用Matlab语言编写的程序 它首先读取 dds tbl 文件 将输入引脚 CLK 0 时的输出数据抽取出来并转换为十进制数 然后绘出DDS电路的仿真波形曲线 该曲线如图8 36所示 图8 36Matlab绘出的DDS电路仿真波形 数据抽取和数值转换程序 Matlab语言 clearall fid fopen e max2work dds tbl r data fscanf fid s fclose fid b find data number length b j 0 fori 1 numberifdata b i 1 0 j j 1 c c j 1 data b i 1 c c j 2 data b i 2 c s j 1 data b i 3 c s j 2 data b i 4 end end d c hex2dec c c hex dec d c是out c引脚上的数据 d s hex2dec c s hex dec d s是out s引脚上的数据 figure 1 subplot 2 1 1 plot d c DDS输出的余弦波 subplot 2 1 2 plot d s DDS输出的正弦波 8 7误码率在线测试 8 7 1误码检测电路的设计某数字通信系统需要误码率在线测试单元 要求能够实时显示接收数据的误码率 并提供备份设备的切换标准 图8 37是设计的误码率在线测试电路的总体框图 图8 37中的阴影部分是误码检测电路 它是整个误码率在线测试电路中的核心单元 该通信系统具有独特的帧结构 每一帧长为2ms 速率为19 2Mb s 其中同步头为连续7个128位的伪随机码 误码检测电路的目的就是要检测出同步头的误码个数 将结果送往CPU进行算法处理 得到实时误码率 图8 37误码率在线测试电路总体框图 图8 38误码检测电路原理方框图 误码检测电路实现的难度在于数据速率高 帧结构特殊 如果采用常规电路设计方法 需要几十块集成电路 并且在19 2Mb s的速率上实现困难很大 各个器件之间的延迟很难掌握和处理 电路的调试难度就可想而知 因此 我们选择FPGA器件来实现误码检测电路 其原理方框图如图8 38所示 电路原理说明如下 解调后的19 2Mb s的基带数据流 data 和时钟 clk 输入到同步电路和128位移位寄存器 16个74164 中 首先同步电路开始搜索同步头 以128位伪随机码的前16位作为同步头初捕译码电路 如在数据流中捕捉到相同的16位数据 则送出初同步信号w1 在开关电路1打开的情况下 送出真正的帧同步信号w11 w11打开开关电路2并使所有的计数器清零后开始计数 同时将128位伪随机码进行 1 取反 0 不变 处理后的数据读到另外128位移位寄存器 16个8shiftreg 中 如果有误码 则读入数据对应位为 1 如果没有误码 则读入数据对应位为 0 在随后的128个时钟作用下 将128位移位寄存器 16个8shiftreg 中的数据经开关电路2串行移入64K主计数器和48位辅助计数器 遇 1 计一次数 遇 0 不计数 当计数到128个时钟完后 再将下一个128位伪随机码进行 1 取反 0 不变 处理后的数据读入128位移位寄存器 16个8shiftreg 中 然后再一次进行误码计数 如此操作共进行7次 就计数完在7个128位伪随机码中检测到的误码 w4信号关闭开关电路2 使这两个误码计数器停止计数 在下一帧开始时 38 4K计数器送出一个信号w5 w5就再次打开开关电路2 使64K主计数器开始计数 并将辅助计数器清零后重新开始计数 辅助计数器的作用就是当w1为假同步或误码数很高 一帧同步头的误码数达48个以上时 就判断数据已经失步 此时送出信号w2 w2打开开关电路1 同步搜索电路重新捕捉同步头 w2并关闭38 4K计数器 w3信号的作用就是为保证只有第一个128位伪随机码的同步头起作用 防止第二到第七个128位伪随机码和据中的伪同步头起作用而设计的 误码检测电路的局部电路图如图8 39所示 用户可通过MAX PLUS 设计软件打开本书所附光盘中的 Examples Jcdl gdf 文件 仔细查看该电路 其中部分电路是为了和CPU接口而设计的 如每0 5s将误码数送往74373锁存 并送一中断信号给CPU 让CPU来读取误码数据 图中相同名称的线是相互连接在一起的 图8 39局部电路图 8 7 2误码检测电路的波形仿真根据所设计的原理电路 用MAX PLUS 设计软件进行编译 电路编译通过后再进行波形仿真 仿真时 首先产生该电路所需要的输入波形 也就是检测电路输入的基带数据data和时钟clk clk的频率为19 2MHz data速率为19 2Mb s 每帧开头是连续7个128位伪随机码 随后接37504比特随机数据 共38 4K比特 用以表示一帧的同步头及其信息比特 接下来又是相同的连续7个128位伪随机码和37504比特随机数据 表示下一帧数据 如此连续不断输入 并在每个128位伪随机码中设置两个误码 然后 对误码检测电路的一些关键节点用MAX PLUS 设计软件进行波形仿真 由于仿真结果的波形太长 只取其中有代表性的三个时间段波形 分别为初始同步阶段 一个同步头结束阶段 再同步阶段 如图8 40 图8 41 图8 42所示 其中 data和clk为输入的数据和时钟 w1为初同步头 w11为帧同步头 w2为辅助计数器输出的失步信号 w3是为了防止伪同步头而输出的锁定信号 w4为一帧同步头 即896比特 结束后的输出信号 w5为一帧信号结束下一帧同步头开始的信号 error为每128位数据与固定的128位伪随机码相比较后的输出波形 相同为 0 不同为 1 error1为同步头的误码波形 1 表示有误码 0 表示无误码 STLD每128个时钟送出一个低电平信号使比较电路开始比较 Z 16 1 为38 4K控制计数器的计数值 Y 16 1 为主误码计数器的计数值 Q1为主误码计数器的个位输出波形 这些重要节点在检测电路原理图中均有标注 图8 40误码检测电路仿真波形 初始同步阶段 图8 41误码检测电路仿真波形 一个同步头结束阶段 图8 42误码检测电路仿真波形 再同步阶段 图8 40的仿真波形表示初始同步阶段 同步电路捕获到初同步头w1 低电平有效 在开关电路1打开的情况下 送出同步信号w11 w11将计数器Y 16 1 和Z 16 1 清零并开始计数 error和error1在同步的情况下误码就很少 Q1为误码计数器的个位输出波形 图8 41所示仿真波形表示一帧同步头计数完的阶段 比较电路检测到的误码进入主计数器Y 16 1 中 由于仿真时 设计的每128位伪随机码中错2位 error error1和Q1表示检测到的两个误码 此时计数器Y 16 1 计数到0EH 14 表示已计完同步头的7个伪随机码 计数器Z 16 1 为0380H 896 也表示一个同步头的数据结束 送出w4 w4关闭误码主计数器Y 16 1 图8 42所示的仿真

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论