0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用VHDL语言在FPGA芯片上实现NAND Flash的数据存储系统的设计

电子设计 作者:电子设计 2018-11-15 08:10 次阅读

引言

传统的存储设备虽然具有价格低廉的优势,但是在高温、高速、高冲击的测试环境中,往往存在设备存放空间有限、测试参数较多、采集速率高、环境复杂等因素。为了得到准确的测试数据,对存储设备的性能也提出了较高的要求,如高存储速度、大存储容量、小巧轻便、抗冲击等。此时传统的存储设备便无法完成复杂环境测试数据的存储任务。为解决这个问题,本文设计了基于NAND Flash的数据存储系统,该系统采用Xilinx公司提出的灵活、高效、低成本的解决方案SOPC,把通用的RISC处理器MicroBlaze与用户设计的特定功能逻辑电路集成到FPGA上,在FPGA的控制下将数据存储到NAND Flash存储设备中,实现了一个基于SOPC方案的嵌入式数据存储系统。

NAND Flash存储设备是Flash内存的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。NAND Flash存储器具有体积小、功耗低、读写速度快等优点,适用于大量数据的存储,被广泛应用到数码相机、MP3、U盘等嵌入式产品中。

1 系统整体设计方案

基于NAND Flash的数据存储系统结构框图如图1所示。

采用VHDL语言在FPGA芯片上实现NAND Flash的数据存储系统的设计

本文采用Samsung公司的NAND Flash芯片K9F4GOSUOA作为主要存储器件,控制器件使用Atmel公司的ATmega162和Xilinx公司Spartan-3E系列的XC3S500E,结合对NAND Flash的读、写、擦除等操作进行时序配置。A/D转换芯片使用Maxim公司的MAX1308.另外,为实现通过USB总线将数据从采集设备传送至PC,采用FTDI公司的FT245R芯片作为USB2.0接口控制器;并以LabVIEW为平台设计开发了专用"多通道数据分析软件",用于对存储系统中数据后期的分析与处理。

2 NAND Flash阵列式存储原理

Flash存储器编程是以页为单位,单片NAND Flash的单页编程操作时,命令锁存信号CLE向端口写入编程操作命令,地址锁存信号ALE写入操作块地址,并传输2 KB数据到数据寄存器后,Flash进入编程阶段。此时其端口R/B信号被拉低,显示Flash正处于忙工作状态,直到编程结束,这段时间系统不能对该Flash再进行任何操作,一般该阶段典型的时间为200μs.如果使用单片Flash存储器进行存储,则需等待编程结束后才能再写入数据。这样大量的时间耗费在编程过程中,极大限制了系统存储速度的提高。

为提高系统的存储容量和存储速度,系统使用8片NAND Flash存储器,每4片为一组构成一个总线宽度为8位的存储阵列。控制信号中除设置独立的片选信号CE外,其他的控制信号为8片共用;两组Flash共用数据总线,存储数据时先对第一组Flash进行存储操作,待第一组存储完毕后再对第二组进行数据存储操作。Flash阵列式存储结构图如图2所示。

采用VHDL语言在FPGA芯片上实现NAND Flash的数据存储系统的设计

由以上分析可以看出,Flash存储数据的过程由写地址命令、数据传输以及Flash编程阶段组成。为提高系统整体的存储速度,减少系统等待时间,根据NAND Flash存储器的特点,借鉴时分多路复用技术,设计了Flash存储阵列,即利用上一片Flash的编程时间对下一片Flash进行操作,将数据加载到该片数据寄存器中,以此类推实现四级的流水线。这样整个系统每个时刻都能对Flash加载数据,保证了数据存储的连续性。

时分多路复用(Time Division Multiplexing,TDM)是按传输信号的时间进行分割的,它使不同的信号在不同的时间内传送,将整个传输时间分为许多时间间隔,每个时间片被一路信号占用,这样既可以保证各传输信号的相互独立,又提高了系统的传输效率。借鉴该原理,可以将Flash的编程时间看成一个固定的时间段,将这个时间段分成4个时间片,在这4个时间片上分别对Flash阵列的一个模块中的4个Flash加载数据,输入存储系统的高速数据流看作是以传输一组数据所需时间的一个时间片。

具体的操作如下:首先加载数据到第1片Flash存储器中,该Flash进入编程状态;在第1片Flash的编程时段内,对第2片Flash进行数据加载操作;当第2片进入编程状态时,再对第3片进行数据加载操作;依次执行下去,待一次整体操作完成后4片Flash都已加载完数据。此时,第1片Flash的编程已经完成,处于准备就绪状态,可以写入新的数据,由此可以等效为Flash存储器的编程时间为0.这样就可以实现Flash阵列的连续传输数据,提高系统的整体速度。

