艾巴生活网

您现在的位置是:主页>科技 >内容

科技

采用FPGA器件实现数据采集系统中高速大容量存储板的设计

2023-11-01 18:17:03科技帅气的蚂蚁
1导言高速数据采集系统已经广泛应用于雷达、声纳、图像处理、语音识别、通信、瞬态信号测试等领域。其关键技术是高速ADC技术、数据存储与传

采用FPGA器件实现数据采集系统中高速大容量存储板的设计

1导言

高速数据采集系统已经广泛应用于雷达、声纳、图像处理、语音识别、通信、瞬态信号测试等领域。其关键技术是高速ADC技术、数据存储与传输技术和抗干扰技术。当大量高速实时数据转换成模拟时,必须高速存储,多通道高采样率数据采集系统会产生巨大的数据流。这就需要一个高速大容量的存储板来存储数据,然后读回计算机进行处理。基于以上原因,本文设计了一种可以同时存储两路采样数据的大容量存储板。板卡中使用了64片三星的高速大容量内存K9F2G08UOM,使整个板卡的存储容量达到128Gbit。采用FPGA作为控制器,通过标准的CPCI工控机箱操作存储板,通过CPCI总线将存储板上的数据高速读回计算机,提高了读取数据的速度。

k29f2g08uom简介

NOR闪存和NAND闪存是目前市场上两种主要的非易失性闪存技术。这种设计的目的是高速存储大容量数据。所以选择NAND K9F2G08U0M内存。其存储容量为2gb,8位宽,页面大小为2 0488位。每个块由64页组成,总共有2 048个块。每页有648比特的空闲存储区,总共有8个192 K8比特的空闲存储区。典型页面编程时间为300s,最大页面编程时间为7008。页内最小连续访问时间为30 ns/Byte,即数据写入Flash数据寄存器的速度可达33 MB/s,但单页数据的典型编程速度为2 048/300 s=6.8 MB/s,最慢编程速度为2 048/700 s=2.9 MB/s,擦除一个块的典型时间为2 ms,K9F2G08U0M具有硬件数据保护功能,即关闭编程/擦除操作K9F2G08U0M的内部写控制器自动进行所有的编程和擦除操作。该芯片包含一页(2 048 64字节)的数据寄存器。在读写过程中,总是先将存储单元数据或外部数据缓存在数据寄存器中,然后再将数据读取或写入存储单元。所以是基于页面读写和块擦除。当然也支持随机读写。但是这种设计的目的是高速存储数据,所以对它的读写操作完全是基于页的。K9F2G08U0M的主要引脚有CLE(命令锁存使能)、ALE(数据锁存使能)、CE(片选)、WE(写使能)、re(读使能)、WP(写保护)、R/B(就绪/忙)、PRE(上电读使能)、I/O0 ~ I/。其中I/O 0 ~ I/O 7既可以作为数据输入输出引脚,也可以作为命令地址的输入引脚。命令、地址和数据在时间上是多路复用的,并且根据不同的命令来区分地址和数据。一般操作流程是:

1)写一个命令,通知设备要完成的操作(读、写、擦除等。);

2)写地址,即待读写数据的起始地址,包括列地址和页地址;

3)如果它被读取或擦除,写入确认命令。如果是写操作,输入要编程的数据,然后输入编程确认命令。

由于K9F2G08U0M共有128 K页,每页的大小为(2 048 64)8 bit,所以写地址时需要12条地址线用于列地址,17条地址线用于页地址。这需要5个时钟周期来写入地址。前两个时钟写入列地址,后三个时钟写入页地址。

3系统设计

3.1总体硬件设计

外部数据采集系统是两个16位A/D通道,40 MHz采样,所以分成两个通道独立设计。虽然K9F2G08U0M的数据寄存器的写速度可以达到33 MB/s,但是在FPGA设计中,为了在时序上更加可靠,选择了25 MHz的时钟设计,所以K9F2G08U0M的写速度为50 MB/s(当两个K9F2G08U0M组合成16bit时,写速度为25 m 16 b/s)。这样在FPGA中设置了三个页面大小的双口RAM作为缓冲区,可以满足40 m 16b/s的写入速度,即在2、3个RAM的写入时间内(25 ns2 0482=102.4s),启动第一个RAM向Flash的数据寄存器写入数据需要40 ns 2048。

回读数据时,比如20 MHz读Flash,40MHz读缓冲区中的数据,三个双口RAM刚好可以满足要求,如图1所示。读取一页K9F2G08U0M的数据可以达到33 MHz的速度。为了读写Flash使用同一个时钟,读Flash的速度也是25 MHz。同时,为了增加系统设计的冗余度,采用4页双口RAM作为缓冲区。因此,每个FPGA至少需要42 04816 bit=131 072 bit的存储空间。

由于数据写入Flash后还有很长的编程时间,所以一页的编程时间一般为300s,最长为700 s,数据存储不能有停顿,否则数据会丢失,所以R/B信号不能用于设计。为了使系统更加可靠,最大编程时间为700 s,对同一组Flash的两次写入时间间隔为700s 81.92s=781.92s,向双口RAM写入一页数据需要25ns2 048=51.2s。总时间除以写一页数据的时间:781.92/51.2=15.3 s,也就是说一个周期至少需要16组Flash才能满足要求。所以在设计中,对于每个A/D采样通道,用一个FPGA作为缓冲和控制系统,每个FPGA用四个缓冲,每个缓冲对应一条外部总线,每条总线上挂四组K9F2G08U0M2(两个Flash芯片合为16位操作,即I/O合为16位,共用控制信号线)。整体系统框图如图2所示。

