0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用QPSK调制方式和卷积编码实现中频调制解调系统的FPGA功能

电子设计 ? 来源:郭婷 ? 作者:电子设计 ? 2019-05-13 08:04 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在无线数据传输中,由于信道中的噪声干扰,在接收端会引入一定的误码率(Bit Error Rate,BER)。高质量的数据业务要求较低的BER。为了达到较低的BER,经常采用信道编码技术。卷积编码和Viterbi译码是广泛使用的信道编码技术,具有一定的克服突发错误的能力,可以降低信道的误码率,带来很高的编码增益。信道编码的引入在提供纠错能力的同时,还扩展了信号的带宽。为了保证频带的利用率,本文采用QPSK调制方式,使数据调制在中频载波上,实现数据的可靠传输。

采用QPSK调制方式和卷积编码实现中频调制解调系统的FPGA功能

本文所述的中频调制解调系统具有以下特点:

(1)所有算法(编码、调制、解调和译码)都是在Xilinx公司的FPGA芯片中实现的,结构简单,体积小,功耗低。

(2)具有很好的实时性。对于1Mbit/s以上的数据速率,译码延迟不超过0.1ms。

(3)模块化的设计使得系统具有一定的兼容性,只需要修改少量程序,即可实现各种卷积编码和不同的调制中频。

(4)与浮点算法的仿真性能相比较,采用定点算法的系统性能损失不大,并能在较低的信噪比提供可靠的数据传输。

1 系统总结构及硬件设计

图1是中频调制解调系统的工作流程图。在发端,数据通过A/D转换器采样后进入FPGA,在其中完成(2,1,7)卷积编码和QPSK调制后通过D/A转换器输出。在收端,接收到的信号通过A/D转换器采样后进入FPGA,在其中完成QPSK解调和Viterbi译码后通过D/A转换器输出。

采用QPSK调制方式和卷积编码实现中频调制解调系统的FPGA功能

2 系统的FPGA实现

系统主要分为编译码和调制解调两大部分,下面分别叙述这两部分的原理及设计。

2.1 卷积编码与Viterbi译码的FPGA实现

2.1.1 (2,1,7)卷积编码

典型的(n,m,k)卷积码编码器是指输入位数为m、输出位数为n、约束长度为k的卷积码编码器,其编码速率为m/n。一个(2,1,7)的卷积编码器如图2所示,可用六个移位寄存器实现。

2.1.2 Viterbi译码

Viterbi译码算法是Viterbi于1967年提出的一种概率译码算法。其主要思想就是最大似然译码。译码时,将接收序列与根据编码产生的网格图上面的所有路径进行比较,求出其汉明距离或欧式距离,选出具有最小距离的路径,那么这条路径上的序列与发送序列相同的可能性最大。在AWGN信道中,当使用欧式距离时,Viterbi算法的性能最好。因此,这种算法是最优最大似然译码算法。Viterbi译码器分为硬判决译码器和软判决译码器,软判决译码器与硬判决译码器相比有2~3dB的增益,而译码器结构复杂度增加不大。

采用QPSK调制方式和卷积编码实现中频调制解调系统的FPGA功能

由Viterbi算法的基本原理可得典型的Viterbi译码器,如图3所示。

分支路径度量产生单元BMG(Branch Metric Generate)用于产生接收序列与状态转移分支上编码输出数据之间的距离。令长度为n的接收信号为R=(r1,…rn),与之相应的发送信号为C=(c1,…cn)。因为具有最小欧式距离的路径也就是具有最大相关的路径,所以定义分支路径上的度量为:

由于此分支路径度量没有平方运算,所以可将状态转移分支上的编码输出数据存储在查找表内,这样只需进行加减和查表运算,大大减小了实现的复杂程度。以上计算公式中数值为连续值,而本设计采用的是软判决译码器,故只需对输入的接收信号进行均匀量化即可(量化比特数为q)。

加比选单元ACS(Add-Compare-Select)模块包括若干个单个状态加比选模块ACSU,一个ACSU模块执行一个状态 的路径度量升级。ACSU模块的具体个数根据译码器的速率要求而定。对于低速的译码器,为了节约芯片的面积,可以使用较少的ACSU模块进行时分复用;而在高速Viterbi译码器的设计中,则采用全并行的结构,ACSU模块的个数等于网格图上的状态数N=2k-1。译码器开始工作时,给路径度量设定一个初始化正值。在度量升级过程中,路径度量的不断累加会造成溢出。因为在度量升级时只是比较大小,所以在每次度量升级之后,所有的路径度量值减去路径度量值中的最小值,而不会影响路径度量向的大小关系。同时,为了下次路径度量升级不出现负值,需要对所有的度量值加上一个恒定常数。经过归一化处理后的路径度量,其最大值与最小值相差不超过2 q(k-1)。