多片Flash时分多路复用式数据存储原理如图3所示。

采用VHDL语言在FPGA芯片上实现NAND Flash的数据存储系统的设计

3 系统硬件实现

系统采用了Xilinx公司的FPGA进行SOPC开发,处理器选用了MicroBlaze软核,并配置相应的参数使标准IP核适应用户所设计的系统,结合外围电源电路、USB接口电路、程序配置电路,构成了一套稳定的数据存储系统。

3.1 FPGA片上系统的实现

FPGA程序主要的功能是:软件控制启动存储,在控制逻辑的作用下将前端A/D转换之后的数据先存入内部FIFO缓存中,同时启动DMA将缓存中的数据存储到外部NAND Flash存储阵列中。本文利用VHDL语言编写程序,在FPGA芯片上实现了数据的高速存储和传输控制。

3.2 USB接口电路模块

USB器件主要用于实现SOPC系统在联机模式下与主机通信以及数据的传输。USB芯片使用由FTDI公司推出的FT245R,该接口能够将USB接口信号转换为8位并行信号,上传至时钟频率为150 MHz的MicroBlaze处理器进行分析处理;并将处理器发送的数据转换成标准的USB接口数据传向PC机,完成SOPC系统与PC机之间的通信。USB接口电路如图4所示。

采用VHDL语言在FPGA芯片上实现NAND Flash的数据存储系统的设计

3.3 FPGA配置电路模块

本系统在FPGA配置电路中采用了主串配置模式。外部的配置芯片选用了XCF04S系列的PROM串行配置芯片。当系统上电时,芯片以主动配置方式来实现系统中FPGA的硬件配置。通过高速的串行接口,整个芯片的配置工作可以在很短的时间内完成。

3.4 电源模块

电源模块不仅能够为系统各器件提供各种高性能的功率输出,还能够选择合适的旁路、去耦电容来滤除各种干扰信号,保证系统的稳定工作。本系统电源模块采用了TI公司的TPS75003芯片配置相应的外围电路,实现了由5 V输入电压到3.3 V、2.5 V和1.2 V输出电压的精确转换。

4 系统验证与分析

在系统的软硬件程序设计完成并生成BIT流文件后,下载到FPGA电路板上,结合PC机中的专用软件对系统功能进行验证测试。

4.1 对NAND Flash的操作验证

在数据存储硬件系统设计过程中,用户IP核设计得好坏决定着整个系统设计的成败。系统IP核设计中集成了Flash控制器、DMA控制器以及数据和地址FIFO,为验证该IP核是否能正常工作,对其进行了Flash操作验证。示波器捕获的读Flash存储器ID号时序图如图5所示。其中通道0~4分别代表Flash的CE(片选)、ALE(地址锁存)、CLE(命令锁存)、RE(读)、WE(写)信号。图中Flash阵列的4片Flash的ID号都为EC DC 10 95 54,这与实际Flash ID相符。实验证明,Flash存储器的ID号是准确的。

采用VHDL语言在FPGA芯片上实现NAND Flash的数据存储系统的设计

4.2 文件登记表验证

实验中在Flash存储器的特定位置存有标记数据特征的文件登记表,应用程序读取文件登记表中的信息并将相应数据传输到PC机上进行后期分析。文件登记表的存储内容有:文件名、实验的次数、存储数据的长度、本次存储的首尾地址以及下次存储的首地址等。

图6为某次存储实验的文件登记表信息,图中前8个字节为文件名,往后依次为实验次数和数据通道数。本次实验中存储的长度为50 MB,存储首地址和存储尾地址分别为0x0115、0x0178.由于所用的存储策略为4片流水线式存储,每片Flash每块为128 KB,4片组成的模块中每个大块为512 KB(128 KB×4),所以可以计算出存储的数据为512 KB×(0x0178-0x0115+1)=50 MB.这与所指定的本次存储数据的长度吻合,表明存储系统正确可靠。

采用VHDL语言在FPGA芯片上实现NAND Flash的数据存储系统的设计

4.3 数据存储验证

系统构建完成后,在实验室环境中,对信号发生器产生的正弦波信号进行采集存储,通过USB接口将存储在NAND Flash芯片中的数据上传到PC机中,利用以LabVIEW为平台设计开发的"多通道数据分析软件"进行分析处理,得到的模拟信号及系统开关量数字信号波形如图7、图8所示。

采用VHDL语言在FPGA芯片上实现NAND Flash的数据存储系统的设计

对比原始信号发现,系统能够快速、无失真地采集并存储信号发生器产生的波形数据,并且能够利用不同的采样速率来记录系统开关量数字信号信息,具有较高的可靠性。

结语

