用FPGA实现低成本高性能的数据采集和控制卡
带有dsp cpu的现成的数据采集和控制卡经常只能达到预期性能的一小部分。随着通道数目的增加或者采样频率的提高,在达到全部通道性能之前,dsp cpu已经开始呈现出超载现象。
当今市场的压力迫使数据采集和控制卡的供应商在增加数据采集卡的通道数和提高采样频率的同时还要考虑降低成本。而且,卡的实际功能可以由生产或者在系统配置时决定。有时候,同一种卡在同一个系统的不同插槽中需要完成不同的功能。
本文引用地址:https://www.eepw.com.cn/article/20552.htm当通道数增加时,dsp的负荷也随之增加。在多数应用中,大部分的dsp cpu的带宽被前端预处理任务(偏移校正、增益调整、预滤波等)所消耗。而且这种代码的开发也是费时费力的,因为出于效率方面的原因,它通常需要用汇编语言来编写。即使采样数据从每个通道到不同的存储器之间的传送过程由dma来处理,cpu的性能仍然会因可用的存储器带宽减小而降低。采样频率越高,处理器可用的执行诸如信号分析、视频处理、压缩等的实际dsp功能的时间就越少。
由于dsp处理器不得不从一个通道切换到下一个通道,因此高速缓存器进一步降低了可用的总线带宽。除了处理数据以外,dsp cpu还必须管理数据(缓冲、数据移动等)、通过背板将处理完的数据传送到主处理器、处理背板协议等。
要满足通道数目增加时的处理要求,dsp cpu的性能必须呈指数型的提高。对提升dsp性能的要求可以通过提高处理器的工作频率(将导致更高的总线传输频率、使用更快的存储器和外设接口芯片)或使用功能更为强大的处理器这两种方法来满足。无论哪种方法都会大大地增加电路板的成本。
本文提出的体系结构能够在给定的dsp cpu的基础上,经济地增加通道数和每个通道的采样频率。它通过采用低成本的latticeecp和 latticeec fpga作为 dsp cpu的协处理器,在降低预处理和非dsp工作负荷的同时保持了灵活性,可以适应多种不同的应用。由于这些fpga器件提供了充足的局域存储器,因此可以实现一种能够进一步提高性能的可编程的数据流结构:一旦所有操作数就绪,数据流结构将帮助dsp处理器执行计算任务。它取代了需要等待操作数就绪的顺序执行的方式。

图1 数据采集和控制卡结构
结构图1显示了如今的数据采集和控制卡结构。该卡被设计成能够处理来自adc板块的20m的采样数据。
从左边开始,多个高频模拟信号被adc板块量化并通过一个lvds接口被传送到fpga中。fpga通过dma将数据直接传送到连在dsp cpu上的sram中。dsp cpu处理存储器中的数据,并将分析过的数据通过pci背板传送到主处理器中。在cpu的命令下,fpga产生用于与外部数字子系统通信的控制信号。该板的基准产能是能够处理4个5m采样频率的通道。在这样的速率下,已经没有剩余的可用于模拟控制(用数字i/o驱动dac)或者分析调理过的信号的处理能力了。因为dsp cpu已经在处理所有的任务(包括预处理功能、与主处理器通信等),任何新增的处理要求只能由下一代的、配备了更昂贵的dsp cpu的数据采集卡来完成。另一种可选方案是通过减少输入通道数来处理额外的工作。
ecp fpga中的dsp模块
在分析实际应用的结构图之前,先描述一下内嵌在latticeecp-dsp fpga中的独特灵活的dsp模块是很有帮助的。这种模块经过配置可以用于许多种dsp应用。每片ecp-dsp器件有4到10个sysdsp模块。它们可以通过多个通道实现并行的dsp处理。借助软件,每个sysdsp模块可以配置成下列的模式之一:
36x36模式
一个36x36的乘法器
18x18模式
四个乘法器
两个52位的乘法累加器
两个各含两个18x18乘法器的求和器
一个含四个18x18乘法器的求和器
9x9模式
八个乘法器
两个34位的乘法累加器
四个各含两个9x9乘法器的求和器
两个各含四个9x9乘法器的求和器
sysdsp模块提供的灵活性可以被用来实现许多种dsp任务。以下是sysdsp模块在18x18模式下的配置示意图,见图2。

