基于FPGA的F-RAM防掉电设计
摘要 在复杂实验条件下,需采用非易失性铁电存储器记录重要数据。为防止二次上电时实验数据被覆盖,需设计防掉电功能。文中介绍了一种F-RAM的防棹电设计思路,并基于现场可编程门阵列实现,板级验证工作正常,并已在相关项目中得到应用且达到了预期功能。
本文引用地址:http://www.amcfsurvey.com/article/201610/308466.htm在弹载、密闭舱等某些复杂实验条件下,为记录实验数据,国内外通常采用SRAM加后备电池、EEPROM、NVRAM的3种方式。其中SRAM加后备电池的方法增加了硬件的复杂性,同时又降低了系统的可靠性;EEPROM的写操作时间较长;NVRAM的价格限制了其的普及应用。鉴于以上情况,越来越多的设计者将注意力投向了新型的非易失性铁电存储器(F-RAM)。非易失性铁电存储器具有实时写入,读写操作简单,可擦写次数可达亿次量级,并具有低功耗等突出优点。
系统实验中可能会出现二次上电情况,此时系统再次正常工作,将向F-RAM中重新写入数据,造成已采集有效数据的覆盖,为避免数据覆盖的发生设计中需增加防掉电功能。本文主要介绍一款F-RAM芯片的硬件配置、读写操作时序,阐明了防掉电设计思路及其FPGA实现,同时验证了方法的正确性。
1 F-RAM及FPGA
本文选择FM23MLD16的8 Mbit F-RAM存储器,48个管脚BGA封装,可抗高过载,作为FPGA的外设器件。首先器件配置应正确,硬件配置决定了软件的控制及时序。根据手册,本文选择如图1所示的配置方式。
硬件上
接为低电平、CE2接为高电平,程序中将UB、LB接成低电平以配置成数据位宽16bit模式。根据硬件配置,读写操作利用
、
两信号控制,且时序关系确定,如图2和图3所示。硬件配置中需注意的是
上拉电阻务必要加入,以保证在上电及掉电时
信号不为低电平。
设计需满足时序要求,对F-RAM的读写时钟最终确定为5 MHz。由图2可知该配置下,读操作相对简单,
为低,
为高,地址变化即可;写操作需注意
的上升沿与地址、数据间满足建立时间、保持时间要求,文中
的上升沿处于数据中段。
FPGA既具有门阵列的高逻辑密度和高可靠性,又具有用户可编程特性,可减少系统设计和维护的风险,降低产品成本,并缩短设计周期。FPGA有着规整的内部逻辑块阵列和丰富的连线资源,适合于细粒度和高并行度结构特点的数字信号处理任务,可大幅提高系统处理速度。管脚资源丰富是采用FPGA实现的重要原因,且时序控制方便。
2 防掉电设计思路
正常的读写操作,在所选择硬件配置下满足时序要求即可。防掉电功能通过在写模式上电后,首先以判断标志位的方式实现,若标志位未写入标志信息,则执行写操作,否则进入空闲模式不再写入。而读模式将存储器内数据正常读出即可。设计增加擦除模式,将F-RAM中所有数据清零,且标志位也清零。
读写及擦除模式间的切换是通过两外置管脚的输入电平来控制的,两管脚可实现4种组合满足本文的需要,上电时通过判断管脚电平进入相应模式。其设计流程如图4所示。
图4中E、WOR为两个外置的控制管脚,0、1代表高低电平。为数据分析方便,设计每包数据均加帧头、帧尾标志信息。最初的设计思路为在标志位写固定值,上电写操作模式下先读取该标志位,擦除也只是将标志位清零。后经分析可将帧头作为标志信息,这样大幅简化了设计复杂度。每包数据帧头均由4个16'h007E构成,将其作为标志位,则写模式下,判断初始4个地址中是否为该标志位即可判别是否已写入数据,实现防掉电功能。擦除模式下将所有存储数据均清为0。每次上电后系统重新判断E、WOR状态,而读写地址均从0开始重新变化。
3 板级验证
由于该器件为FPGA外置芯片,因此读写操作的正确性需在信号处理板上进行调试,设计中的仿真只保证读写时序与设计思路一致。
板级验证方法:实验前控制E、WOR为擦除模式,数据清空。再接为写模式,则可正常写入数据,重新上电,仍处于写模式,此时标志位已写入标志信息,则结束进入空模式而不再重新写入,最后再进入读模式。具体步骤为:(1)进行擦除操作,然后系统掉电。(2)读操作看是否将F-RAM中数据清为0,然后系统掉电。(3)写操作重复写入同一组已知格式的数据(16 bit位宽),本文采用:4个帧头(16'h007E)+数据(16'd 1、2、…、800)+2个帧尾作为第一组数据,写满后系统掉电。(4)二次写操作,仍保持E、WOR为低电平,此时每帧数据封装格式不变,将数据调整为800,799,…,1,然后系统掉电。(5)读操作,从F-RAM中读取数据,若为第一组数据则结果正确。实验结果如图5(a)~图5(c)所示,分别对应(1)~(5)步实验步骤。
图5为使用同一bit文件观测,图中相关信号的说明如表1所示。
实验结果说明,图5(a)为第一步擦除操作,E、WOR均接为低电子,擦除即将每个地址中均写入数据0,对应d_writein均为0,按写地址顺序变化。图5(b)为第二步读取操作,E、WOR均接为高电平,读取过程中读地址(r_addr_d1)顺序变化,此时读出数据均为0(read_data),说明第一步擦除有效已将标志位清零。图5(c)为第三步写第一组数据,如图所示写地址随数据顺序增加,写F-RAM时wewe上升沿与数据及地址对齐,oeoe为低电平。图5(d)为系统二次上电E、WOR均接为低电平,仍为写模式,写入第二组数据,由于在第三步中标志位已写入标志信息,系统进入空闲模式,结束对F-RAM的操作(oeoe拉高,读写使能均为低电平)。图5(c)为第五步读取操作,读数据时,需并串转换后经异步串口将数据输出,发送完一个数据后将再读出另一个,串口速率比读时钟慢,因此图中读一个数显示占用了若干周期。
图5(c)的结果说明读出数据为实验第三步即第一次写入的数据,重复验证结果不变,说明达到了防掉电的目的,且读写功能正常,符合设计要求。
设计中考虑试验时可能遇到的E、WOR线断情况,故给两控制管脚均接入下拉电阻,避免了控制写操作时E、WOR变为高电平,进而防止了误操作的发生。
4 结束语
本文介绍了F-RAM的基本读写时序,并着重说明了基于FPGA实现防掉电的设计思路。设计利用数据帧头信息作为标志位,简化了逻辑复杂度。该方法已应用于相关项目中,为实验数据记录分析及查找问题提供了方便。
评论