本文设计了基于NAND Flash的数据存储系统,通过时分多路复用式流水线操作,极大地提高了Flash芯片的存储速度。实验表明,该系统能够快速、准确地记录信号发生器产生的波形数据,且具有性能稳定可靠、操作简单、抗过载能力强等优点。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21328

    浏览量

    593265
  • FlaSh
    +关注

    关注

    10

    文章

    1551

    浏览量

    146699
  • vhdl
    +关注

    关注

    30

    文章

    816

    浏览量

    127690
收藏 人收藏

    评论

    相关推荐

    基于FPGA器件实现大容量高速存储系统的方案设计

    本文介绍了一种以FPGA作为控制器,FLASH MEMORY作为主存储器的大容量高速存储系统方案,并对关键技术及实现途径进行了论述,在
    发表于 07-30 17:53 1979次阅读
    基于<b class='flag-5'>FPGA</b>器件<b class='flag-5'>实现</b>大容量高速<b class='flag-5'>存储系统</b>的方案设计

    Flash存储芯片:NOR FlashNAND Flash、UFS和eMMC的比较与解析

      NAND Flash是闪存的一种,广泛应用于数据存储领域。它通常被用于存储用户数据、应用程
    发表于 04-03 12:05

    标准NAND FLASH控制器

    源代码(VHDL语言)或网表形式(提供使用手册)提供,功能包括:1. 支持异步接口的SLC和MLC Nand Flash2. 最高支持时序模式5(Timing Mode 5)3. 兼容
    发表于 02-17 11:11

    求:基于FPGA数据采集存储系统的sch原理图

    设计高温环境下(最高120°)基于FPGA数据采集存储系统,就是通过传感器采集数据,通过FPGA来控制,把
    发表于 10-29 21:29

    基于FPGA数据采集存储系统

    设计高温环境下(最高120°)基于FPGA数据采集存储系统,就是通过传感器采集数据,通过FPGA来控制,把
    发表于 10-29 21:37

    标准NAND FLASH控制器/超高速NAND FLASH阵列控制器

    适应NAND FLASH阵列应用,并且可以适应各种各样的NAND FLASH芯片型号。8x8(8行8列:8个片选,64位
    发表于 03-01 18:49

    vhdl语言flash芯片读写

    我想把一个正弦波的数据点集先写入flash芯片(现在开发板是JS28F320J3D75芯片),然后读取出来,新手不知该如何下手,我用的
    发表于 11-03 14:53

    NAND闪存存储系统的低故障率如何实现

    该行业非常重视单个ECC代码的强度:但经常被忽视的是错误预防的强度,这在纠正甚至发挥作用之前是重要的我们如何在基于NAND闪存的系统实现最低的故障率?您可能已在工程团队或存储系统供应
    发表于 08-01 07:09

    基于FPGA的SD卡的数据读写实现(SD NAND FLASH

    文章目录1、存储芯片分类2、NOR FlashNAND Flash的区别3、什么是SD卡?4、什么是SD NAND?5、SD
    发表于 12-16 17:18

    芯片选型小技巧 | Nor FlashNand Flash区别与共性

    用子系统由于程序代码量较大则会采用外部Nor Flash芯片,汽车仪表盘是通过Nor Flash实现
    发表于 02-17 14:06

    基于套接字的Flash存储系统研究和实现

    本文主要针对两种不同Flash 的特征,在研究目前的Flash 存储技术基础之上,设计了一种数据存储系统
    发表于 01-20 14:52 4次下载

    NAND Flash嵌入式存储系统设计

    基于NAND Flash存储系统的设计首先要解决坏块问题。由于NAND Flash自身存在固有坏块并在擦除和编程中又随机产生坏块,因此为了
    发表于 04-25 11:10 1339次阅读
    <b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b>嵌入式<b class='flag-5'>存储系统</b>设计

    如何使用FPGA来进行微型数字存储系统设计?

    详细介绍基于FPGA的微型数字存储系统的设计.该系统利用FPGAFlash存储器进行读、写、擦
    发表于 09-07 17:14 9次下载
    如何使用<b class='flag-5'>FPGA</b>来进行微型数字<b class='flag-5'>存储系统</b>设计?

    NAND Flash存储结构以及NAND Flash的接口控制设计

    Nand flashflash存储器的其中一种,Nand flash其内部
    发表于 11-03 16:12 3923次阅读
    <b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b> 的<b class='flag-5'>存储</b>结构以及<b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b>的接口控制设计

    如何使用FPGA实现多通道图像采集存储系统的设计

    存储模块采用FLASH芯片实现数据存储。分析完成
    发表于 01-29 15:27 6次下载
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>多通道图像采集<b class='flag-5'>存储系统</b>的设计