设计测试
摘 要: 基于System Generator软件,在xc7z020-1clg484芯片上设计了一种高速盲均衡器。该盲均衡器由延迟模块、滤波模块、误差计算模块和系数更新模块构成,采用MCMA算法,使用并行结构和流水线技术。其数据位宽为16 bit,阶数为13阶,能够对16QAM和QPSK信号进行均衡,输入速率达到67 Mb/s。硬件协同仿真结果表明,该高速盲均衡器是有效的。
在无线通信中,由于受多径效应、噪声、衰落等的影响,接收端信号不可避免地存在码间干扰,这样会限制无线通信系统的最大传输率,并导致接收端产生较大的误码率。均衡器可以消除码间干扰,但自适应均衡器具有三大局限性:(1)在多点无线网络通信中,如果发送的周期性训练序列被中断,将导致无法通信;(2)发送周期性的训练序列增加了系统传输的额外开销,降低了传输效率;(3)在一些特殊环境,接收端根本不可能得到发送端的训练序列[1]。基于以上原因,所以提出了盲均衡器。本文采用QPSK和16QAM两种调制方式,使用System Generator软件对其进行设计。首先在Simulink下对MCMA算法进行浮点建模仿真,再利用Xilinx公司模块进行定点仿真,而后由定点仿真模型直接生成FPGA代码,最后下载到芯片中进行测试。
恒模算法(CMA)是一种在实际生活中广泛应用的盲均衡算法[2-4],但是CMA算法存在着信号收敛速度慢、剩余误差大和相位偏移等局限性。因此,修正恒模算法(MCMA)被提出。MCMA算法[5]将信号的虚部和实部分开进行处理,对信号的虚部和实部分别进行均衡,使其信号中含有相位信息,这样可以有效地对信道引起的相位偏移进行补偿,使星座图输出变正。
2.1 总体结构
本文利用xc7z020-1clg484芯片实现MCMA算法盲均衡器,由于芯片资源比较丰富,采用了自上而下的设计方法,并采用流水线技术和并行结构。将总体结构按功能分成滤波器模块、误差计算模块、系更新模块、数据延迟模块4个模块,并分别对模块进行设计。盲均衡器总体结构图如图1所示。
2.2 数据延迟模块设计
数据延迟模块的输入信号有I路和Q路,I路代表信号的虚部,Q路代表信号的实部,每一路都是16 bit并行输入,1 bit为符号位,其余15 bit为小数位的数据。数据延迟模块的结构示意图如图2所示。由于后面设计的滤波器模块要采用并行结构,完成滤波器输入信号与所有抽头系数的相乘,所以数据延迟模块将均衡器输入信号(Qdata和Idata)的所有延迟信号(Qdata0~Qdata12和Idata0~Idata12)并行输出,并将它们输入到滤波器模块的输入端,用于和相应的抽头系数进行并行相乘。同时,这26路并行数据还将输入到系数更新模块,完成所有抽头系数的并行更新。
2.3 滤波器模块设计
滤波器的子模块如图3所示。滤波器模块的输入信号一部分是来自数据延迟模块输出的均衡器输入信号的各延迟信号(Qdata0~Qdata12)和(Idata0~Idata12),这部分信号的数据宽度为16 bit,1 bit为符号位,其余15 bit为小数位的数据。由于滤波器的抽头系数是不断更新的,所以该模块还有一部分输入信号来自系数更新模块更新后的抽头系数,用于与相应的输入信号相乘完成卷积运算,这部分信号的数据宽度为16 bit,其中1 bit为符号位,1 bit为整数位,其余14 bit为小数位。滤波器模块由4路13阶FIR滤波器(QFIR0、QFIR1、IFIR0、IFIR1),一个减法器和一个加法器构成。在本文中,QFIR0、QFIR1、IFIR0和IFIR1采用相同的并行流水线滤波器结构。Qdata0~Qdata12和Idata0~Idata12经过滤波器模块处理后,IFR0和QFR1信号相减得到虚部输出信号Y_I(n),QFIR0和IFR1信号相加得到实部输出信号Y_Q(n)。这两路信号的数据位宽都是36 bit,其中1 bit为符号位,5 bit为整数位,其余30 bit为小数位的数据。这两路信号既要作为盲均衡器的输出信号,又要经过截取并重新定义,作为误差模块的输入信号。
2.4 误差模块设计
误差模块由虚部和实部误差模块构成,两个模块结构相同,其中MCMA误差计算虚部模块的结构图如图4所示。MCMA误差计算模块中主要包含数据的截取、重新定义、减法器和乘法器。根据定点仿真得出的结果,需要首先对滤波器模块的虚部输出信号Y_I(n)和实部输出信号Y_Q(n)进行数据截取,截取为16 bit数据,舍弃低20位。再重新定义为1 bit为符号位、5 bit为整数位、10 bit为小数位的数据。这两个信号经过取模后,分别输入到16 bit×16 bit的硬核乘法器中,得到32 bit的绝对值的平方,再将得到的数据与32 bit减法器中的常模值相减,最后送到32 bit×16 bit的硬核乘法器中相乘,舍弃低24 bit,重新定义为1 bit为符号位、17 bit为整数位、其余6 bit为小数位的数据,便得到MCMA算法虚部的误差信号。
2.5 系数更新模块设计
系数更新模块主要由1个数据延时模块、13个系数增量模块、13个新系数计算模块构成。由于整个盲均衡器输入信号比输出信号晚16个时钟周期,为了使误差信号与输入信号同时输入到系数增量模块,这里与输入信号的信号延迟模块有点不同,需要延迟16个时钟周期。系数更新模块都对应一个系数增量模块,如图5所示,因此需要调用该模块13次,滤波器的每个系数也都对应一个新系数计算模块,如图6所示。所以新系数计算模块也需要调用13次,才能完成所有的运算并输出更新后的滤波系数。
本文采用Xilinx公司的System Generator软件[6]进行硬件协同仿真,如图7所示,实际上就是PC和开发板的协同仿真,把硬件模块下载到开发板中进行仿真,硬件模块和PC共享存储器交换数据。协同仿真参数设置如下:信源采用功率归一化的16QAM[7]和QPSK信号,信噪比为25 dB,步长为0.002,信道参数为[1,0,0.299 7,0,0,-0.003 6],该信道的频率响应起伏较大。MCMA均衡器采用中心抽头[8]初始化,将I路信号中第7路的抽头系数设为1,其他抽头系数设为0,长度为13,采样间隔时间为1/1 000 s。
在ISE软件对整个工程文件进行综合、转换、映射、布局布线后,得到的静态时间报告如表1所示。从中可以看出,输入速率达到67 Mb/s。16QAM和QPSK信号经过信道衰减、噪声过后,均衡前的星座图如图8和图9所示;硬件协同仿真后,均衡星座图如图10和图11所示。从图8~图11可以看出,MCMA算法设计是有效的,均衡信号的同时还纠正了相位偏移。
在无线非协作通信中,盲均衡器是非常关键的信号处理单元,消耗硬件资源很大。本文基于System Generator软件,阐述了MCMA算法[9]的实现过程,通过优化Xilinx公司模块的参数配置,合理地利用xc7z020-1clg484芯片的资源,实现了高速盲均衡器,使输入速度达到67 Mb/s。与传统设计方法相比,提高了设计效率,对当前和今后复杂、高速的信号处理单元设计有一定借鉴意义。
全部0条评论
快来发表一下你的评论吧 !