今天给大侠带来如何写好状态机(三),由于篇幅比较长,如何写好状态机分成三篇呈现。前两篇已经说了状态机的基本概念以及如何写好状态机,此篇带来使用 Synplify Pro 分析 FSM。,话不多说,上货。
主要内容预览:
使用 Synplify Pro 分析 FSM
代码走读时分析 FSM 是一件比较耗时的事情,如果代码不符合式或三段式 FSM 描述规范,走读他人代码则是一件异常痛苦的事情。这里以 SynplifyPro 为例,介绍一下如何利于 EDA 工具分析 FSM,综合 FSM,提高 FSM 性能。
Synplify Pro 提供了 3 个有限状态机设计工具,FSM Compiler、FSM Explorer 和 FSM Viewer,灵活地使用这 3 个有限状态机工具分析、编译、优化 FSM,可使 FSM 的综合结果达到最优。下面逐一讨论它们的使用方法。
(1) 有限状态机编译器(FSM Compiler)
一般的综合工具将 FSM 按照普通逻辑综合,而 Synplify Pro 与之不同。Synplify Pro 使 用 FSM Compiler,先将 FSM 编译为类似状态转移图的连接图,然后对 FSM 重新编码、优化以达到更好的综合效果。
FSM Compiler 适应于有以下需求的场合:需要优化 FSM 设计,达到更好的综合效果;使用 FSM Viewer 调试状态机;使用 FSM Explorer 进一步优化有限状态机。
FSM Complier 的使用非常灵活,可以对整个设计的所有状态机都用 FSM Compiler 进行优化,也可以仅仅对指定的状态机进行优化。对整个设计使用 FSM Compiler 进行优化,只需在主界面重要综合优化参数中选择【FSM Compiler】选项,或者在综合优化参数设置时选中【FSM Compiler】选项即可。如果觉得设计其他 FSM 已经满意,而仅对某个 FSM 不满意时,可以在源代码或综合约束文件中手动添加综合属性,指定对单独状态机的编译与优化。FSM Compiler 综合属性如表 1-2 所示。
表 1-2 FSM Compiler 综合属性用法
(2) 有限状态机探测器(FSM Explorer)
FSM Explorer 使用 FSM Compiler 的编译结果,精选不同的编码方式进行状态机编码试探,从而达到对 FSM 编码的最佳优化效果。与 FSM Compiler 相比,FSM Explorer 的优化效果往往更好,编译优化所花费的时间也更长。
对设计使用 FSM Explorer 的方法也有两种:第一种是对整个设计的所有 FSM 自动运用FSM Explorer;第二种是对设计中特定的 FSM 使用 FSM Explorer。第一种方法可以在Synplify Pro 主界面重要综合优化参数中选择 FSM Explorer 有效,或者在综合优化参数设置对话框选中【FSM Explorer】选项;第二种方法需要在源代码或者综合约束文件中添加使用FSM Explorer 的综合属性声明。FSM Explorer 综合属性如表 1-3 所示。
(3) 有限状态机观察器(FSM Viewer)
在 Synplify Pro 中除了可以使用 RTL 视图和结构视图观察、分析 FSM 外,还可以使用专用 FSM 观察器(FSM Viewer)分析 FSM。FSM Viewer 将源代码中描述的 FSM 根据 FSM Compiler 和 FSM Explorer 的编译优化结果,用状态转移图显示有限状态机。
表 1-3 FSM Explorer 综合属性用法
下面以前面所述举例的 FSM 为例,讲述 FSM Viewer 的使用方法。
【例1-2】 使用 FSM Viewer 分析有限状态机
1. 启动 Synplify Pro,单击
打开“Example-1-1\FSM\state2”目录下的“state2.prj”,单击
按钮启动 RTL 视图,选择状态机模块“statemachine”,单击
按钮进入状态机层次结构,或者单击鼠标右键,在弹出命令菜单中选择【View FSM】命令,如图 1-7 所示。
图1-8 启动 FSM Viewer 分析有限状态机
FSM Viewer 的主界面主要由状态转移图和 FSM 信息显示选项卡组成。状态转移图是源代码经过编译再现的状态机。FSM 信息显示包含转移条件(Transitions)、寄存器传输级状态编码(RTL Encodings)和映射后状态编码(Mapped Encodings)等 3 个选项卡,如图 1-8 所示。
图1-9 FSM Viewer 主界面
选择某个状态,单击鼠标右键,在弹出的菜单中可以完成显示对象的选择和屏蔽,有利于理解状态之间关系,增加状态转移图的可读性,如图 1-9 所示。
图1-10 在 FSM Viewer 中选择和屏蔽状态
小结
状态机不仅仅是一种时序电路设计工具,它更是一种思想方法。状态机的本质就是对具有逻辑顺序或时序规律事件的一种描述方法。这个论断的最重要的两个词就是“逻辑顺序”和“时序规律”,这两点就是状态机所要描述的核心和强项,换言之,所有具有逻辑顺序和时序规律的事情都适合用状态机描述。
根据 FSM 描述使用的 always 模块数和功能可以将 FSM 的描述分为 3 种写法: