1 系统器件的选用
高速DSP具有精度高、灵活性大,可以采用多种性能优良的数字信号处理算法,其强大的数据处理能力适用于高速、重复性和数值运算密集型的实时处理。本设计选用TI公司的TMS320C6201 DSP,其时钟频率200MHz、最高1 600MIPS的数据处理能力,可以满足软件无线电的零中频信号处理要求。
由于ADC的高数据率输出,用DSP进行实时处理会有很大压力。在DSP进行运算之前,需要进行数字下变频以降低数据率。设计选用Harris公司的HSP50214B数字下变频器件, HSP50214B输入数据为14位,最大输入速率为65MS/s,支持偏移码和2的补码两种输入格式。最大抽取因子为2,具备多种输出格式,包括I/Q通道数据、幅度、相位和频率输出等,能够直接解调AM、FM和QASK等信号,内部有256个控制字,用户可以由此设置载波中心频率、抽取因子、输出格式与方式等参数。内部结构如图1所示。
HSP50214B的输出方式有三种模式:直接并行输出、缓冲模式输出和串行输出。本设计HSP50214B采用并行直接输出模式,此模式下,HSP50214B输出两组16位的实时数据:AOUT(15:0)和BOUT(15:0),AOUT端口可以输出数据I、幅度和频率。BOUT端口可以输出数据Q、相位和幅度。
2 FIFO双向接口设计
工作过程:ADC输出的14bit中频信号经锁存器输入到HSP50214B,在HSP50214B中经程控的NCO驱动混频器后,混频得到更低的中频信号或零中频信号,该信号经积分梳状滤波器(CIC)和有限冲激响应滤波器(FIR)抽取滤波,最后将得到的信号以所需格式输出送DSP处理。
如果DDC直接与DSP的外部存储器接口(EMIF)连接传输数据,由于DSP需扩展外部存储器,与采样数据输入共用仅有的一条外部总线,CPU要进行外部存储器的访问,不允许数据采集始终占用外部总线。另外,如果存储控制系统不能及时接收数据,上次采样的数据会马上被下次的数据更新,造成数据丢失。因此DDC与DSP之间需采用高速缓存。
目前常用的缓存有FIFO、SRAM及双口RAM等。双口RAM和SRAM存储量较大,但必须配以复杂的地址发生器。本设计只需要单向的数据传输,对于FIFO芯片,数据顺序进出,且允许数据以不同的速率写入和读出,外围电路简单,所以选用TI公司SN74ACT7804 FIFO作为数据缓存,在HSP50214B与DSP之间将两片FIFO并列,分别缓存HSP50214B输出的AOUT和BOUT两路16bit的数据。
TI公司的SN74ACT7804是512×18bit的触发式FIOF存储器,单向数据传输,有空(/EMPTY)、满(/FULL)、半满(Half-Full)状态标志引脚,还有可编程的近满/近空(Almost-FulL/Almost-Empty)状态标志,处理数据的速度可达到50MHz。
2.1 FIFO与DDC接口设计
在设计DDC与FIFO接口时,应仔细考虑DDC及所选中间逻辑器件的时序和延时特性,以保证数据的有效传输。HSP50214B采用并行直接输出模式,HSP50214B输出两组16位的数据:AOUT(15:0)和BOUT(15:0),信号直接与两FIFO低16位输入数据线连接,FIFO输入时钟信号LDCK由HSP50214B的/DATARDY信号提供。当HSP-50214B中的数据在并行数据总线上准备输出时,/DATARDY引脚会在PROCCLK时钟的第一个下降沿产生一个下降沿的电平跳变,并会持续一个PROCCLK时钟周期的低电平。同时,可用此低电平来控制并行输出使能/OEAL、/OEAH、/OEBL和/OEBH。由于FIFO的信号输入时钟LDCK在上升沿时有效,所以需要将/DATARDY信号反向后供给。2.2 FIFO与DSP EMIF接口
TMS320C6201的外部存储器接口(EMIF)是32位接口,HSP50214B的AOUT和BOUT两路16位分别经两FIFO的低16位与EMIF的 32位接口连接,DSP同时读取AOUT和BOUT两路数据存放于内部存储器,数据在存储器中奇偶分离,可以采用32位或16位的访问方式存取数据,这样充分利用DSP的硬件资源,保证了数据的高速传输。由于TMS320C6201只有一个外部总线接口,FIFO与DSP通过EMIF相连接,所以必须注意数据采集与连接到外部总线上的其他外部设备或存储器对使用总线的冲突,要保证没有其他外围设备长时间占用外部总线,否则发生总线使用冲突时将导致采集数据丢失。
对于读FIFO的读操作,这里用到EMIF异步存储器控制信号:输出使能(/AOE)和读使能(/ARE)以及外部空间选择信号(/CE0)。DDC、FIFO、DSP间的接口电路如图2所示。从图2中逻辑关系可看出,当/AOE与/CEn都有效时,OE有效,片选使能两个FIFO。当/CEn和/ARE同时低电平有效时,UNCK无效,待读出的数据在此时进行初始化,随后ARE会跳变为正电平,使UNCK产生上升沿,FIFO中数据被读出。图2中两个FIFO的半满信号HF经过一个“与”门连接至DSP外部中断引脚EXT-INT5。当两个FIFO皆达到半满时“与”门输出由低变高,上升沿触发DSP外部中断EXT-INT5,DSP启动DMA(直接存储器存取)以突发的方式读取FIFO数据。FIFO1中数据作为低16位,FIFO2中数据作为高16位,合并为32位数据读入DSP内部存储空间。
3 接口时序
设计中,FIFO采用半满信号。若FIFO使用满(/FULL)状态信号,则满(/FULL)状态位有效时,触发DMA开始数据传输;如在满信号和DMA传输之间仍有数据出现在数据线上,则因为此时LDCK对FIFO无效,待DMA开始数据传输时才允许数据写入,所以可能丢失采集数据。本设计中采用半满(HF)信号作为标志位,在半满时,开始DMA传输,不中断数据写入FIFO。由于ADC数据写入FIFO速度小于EMIF读出速度,所以后续数据不会覆盖原来的有效数据,采样数据不会丢失。
EMIF读FIFO逻辑关系如下:UNCK=/CE+/ARE,LDCK=/CE+/AWE,OE=/CE+/AOE,读FIFO时序如图3所示。
本设计利用双FIFO结构实现DDC与DSP间的32位数据缓冲,保证了数据的高速有效传输。FIFO与DSP采用32位的接口方式,DSP EMIF读取FIFO采用DMA的数据传输方式,充分利用了DSP的硬件资源以提高系统实时处理能力,能够满足软件无线电的中频数字信号处理要求。