基于FPGA的QPSK高速数字调制系统的研究与实现
2008-07-29
作者:温晓洁 张 辉
摘 要: 介绍了一种基于FPGA的QPSK高速数字" title="高速数字">高速数字调制系统的实现方案。先从调制系统的基本框图入手,简要介绍其实现原理及流程;然后着重介绍FPGA功能模块的软件编程、优化及整个系统的性能。
关键词: FPGA QPSK 直接序列扩频" title="扩频">扩频 高速调制
1 系统实现原理及流程
本调制系统的设计目的是实现高速数字图像传输。系统的硬件部分主要包括FPGA、A/D转换器、D/A转换器、正交调制器、输出电路等。根据数字图像传输的特点,采用扩频调制技术。这是因为扩频方式的抗干扰、抗衰落及抗阻塞能力强,而且扩频信号的功率谱密度很低,有利于隐蔽。同时,为了提高数据传输的可靠性和有效性,降低信号失真度,减少码间干扰,在调制系统中还加入编码、交织及匹配滤波" title="匹配滤波">匹配滤波。这些处理都在FPGA中实现,使整个调制系统具有可编程的特点,易于根据实际要求进行功能上的扩展和缩减。系统的原理框图如图1所示。
电路的具体工作过程为:图像信号经过A/D转换器AD9214完成模/数转换,输出信号送入FPGA。由FPGA对信号进行编码、交织、串/并变换、扩频调制及匹配滤波。FPGA输出两路数字信号,经过双D/A转换器AD9763实现数/模转换,输出两路模拟信号。这两路信号经过正交调制器AD8346正交调制输出,实现QPSK调制。因为正交调制器输出的信号功率较小,所以将其经过模拟放大器放大和带通滤波,之后再送到输出。
在整个调制系统中,FPGA模块的软件设计是最为重要的,也是进行系统优化的主要部分,它的优劣会直接影响整个系统的性能。下面对这部分进行详细的介绍。
2 软件部分实现原理
FPGA模块的软件设计部分包括以下几个方面:编码、交织、串并变换、扩频、匹配滤波以及复位和时钟。
2.1 编码和交织
数字通信中经常使用信道编码加交织模块来提高数据传输的可靠性和有效性。
为了达到一定的增益要求,选择卷积码中纯编码增益为3.01的(2,1,6)码(在大信噪比下),并对其进行增信删余。这样既可以发挥(2,1,6)码纯编码增益大、能够解决接收信道符号极性上的模糊性、实现最佳和准最佳译码容易的良好性能,又能提高信道编码的码速率。该码增信删余成为2/3码率的码,最佳生成多项式为(171,133)(八进制),即:
G(D)=[1+D2+D5+D6+D3 1+D+D2+D3+D6]。由生成多项式可得到编码框图(如图2所示)。在删除比特分布图中,“1”表示这位不删除,“0”表示这位删除。
交织是将数据的序列打乱,使交织前后数据序列的相关性减弱,这样可以大大降低数据突发错误产生的影响。而且,如果交织器设计良好,那么传送时的突发错误将随机地分布,这样采用编译码技术就更容易纠正。交织技术主要分为块交织和卷积交织。因为本系统的数据分帧传输,所以交织部分选用块交织,一帧数据为1764个bit,交织块为42bit×42bit。
2.2 串/并变换及扩频模块
经过交织器输出的数据为一路串行数据,要实现QPSK正交调制必须产生两路并行数据,因此需要进行串/并变换。输入端口每输入两比特数据,两个输出端口同时输出一比特数据。串/并变换的输出数据要进行扩频调制,每输入两比特的信息时便输出与之对应的一组64位PN序列。扩频序列应具有良好的伪随机特性和相关特性,扩频通信系统的许多优异特性都与扩频码的设计密切相关。这里选择平衡Gold码序列作为系统的扩频序列。Gold码继承了m序列的许多优点,而可用的条数又远远大于m序列,是作为扩频码的良好码型。
2.3 滤波模块
扩频以后的码元为方波,其频谱是无限宽的,通过有限带宽的信道传输,方波会在时间上扩展,造成码间干扰,导致接收机在检测一个码元时发生错误的概率增大。所以在调制系统中需要对信号进行滤波,以减少失真和符号间干扰(ISI)。在这里,选择具有均方升余弦滚降特性的滤波器。具有升余弦滚降特性的H(ω)可表示为:
发送滤波器的频率响应为GT(f),接收端" title="接收端">接收端滤波器的频率响应为GR(f),则GT(f)·GR(f)=H(ω)。对于线性相位的FIR滤波器来说,使用窗函数法,则发送端匹配滤波器的传输函数为:
取不同的窗函数,滤波器的频谱特性不同。这里选择哈明窗作为窗函数,这样可以避免产生吉布斯现象。取滚降系数α=0.4,抽样步长Ts=Tc/6,阶数N=48。图3为滤波器频谱特性的仿真结果。
2.4 时钟和复位模块
整个系统都是在时钟的控制下进行工作的。系统外部有一个时钟源,通过芯片内部的CLKPLL模块对外部时钟进行倍频,然后根据FPGA各个模块的需要进行分频。系统在加电时需要对信号和变量进行初始化,特别是当信号和变量的初始值不为零时,复位模块就不可缺少。
3 具体实现及技巧
3.1 编码模块的简化
在编码过程中,使用(2,1,6)码进行编码,删去编码输出第四位。经过仔细的研究发现,由于数据是分帧传输的,所以删去哪一位并不重要,只要能保证帧头和相应的数据位对齐,在解卷积的时候就能得到正确的结果。这样就使得编码的程序得到简化。例如,编码后,删余前的数据为1,2,3,4,5,6,7,8,9,10,11,12,帧头与数据1对齐。删除第四位后成为1,2,3,5,6,7,9,10,11。在接收端,补位后的数据为1,2,3,X,5,6,7,X,9,10,11,X。可正确解调为1,2,3,4,5,6,7,8, 9,10,11,12。若删除第三位,则成为1,2,4, 5,6,8, 9,10,12。若帧头与数据1之前的那一位(假设为0)对齐,则补位后的数据为0,1,2,X,4,5,6,X,8,9,10,X,12;亦可正确解调。所以在编写程序的时候,可以根据输入信号和输出信号时钟之间的关系,选择最简单的删除位,然后调整帧头的位置,就可以实现接收端所要求的对第4位的删除。
3.2 交织模块的优化设计
交织分为两个模块:写入模块和读出模块,二者共用一个存储模块。存储模块的大小为1764bit,42行×42列。首先,写入模块从第1行开始按行写入,在写完第41行后,读出模块从第1列开始按列逐列读出,直至读完所有列,改换成按行读出,写入模块在写完第42行以后,改换成按列写入。这样,交织模块的延时约为(1764-42)/576k=2.99ms(576k为时钟频率)。无论读模块还是写模块,在完成一整块数据的操作以后,改变读写方式(行换列,列换行),这样做的目的是为了节省存储容量。因为FPGA内部的存储器容量有限,用相对复杂的地址计算,来换取占用较小的存储容量。
3.3 滤波器的优化设计
滤波器的传输函数选择好后,通过Matlab计算滤波器的各个抽头系数,然后将抽头系数量化为16位的二进制定点数,写成一个VHDL可调用的包文件。
实现对信号的滤波,实际上就是完成每个信号和各个抽头系数之间的加乘运算。由于滤波器的输入为1或0,故加乘运算可简化为抽头系数之间的加减运算。具体实现时,48阶的滤波器是由48个相似的小模块级联而成的,每一个小模块有四个输入,一个输出。四个输入分别为时钟clk、数据data、复位信号rst和前一个小模块的输出preout。复位信号rst初始化后,在时钟的控制下读入data和preout,根据data的极性决定对preout加上还是减去包文件中与此模块对应的滤波器的系数,将运算结果输出,作为下一级的preout。级联时,采用倒置的连接方式,即输入的数据data将同时到达每一个小模块,这样就不存在抽头时延" title="时延">时延,其时延存在于加法链中。这样可以减少资源的占有数。滤波模块的原理图如图4所示。
4 系统性能
该系统的主要性能指标为:
信号中频为70MHz;
信号带宽≤20MHz;
处理时延≤20ms(调制系统和解调系统的总处理时延);
编码增益为4dB。
由图5可以看出信号带宽约为18MHz,已满足系统要求。
图6为调制系统和解调系统的总处理延时,其中CH1为调制系统,CH2为解调系统。从调制端接收到一个下脉冲,到解调端将其解调出来总延时为9.36ms。调制系统的时延主要存在于交织模块,约为(1764-42)/576k=2.99ms。解调系统的时延主要存在于解交织和译码,约为(1764-42)/576k+(1176+32)/384k=6.14ms。2.99+6.14=9.13ms,再加上其它模块的延时,与实测的结果相符合,也满足系统要求。
(2,1,6)码理论上的纯编码增益在大信噪比下为3.01。实际上,编码增益的大小还与译码的算法有关。本编译码系统的编码增益为3.01+2(软判决)-0.5(增信删余),为4.51,满足系统要求。
该QPSK高速调制系统包含了编码、交织、扩频调制等现代调制系统中常用的技术,是一个比较完整的调制系统。同时,使用FPGA加以实现,使得对于该系统的功能扩展和缩减变得容易。FPGA的容量有限,而且一般烧到片子里的程序最好不要超过总容量的90%,所以,对于程序的优化是非常必要的。例如,通过优化设计,可使最耗费资源的滤波器模块的资源占用量从80%下降到40%(XC2S200的总容量为20万门),这是相当可观的。不仅使整个系统的实现成为可能,而且为以后功能扩展预留下比较多的资源。该系统已应用于图像传输系统,并且工作稳定可靠。
参考文献
1 张 辉,曹丽娜.现代通信原理与技术.西安:西安电子科技大学出版社,2002.1
2 Stefan Sjoholm,Lennart Lindh著,边计年,薛宏熙译.用VHDL设计电子线路.北京:清华大学出版社,2000