搜档网
当前位置:搜档网 › FPGA_ASIC-高速数据压缩与缓存的FPGA实现

FPGA_ASIC-高速数据压缩与缓存的FPGA实现

FPGA_ASIC-高速数据压缩与缓存的FPGA实现
FPGA_ASIC-高速数据压缩与缓存的FPGA实现

高速数据压缩与缓存的FPGA实现

王宁李冰

(东南大学集成电路学院南京210096)

来源:微计算机信息

摘要:本文设计了一种以FPGA为数据压缩和数据缓存单元的高速数据采集系统,其主要特点是对高速采集的数据进行实时压缩,再将压缩后的数据进行缓冲存储。该设计利用数据比较模块实时地将一个压缩比数组中的最大值保存起来,再将该最大值缓冲存储,从而满足采集系统的需要。文中分别设计了基于双口RAM和FIFO实现的两种缓冲方法,并对仿真结果进行了对比分析,该系统工作频率可达90MHZ。

关键词:高速数据采集 , 数据压缩 , 数据缓存 , 现场可编程门阵列

中图分类号:TP274文献标识码:A

Implementation of High-Speed Data Compression and Data Cache with FPGA Abstract: A high-speed data acquisition system that uses FPGA as the data compression and data cache unit has been designed in this paper, the main point of this system is that it compresses the acquired data in time and then stores the compressed data in the cache. In order to meet the conditions that data acquisition needs, a data-comparing module is used to select the largest number in the compression ratio array, and then store the largest number in the cache. Two methods that based on dual-ports RAM and FIFO are designed in this article, they are also analyzed and compared though software in detail, this system can work at the frequency of 90MHZ.

Key Words: High-speed data acquisition, data compression, data cache, FPGA

1.引言

在战场上,为了使作战武器能及时地调整自身的姿态,需要实时地采集一系列的状态参数,再对这些参数进行分析处理,这就涉及到高速的数据采集系统。同时由于作战武器控制

系统对数据的采集精度以及传输速率要求比较高,为了能及时地处理信号,只有通过压缩数据量、提取有用信号才能为作战武器提供可靠的保障。

针对上述的实际需要,目前比较通用的方法就是采用A/D+FPGA+DSP方式进行数据的采集处理[1]。该方案中,A/D实现高速数据采集,FPGA实现对采集数据的缓冲以及预处理,并控制前端A/D采样,DSP实现对高速数据的处理。

本系统采用AD公司16位的AD9446芯片,其采样率可达100M/S、源同步差分输出,可通过外加时钟进行采样。FPGA 选用XILINX公司SPARTAN3S500E,其逻辑门为50万门,内部Block Ram达360K[2]。DSP选用TI公司的TMS320C6416,其主频为1G。系统通过充分发挥各芯片的优势,以满足高速的数据采集、处理。本文结合实际的开发,分析对比了基于FPGA实现的两种高速缓存,并对数据压缩进行了仿真分析。

2.系统方案

本系统中模拟信号经前端滤波、放大电路的调理,再送至AD9446芯片进行采样,该芯片的输出信号为LVDS电平形式,它具有抗干扰能力强、噪声小、功耗低等特点。AD9446输出16位的数字信号以及1位的时钟信号,时钟信号与数据信号保持同步,从而消除了走线延时对数据接收端的的影响。系统中应用FPGA可以把数据采集电路中的数据缓存、控制时序逻辑、地址译码、总线接口等电路全部集成到一片芯片中,高集成性可以增强系统的稳定性,为高速数据采集提供了理想的解决方案。如图1所示:系统中用FPGA来控制A/D 采样并接受A/D的数据,FPGA 主要通过时钟管理模块(Digital Clock Manager)来产生A/D 的采样时钟,从而控制A/D采样。当FPGA接收A/D的数据后先通过数据压缩模块压缩A/D 所传送的数据,再将其送到数据缓冲模块进行缓冲存储以供DSP调用。

图1 系统框图

FPGA 中的数据缓冲模块以及DCM 是在ISE 中通过调用Core Generator 生成的,其中的缓冲模块可以是双口RAM 、FIFO 等,它们均是利用内部的Block Ram 以及Distribute Ram 生成的,利用数据缓冲模块可以很好地调节跨时钟域的数据传输,调节A/D 与DSP 之间的数据处理。FPGA 中的数据压缩模块主要用来对采样数据进行抽样,经抽样后的数据在时间上是均匀分布的,这样即保留了采样连续波形的形状,又可保证峰值点不丢失,而且其压缩比可以程控设定,增强了该系统的自适应性,以下分别讨论各模块的设计。

