首页资源分类FPGA/CPLDAltera > FPGA设计中状态机安全性研究

FPGA设计中状态机安全性研究

已有 447940个资源

下载专区

上传者其他资源

    FPGA/CPLD热门资源

    本周本月全部

    文档信息举报收藏

    标    签:FPGA状态机死机问题

    分    享:

    文档简介

    在FPGA开发中遇到状态机死机的问题,比较有参考价值的文章,学习学习

    文档预览

    杨宏亮等 ,FPGA设计中状态机安全J性研究  Vo1.2.N。.2,201 1  FPGA设计 中状态机安全性研究  Research on Security of State M achine in FPGA-based Design  杨宏亮 ,金 炎胜 ,王刚毅 2  (1.穆 棱 卷 烟 厂 ,黑 龙江 穆 棱 157500:  2.哈尔滨工业大学 电子与信息工程学院 ,黑龙江 哈尔滨 150001)  YANG Hong—Liang‘.JIN Yan—shend and WANG Gang-yi  f J.MuLingCigarette Factory,Muling 157500,Chino;  2.School ofElectronic and Information Engneering,Harbin Institute of Technology,Harbin 150001,China)  摘 要 :为 了能 完 善 解 决 基 于 FPGA设 计 中 出现 的 状 态 机 “跑 飞 ”现 象 的问 题 ,本 文 通 过 全 面 剖 析 该 现 象 的 实质 ,分 析 了该 现 象 产  生的根本原 因,总结 了导致其产生 的两个直接原 因,针对这些原因总结 了解决该问题 的若干种方法 ,概括 为两类 :事先预防和事后保  护 ;并 通 过 实验 剖 析 了 Quartus II中安 全 状 态机 的本 质 和 它 的实 现 方 法 。安 全 状 态 机 只是 事 后 保 护 方法 中一 种 。必须 将 事 先 预 防和 安  全状态机结合起来 ,才能达到妥善解决状态机 “跑飞”问题的 目的。  关键 词 :FPGA;安 全 状 态 机 ;编 码 方式 ;双 跳 ;非 法 状 态  中 图分 类 号 :TP 309.2  文 献标 识 码 :A  文章 编 号 :1674—8646(201 1)02—0016-04  Abstract:The purpose of this paper is to completely resolve the problem of FSM ’S “running out” phenomenon in FPGA-based design.This paper  analyzes the root cause and summarizes two leading direct causes to the problem through comprehensive analysis of the substance of this phenomenon.Ac—  cording to the causes,two kinds of solutions to the problem are summarized:prevention and protection.Through experiments,the nature and realization of  “Safe State Machine”in Quartus II are analyzed.“Sa fe State Machine”is just a kind of protection method.Prevention and protection must be integrated and  then,our destination can be achieved.  Key words:FPGA;sa fe state machine;encoded mode;double jump;illegal state  随着 EDA技术 的不 断发 展 ,FPGA在各 个 领域 都  得 到 了广 泛 的应 用 ,而在 这 些 FPGA应 用 中 ,绝 大部  分都 使用 到状 态机 的方 法 ,状态 机 对 于每个 各 自的设  计 都 起着 至关 重要 的作 用 ,一 旦状 态机 出现卡 死 ,也  就是 出现 了通 常说 的 “状态 机跑 飞 ”现象 ,整 个设 计将  无法 继续 工作 。鉴 于状 态 机 的设 计 的重要 性 ,有必要  对 状态 机 的安全性 进行 深人 的研究 。  本 文 的研 究 内容如 下 :首先 ,从 状 态 机 编 码讨 论  状 态 机 出现卡 死 的可能 性 ;然后 ,详 细分 析 状态 机 “跑  飞 ”现 象 的原 因 ,并 提供 几 种 解决 状 态机 “跑 飞 ”问题  的方 法 ;最后 ,深 入研 究 了 EDA工 具软 件 Quartus II  中“Safe State Machine”选项 选 中后对 状态 机 电路 带 来  的影 响 。  1  导致状 态机“跑飞”现象 的原 因分析  1.1 状态 机编码 问题  在 对状 态 机进 行编 码 的时 候 ,总是 不 可避 免地 会  出现大 量 的剩余 状 态…,即未被 定 义 的编码 组合 ,这 些  编码 组 合 由于在 状 态机 正 常运 行 时是 不需 要 出现 的 ,  所 以通 常被称 为非法 状态 。  正 是 由于 非法 状态 的存在 ,为 状 态机跑 飞 现象 提  供 了可 能性 。  1.2 恶 劣工作环 境 的影响  这 个原 因 比较 容易 理解 ,如 果最 后 的产 品 工作 环  境 比较 恶 劣 ,比如 工作 在太 空 中 ,众 所 周知 ,太 空 中存  在 着各 种粒 子 ,受辐 射程 度很 高 ,FPGA中的存 储单 元  就有 可 能 因 为受 到 各 种 粒子 的撞 击 而 改 变其 中存 储  的值…。如果 状态 机 中的状 态存储 器 中的一位 突 然改  变 了 ,那 么状 态机 就有 可能进入 到非 法状 态 。例 如 :一  个 3个 工作状 态采 用 One—hot编码 的状 态机 ,其 合法  编码 组 合 为 “001”,“010”,“100”。如 果 在状 态 “001”  时 ,突 然 其 中一 位 受 到 影 响 而 翻转 了 ,变 成 了 “101”,  收 稿 日期 :2011—02—25  作者简介 :杨宏亮 (1963一)男,黑龙江省双城人,工程师,研究方 向:机电一体化。  黑 龙 江 科 学  2011年第 2卷第 2期  HEIL0NGJIANG SCIENCE  现在 显然 就进 入 了非法 状 态 ,如果 没 有相 应 的补 救措  施 ,这 个状 态机 就会卡死 。  一~~一一咖~咖一  1 Q1 :Q3 a  {Q ““=Q。  (1)  1.3 状态机 中有异 步输 入  也 就 是说 状 态 机 如何 跳 转 不 仅 仅 受 当前 状 态 的  影 响 ,还受异 步输 入 的控 制 。为 方便分 析 ,举 一个 带异  步输入 实例 ,其状 态转换 图如图 1所示 。  = l  l Q, =Q2¨(Q3”+a)  从状 态 转 换 方 程 中可 以看  有 两 个 触 发器 次态  跟 异步 输入 ‘a’有关 ,分 别为 D1和 D3。当 a发 生变化  时 ,D1和 D3的值也 会 随之 发 生相 应 的改 变 。在 时钟  clk上 升沿 到 来 时 ,如 果输 入 a稳 定 保持 不 变 ,则 D1,  D2.D3这三 个触 发 器输 出 也会 稳定 ,状 态 机 保持 正常  运 行 ;但 是 如 果 a的值 也 刚 好 正 在 变 化 ,情 况 就 变 得  不 可 预测 了 。 因为各 个 触 发 器 D端 组 合 逻 辑不 尽 相  同 ,所 以各 个组合 逻辑 产生 的延迟 也不 同。这 样 ,如果  在 同一 时刻 ,a正 在变 化 ,由于 延 迟不 同 的缘 故 ,各 个  触 发器 所 采集 到 的 a的值 也会 有 所不 同 ,可能 有 的是  ‘1’ 有 的是 ‘0’,还 有 可 能 因触 发 器 建 立 保 持 时 间 不  , 够 出现亚 稳态 。假设 D1触发 器采集 到 的 a为 1,而 D3  触 发 器采 集 到 的 a为 ‘0’,那 么 D1和 D3这两 个 触 发  器 的输 出就 肯 定有 一 个是 错误 的 ,从 而 就有 可 能导 致  状态 机 出现非 法状 态而 卡死 。  2 解 决 的办 法  图 2综 合 的状 态 机 电路 图  Fig.2 Quartus I1 integrated circuit of state machine  根据 图 2所示 ,设 j个 D触发器 的初 态为 Q.n,Q:[i,  Q,“,次 态分 别 为 Q。  ,Q2n+l Q,n+l,其 状 态转 换 方 程如 下 :  分析 完 导致 状态 机 跑 飞现 象 的几 种原 因 ,针 对不  同 的原 因我们可 以提 出不 同 的解 决方 案 。问题 的解决  方 案 ,总是 有 两种 类 型 :事先 预 防 和事后 补 救 。 同样 ,  解 决状 态机跑 飞 问题也 是如 此 。  2.1  预 防措施  事 故 的最 好解 决 办法 一定 是 “防患 于 未然 ”,事 故  一 旦 发 生 ,无 论 补救 措 施 多 么 的及 时 ,或 多 或 少 都 会  造成 一些 损 失 。状 态 机跑 飞现 象 也是  ̄ml-L,如果 能 预  防状 态机 进 入非 法 状态 ,或者 减 少状 态机 进 入非 法状  态 的可能性 ,无 疑是 一个好 办 法 。  2.1.1 选 用 合 适 的 编 码 方 式  既 然 由于大 量非 法 状态 的 存在 ,为状 态机 跑 飞提  供 了可 能 性 ,那 么减 少这 种 可 能性 就是 一 个好 的努 力  方 向 。对 同一 个状 态机 来说 ,不用 的编码 方式 ,其剩 余  状 态可 能会 不 同 。Binary编 码 和 One—hot编码 是最 常  用 的两种 编码 方式 。  对 于 Binar y 编 码来说 ,如果状 态 数 N正好 是 2的  幂次 ,则 不 会 出现 非法 状 态 。然 而刚 好符 合 这种 情 况  的 时候很 少 。更 一 般 的情 形 ,如 果用 到 的合 法状 态 数  量 为 N,触 发 器 的 数量 n=llog N1,由此非 法 状 态 的 数  量 M=2"-N。对于 One—hot编码 来说 ,出现 非法状 态 是  杨宏亮等 ,FPGA设计中状态机安全性研究  必然 的结果 。如果使 用到 的合法 状态数 量 为 N,则设 计  状态 机 所需 的触 发 器数 量也 为 N,由此 非法 状 态 的数  量 M=2n-N。假设 同样是 6个状 态 ,用 BinaI7编码 只有  两个非 法状态 ,而用 One—hot进行 编码 却有 58个非 法  状 态 。正 因 为非 法 状态 的存 在 ,为状 态 机跑 飞 提供 了  可能 ,而非 法状 态越 多 ,可 能性 就越 大 ,单就 这一 点 可  以得  :One—hot编 码 的状 态 机 比 Binary编 码 的状态  机更 容 易 跑 飞 ,而且 状 态 机状 态 数 越 多 ,这 种 趋 势越  明显 。  然 而 ,选用 什 么样 的编 码 方式 对状 态机 进行 编码  是一个 综合 考虑 的问题 ,而并 不 是说 Binary编码 剩余  状 态 少 就 一 定 要 用 它 对 状 态机 进 行 编码 。 事 实 卜,  Quartus II的默认 编码 方式是 One—hot编码 。  2.1.2 异步输 入 同步化  这 是针对 状态 机有 异步输 入 的情 况 。异步 输入 同  步化是 一个跨 时钟 域 的问题 。对于 1.3节 中的状 态机 ,  因 为只是单 比特 的异步 信 号 ,可以通 过 “双跳 ”技 术来  对其进 行 同步 。  要 能在 出现更 大损 失 之前 纠正 状态 机 的状 态 ,使 其 能  够 自动地 回到正常 T作状 态 。所 谓 “事 后”是指 状态 机  进 入 r非 法状 态后 ,而不 是 出现 跑飞之 后 。  2.2.1 非 法 状 态 的 处理   正是 F}1于大 量非 法状 态 的存 在 ,为状 态机 跑 飞现  象 提供 了可 能性 ,所 以理论 上 如果对 所 有 的非法 状态  都 进 行逻 辑 控 制 ,使 能 回来 正 常 丁 作状 态 上 来 ,就能  杜绝 状态 机跑 飞现象 。  (1)方 法 一   假设 一 个状 态机 正 常用 到 的状态 为 “st0”、“stl”、  “ st2”等 3个 ,用 的编码 方式 是 Binar y,那 么 还剩余 1个  编码 组合 ,也就 是说 还 剩下 1个非法 状 态 。这 1个非  法状 态 在正 常状 态 机运 转 的时候 用 不到 ,但 是现 在在  枚举 状态 时 ,也 把这些 列上 :“undef ined”。用 VHDL语  言 表示如 下 :  定义 部分 :  type mstate(stO,st l,st2,undefined);  signal state :mstate;  实现 部分 :  ease state is  when st0=> state<=st l:  i  一一 一  .— —   图 3双 跳 以及 双 跳 重 新 同 步  Fig.3 Double jump and double jump to re—sync  在 图 3中 b是 第 一 个 触发 器 的输  ,a是第 二 个  触发 器 的输  。理 论上说 ,可 以输  准稳 态信 号 ,但 是  实 际 E准稳 态信 号会 很快 稳 定下 来 ,不 能一直 维 持其  准稳 态 的状态 。所 以第 二个触 发器 可用来 防止其 他 电  路 发现这 个准稳 态信 号 。可 以看 到引入 了双跳技 术会  对输 入 a延迟 1~2个时钟 周 期 ,但是 一 般情况 下 一个  外 部 事 件 触 发 引起 FPGA 内部 一 个 动作 的一 个 比特  位 可能 发生 的频 率 很小 ,通 常 附加 几个 纳秒 对逻 辑将  不 构成影 响 。  2_2 事后 容错 机制  有 时候 ,虽然 做 了足够 的预 防 措施 ,但 是 也 无法  做 到 能消 除一切 隐患 。事故 发 生 了 ,就 需要 及 时地 采  取行动 进行 补救 以减少损 失 。比如 由于恶劣 的环境 影  响 ,状 态机 已经 进 入 了非法 状 态 ,这 件 事 已经发 生 了 ,  when undefined=> state<= stO;  end case;  这 样 ,即使状 态 机 进入 了非 法状 态 “undefined”,  由于加 入 对这 个状 态 的处 理 ,状态 机也 会 重新 回到 正  常T作状 态 。  这 种方 法对 Binar y 编 码方 式来 说 还可 能有 效 ,但  是对 于 One—hot编 码来说 ,因 为 One—hot编码 的非 法  状念 太多 厂,编写起 来 过 于繁 琐 ,同样 是 上面 的例 子 ,  用 One—hot来进 行编 码 ,就会 出现 5个 非法状 态 。  (2)万 法 二   VHDL语 法提 供 了另 一种 简便 的方法 ,如 2.2节  所述 ,利用 others语 句对 未提到 的状 态进行 统一处 理 。  参 照 2.2节 巾有关部 分重 新改 写如下 :  case state 1s  when stO => state<= st1:  when olhers=> state <= st0;  end case;  在 others时 ,state不一 定 必须 指 到 st0,也 可 以指  到 别 的状 态或 者是 特定 的处理 模块 。语法上 这种方 法  2011年 第 2卷 第 2期  黑 龙 江 科 学  HEII ON GJIANG SCIENCE  很有 效果 ,但 是实 际上 会有所 不 同 ,例 如 Quarlus、Syn—  2.2.2 加 入 检 测 模 块   p1ifV等 EDA E具 在综 合 以 卜的代码 时 ,会 自动 忽视  采 用 检测 模 块来 检 洲状 态 机是 否进 入 非 法状 态 ,  others这一行 ,并 不生 成相  的 电路 。这种 忽视 是有 意  的 ,是 对状态 机进行 优化 的结 果 。在绝 大 多数情 况下 ,  状 态 机不会 进 入到 非法 状 态 ,即使 往极 少 数情 况 下状  如果 检测 到 了 ,就进 行 一个 特殊 操 作使 状 态 机转 入一  个 特定 的状态 。 以 One—hot编码 为例 :One—hot编 码方  式有 自己 的特点 ,_F常 状态 只 可能有 一个 触 发器 的状  态机进  ̄l-4k法状 态 r,用 以 L的采 用冗 余 方法 综 合 出  态 为 “1”,其余 触 发 器 的状 态 皆为 “0”,即任 何 多 于 1个  来 的电路 所 费得 资源 太多 ,所 以 许多 EDA -E具 采取  触 发器 为 “1”的状 态均 为非 法 状态 。 因此,可 通过 判断  忽视 这 条语 句 的做 法 ,而 提 供 r另 一条 更有 效 的方  是 否 在 同一 时刻 有 多 个 寄 仔 器 为 “1”,若 有 ,则启 动 卡日  法 :“安 全状态 机 ”。  关操 作米 恢 复状 态 机 。  如果 想 others这一 句不 被综合 掉 ,可 以选 择 自己  2.2.3 选 用 安 全 状 态 机  手动 对 状态 机 进 行 编码 而 不 采 用 声 明 为状 态 机 的语  采用 EDA 丁具 中安 伞状 态机 。现在 EDA I 具 都  法。这种编 写 方法 Quartus lI无法识 别 f}1状 态机 ,自然  提供 这一 功能 。以 Quartus 11 8.1为例 ,进 人 界面后 ,选  也 就 无 法对 其 进 行优 化 ,others这 一行 就 能 综 合 处 正  择 “Assignments一>settings一>Analysis& Synthesis set—  常的 电路来 。  tings一>more settings” 找 到 “Safe State Mac:hine”,将其 设  , 一 般情况 下 ,这 种恢 复 电路 是通 过 加入 组合 逻 辑  置 为“ON”即可 。  来 实现 的。如 图 4所示 ,为 了能使状 态机 恢复 正常 ,在  触发 器 的 D端 原组合 逻辑 的基础 』二,增 加 __ r…一些新 的  3  结  论  组合 逻辑 。这 种 电路 虽然 实 现 _r自动恢 复 的功 能 ,但  是也 增加 了延 迟 。可能 带来 一 些 负 面的影 响 ,如可 允  许 的最 大 时钟 频 率 减 小或 者 达  到 触发 器 建立 保 持  时 间 等 。 可 以考 虑 另一 种 方 法 :利 用 D触 发 器 的异  (1)有 剩 余状 态 的存 在 ,为状 态 机 跑 飞 想 象 的  现 提供 _r可能 。剩 余 状 态 的多 少 与编码 方式有 关 系 ,  所 以可 以通 过 选 择 合 适 的编 码 方式 来 尽量 减 少 这 种  可 能性 ;  (2)在 编写 程 序 阶段 ,设 计者对 恶 劣环 境 因素 的  影 响足无 能 为力 的。幸好 经 常遇 到 的状 态机 跑飞 问题  都是 南异 步输 入 引起 的 ,利用 双跳 技 术将 异 步输 入 同  步化 即可 消除这 个 因素 ;  图 4一 种 自动恢 复 电路 模 式  Fig.4 An automatic recovery circuit mode  步 清零端来 恢 复 。 当状 态 机  现 异常 时 ,将 每个 触发  器 的状 态清 零 。这种 方式 克服 了前一 种方 法 的:L ̄Jjij延  迟 的缺点 ,但对 状 态机 的编 码 有一 定 的要 求 。对 所有  的 触发 器进 行 清 零 后 ,状 态 机 回到 r全 零 状 态 ,所 以  (3)  为 不 可 能 彻 底 消 除状 态 机跑 飞 的可 能 性 ,  所 以事 后 容错机 制是必 小 可少 的。本 文列  了一些 容  错 方法 ,其 中最 简单有效 的就是选 用安 全状 态机 ;  (4)要 想设 计 安 全健 h,就 必 须 努 力 减 少状 态机  进 入非 法 状 态 的可 能 。安全 状 态机 所 谓 的“安 全 ”,并  不 是真  的安 全 ,实际 L只是 容错 机制 的 一种 。  全零状 态必须 是一 个合法 的 f 作状 态 。这就 要求 在对  参 考 文 献 :  状 态机 编码 时 ,注 意必 须要 自 一 个状 态是 全零 。D触  【1j 潘松 ,黄 继 、  EDA技 术 实 用 教 程 :VHI)I 版 (第 4版 )IMI—E京 :科 学 Ⅲ  发 器 除 了有 一 个清 零 端 外 ,还 骨 一 个 置位 端 ,为 什 么  这里用 清零 而不用 置位 呢 ?这是 凶为许 多 FPGA 中 D  触发 器没 有置位 端 ,只有清 零端 ,要 实 现置 位 ,必 须要  加入其 他  辑 ,所 以使用 清零 端是最 高效 的方 法 。  版 礼 .2010.  12I  AL FERA CORPORATION.QIⅢ Ills 11 Handbook,Veision 1:1)esign  all,t < qynth ̄ s  M 1.2009.  [31 克里 兹 ,  宪  .高 级 }、PGA 设  :  构 、实  也 优 {ElM]北 京 :机 械 _r  、『p出 版社 2009 

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。