短波扩频通信系统中数字相关器的FPGA设计与实现
摘要:基于FPGA设计的数字相关器,对前端模数/转换器在384kbps采样率下采得的数据进行希尔波特变换,再与本地序列做相关运算,最后将相关结果送给DSP,供DSP做进一步的处理。介绍了所选用的Stratix芯片,阐述了FPGA内部子模块的功能和设计实现方法,对所设计的FPGA数字相关器进行了仿真和校验,结果达到了设计要求。
关键词:数字相关器 FPGA 希尔波特变换 Stratix
采用FPGA器件可以将原来的电路板级产品集成为芯片级产品,从而降低了功耗、提高了可靠性,同时还可以很方便地对设计进行在线修改。电路设计者可以通过软件编程,经过设计输入、仿真、测试和校验,用硬件实现特定的数字信号处理算法。这种方法由于具有通用性强的特点并可以实现算法的并行运算,因此无论是作为独立的数字信号处理器,还是作为DSP芯片的协处理器,目前都是比较活跃的研究领域。javascript:window.open(this.src);" style="cursor:pointer;"/>
短波通信具有设备简单、通信距离远、机动灵活、价格低廉和抗毁性强的特点,有着重要的应用价值。在短波通信系统中,接收方在信号检测、同步的过程中,要进行大量的乘加操作来做相关运算。在传输速率较高、样点间隔较小的情况下,完全由系统中央DSP处理器进行运算,很难实现实时处理。利用FPGA的特点,把信号同步数字相关部分分离出来,设计一个专用的数字相关器,作为中央DSP处理器的协处理器,来分担这部分工作,是一个很好的解决方案。本文阐述的就是这样一个应用在短波扩频通信系统的接收方中,完成数字相关功能的基于FPGA设计的相关器。
1 Stratix系列芯片简介
本文采用Stratix系列芯片实现数字相关器。Stratix系列是著名的可编程逻辑器件供应商Altera公司于2002年新推出的FPGA产品。其主要特点是:采用1.5V内核,0.13μm全铜工艺,容量为10570~114140个逻辑单元,内嵌多达10Mbit的三种RAM块,即512bit容量的小型RAM,4KB容量的标准RAM,512KB的大容量RAM;具有True-LVDS(tm)电路,支持LVDS、LVPECL、PCML和HyperTranport(tm)差分I/O电气标准,且有高速通信接口;增加了片内终端匹配电阻,提高了信号完整性,简化了PCB布线;提供了完整的时钟管理方案,具有层次化的结构和多达12个锁相环(PLL)。
javascript:window.open(this.src);" style="cursor:pointer;"/>
该系列芯片的最大特色是内嵌硬件乘法器和乘加结构的可编程DSP模块,特别适于实现高速信号处理。这种DSP模块是高性能的嵌入算术单元,它的运行速度可以达到250MHz,每个DSP模块的数据吞吐性能可以高达2.0GMACS。它可以配置为硬件乘法器、加减法器、累加器和流水线寄存器,如表1所示。
表1 单个DSP单元的设置模式
模 式 | 9bitx9bit | 18bitx18bit | 36bitx36bit |
单个乘法器 | 8个 | 4个 | 1个 |
相乘累加器 | 2个(结果为52bit) | 2个(结果52bit) | —— |
2个乘积求和 | 4个 | 2个 | —— |
4个乘积求和 | 2个 | 1个 | —— |
Stratix系列具有多达28个DSP模块,可配置为224个(9bit×9bit)嵌入乘法器,可以为大数据吞吐量的应用提供灵活、高效和有价值的方案。这些DSP模块可以实现多种典型的DSP功能,如有限冲击响应(FIR)滤波、快速傅立叶变换(FFT)功能、相关器和加密/解密功能等。
Stratix系列由Altera公司提供的新一代开发软件Quartus II支持。此软件加强了网络功能,设计人员可以直接通过Internet获得Altera的技术支持。Quartus II软件中的Megawizard Plus_In Manager工具可以很方便地对一些常用的基本模块进行定制,以满足不同的需要;设计人员还可以在定制后的基础上,进行进一步的改进,扩展出更多的功能。
2 FPGA模块设计
数字相关器在短波扩频通信系统中的具体功能是:接收A/D采样后的采样信号,对采样信号进行希尔波特变换,得到与其正交的另一路信号;然后以这两路信号分别作为实部和虚部,与本地序列进行相关运算,将相关值的实部和虚部送给DSP做后续处理,如图1所示。只有包含有正确同步头信息的信号经采样后与本地序列作相关运算,得到的相关值的模值才会出现峰值;对应于发端特定的同步头帧结构,相关后的相关峰也会出现规律性的特征。这样,DSP才可以通过先对相关值求模,然后对模值出现的峰值的间隔、幅值和数目等信息进行判断和进一步处理,来确定是否捕捉到信号。下面具体介绍完成上述数字相关功能的FPGA的设计。FPGA设计的内部结构框图如图2所示。
javascript:window.open(this.src);" style="cursor:pointer;"/>
2.1 希尔波特变换部分
系统接收到的射频信号经过前端预处理后,送到A/D采样,然后以串行方式输出样点值到FPGA。每个样点值是用10bit的二进制补码表示的,需先通过一个串/并转换器转化为宽度为10bit的并行信号。样点值首先要进行的是希尔波特变换,希尔波特变换有多种实现方法,这里采用一个129阶的滤波器来实现,滤波器的抽头系数由MATLAB函数remez产生,如图3所示。
将10bit的并行信号输入到一个10bit×129的RAM模块,采用循环写入的方式,RAM模块类似一个桶形循环存储器?熏较早存入RAM的信号值就会被新来的数据覆盖掉,这样就与图3所示的输入信号先进先出是等效的。经MATLAB函数remez产生的抽头系数是一组变换范围很大的带有小数部分的十进制数,为了能够进行后续的硬件运算,需要对这组十进制数作归一量化处理,把它们映射到宽度为14bit的有符号的二进制数所能表示的范围上去,即转化为14bit的二进制补码数。这组抽头系数在运算的过程中是固定不变的,所以可以把它们固化在片内ROM模块中,与RAM中的值同步读出,再经过两组D触发器对齐后,送到一个10bit×14bit的有符号数的相乘累加器做相乘累加运算。相乘后的数据宽度是24bit,但是由于对固定数据宽度的有符号的二进制数进行加减运算时,会出现结果超出固定数据宽度所能表示的范围,即溢出现象,导致运算结果错误,所以就要为这里进行的129次累加操作留有一定的数据宽度富裕量,每次把乘积符号扩展4bit再进行累加操作,这样输出就是一个28bit的有符号数,即是所需的虚部。由于在将抽头系数从十进制到二进制的归一量化过程中,人为地将其扩大了许多倍,所以与每个虚部相对应的实部从中心抽头输出后,需经过一个固定倍数的乘法器,扩大同样的倍数来与虚部保持一致。
javascript:window.open(this.src);" style="cursor:pointer;"/>