3. FPGA 中压缩模块的设计

在图像、波形的处理中为了能及时地处理信息量较大的信息,通常需要对采集到的数字信号进行压缩,以供后续的处理模块进行处理、显示[3]。在本设计中考虑到A/D 的采样率较高,采集的数据量比较大,为了能快速地对采样信号做出反应,采用最值压缩的方式,其压缩算法如下所示:

}||......||,||,|{|210t N t t t t d d d d Max S =

式中:t S 为t 时刻一个压缩比数组中的最大值,t N t t t d d d d ||......||,||,||210为原始采样值, N 为原始采样点的个数,即为压缩比,数据压缩即为从这N 个数中选择一个最大的值t S ,再将其存放到数据缓冲模块中。从数组中提取最大的值是为了以峰值为处理对象,因而系统对突变的信号比较敏感。压缩模块的部分代码如下所示[4]:

parameter N=10;

IBUFGDS_LVDS_25 lvds_clock_ibufg(.O(fclk),.I(DOR_C),.IB(DOR_T));

reg[3:0] i; i=0;

always@(posedge fclk)

begin i=i+1;

if(i==1) begin d=a; wea=0; end

if(i==N) begin if(a>=d) d=a; dina=d; wea=1; i=0; end

else if(a>=d) d=a;

end

其中a为输入的16位数据,i为压缩比的循环变量,d为最大值寄存器,wea为数据缓冲模块的写使能,DOR_C、DOR_T为与数据同步的源同步时钟,fclk为单端形式的源同步时钟,该模块从输入的数据中不断按压缩比压缩出数据,再将数据放入缓存器中,从时序图2中可以清楚地看出压缩模块的功能。

图2数据压缩模块的时序图

从图中可以看出:寄存器d中不断存放着一个压缩比中的最大值,在i=0时写入上一个压缩比中的最大值。

4.FPGA中高速缓存的设计

经压缩后的数据通过存储控制模块被写入数据缓存器中,以实现数据在两个不同时钟域的传递,缓冲模块可以通过中断或者询问的方式与DSP通信,从而存取数据。系统如果不使用缓存模块,直接将A/D与DSP相连,这样系统工作时,A/D将不停地高速采样、DSP将处于连续地间隔取数的状态,这样会占用DSP的大部分时间,导致DSP不能从事其它的工作,也有可能会出现DSP还没有处理完上次的数据,又要处理下一批次的数据,这种矛盾在高速A/D采样的情况下会尤其突出[5]。数据缓存器可以是双口RAM、FIFO等,以下分别对这两种模块加以讨论。

4.1利用双口RAM生成的缓冲模块

双口RAM有两个独立的数据总线、地址总线以及控制总线,只要不是同时访问同一个存储单元,就允许两个端口同时对片内任何存储单元进行独立的读写操作,且互不干扰;如果两个端口同时访问同一个存储单元,则由仲裁逻辑决定访问哪个端口。双口RAM有两种应用模式:存储器映射方式和顺序写方式,前一种方式可以随意对存储器的任何单元进行读写,其读、写控制线、地址总线和数据总线各有两套,后一种只能顺序写入,有较大的灵活性,类似于FIFO形式。双口RAM的示意图如图3(A)所示:

图3(A)双口RAM 的接口图 图3(B)FIFO 的接口图

本系统对RAM的操作采用顺序写的方式,在SPARTAN3S500E 中通过调用IP

核生成16*1024大小的双口RAM ,在时钟脉冲的触发下,当使能信号均有效时,通过存储

控制单元把压缩后的数据从双端口RAM的DINA端写入,同时A端口地址递增,当需要

读出数据时,在B 端口时钟的驱动下,当B 端口使能信号均有效时,数据从DOUTB 被读

出,同时读地址递增。系统的测试时序如下所示:

图4基于双口RAM 的时序仿真图

图中a 为测试输入数据,reset 为全局复位信号,fclk 既为源同步时钟也为双口RAM 的读写时钟,dout 为RAM 的数据输出端,为了防止对RAM 的同一地址单元进行读写操作,读使能滞后写使能3个周期。从时序图中可以看出在计数变量i 从0变化到9的过程中,最大值寄存器d 中的数据在不断变化,当i 等于0时,写使能wea 有效,d 中的数据被写入RAM 中,同时写地址递增。当读使能有效时,在读时钟的驱动下,读地址addrb 递增,数据从dout 端被顺序读出,这样数据则可传给DSP 做进一步地处理。

4.2利用FIFO 生成的缓冲模块

FIFO 的结构图如图3(B )所示,它同样有两个端口,数据从一端流入、从另一端流出,先写入的数据先流出,有数据线而无地址线,通过指针来指向所要读写的数据,看起来好像

是数据在其中顺序移动,从而达到很高的传输速度和效率。

在FPGA中通过Core Generator生成16*1024大小的FIFO,采用同步FIFO的形式,读写时钟CLK均为fclk,在写使能WR_EN有效时,数据从DIN[15:0]端写入,当读使能有效时,数据从DOUT端被顺序读出。FIFO通过标志位FULL、ALMOST_FULL、EMPTY、ALMOST_EMPTY与后面的DSP通信,通过中断或者询问的方式通知DSP取数据[6]。当系统采用与双口RAM相同的测试向量进行测试时,其时序图如下所示:

图5基于FIFO的时序仿真图

图中a为测试输入数据,dina为FIFO的数据输入端,dout为FIFO的数据输出端,从图中可以看出,在i从0变化到9的过程中,最值寄存器d中的数据不断更新,在i为0时,写使能wr_en有效从而将一个压缩比中的最大值d写入到FIFO中。当读使能rd_en有效时,数据从dout端被顺序读出,从时序图中可以清楚地看到FIFO像一个管道,数据在其中被顺序写入、顺序读出。通过标志位,FIFO两端也可接异步时钟,从而很好地解决跨时钟域的数据传输。

4.3两种缓冲模块的比较

从图4与图5的数据输出端dout可以比较得出:相同的数据输入均能得到理想的数据输出,从而两种缓冲模块均能满足系统的要求,系统的功能均能得以实现。从控制逻辑的复杂度可以看出,双口RAM的控制逻辑显然要比FIFO复杂,但DSP对双口RAM中存储单元的访问可以是随机的而对FIFO的访问却只能是顺序的。

将分别包含上述两种缓冲模块的系统在ISE中进行仿真、综合,对比发现它们所占用的FPGA(XC3S500E)资源相差无几,但它们的最高工作频率有些差别:基于RAM的系统最

高工作频率为99.950MHZ,而基于FIFO的系统最高工作频率为92.859MHZ。由此可见,两种系统均可工作在高速的采集系统中。

5.小结

本文基于AD+FPGA+DSP的结构,讨论了基于FPGA实现的数据压缩与高速数据缓冲,从而为高速数据采集系统奠定基础,经仿真验证以及在开发板上的实际运行,系统可稳定工作在90MHZ的频率下。

本文作者创新点:讨论了基于实时数据压缩和数据缓冲的高速数据采集系统,并对两种缓冲方式进行了对比分析。

参考文献:

[1]赵保军,史彩成,毕莉,安建波,毛二可。基于FPGA和DSP实现的实时图像压缩[J]。

电子学报,2003(09)1317-1319

[2] 吕宇,吴嗣亮。DSP+FPGA实时信号处理系统中FPGA设计的关键问题[A],微计算机信

息,2005,5-1:31-32

[3]宋光德,张慧,梁磊。一种基于FPGA的高速波形采集与实时数据压缩方法[J]。

电子测量与仪器学报,2004(03)47-50

[4]夏宇闻 VERILOG数字系统设计教程[M] 北京:北京航空航天大学出版社,1999

[5]Joselito Parguian Building a simple data acquisition system using the TMS320C31 DSP[M]. USA:Texas Instruments,2001

[6]王诚,薛小刚,钟信潮 FPGA/CPLD设计工具XILINX ISE 使用详解[M] 北京:人民邮

电出版社,2005

作者简介:王宁,女,1981年生,汉族,东南大学硕士研究生,从事可重构FPGA、数据采集、低功耗存储器的研究与应用

Biography: Wangning (1981-) ,Female, Shaanxi province, Eastsouth university, major in microelectronics , focus on reconfigurable FPGA, data-acquisition ,low-power memory and so on. 基金项目:基于SOC的嵌入式混合信号集成电路IP核及高层次模型信号采集处理国家自

然科学基金资助(60476046)

相关主题