图2 sysdsp模块在18x18模式下的配置示意图 这些模块可以实现250mhz速度下的所有功能,总的处理能力达一万个mmac(百万乘法累加操作)。由于待处理的数据通过硬件送到这些sysdsp模块中(与微处理器需要从它的存储器中读取数据不同),所以这些模块的性能非常接近基准期望值。这些流水线寄存器可以使dsp处理任务在最高运行速度下执行。这种sysdsp模块可以在同一个模块中实现乘法累加、求和、加法或减法运算,而无需使用外部的fpga结构,因此避免了这些结构的布线延时。
这些fpga结构可以编程实现所要求的数据管理功能,从而减轻dsp cpu处理非dsp工作的负担。
重新配置改善性能
结构图3采用了相同的dsp cpu来实现所有的新增性能。在通道容量倍增的同时,其成本比采用更新的dsp cpu的板子低得多。
从左侧开始,adc板块现在可以实现8路高频模拟信号的采样,并且通过lvds信号接口与latticeecp-dsp进行通信。ecp器件同时在所有通道中实时地执行所有信号预处理功能。通过这个fpga,经过整形的待处理的采样数据被写入ddr存储器。

图3 采用latticeecp、ec的结构图 在ecp fpga中实现的cpu总线接口(64位)能够在触发模式下在高性能ddr存储器和cpu高速缓存之间传送数据和指令。ecp fpga还提供内部存储器来缓冲待处理的数据,降低了非顺序存取ddr存储器带来的损失。当cpu在高速缓存中处理数据时,在ecp fpga中实现的智能总线仲裁器和切换逻辑能够与外围器件(latticeecp,pci背板,数字i/o接口)之间交换数据。
这种结构提高了dsp cpu的效率。主要表现在降低dsp cpu的预处理负荷;减少必不可少的通道切换的中断时间;减轻非dsp工作的负荷;通过使用更快的ddr存储器来增加存储器的带宽;在处理任务时,减少了非顺序存取ddr存储器的次数。dsp cpu的这种新增能力可以用来增加输入和输出的通道数。
ecp-dsp fpga实现的功能
高速adc接口;
每个通道的实时预处理,实现诸如偏移校正、增益调整、有限脉冲相应滤波器等功能;
根据应用要求配置数字i/o接口;
经过缓冲,数字接口也可以驱动dac;
与latticeecp fpga之间的高速通信接口。
ec fpga实现的功能
64位dsp cpu接口;
ddr接口;
用局部存储器存放经过部分处理的数据;
cpci/pxi接口;
用存放在主cpu中的配置来配置lattice ec器件的逻辑;
与lattice ecp fpga之间的高速通信接口; 将由cpu执行的启动代码传送至ddr存储器的逻辑;
用从主cpu收到的最新代码更新启动代码闪存;
管理lattice ecp、存储器、cpci背板等之间数据传送所需的智能总线仲裁逻辑功能。
在不同的应用中配置电路板
这种电路板既可以通过背板接口进行在系统配置也可以在制造的过程中进行配置。
(1)通过背板配置
供dsp cpu使用的启动rom中的代码能够和主处理器通信,连接在latticeec fpga上的spi配置闪存可以装载配置以实现上述所有功能。
当卡插入插槽后,latticeec fpga进行配置,将rom中的代码送入ddr存储器中,并且给power manager发信号结束对cpu的复位操作。dsp cpu与主处理器进行通信并开始将dsp处理规则送入ddr存储器。同时,通过由latticeec fpga控制的sysconfig端口,预处理配置被直接载入ecp。 这样,latticeecp fpga就可以根据这个插槽的要求开始处理信号了。
(2)在制造时进行配置
dsp的处理规则存放在启动rom中而fpga的配置存放在它们各自的spi配置闪存中。
当卡插入插槽后,latticeec器件通过spi闪存自行实现配置(在此过程中,power manager将cpu置成复位状态)并且将启动rom中的内容送入ddr存储器。与此同时,latticeecp fpga也通过自己的spi配置闪存实现自我配置。当两个fpga配置完成后,power manager发送信号结束对cpu的复位。
结语
与旧的方案相比,在采用相同的dsp cpu的情况下,新的结构能使板的性能提高一倍以上。性能的改善首先得益于取消了旧设计中费时的汇编代码和难以维护的预处理功能,其次得益于使用了更快、更便宜的ddr存储器。其结果是在提供了类似性能、保持了同样的灵活性的前提下,设计成本大幅下降。
评论