您的位置 首页 解答

FPGA工程师:如安在FPGA中完成状态机?

FPGA工程师:如何在FPGA中实现状态机?-安全高效的状态机设计对于任何使用FPGA的工程师而言都是一项重要技能。选择Moore状态机、Mealy状态机还是混合机取决于整个系统的需求。无论选择哪种类

  FPGA常常用于履行依据序列和操控的举动,比方完成一个简略的通讯协议。关于规划人员来说,满意这些举动和序列要求的最佳办规律是运用状况机状况机是在数量有限的状况之间进行转化的逻辑结构。一个状况机在某个特定的时刻点只处于一种状况。但在一系列触发器的触发下,将在不同状况间进行转化。

  理论上讲,状况机可以分为Moore状况机和Mealy状况机两大类。它们之间的差异仅在于怎么生成状况机的输出。Moore状况机的输出仅为当时状况的函数。典型的比如便是计数器。而Mealy状况机的输出是当时状况和输入的函数。典型的比如便是Richards操控器

  界说状况机

  当需求界说一个状况机时,首要要制作一张状况图。状况图可用来显现状况、状况间的转化和状况机的输出。图1显现了Moore状况机的状况图(左)和Mealy状况机的状况图(右)。

  

  图1 用于开/关LED的Moore状况机(左)和Mealy状况机(右)的状况图。

  假如您要在物理组件中完成这些状况图(工程师在FPGA面世之前便是这么做的),首要就得生成当时状况和后续状况表,然后生成完成状况机所需的逻辑。不过因为咱们将运用FPGA来完成规划,因而咱们可以直接从状况转化图开端作业。

  算法状况图

  虽然有许多状况机是运用图1所示的状况图办法进行规划的,但别的还有一种描绘状况机行为的办法,这便是算法状况图法。ASM图(图2)在外观上愈加挨近软件工程流程图。它由三个根本部分构成:

  1.状况框。它与状况称号有关,并包括Moore状况输出列表。

  2.决议计划框。假如查验某条件为真,则进行下一状况的判别。

  3.条件输出框。让状况机依据当时状况和输入描绘Mealy输出。

  一些工程师以为,假如运用VHDL等硬件描绘言语,则选用ASM格局进行描绘的状况机更易于映射到完成计划中。

  

  图2,用于图1所示的状况机(Moore状况机(左),Mealy状况机(右))的算法状况图。

  Moore和Mealy:应该挑选哪个?

  完成Moore状况机仍是Mealy状况机,取决于状况机需求完成的功用,以及特定的反响次数要求。两种状况机之间的最大不同在于状况机怎么对输入做出反响。在输入和设置的恰当输出之间,Moore状况机一般有一个时钟周期的推迟。这就意味着 Moore状况机无法对输入改变当即做出反响,这点在图3中可以清楚地看到。而Mealy状况机则可以当即对输入做出反响,这一般意味着:完成相同的函数,Mealy状况机比Moore状况机需求更少的状况。Mealy状况机的不足之处便是在与另一个状况机进行通讯时,假如输出出人意料地严峻依赖于其它事情的序列或时序,就可能会产生紊乱状况。

  

  图3,截屏显现了Moore状况机(上)和Mealy状况机(下)输出的仿真成果。

  当然,并非只能运用单纯的Moore状况机或Mealy状况机,也可以将这两种状况机混合运用,然后更有用地完成所需的函数。比方说,用于接纳RS232串行数据的状况机就可以是混合机。

  完成状况机

  运用VHDL这样的高档言语,可以轻松地直接从状况图完成状况机。VHDL支撑多种枚举类型,便利您界说实践的状况称号。举例如下:

  TYPE state IS (idle, led_on, led_off) ;

  上面的类型界说对应的是图1中所示的状况图,即用于在按下按钮时切换发光二极管开/关的状况机。

  完成状况机有许多种办法,可分为两类根本办法。榜首类根本办法便是一次性将一切内容集成到单个进程中。第二类根本办法是双进程法,将组合逻辑和次序逻辑分隔。

  一般来说,大多数工程师都倾向于完成单进程状况机。与传统上教学的双进程法比较,这种办法具有以下优势:

  ●可以防止组合过程中信号掩盖不完全形成的闭锁危险。

  ●状况机的输出与时钟坚持同步。

  ●一般比双进程完成计划更简单调试。

  不管您决议选用哪一种办法来完成状况机,都需求运用CASE句子来评价下一状况的断定和任何输出,如图4所示。该图并行比较了运用单进程法的Moore状况机(左)和Mealy状况机(右)。

  

  图4,运用VHDL言语的Moore状况机(左)和Mealy状况机。

  状况机编码

  状况变量存储在触发器中,运用下一时钟边际上的下一状况进行更新(即便没有状况改变也是如此)。怎么运用触发器来表明状况值详细取决于状况的数量和是否挑选用某种特定的办法来办理归纳东西。状况编码最常见的三种类型是:

  ●次序码–状况编码遵从传统的状况二进制序列。

  ●格雷码–除了状况编码运用格雷码,且状况编码串之间只要一个位改变外,其它根本与次序编码办法相似。

  ●独热码–这种办法在状况机中为每一种状况分配一个触发器。只要一个触发器当时设置为高位,其他均设置为低位。故称为“独热”。

  次序编码和格雷编码都需求必定数量的触发器,可以经过下列等式来确认:

  

  比较之下,独热编码法所需的触发器数量和状况数量相同多。

  状况编码的主动分配取决于状况机所包括的状况数量。一起还需求考虑您挑选运用的归纳东西。您可以依据下列经历规律来选取编码办法:

  ●次序:少于5种状况。

  ●独热:5-50种状况。

  ●格雷:多于50种状况。

  一般状况下您不必去考虑运用哪一种状况编码办法,而是让归纳引擎东西确认适宜的完成计划,只在挑选的办法出现问题时进行考虑。可是,假如您要全盘自行掌控,并界说状况编码办法,也没必要手动操作,只需运用状况编码为每一种状况设定常数即可。相反地,可以运用代码中的一个特点来驱动归纳东西,然后挑选特定的编码办法。详细如下所示:

  TYPE state IS (idle, led_on, led_off) ;

  SIGNAL current_state : state := idle;

  ATTRIBUTE syn_encoding STRING;

  ATTRIBUTE syn_encoding OF current_state :

  SIGNAL IS “sequential”;

  其间“sequential”也可以是“gray”和“onehot”。您还可以经过结合运用“safe”特点来保证在状况机进入不合法状况时可以康复到有用状况。

  别的,您也可以运用syn_encoding特点直接界说状况编码的值。例如,假定您想要运用下列状况编码法来对三态状况机进行编码:Idle = “11,”led_on = “10,” led_off = “01(与较传统的次序”00“、”01“和”10“不同):

  TYPE state IS (idle, led_on, led_off) ;

  SIGNAL current_state : state := idle;

  ATTRIBUTE syn_encoding STRING;

  ATTRIBUTE syn_encoding OF current_state :

  SIGNAL IS ”sequential“;

  工程师担任在归纳东西中运用正确的设置,以保证该东西不会疏忽任何特点。例如,赛灵思XST东西要求将FSM选项设置为USER,而Synopsys的Synplify则要求封闭FSM编译器。

  前面给出的等式可确认状况机完成计划所需的触发器数量。因为不是一切的状况机都是2的幂次方,因而某些状况在规划中将不会用到。完成状况机的工程师有必要担任保证未运用的状况在规划中得到妥善处理。可以选用几种适用于多种规划的根本技巧来完成这一方针。关于高度牢靠的安全要害型规划,则需求选用其它更高档的技巧。

  不过关于大多数运用来说,只需求保证状况机可以妥善地处理未运用的状况并在进入不合法状况时可以正确地康复。要做到这一点有两种首要的办法。榜首种办法是运用归纳东西完成一个安全的状况机。归纳东西一般会刺进额定的逻辑,用于检测不合法状况并将状况机返回到有用状况。第二种办法是加强对完成逻辑的操控,声明一切2的幂次方状况机的状况,并运用另一特点来保证即便是在没有进口条件下,2的幂次方状况机的状况也不会被优化掉。这意味着除非犯错(单粒子翻转等),状况机内部的任何条件都不会进入状况。下面的代码显现了经过运用特点以防止铲除未运用的状况。

  TYPE state IS (idle, led_on, led_off) ;

  SIGNAL current_state : state := idle;

  ATTRIBUTE syn_keep BOOLEAN;

  ATTRIBUTE syn_keep OF current_state :

  SIGNAL IS TRUE”;

  简而言之,安全高效的状况机规划关于任何运用FPGA的工程师而言都是一项重要技术。挑选Moore状况机、Mealy状况机仍是混合机取决于整个体系的需求。不管挑选哪种类型的状况机,充沛把握完成计划所需的东西和技巧,将保证您完成最佳解决计划。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/170984.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部