在图2中,两个外部接口连接到两个A/D通道,两个FPGA作为控制和缓冲区,每个控制16组Flash。存储板通过PCI9054与CPCI总线相连,存储板的数据可以通过CPCI总线高速回读给计算机。

3.2系统设计思路

为了解决高速数据采集和低速Flash访问速度之间的矛盾,采用了数据流串并行转换和多个运算模块并行处理的设计方法。通过使用FPGA内部的存储区域,四个双口RAM被用作缓冲器。每个外部Flash总线使用一个双口RAM,采集的数据及时加载到四个RAM中,然后写入Flash。Flash以流水线方式写入,如图3所示。首先,外部A/D采样通道将数据写入RAM1。RAM1满时,数据加载到第一组Flash数据寄存器,加载完成后第一组Flash进入自动编程阶段;RAM2写满后,第二组Flash加载开始,数据加载完成后,进入自动编程阶段。依次加载RAM3。当RAM4写满,第四组Flash开始加载时,FPGA内部控制重写RAM1,开始运行第五组Flash,然后在这个周期内运行第六到第十六组Flash。当第16组数据被加载时,第1组闪存已经被编程,然后第1组闪存被加载和编程。可以看出,向16组Flash写数据是并行的,通过并行写操作可以存储高速采集的数据。

FPGA的内部设计大致可以分为PCI9054控制部分和数据记录回放部分。PCI9054的控制部分一方面与PCI9054接口,另一方面需要完成Flash的操作。数据记录和回放部分主要完成外部数据的写入、读取和擦除,建立非生产区块的信息列表等功能。因为四组Flash的操作是一样的,所以数据记录和回放部分可以分为数据流控制部分和Flash控制部分。数据流控制部分控制哪组闪存;数据被写入或读取;Flash操作部分用于Flash的具体操作。图4显示了数据记录和回放的FPGA功能结构。为了节省内部存储单元的数量,应该使用相同的缓冲区来写入和读取数据。

3.3无效块的建立和操作

当一个块中的一个或多个位不能被正确操作时,该块被定义为无效块。无效块不影响其他块的正常工作,各块相互独立。所选的K9F2G08U0M出厂时可能有无效块,使用中可能会产生新的无效块,但器件的第一块不得无效。NAND出厂时会闪存自己的无效块。如果每个块的第一页或第二页的空闲区中的第一个数据不是FFh,则意味着该块无效。为了保证Flash的正确操作,在操作之前必须建立一个无效块信息表。每个FPGA设计了4个2 0481位ram来存储无效块的信息。RAM的每个存储单元存储相应总线上四组Flash的无效块信息。某块的无效块信息是Flash的四组无效块信息(1表示正常,0表示无效块)的与结果。在读写或擦除Flash之前,需要从RAM中读取无效块信息,然后根据无效块信息决定是否操作当前块。

3.4读写闪存操作

对Flash的读写操作都是基于页面的,读写操作的顺序分别如图5和图6所示。计算机通过CPCI总线发出读或写命令后,FPGA根据收到的命令执行相应的操作。写Flash时,外部采集的数据输入RAM1。当RAM1满时,数据写入RAM2。同时,第一总线上的第一组闪存的写入模块被选通。在写作模块中,计数器产生ALE、CLE、WE、RE等。来控制相应的写Flash的时序。数据从RAM写入Flash存储器,页面地址递增1,依次循环(循环流程见图3)。当总线上第4组Flash的页面地址为64时,块地址加1,读取无效块信息。如果是无效块,该块被屏蔽,下一个块信息被重新读取,直到正常块被读取。如果是正常块,将数据写入该块,并清除页面地址。读取操作与写入操作类似,只是从闪存读取的数据先发送到RAM,然后以循环顺序读取RAM。

3.5 PCI 9054控制部分的设计

通过编写PCI9054的专用驱动程序和应用软件,计算机可以通过CPCI总线对存储卡进行控制。在应用软件中,可以定制读、写或擦除Flash等命令,向CPCI总线发送特定的数据。在FPGA中,根据PCI9054发送的本地数据线上的具体数据,判断是哪种操作,执行相应的操作。与FPGA PCI9054通信的主要信号线有LHOLD、LHOLDA、READY、ADS、ADDR和DATA。这些信号线可以用来实现PCI9054本地终端和FPGA之间的握手。将数据写入计算机。在PCI9054的专用驱动和应用软件中,利用DMA方式读取Flash,读取速度可提高到1.3 MHz16 bit。

4结束语

本设计采用流水线和并行处理技术,利用FPGA内嵌的存储块设计一组高速数据缓冲器,使多个低速存储器件并行工作,系统内外部数据速率匹配,避免了外部缓存,简化了硬件电路,大大提高了数据存储速率。大容量、高密度的闪存设备,可以使单块存储板的容量高达128 Gbit。在FPGA的内部设计中,建立了Flash的无效块信息列表,并在此基础上进行Flash无效块信息的读、写、擦除、重建等操作。该系统具有集成度高、灵活性好、可移植性强、速度快等特点。通过CPCI总线采用DMA读取,大大提高了读取速度。当接收的数据带宽大、速率高时,存储板可以并联,多个存储板可以级联,满足更大存储容量的要求,也可以级联和并联相结合,满足不同系统的要求。整个系统基于CPCI工控机箱,更适合户外工作环境,能及时保存和分析数据。