基于FPGA的高速大容量固态存储设备设计
时间:07-18
来源:互联网
点击:
1 引言
高速数据采集系统目前已在雷达、声纳、图像处理、语音识别、通信、瞬态信号测试等领域得到广泛应用。它的关键技术是高速ADC技术、数据存储与传输技术和抗干扰技术。当大量的高速实时数据经过模数转换后,必须高速存储,多通道高采样率的数据采集系统会产生巨大的数据流。这样就需要高速大容量的存储板将数据存储起来,然后再读回计算机进行处理。基于以上原因,本文设计了可以同时存储两通道采样数据的大容量存储板,板中采用了64片Samsung公司的高速大容量存储器K9F2G08UOM,使整块板卡的存储容量达到128Gbit。采用FPGA作为控制器,通过标准的CPCI工控机箱操作存储板,并通过CPCI总线将存储板上的数据高速读回计算机,提高了读取数据的速度。
2 K9F2G08UOM简介
NOR Flash和NAND Flash是目前市场上的两种主要的非易失性闪存技术,本设计的目的是为了高速存储大容量的数据,因此,选择NAND型K9F2G08U0M存储器。它的存储容量是2 Gbit,8位位宽,页大小为2 048×8 bit,每块由64页组成,共有2 048块。每页带有64×8 bit的空闲存储区,共有8 192 K×8 bit的空闲存储区。页编程的典型时间为300μs,最大页编程时间为700μ8。页内连续最小访问时间为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/O7(输入,输出)。其中I/O0~I/O7既可作为数据输入输出引脚,又可作为命令地址的输入引脚,命令、地址、数据分时复用,根据不同的命令区分地址和数据。一般的操作流程为:
1) 写入命令,通知器件所要完成的操作(读、写、擦除等);
2) 写入地址,即写入要读写数据的起始地址,包括列地址和页地址;
3) 如果是读或者擦除,写入一个确认命令。如果是写操作,输人待编程的数据,完成后输入编程确认命令。
因为K9F2G08U0M共有128 K页,每页的大小为(2 048+64)×8 bit,所以在写入地址时列地址需要12根地址线,页地址需要17根地址线。这样就需要5个时钟周期来写入地址。前两个时钟写入列地址,后三个时钟写人页地址。
3 系统设计
3.1 总体硬件设计
外部数据采集系统是2个40 MHz采样的16位A/D通道,所以设计时分成两个通道独立设计。虽然K9F2G08U0M的数据寄存器写入速度可达33MB/s,但在FPGA设计时,为了在时序上更加可靠,选择使用25 MHz的时钟设计,则K9F2G08U0M的写入速度为50 MB/s(把两个K9F2G08U0M并成16bit,写入速度即为25 M×l6 b/s)。这样,在FPGA内部开辟3个页大小的双口RAM作为缓存区就能满足40 M×16 b/s的写入速度,即在写第2、3个RAM的时间(25 ns×2 048×2=102.4μs)内,启动第1个RAM把数据写入Flash的数据寄存器,所需时间为40 ns×2 048=81.92μs,小于102.4μs。
在读回数据时,如以20 MHz读取Flash,以40MHz读出缓冲区中的数据,3个双口RAM就能刚好满足要求,如图1。读取K9F2G08U0M一页数据能达到33 MHz的速度,为了让读写Flash使用同一时钟,读Flash也采用25 MHz的速度。同时为了增加系统设计的冗余,采用4页的双口RAM作为缓冲区。所以每片FPGA内部至少需要4×2 048×16 bit=131 072 bit的存储空间。
由于数据在写入Flash后还有较长的编程时间,一页的编程时间典型值为300μs,最大值为700μs。数据在存储上不能有任何的停顿,否则就会丢失数据,所以不能使用R/B信号进行设计。为了系统更加可靠,选择最大编程时间700μs。两次对同一组Flash进行写操作的时间间隔为700μs+81.92μs=781.92μs,一页的数据写到双口RAM要用25ns×2 048=51.2μs。总时间除以写一页数据的时间:781.92/51.2=15.3μs,说明一个循环内至少需要16组Flash才能满足要求。所以在设计中,对于每路A/D采样通道都用一片FPGA作为缓冲和控制系统,在每片FPGA内部都采用4个缓冲区,每个缓冲区对应一条外部总线,每条总线上挂有4组K9F2G08U0M×2(将两片Flash并成16位操作,即把I/O并成16位,共用控制信号线)。系统整体框图如图2所示。
高速数据采集系统目前已在雷达、声纳、图像处理、语音识别、通信、瞬态信号测试等领域得到广泛应用。它的关键技术是高速ADC技术、数据存储与传输技术和抗干扰技术。当大量的高速实时数据经过模数转换后,必须高速存储,多通道高采样率的数据采集系统会产生巨大的数据流。这样就需要高速大容量的存储板将数据存储起来,然后再读回计算机进行处理。基于以上原因,本文设计了可以同时存储两通道采样数据的大容量存储板,板中采用了64片Samsung公司的高速大容量存储器K9F2G08UOM,使整块板卡的存储容量达到128Gbit。采用FPGA作为控制器,通过标准的CPCI工控机箱操作存储板,并通过CPCI总线将存储板上的数据高速读回计算机,提高了读取数据的速度。
2 K9F2G08UOM简介
NOR Flash和NAND Flash是目前市场上的两种主要的非易失性闪存技术,本设计的目的是为了高速存储大容量的数据,因此,选择NAND型K9F2G08U0M存储器。它的存储容量是2 Gbit,8位位宽,页大小为2 048×8 bit,每块由64页组成,共有2 048块。每页带有64×8 bit的空闲存储区,共有8 192 K×8 bit的空闲存储区。页编程的典型时间为300μs,最大页编程时间为700μ8。页内连续最小访问时间为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/O7(输入,输出)。其中I/O0~I/O7既可作为数据输入输出引脚,又可作为命令地址的输入引脚,命令、地址、数据分时复用,根据不同的命令区分地址和数据。一般的操作流程为:
1) 写入命令,通知器件所要完成的操作(读、写、擦除等);
2) 写入地址,即写入要读写数据的起始地址,包括列地址和页地址;
3) 如果是读或者擦除,写入一个确认命令。如果是写操作,输人待编程的数据,完成后输入编程确认命令。
因为K9F2G08U0M共有128 K页,每页的大小为(2 048+64)×8 bit,所以在写入地址时列地址需要12根地址线,页地址需要17根地址线。这样就需要5个时钟周期来写入地址。前两个时钟写入列地址,后三个时钟写人页地址。
3 系统设计
3.1 总体硬件设计
外部数据采集系统是2个40 MHz采样的16位A/D通道,所以设计时分成两个通道独立设计。虽然K9F2G08U0M的数据寄存器写入速度可达33MB/s,但在FPGA设计时,为了在时序上更加可靠,选择使用25 MHz的时钟设计,则K9F2G08U0M的写入速度为50 MB/s(把两个K9F2G08U0M并成16bit,写入速度即为25 M×l6 b/s)。这样,在FPGA内部开辟3个页大小的双口RAM作为缓存区就能满足40 M×16 b/s的写入速度,即在写第2、3个RAM的时间(25 ns×2 048×2=102.4μs)内,启动第1个RAM把数据写入Flash的数据寄存器,所需时间为40 ns×2 048=81.92μs,小于102.4μs。
在读回数据时,如以20 MHz读取Flash,以40MHz读出缓冲区中的数据,3个双口RAM就能刚好满足要求,如图1。读取K9F2G08U0M一页数据能达到33 MHz的速度,为了让读写Flash使用同一时钟,读Flash也采用25 MHz的速度。同时为了增加系统设计的冗余,采用4页的双口RAM作为缓冲区。所以每片FPGA内部至少需要4×2 048×16 bit=131 072 bit的存储空间。
由于数据在写入Flash后还有较长的编程时间,一页的编程时间典型值为300μs,最大值为700μs。数据在存储上不能有任何的停顿,否则就会丢失数据,所以不能使用R/B信号进行设计。为了系统更加可靠,选择最大编程时间700μs。两次对同一组Flash进行写操作的时间间隔为700μs+81.92μs=781.92μs,一页的数据写到双口RAM要用25ns×2 048=51.2μs。总时间除以写一页数据的时间:781.92/51.2=15.3μs,说明一个循环内至少需要16组Flash才能满足要求。所以在设计中,对于每路A/D采样通道都用一片FPGA作为缓冲和控制系统,在每片FPGA内部都采用4个缓冲区,每个缓冲区对应一条外部总线,每条总线上挂有4组K9F2G08U0M×2(将两片Flash并成16位操作,即把I/O并成16位,共用控制信号线)。系统整体框图如图2所示。
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- Virtex-5推动超宽带通信和测距的发展(01-06)
- 基于CPLD与单片机的高速数据采集系统(04-08)
- 在低成本FPGA中实现动态相位调整(03-25)
- 利用FPGA和CPLD数字逻辑实现ADC(06-04)
- SDH中E1接口分接复用器VHDL设计及FPGA实现(06-23)