首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于FPGA 的高速大容量FLASH存储

基于FPGA 的高速大容量FLASH存储

1 引言
数字电路应用越来越广泛, 传统通用的数字集成芯片已经难以满足系统的功能要求, 随着系统复杂程度的提高, 所需通用集成电路的数量呈爆炸性增值, 使得电路的体积膨大, 可靠性难以保证。因而出现了现场可编程门阵列(FPGA)和复杂可编程逻器件(CPLD)。在我国20 世纪90 年代以前, 测试系统采用磁带记录, 效率和安全保障性不高; 随之出现的是遥测技术,但在传输数据的过程中会出现误差; 接着是静态存储器, 它读、写方便, 但是存储的数据会因为断电而丢失, 所以, 不利于数据长时间保存; 目前, 闪存的问世, NOR 和NAND 是现在市场上两种主要的非易失闪存技术, 它有存储容量大、体积小、可靠性高等优点, 测试系统会逐步向这个方向发展。
2 设计思想

2.1 核心芯片选择
( 1) 接受芯片选择MAX491
此芯片为RS- 422/485 扩展芯片, 为DIP14 封装。MAX491有两个控制端, 如果两个控制端由微处理器的一个I/O 口控制,则总线, 两线制, 半双工工作。如果两个控制端单独控制, 则总线为RS- 422 总线, 四线制, 全双工工作。MAX491 采用+5V 电源供电, 当供电电流仅有500uA 时, 传输速率却能达到2.5Mbits/s。它的内部有一个传输线驱动器和一个传输线接收器, 因此可以采用全双工工作。
(2) FPGA 采用Spartan- II 系列Xc2s100
Spartan- II 系列Xc2s100 有着丰富的触发器和LUT (Look-Up- Table), 非常适合复杂时序逻辑的设计。FLASH 采用SAMSUNG公司的NANDFLASH 芯片K9F8G08, 接口宽度8 位。每个芯片含8192 个数据块, 一个块分为64 页, 每页大小为(2K+64)Bytes, 其中64Bytes 为空闲区, 存储容量为8Gbit。它以页为单位进行读写, 以块为单位擦除、命令、数据、地址共用同一总线, 具有硬件数据保护功能。
2.2 MAX491 设计时需要注意的问题
( 1)RS- 422 传输线上匹配的一些说明: 理论上, 在每个接收数据信号的中点进行采样时, 只要反射信号在开始采样时衰减到足够低就可以不考虑匹配。但这在实际上难以掌握, 美国MAXIM公司有篇文章提到一条经验性的原则可以用来判断在
什么样的数据速率和电缆长度时需要进行匹配: 当信号的转换时间( 上升或下降时间) 超过电信号沿总线单向传输所需时间的3 倍以上时就可以不加匹配。
* 一般终端匹配采用终接电阻方法, RS- 422 在总线电缆的远端并接电阻, 终接电阻一般在RS- 422 网络中取100Ω, 这种
匹配方法简单有效, 但有一个缺点, 匹配电阻要消耗较大功率,对于功耗限制比较严格的系统不太适合;
* 另外一种比较省电的匹配方式是RC 匹配;
* 还有一种采用二极管的匹配方法。
( 2)RS- 422 的接地问题
RS- 422 传输网络的接地是很重要的, 因为接地系统不合理会影响整个网络的稳定性, 尤其是在工作环境比较恶劣和传输距离较远的情况下, 对于接地的要求更为严格。RS- 422 尽管采用差分平衡传输方式, 但对整个RS- 422 网络, 必须有一条低阻的信号地。一条低阻的信号地将两个接口的工作地连接起来, 使共模干扰电压VGPD 被短路。这条信号地可以是额外的一条线( 非屏蔽双绞线) , 或者是屏蔽双绞线的屏蔽层。这是最通常的接地方法。
( 3)RS- 422 的网络失效保护
RS- 422 标准都规定了接收器门限为±200mV。这样规定能够提供比较高的噪声抑制能力, 当接收器A 电平比B 电平高+
200mV 以上时, 输出为正逻辑, 反之, 则输出为负逻辑。但由于第三态的存在, 即在主机在发端发完一个信息数据后, 将总线置于第三态, 这带来了一个问题: 接收器输出状态不确定。如果接收机的输出为0V, 网络中从机将把其解释为一个新的启动位, 并试图读取后续字节, 由于永远不会有停止位, 产生一个帧错误结果, 不再有设备请求总线, 网络陷于瘫痪状态。除上述所述的总线空闲会造成两线电压差低于200mV 的情况外, 开路或短路时也会出现这种情况。故应采取一定的措施避免接收器处于不确定状态。
( 4)RS- 422 的瞬态保护
由于传输线对高频信号而言就是相当于电感, 因此对于高频瞬态干扰, 接地线实际等同于开路。这样的瞬态干扰虽然持续时间短暂, 但可能会有成百上千伏的电压。实际应用环境下还是存在高频瞬态干扰的可能。一般在切换大功率感性负载如电机、变压器、继电器等或闪电过程中都会产生幅度很高的瞬态干扰, 如果不加以适当防护就会损坏RS- 422 通信接口, 对于这种瞬态干扰可以采用隔离或旁路的方法加以防护。方法有隔离保护方法和旁路保护方法。
2.3 FPGA 内部编程设计
采用MAX491 串行接收实时数据, 并通过Xc2s100 串行数据转换为并行数据, 并控制存储到FLASH 中, 在这个过程中,最关键的是对Spartan- II 系列Xc2s100 内部编程, 内部模块包括异步串行通信模块和控制FLASH 存储、读数和擦除模块。
(1) 异步串行通信模块( 如图2)
UART 发送模块( 如图2 中的send)
* 发送器每隔16 个CLK16 时钟周期输出1 位, 次序遵循1 位起始位、8 位数据位( 假定数据位为8 位) 、1 位校验位( 可选) 、1 位停止位;
* 何时通过UART 发送数据由CPU 控制, 也就是说CPU要接受数据必须判断当前是否可写, 如果不判这个条件, 接受的数据会出错。
* 数据的发送是由微处理器控制, 微处理器给出信号, 发送模块根据此信号将并行数据din[7..0]通过移位寄存器转换为串行数据至串行数据输出端Txd。
UART 接收模块( 如图2 中的receive)
* 串行数据帧和接收时钟是异步的, 发送来的数据由逻辑‘1’变为逻辑‘0’可以视为一个数据帧的开始。
* 接收器先要捕捉起始位, 确定rxd 输入由1 到0, 逻辑0需要8 个CLK16 时钟周期, 才是正常的起始位, 然后在每隔16个CLK16 时钟周期采样接收数据( 也可以为其它数) , 将串行数据din 通过移位寄存器发送串行数据至并行数据输出端dout
[7..0], 放入存储器件。在数据发送过程中用输出信号fifowr 作为标志信号, 当一帧数据发送完毕时, fifowr 信号为0, 通知CPU在下个时钟装入新数据。

