原创 FSM的时序优化——输出逻辑同步和响应速度

2007-11-18 20:36 4771 1 1 分类: FPGA/CPLD

    一、“x段式”描述的由来。 riple


    考虑了时序优化的FSM的描述由两部分组成:状态寄存器及其更新逻辑和输出寄存器及其更新逻辑。如果把寄存器和更新逻辑分开描述,一个FSM可以最多采用四段代码进行描述: riple




  1. 状态寄存器现态赋值(时序逻辑) riple


  2. 状态寄存器次态赋值(组合逻辑) riple


  3. 输出寄存器现态赋值(时序逻辑) riple


  4. 输出寄存器次态赋值(组合逻辑) riple

    如果从编码方便和易于阅读的角度考虑,可以把上述组成部分任意合并,得到不同的“n段式”描述方式。(我在学习数字电路时总结出了这样一个公式:组合逻辑 + 时序逻辑 = 时序逻辑,时序逻辑和组合逻辑的界限并不是那么清晰。) riple


 


 


    二、输出采用寄存器驱动可以优化FSM的时序性能。 riple


    影响一个时序电路运行速度的主要因素是该电路中两个寄存器之间组合逻辑路径的长度。越长的组合逻辑路径,其时序性能越差。一个电路中最长的组合逻辑路径决定了该电路最高运行频率,该路径就是该电路的“关键路径”(critical path)。所以,切断最长的组合逻辑路径可以提高局部电路的运行频率,切断多个较长的组合逻辑路径可以提高整体电路的运行频率。切断组合逻辑路径的工具就是寄存器。所以,添加寄存器可以提高电路的性能,但是会带来资源(面积)的增长。这也就是速度(speed)和面积(area)互为矛盾的原因。 riple


    由上面的分析,也就不难得出输出采用寄存器驱动可以优化FSM时序性能的原因。在考虑FSM的时序问题时,不能独立地考虑FSM本身,需要综合考虑FSM模块和其下游模块构成的电路。在FSM不采用输出寄存时,在FSM模块和其下游模块的接口处,组合逻辑路径由两部分组合逻辑直接相连组成: riple


 


    关键路径 = FSM的状态寄存器输出端(Q)到FSM模块输出端口之间的组合逻辑com1 + 下游模块的输入端口到下游模块第一级寄存器输入端(D)之间的组合逻辑com2 riple


 


    与此相反,在FSM采用输出寄存时,这两部分组合逻辑之间不是直接相连,而是通过FSM的输出寄存器连接,也就是说:两个模块之间的组合逻辑路径被切断成了两段,可能的关键路径被切断了。 riple


点击看大图


 


 


    三、输出采用寄存器驱动会减慢输出对输入信号变化的响应速度? riple


    输出采用寄存器驱动可以带来电路运行速度的提升,但是会导致电路对输入信号响应速度的下降。这是令人困惑的:到底该不该采用FSM输出寄存器?是否必须要在时序性能和响应速度之间做出取舍?在同步电路设计中,答案是必须牺牲一定的响应速度以换取最佳的时序性能,只考虑电路的响应速度会带来潜在的时序性能损失。 riple


    在考虑FSM的响应速度问题时,不能独立地考虑FSM本身,需要综合考虑FSM模块和其上、下游模块构成的电路。 riple


    去除FSM模块的输出寄存器后,关键路径由下面公式构成: riple


 


    关键路径 = 上游模块的输出寄存器输出端(Q1)到FSM模块输出端口之间的组合逻辑com1 + FSM模块输出端口到下游模块的输入寄存器输入端(D3)之间的组合逻辑com2 riple


 


    与上面对电路时序性能的分析相同,添加输出寄存器后,该关键路径也被切断成为两部分,电路的运行频率得到了提高。 riple


点击看大图


 


    在上图中,由于采用了输出寄存器,上侧电路的运行频率高于下侧电路的运行频率。当仅考虑局部路径上的传播差异时,上侧电路的响应时间比下侧电路的响应时间长Tsu+Tco;如果上侧电路降低运行频率,运行在下侧电路的运行频率时,上侧电路需要两个时钟周期,下侧电路仅需一个时钟周期即可完成对输入信号的响应,上侧电路的响应时间比下侧电路的响应时间长一个时钟周期;如果下侧电路提高运行频率,强行运行在上侧电路的最高运行频率时,下侧电路不能在一个时钟周期内完成com1+com2所需的传播时间(该路径成为multi-cylcle path),需要两个时钟周期才能完成,上下两个电路的响应时间相同。 riple


 


    所以,采用输出寄存器的电路可以运行在更高的时钟频率下,所引入的响应延时与更高的运行频率相比是可以牺牲的。 riple

文章评论0条评论)

登录后参与讨论
相关推荐阅读
ash_riple_768180695 2015-12-18 11:06
学习示例程序:FPGA快速系统原型设计--敏捷实践
        学习与开发板配套的示例程序,是敏捷实践的起点。示例程序是厂商针对开发板上提供的硬件资源和接口量身定做的工程,可以展示其FPGA芯片的功能和性能特点。从示例程序入手最大的好处就是:示...
ash_riple_768180695 2015-11-03 16:46
开发板选取:FPGA快速系统原型设计--敏捷实践
    既然是“实践”,就不能只谈编码和仿真,必须要上板运行、调试。这个虚拟项目的目标是实现一块兼容Intel82574L以太网控制器的千兆网卡,需要运行在一块具备PCIe接口和10/100/10...
ash_riple_768180695 2015-10-22 12:41
开篇:FPGA快速系统原型设计--敏捷实践
    虽然借用了 “系统原型开发”的标题,本系列文章将围绕FPGA IP级别的开发这个主题展开,如果可能的话,将扩展至FPGA System级别的开发。     先上一篇PPT:RSPwFP...
ash_riple_768180695 2013-08-26 10:21
学习SystemVerilog(二)——学习它的理由
    学习SystemVerilog的理由也很多,我在阅读SystemVerilog for Design 和 SystemVerilog for Verification两本书前言的过程中,总...
ash_riple_768180695 2013-08-26 10:19
学习SystemVerilog(一)——不学习它的理由
    想要学习SystemVerilog已经很久了。曾经尝试通过Accellera网站上给出的LRM学习,怎奈内容众多,找不出入手点和重点,只能望而却步。虽然手头有三本SystemVerilog...
ash_riple_768180695 2011-06-26 23:20
Hardware-Assisted IEEE1588 Implementation Analysis
06/18/11 11:00:05 PM         最近一段时间在研究IEEE1588-2008精确时间同步协议(PTP)。该协议可以在软件中实现,如果需要提高时间同步...
广告
EE直播间
更多
我要评论
0
1
广告
关闭 热点推荐上一条 /5 下一条