FPGA/CPLD状态机稳定性研究
摘要 在FPGA/CPLD设计中频繁使用的状态机,常出现一些稳定性问题,本文提出了一些解决方法,实验表明该方法有效地提高了综合效率. 随着大规模和超大规模FPGA/CPLD器件的诞生和发展,以HDL(硬件描述语言)为工具、FPGA/CPLD器件为载体的EDA技术的应用越来越广泛.从小型电子系统到大规模SOC(Systemonachip)设计,已经无处不在.在FPGA/CPLD设计中,状态机是最典型、应用最广泛的时序电路模块,如何设计一个稳定可靠的状态机是我们必须面对的问题. 1、状态机的特点和常见问题 标准状态机分为摩尔(Moore)状态机和米立(Mealy)状态机两类.Moore状态机的输出仅与当前状态值有关,且只在时钟边沿到来时才会有状态变化.Mealy状态机的输出不仅与当前状态值有关,而且与当前输入值有关,这一特点使其控制和输出更加灵活,但同时也增加了设计复杂程度.其原理如图1所示. 根据图1所示,很容易理解状态机的结构.但是为什么要使用状态机而不使用一般时序电路呢?这是因为它具有一些一般时序电路无法比拟的优点. 用VHDL描述的状态机结构分明,易读,易懂,易排错; 相对其它时序电路而言,状态机更加稳定,运行模式类似于CPU,易于实现顺序控制等. 用VHDL语言描述状态机属于一种高层次建模,结果经常出现一些出乎设计者意外的情况: 在两个状态转换时,出现过渡状态.