基于FPGA的高速大容量固态存储设备设计
发布时间:2008/5/27 0:00:00 访问次数:510
    
    
    西安电子科技大学 雷达信号处理重点实验室 杨海涛,苏 涛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
    
    
    西安电子科技大学 雷达信号处理重点实验室 杨海涛,苏 涛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