状态机的VHDL设计 您所在的位置:网站首页 vhdl中对变量和信号的理解 状态机的VHDL设计

状态机的VHDL设计

2023-10-28 09:05| 来源: 网络整理| 查看: 265

状态机的基本三要素:状态,输入条件,输出

状态机的分类: 根据状态数:无限状态机(Infinite State Machine,ISM);有限状态机(Finite State Machine,FSM)逻辑状态的设计一般是有限状态机。 根据信号输出方式:Moore型:同步输出状态机,输出仅和当前状态有关,输入的变化需要等待时钟信号的到来;Mealy型属于异步输出状态机,其输出是当前状态和所有输入信号的函数,他的输出是在输入之后立即发生的。 状态机的VHDL设计: 一般有三个模块: 这里写图片描述 所以根据三个基本模块,状态机设计方法分为一段式(单进程),二段式(两进程),三段式(三进程)。 单进程:将三个模块合并起来,写在一个进程中。 两进程:当前状态寄存器用一个进程,输出逻辑和次态逻辑合并起来用另外一个进程。(下面链接的PPT这样讲~不过我按到的很多代码是把输出和描述当前状态的寄存器一起) 三进程:即三个模块用三个进程来描述。 至于三个进程方法的比较可见下面的链接: http://www.doc88.com/p-105556511191.html

不过感觉以上的分类方法很牵强,个人觉得下面介绍的方法更好(以一个信号发生器为例子说明): 1).说明部分 说明部分中使用 TYPE 语句定义新的数据类型,此数据类型为枚举型, 其元素通常都用 状态机的状态名来定义。 状态变量定义为信号, 便于信息传递, 并将状态变量的数据类型定 义为含有既定状态元素的新定义的数据类型。说明部分一般放在结构体的 ARCHITECTURE 和 BEGIN 之间。

architecture one of generator is type states is(zero,one,two,three,four,five,six,seven); signal present_state,next_state:states; signal temp:std_logic; signal clk_count:std_logic_vector(23 downto 0); begin

2).主控时序进程 是指负责状态机运转和在时钟驱动正负现状态机转换的进程。状态机随外部时钟信号以同步方式工作,当时钟的有效跳变到来时,时序进程将代表次态的信号next_state中的内容送入现态信号 current_state中,而next_state中的内容完全由其他进程根据实际情况而定,此进程中往往也包括一些清零或置位的控制信号。

-----Lower section of FSM----- process(clkdiv) begin if(rising_edge(clkdiv))then present_state


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有