摘 要:提出一种基于DDS和FPGA技术的通用多通道PCI数据采集卡的实现方案。采用DDS器件输出信号经过整形分频后作为数据采集卡的采样时钟,从而实现了任意采样率的设定,同时使用FPGA实现了多种可编程触发方式。
关键词:DDS;数据采集;FPGA;PCI
在水声测量和许多其他应用领域中,待测信号的频率范围都是比较宽的。比如在水声领域,远距离水声通信、浅层剖面声纳或被动噪声测量中经常使用的频率可低到1-2KHz甚至几百Hz;而高分辨率成像声纳等通常使用的声信号频率为几百KHz甚至1-2MHz。对于不同频率范围的信号,通常要求的采样率也不同。有时为了配合信号处理算法,甚至要求采样率可以在一定范围内随意设定,这就对数据采集卡的采样时钟发生器提出了较高要求。
通常数据采集系统中采用的采样时钟发生器结构如下图所示:
图1 采样时钟发生器的一般结构
其中M、N是两个可编程分频器,在锁相环的反馈支路中串有分频器M,因而输出采样时钟频率为时钟源频率的(M/N)倍。但是由于分频比M、N均为整数,并且锁相环工作的频率范围有限,M只能在很有限的范围内取值,因而输出采样时钟的可调范围有限,且调整步长较大。此外,锁相环的设计和调整也比较困难,成本较高。为了更好的解决这一问题,本文提出了以直接数字式频率合成(DDS)器件为核心的新型采样时钟发生器结构。
1 基于DDS技术的采样时钟发生器
1.1 DDS技术简介
DDS技术出现于二十世纪70年代,它是一种全数字频率合成技术。它将先进的数字信号处理理论与方法引入信号合成领域,实现了合成信号的频率转换速度与频率准确度之间的统一。它具有相位变换连续、频率转换速度快、频率分辨率极高、相位噪声低、易于用微机等多种方法控制以及体积小、集成度高等多种优点,因而近年来DDS在理论和应用上得到了飞速的发展。
图2 DDS的基本结构
DDS的基本结构如图2所示。讲述DDS原理的文章很多,本文就不再赘述了。
1.2 DDS采样时钟发生器结构
由于DDS器件具有输出频率可以精确数控,且频率转换方便、频率分辨率高的特点,因而很适合作为数据采集系统的时钟源。用DDS器件构成的采样时钟发生器结构如图3所示:
图3 用DDS器件构成的采样时钟发生器
由计算机或其他MCU向DDS器件送出频率控制字,产生预定频率和幅度的正弦波信号。由于DDS输出的正弦信号频谱纯度不很高,含有较多的高频成分,如果没有滤除这些高频成分就直接进行整形,会造成输出时钟信号出现大量尖刺,使得采样孔径抖动严重,将极大的损害采集系统的性能。因此,在DDS的输出端接入了低通滤波器,经过滤波后的正弦信号经过整形电路后得到相同频率的TTL电平时钟信号。这个时钟信号经过可编程分频器(这部分的功能在后面详述)后的输出就作为整个采样和A/D变换的采样时钟。
2 数据采集卡的设计
除了上述的任意可编程采样率的要求外,水声信号测量通常要求测量系统的动态范围和分辨率较高,并且由于水声系统中常使用多个换能器组成阵列,因而测量系统的信号采集应采用多通道同时采样的结构。而目前的现有数据采集卡难以同时满足这几个要求。为此,本文在DDS采样时钟发生器的基础上设计并实现了4通道高速数据采集卡。
2.1 数据采集卡的结构
采集卡的主要技术指标如下:4个单端模拟通道,4通道同时采样,每个通道采样率为100sps-8Msps可任意设定,分辨率为12bit。为了实现采集数据的实时存储,采用了PCI总线与主机接口。采集卡的结构如图4所示:
图4 高速通用数据采集卡结构框图
4个通道的输入模拟信号经过缓冲放大和抗混迭滤波器后分别送入4片ADC中,由采样时钟发生器产生的采样时钟控制对模拟信号进行采样、保持和量化,输出的4路12bit数据复用为一路32bit数据送入FPGA中缓存并打包成帧并加入帧号等信息。成帧后的数据受主机端程序控制,通过PCI接口控制器经PCI总线送入主存中,根据需要进行处理或存盘,从而完成数据采集过程。
2.2 元器件的选用
ADC采用了模拟器件公司(ADI)的AD9220子区式高速ADC,分辨率为12bit,采样率最高为10Msps,片内带有高速低噪声采样保持放大器和电压参考源,可以简化设计。采集卡中所有的控制和时序逻辑全部由一片FPGA实现,综合考虑规模、速度、功耗等因素,选用了Xilinx公司的XCS30。该器件为Spartan系列FPGA,成本低速度快,可用逻辑门数为30000门。采样时钟发生器中DDS器件选用ADI的AD9830单片DDS集成电路,其最高时钟频率为50MHz,内置10bit D/A变换器,频率控制字长32bit,频率分辨率可达0.005Hz,完全满足本设计的需要。PCI总线控制器选用了Cypress公司的CY7C09449(PCI-DP),其特点是接口方式灵活,具备PCI总线Master能力,可以实现与主存或其他Slave设备的DMA传输,这对保证实时高速数据采集是十分必要的。
3 提高采集卡性能的措施
3.1采样时钟发生器中低通滤波器的设计
低通滤波器的性能对保证采样时钟具有较低的jitter非常关键,因此在本设计中采用了7阶椭圆低通滤波器。为了避免引入有源器件自身电噪声,滤波器全部采用无源器件构成,滤波器对带外噪声抑制比约为-60dB。低通滤波器和整形电路原理图如图5所示。
图5 低通滤波器和整形电路原理图
滤波器的输入阻抗和输出阻抗均为100Ω,高于AD9830典型应用场合的50Ω,同时适当调整AD9830外接的电流设置电阻使得输出电流增大。这样可以增大输出信号电压范围,提高信号摆率(Slew Rate),有助于降低整形后时钟信号的jitter。此外,图5中以R17和R18的中点电平作为比较器的门限,这样可以保证整形后信号的占空比为50%。
3.2采样时钟设置范围的分段
为了能产生较高频率(8MHz)的采样时钟,在时钟发生电路中使用了高速比较器MAX9010,其传播延迟仅5ns。当DDS输出信号频率较低的时候,信号在比较门限电平附近摆率过低,容易造成比较器多次翻转。虽然在后面的逻辑中采用了数字低通滤波器可以有效的去除这种干扰,但是仍然会引入jitter,使得采集系统性能劣化。
为此,在图三的结构中,比较器整形后的时钟信号又通过一个可编程分频器。根据需要的采样率分段设置DDS输出频率,同时为分频器设置相应的分频比从而产生最终的采样时钟。设需要的采样时钟频率为,DDS输出频率为,分频比为N,则有:
本设计中具体的分段方法如下:
上述方案在实践中被证明是非常有效的。经过分频器输出的时钟稳定可靠,实测jitter不超过3ns,满足数据采集系统的要求。
3.3多种触发方式的实现
为了适应尽可能多的测量要求,数据采集卡应当具灵活的可编程触发方式。在本设计中,除了可以通过主机端软件控制的定时触发等方式外,还可以方便的在程序中设定通过外部触发源的电平或上升/下降沿进行触发。通过采集卡控制逻辑中的定时器可以实现以20ns的步长设置的最长达85秒的延时触发,以及每通道最多2K采样点的超前触发。各种触发方式及相应的控制和时序逻辑均使用Verilog语言设计并在FPGA中实现。
3.4数据的缓存和传输
当采集卡以最高采样率8Msps工作时,4个通道的数据打包成帧后加上帧号等其他信息,总的数据通过率约为50MBytes/s。在采集卡上用PCI-DP的16KB双口RAM对数据帧进行缓存,同时通过PCI总线将数据传送到主存中。为了保证数据的实时存储和传输,在卡上采用乒乓方式对数据进行缓存,即把16KB RAM分成两个8KB的A、B两个Bank,其结构如图6所示。
图6 乒乓方式的数据缓存和传输结构示意图
数据先被存入Bank A,待存满后继续存入Bank B,同时向主机发出中断;主机端的中断服