摘 要:针对高速大容量Flash芯片控制中面临的高速可靠性不高与动态功耗大的问题,研究了一种将复杂状态机 *** 作映射到内嵌RAM上运行的方法。通过对内嵌RAM读地址的切换,实现了等延时的状态跳变与输出控制。同时采用加强时钟管理、分割组合逻辑来避免信号不必要的翻转,极大地提高了时序运行的可靠性并降低了其动态功耗。实践表明,该方法实现的Flash控制时序比传统的状态机在资源消耗和功耗方面均能降低50%以上,为复杂时序逻辑的实现提供了一个新思路。
引言
在FPGA对Flash控制 *** 作中,有限状态机(Finite State Machine,FSM)与多进程描述方式相比有着层次分明、结构清晰、易于修改和移植的明显优势而被广泛应用。传统状态机在描述实现寄存器存储状态信息、组合逻辑产生下一个状态和输出值时,大量使用了FPGA的布线、查找表、寄存器等宝贵资源。
为了实现FPGA的可编程性,在其内部使用了大量的可编程逻辑开关。由于可编程逻辑开关的电阻较金属线大得多,而且引入了大量的寄生电容,从而增加了电路功耗,降低了电路速度(研究表明,总动态功耗中62%来自于可编程布线资源)。而且大量组合逻辑容易受到布局布线延迟,在查找表的输出端产生“毛刺”,当系统时钟频率、 *** 作密度大幅提高时,极易引起时序逻辑错误。为此,研究了一种基于存储器映射的有限状态机逻辑实现方法,对FPGA资源进行选择性使用,从而达到降低FPGA功耗、提高运行可靠性的目的。
1 、NAND Flash芯片接口及底层驱动实现
NAND Flash芯片控制器主要完成初始化、无效块检测、块擦除、页编程和页读取共5个基本 *** 作模式。其中初始化 *** 作与无效块校验是在系统上电后需要率先完成的 *** 作,随后控制器将进入到空闲状态,并根据输入的相应控制信号完成剩下的块擦除、页编程和页读取 *** 作。各个 *** 作模式都是状态转移实现一定时序的输出与接收,并且用状态机容易实现。以块擦除为例,其中输入信号有Erase_en、Earse_do和R/B 3个信号,输出信号有CLE、ALE、WE、RE 4个信号,状态转移如图2所示。
2、 基于存储器映射的有限状态机设计
2.1 基于优化资源配置的低功耗、高可靠设计思路
目前主流的FPGA芯片内部除含有查找表、触发器、布线资源等基本逻辑资源外,还集成了块RAM、分部式RAM、时钟管理等多种丰富的资源。FPGA的可编程特性主要靠布线结构中的可编程开关连接可编程逻辑块实现。
不同类型资源所消耗的动态功耗在FPGA总功耗中所占比例不同。其中总动态功耗的62%来自于布线资源,19%来自于时钟网络,而可编程逻辑块只占动态功耗的19%。
根据FPGA中各种资源性能、功耗不同的现象,提出了一种新的设计思路,即在满足系统性能的前提下,对FPGA资源进行优化选择性使用,尽可能使用相对较低功耗的资源完成设计任务。将有限状态机映射到FPGA内部RAM中执行,不仅可以减少布线资源的使用,从而降低FPGA的动态功耗,而且能够消除高速状态下切换布线延迟产生的错误或者无效状态。
2.2 基于存储器映射的有限状态机设计方法
状态机组合逻辑都可以抽象为一定输入编码与一定输出编码的对应,即当前状态与输入信号共同决定次态的编码。为了能在块RAM中执行有限状态机,需要将状态机的编码及状态转移等信息映射到块RAM中。具体方法为:块RAM中每个存储单元内容分为状态机的状态编码信息与状态机的输出信息两部分。由状态机的当前编码信息和状态机的输入信息一起构成下一个状态编码信息的存储地址。
如果采用[D2:D0]表示Flash块擦除状态机的8个 *** 作状态、[D4:D3]表示分3次发送的 *** 作块地址信息、[D5]表示所用的两个 *** 作命令,则 *** 作状态编码、地址编码、命令编码即可唯一确定该状态机当前所处的状态(具体编码方式如图3所示)。其中次态的高4位是状态机向下一状态转化时的输出值,用于对Flash芯片的控制;当前态的高3位是状态机的输入控制信号。采用这种编码方式容易将图2所示的有限状态机表示为当前态与次态对应的真值表见表1。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)