首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

QPSK数字调制解调的FPGA实现,包括源程序(4)

QPSK数字调制解调的FPGA实现,包括源程序(4)

6.QPSK解调的FPGA实现
        经过调制后的数据具有50Mbit/s的信息速率,经过有符号数乘法模块,数据分别与相互正交的两正弦波相乘,相乘后的数据再经过FIR低通滤波器模块,滤除掉高频信号,经定时抽判模块生成码率为1.25Mbit/s的两列数据,最后经过并串变换模块合并为原先的2.5Mbit/s的符号速率。

       

        系统框图


        Verilog代码各个文件的逻辑关系入下图所示:

       

        各个文件的逻辑关系


        其中TEST_QPSK.V文件是测试文件,用来测试编写的Verilog代码是否正确,其中ROM文件中存放的经过MATLAB定点数仿真生成的QPSK调制数据,共有1K字节的数据量。测试文件通过没个时钟周期将ROM中存放的调制数据输出到编写的QPSKR文件中,实现解调测试。
        QPSK.V文件是用到的解调文件的最上层文件,其对外端口如下:
        module QPSKR(clk, en, DIN, dout, ready
               );

               input clk;
               input en;
               input [15:0]DIN;
               output [1:0]dout;
               output ready;

        用两路正交的相干载波去解调,可以很容易地分离这两路正交的2PSK信号。相干解调后两路并行码元a和b,经过并/串变换后,成为串行数据输出。

        输入的数据与已经锁定的正交载波相乘后的输出结果如下图所示,图中只列出了一路信号的输出结果。

       

        未滤波前的输出数据


        本文的一个设计重点在于滤波器的设计,使用MATLAB中滤波器协同设计单元,如下图所示,可以生成7阶滤波器,其系数为[0.0195568849377802      0.0684534436681266    0.136904053813160      0.188242810004127      0.188242810004127       0.136904053813160      0.0684534436681266    0.0195568849377802];


        经过定点量化后得到0,23170,32767,23170,0,42366,32769,42366;将其写入到coe文件中作为滤波器的抽头系数。

       

        FDATOOL工具输出结果


        经过FIR低通滤波器后的输出结果如下图所示:

       

        FIR滤波器输出的两路信号


        经过滤波器后的频谱如下所示,从图中可以看出带外信号已经衰减到很小值。

       

        经过滤波器后的信号频谱


        经过定时提取模块的抽判最后两路信号的输出结果如下,从图中我们可以看到dout输出的数据速率为1.25Mbit/s。

       

        两路解调后的数据输出


        总上所述,当顶层模块检测到有有效数据到达时,en信号被置为高电平,此时信号输入到后解调模块,在输出端口,当ready信号有效时,在dout端口会有有效的数据输出。输出的数据如下所示:

       

继承事业,薪火相传
返回列表