(2) FLASH 存储、读数和擦除模块( 如图3)
FLASH 在写数据、读数据和擦除时,编写控制FLASH 的程序, 要按照如下规则:
* 页编程: 器件的编程以页为单位, 但在一个页编程周期中允许对部分页(一个或连续的多个字节)编程。一个页编程周期由串行数据加载阶段和紧随的编程阶段组成。在数据加载阶段, 数据被加载到数据寄存器中;在编程阶段, 已加载的数据写入实际的存储单元, 编程典型时间为200μs。
* 页读: 器件在上电时, 就被初始化为读模式, 此时可以不写00h 命令, 直接写入地址和30h 命令即可。有两种类型的读,分别是随机读和顺序页读。由于设计存储时是基于整个页操作, 所以读命令使用顺序页读。命令打入后经过最多20μs 的时间, 数据则会从选择的页传到数据寄存器中。
* 块擦除: 器件的擦除操作是以块为单位的。块地址加载由擦除建立命令60h 启动, 然后输入确认命令D0h, 执行内部擦除过程。这一先建立再执行的两步命令时序, 确保了存储内容不会由外部的干扰而意外擦除, 擦除时间典型值为1.5ms。

3 系统调试
电路通过模拟接受一组实时串行数据, 经过FPGA 串行数据转换为并行数据, 并且存储到FLASH; 再与主机通信读回存
储在FLASH 中的数据。它已经可以稳定的工作在180Mbytes/s的存储速度, 满足了所需的机载实验要求。USB 芯片工作在从方式(Slave FIFO 模式), 由FPGA 控制芯片的读写, 同步传输数据。实测中通过USB 回放数据的速度15Mbytes/s。
4 结论
本文设计了基于FPGA 和FLASH 存储测试系统, 使FPGA与FLASH 各自的优点得到了有效的发挥: 本文作者创新点:
RS- 422 电平传输串行数据, 通过FPGA 把串行数据转化为并行数据存储到高速大容量的FLASH 的存储系统的具体设计和实施, 在保证系统工作性能的情况下简化了系统设计, 并验证了系统设计方案的正确性和可行性, 为进一步工程化实现打下了良好的基础, 具有一定的工程应用价值。
作者:麻海霞,马铁华
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表