所以,对于q比特而软判决编码长度为k的Viterbi译码器,其路径度量长度为q+log2(k-1)比特。

MLD(Most-Likelihood-Decision)模块用于在所有状态的路径度量中找出最大值,具有最大路径度量的幸存路径便是最大似然路径。在时刻L时,MLD电路判决最大似然路径,将其末端节点状态送至TB模块。同时为了保证下次的路径度量升级不出现负值,还要找出最小值送到PMMI模块,在其中进行归一化处理。

PMMI模块和SPMI模块分别是ACS模块与路径度量存储器PMM(Path Metric Memory)之间和幸存路存储器SPM(Survivor Path Memory)与MLD模块之间的接口模块。同时,TB(TraceBack)模块也通过SPMI模块读取幸存路径存储器信息。针对不同的存储方式,SPMI和PMMI的复杂程度也不同。ACSU模块的复用程度越高,其接口电路越复杂。

TB模块从SPM中读取当前时刻64条路径的幸存信息,根据末端状态可以找到相应的最大似然路径在时刻t的幸存信息,从而找到t-1时刻最大似然路径上的状态。依此类推,直至找到最大似然路径在t-L+1时刻的状态,状态的最高位即为译码输出。

采用QPSK调制方式和卷积编码实现中频调制解调系统的FPGA功能

FPGA可以实现流水线操作,而各个模块可以同时进行工作,所以需要控制模块处理各个模块间的时序关系。每个子模块都有一个控制信号,使得输入数据可以在各个模块之间进行流水操作。

由于本方案是基于各个功能单元自上至下设计的,灵活性较大,稍加修改子模块,便可以用于实现各种卷积码的Viterbi译码器。

2.2 QPSK调制与解调的FPGA实现

QPSK调制模块由成形滤波和上变频两部分组成。成形滤波具有两个功能,即限带和抗码间干扰。成形滤波采用查表的方式实现,四倍内插,升余弦滚降。形成后的数据与NCO产生的本地载波进行上变频运算。

QPSK解调的结构框图如图4所示。解调模块由下变频、低通滤波、根升余弦滤波和载波同步几部分组成。I、Q两路的调制信号先经过本地载波NCO下变频,再通过低通滤波器LPF得到基带信号。基带信号需要进行相应的根升余弦滤波。由于本地载波与发端载频之间有一定的偏差,所以要根据解调后的信号估计频差并修改要地载波NCO的参数,实现载波同步。数据经过根升余弦滤波后进行差分解码,解调后头这入译码器单元。

采用QPSK调制方式和卷积编码实现中频调制解调系统的FPGA功能

3 系统性能分析与结论

综上所述,系统主要功能都是在FPGA内完成的。本文选择Xilinx公司的100万门FPGA芯片XC2V1000,在ISE 6.2i环境下进行编程开发。系统的资源占用情况如表1所示。

为了测试系统在噪声下的误码率性能,在发端和收端之间引入噪声源,在70MHz中频上进行数据传输。使用误码率分析仪进行现场测试,获得的测试误码率曲线如图5所示。为了方便比较,图中给出了未编码传输系统的理想误码率曲线。由于定点实现、定时同步、载波同步等误差因素,调制解调的实现损耗将近1dB;而viterbi译码的量化输入和截短译码(本方案采用3比特量化和64步截短译码)带来的实现损失约为1dB。(2,1,7)卷积码的编码增益约为5~6dB,所以测试误码率曲线与未编码传输系统的理想误码率曲线之间的差距是3~4dB。换言之,本系统的实现增益为3~4dB。

综上所述,本系统设计简单、功耗低、性能良好,可在中频范围内进行高速数据的可靠传输。在不改变系统结构的情况下,稍加修改可广泛应用于其它类型的编码调制系统中。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1646

    文章

    22097

    浏览量

    620711
  • 芯片
    +关注

    关注

    460

    文章

    52736

    浏览量

    444128
  • QPSK
    +关注

    关注

    2

    文章

    63

    浏览量

    27175
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    QPSK调制解调

    QPSK即正交相移调制。在看QPSK之前,先看一下通信系统调制解调的过程为了方便分析,先假设这
    发表于 11-30 18:26

    基于VHDL方式实现QPSK数字调制解调电路的设计

    本文基于VHDL方式实现QPSK数字调制解调电路的设计,通过QuartusII软件建模对程序进行仿真,并通过引脚锁定,下载到
    发表于 12-18 06:03

    如何采用FPGA实现QPSK调制器?

    QPSK调制的基本原理QPSK调制电路的FPGA实现
    发表于 04-08 06:01

    如何利用FPGA实现中频调制解调系统

    中频调制解调系统具有哪些特点?如何利用FPGA实现中频
    发表于 04-28 07:21

    基于FPGAQPSK 调制解调电路设计与实现Design

    数字调制解调技术在数字通信中占有非常重要的地位,数字通信技术与FPGA的结合是现代通信系统发展的一个必然趋势。文中介绍了QPSK
    发表于 06-09 09:06 ?125次下载

    基于F PGA的QPS K调制解调电路设计与实现

    数字调制解调技术在数字通信中占有非常重要的地位,数字通信技术与FPGA的结合是现代通信系统发展的一个必然趋势。文中介绍了QPSK
    发表于 07-22 15:42 ?0次下载

    基于FPGAQPSK解调器的设计与实现

    根据软件无线电的思想,用可编程器件FPGA 实现QPSK 解调采用带通采样技术对中频为70M
    发表于 08-27 11:00 ?68次下载

    QPSK调制器的FPGA实现

    提出了一种基于FPGA 实现QPSK 调制器的方法。以FPGA 实现DDS,通过对DDS 信号输
    发表于 12-18 11:57 ?66次下载

    QPSK调制

    QPSK调制器 本文深入浅出地向读者介绍了QPSK调制解调器的工
    发表于 05-07 13:42 ?1845次阅读

    π/4-QPSK调制方式及其与GSMK调制方式的比较

    【摘 要】 简略介绍了QPSK,π/4-QPSK调制方法及基于此的π/4-DQPSK调制方法,就π/4-QPSK
    发表于 05-15 22:32 ?1.9w次阅读
    π/4-<b class='flag-5'>QPSK</b><b class='flag-5'>调制</b><b class='flag-5'>方式</b>及其与GSMK<b class='flag-5'>调制</b><b class='flag-5'>方式</b>的比较

    基于VHDL的QPSK调制解调系统设计与仿真

    文中详细介绍了QPSK技术的工作原理和QPSK调制解调系统设计方案,并通过VHDL语言编写调制
    发表于 06-08 17:47 ?92次下载
    基于VHDL的<b class='flag-5'>QPSK</b><b class='flag-5'>调制</b><b class='flag-5'>解调</b><b class='flag-5'>系统</b>设计与仿真

    QPSK调制解调

    QPSK调制解调的整个过程的讲解和源代码,之后会长传在FPGA上的实现和调试
    发表于 12-12 21:36 ?72次下载

    采用AD9789与FPGA相结合实现全数字QPSK射频调制的方案

    摘要: 一种采用AD9789与FPGA相结合,在FPGA实现全数字QPSK射频调制的方案。介绍
    发表于 11-25 01:34 ?4450次阅读
    <b class='flag-5'>采用</b>AD9789与<b class='flag-5'>FPGA</b>相结合<b class='flag-5'>实现</b>全数字<b class='flag-5'>QPSK</b>射频<b class='flag-5'>调制</b>的方案

    基于QPSK数字调制解调FPGA实现

    实现,其具有频谱利用率高、频谱特性好、抗干扰性能强、传输速率快等特点。运用verilog编写在QPSK调制解调代码以及ISE自带的IP CORE在Xilinx公司的
    的头像 发表于 02-20 07:50 ?2w次阅读
    基于<b class='flag-5'>QPSK</b>数字<b class='flag-5'>调制</b><b class='flag-5'>解调</b>的<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>

    如何使用FPGA实现QPSK调制器的设计与实现

    采用FPGA设计芯片技术对多进制数字通信技术的QPSK调制实现进行了设计研究,将调制器中原有多
    发表于 07-22 17:51 ?15次下载
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b><b class='flag-5'>QPSK</b><b class='flag-5'>调制</b>器的设计与<b class='flag-5'>实现</b>