当前位置:首页 >> 信息与通信 >>

VHDL状态机的设计



状态机电路设计
状态机(STATE MACHINE)可以说是一个广义时序电路,触发器, 计数器,移位寄存器都算是它的特殊功能的一种.在电子设计自动化 应用当中,状态机经常是担任 CPU 的功能,从某种意义上讲状态机的 应用让系统具有了智能化的功能,业界为状态机和 CPU 的功能一直争 论不休,不过事实是更多人倾向于状态机,认为状态机的功能比 CPU 强大. 下面将带领大家认识一下状态机的基本设计思想. 传统的逻辑电路设计在描述状态机的表示上,以状态图(STATE DIAGRAM)方式最为清晰且容易理解.根据输入,输出及状态关系,状态 图可以分为:

1.输入&状态&输出(输出仅与状态有关)

以下面图形为例,若目前状态机处于状态 S0 时,输入为 0 则状态机 将维持状态 S0 不变,若输入改为 1 则下个状态改成状态 S1,但不论输 入是什么,此时输出均为 0. 这种输出与状态有关,而与输入无关的状态机类型,称为 More 状态 机. 编程实现其功能如下: --***********************状态机********************* 重点提示 整个状态机的电路描述分成两个 PROCESS 命令语句完成. 第一个 PROCESS:负责感测时钟脉冲信号 CP 在上升沿变化之际,作目

前状态(PresentState)切换至下个状态(NextState)的动作. 第二个 PROCESS:负责感测输入(DIN)值,目前状态(PresentState)值, 由 CASE-WHEN 语句决定输出(OP)和下个状态(NextState)值.
--********************************************************* LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; --********************************************************* ENTITY CH6_5_1 IS PORT(CP :IN STD_LOGIC; --CLOCK DIN:IN STD_LOGIC; --I/P Signal OP :OUT STD_LOGIC --O/P Signal ); END CH6_5_1; --********************************************************* ARCHITECTURE A OF CH6_5_1 IS TYPE STATE IS (S0,S1,S2,S3); --State Type Declare SIGNAL PRESENTSTATE :STATE; --Present State SIGNAL NEXTSTATE :STATE; --Next State BEGIN SWITCHTONEXTSTATE:PROCESS(CP) BEGIN IF CP'EVENT AND CP='1' THEN PRESENTSTATE<=NEXTSTATE; END IF; END PROCESS SWITCHTONEXTSTATE;

CHANGESTATEMODE:PROCESS(DIN,PRESENTSTATE) BEGIN CASE PRESENTSTATE IS WHEN S0=> --STATE S0 IF DIN='0' THEN --INPUT=0 NEXTSTATE<=S0; ELSE NEXTSTATE<=S1; END IF; OP<='0'; --OUTPUT WHEN S1=> --STATE S1 IF DIN='1' THEN --INPUT=1

NEXTSTATE<=S1; ELSE NEXTSTATE<=S2; END IF; OP<='1'; WHEN S2=> IF DIN='1' THEN NEXTSTATE<=S2; ELSE NEXTSTATE<=S3; END IF; OP<='0'; WHEN S3=> IF DIN='1' THEN NEXTSTATE<=S0; ELSE NEXTSTATE<=S1; END IF; OP<='1'; WHEN OTHERS=> NEXTSTATE<=S0; OP<='0'; END CASE; END PROCESS CHANGESTATEMODE;

--OUTPUT --STATE S2 --INPUT=1

--OUTPUT --STATE S3 --INPUT=1

--OUTPUT --Initial State --OUTPUT

END A; --*********************************************************

程序说明: (1)上述的状态编码方式,使用默认的 Binary 编码. (2)在第二个 PROCESS 内的 CASE-WHEN 语句里,最后一个 WHEN OTHERS 作用在电路起始状态,亦即--将状态初始设定为 S0.

2.输入&状态&输出(输出与状态,输入背景有关)

下面图形的动作和上图相似,但是输出是会随输入不同而有所改 变,例如目前状态是 S3,若输入是 0 则输出为 0 且下个状态更换成 S1, 而输入为 1 则输出为 1 且下个状态更换成 S0. 这种输出与状态及输入皆有关系者,称为 Mealy 状态机.
程序实现功能如下:
--***************************************************************************** LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; --***************************************************************************** ENTITY CH6_5_2 IS PORT(CP :IN STD_LOGIC; --CLOCK DIN:IN STD_LOGIC; --I/P Signal OP :OUT STD_LOGIC

); END CH6_5_2; --***************************************************************************** ARCHITECTURE A OF CH6_5_2 IS TYPE STATE IS (S0,S1,S2,S3); --State Type Declare SIGNAL PRESENTSTATE :STATE; --PRESENT STATE SIGNAL NEXTSTATE :STATE; --NEXT STATE BEGIN SWITCHTONEXTSTATE:PROCESS(CP) --PRESENTSTATE->NEXTSTATE BEGIN IF CP'EVENT AND CP='1' THEN PRESENTSTATE<=NEXTSTATE; END IF; END PROCESS SWITCHTONEXTSTATE; CHANGESTATEMODE:PROCESS(DIN,PRESENTSTATE) BEGIN CASE PRESENTSTATE IS WHEN S0=> --STATE S0 IF DIN='0' THEN --INPUT=0 NEXTSTATE<=S0; OP<='0'; --OUTPUT ELSE NEXTSTATE<=S1; OP<='1'; --OUTPUT END IF; WHEN S1=> --STATE S1 IF DIN='1' THEN --INPUT=1 NEXTSTATE<=S1; OP<='0'; --OUTPUT ELSE NEXTSTATE<=S2; OP<='1'; --OUTPUT END IF; WHEN S2=> --STATE S2 IF DIN='1' THEN --INPUT=1 NEXTSTATE<=S2; OP<='0'; --OUTPUT ELSE NEXTSTATE<=S3; OP<='1'; --OUTPUT END IF; WHEN S3=> --STATE S3 IF DIN='1' THEN --INPUT=1

NEXTSTATE<=S0; OP<='1'; --OUTPUT ELSE NEXTSTATE<=S1; OP<='0'; --OUTPUT END IF; WHEN OTHERS=> --Initial State NEXTSTATE<=S0; OP<='0'; --OUTPUT END CASE; END PROCESS CHANGESTATEMODE; END A;

程序说明: 程序写法是与 CH6_5_!相似,不过在处理输出 OP 部分,需按照输入 的信号情况,作判断输出,这部分可程序的注释部分看出.


相关文章:
VHDL状态机的设计.doc
VHDL状态机的设计 - 状态机电路设计 状态机(STATE MACHINE)可
第六章 状态机的VHDL设计_图文.ppt
第六章 状态机的VHDL设计 - 第六章 状态机的VHDL设计 状态机的分类: 摩尔型状态机(Moore) 米勒型状态机(Mealy) 1 6.1、概述 为何使用状态机? ? VHDL综合...
6VHDL状态机设计.pdf
6VHDL状态机设计_计算机软件及应用_IT/计算机_专业资料。CPLD主要内容 6 VHDL 状态机设计 ? 基本概念 ? 状态转移图 ? 状态机编码 ? 一般有限状态机的设计 ? ...
状态机VHDL讲解.doc
状态机VHDL讲解 - VHDL 的结构非常适合编写状态机, 而且编写方式不唯一, 电路的集成也会随着编写的方式 而改变。状态机的设计主要用到 case when 和 if else ...
第5章 VHDL 状态机_图文.ppt
第5章 VHDL 状态机 - 可编程逻辑器件及应用 第5章 VHDL状态机 用VHDL可以设计不同表达方式和不同实用功 能的有限状态机,这些有限状态机的VHDL描述 都具有相对...
第二部分 状态机的VHDL设计.ppt
第二部分 状态机的VHDL设计_电子/电路_工程科技_专业资料。有限状态机的VHDL设计 状态机(STATE MACHINE)可以说是一个 广义时序电路,触发器 , 计数器 , 移位...
第八讲 状态机的VHDL设计_图文.ppt
第八讲 状态机的VHDL设计 - 第八讲 状态机的VHDL设计 教学课时:3学时 教学内容: 1、状态机概述 2、状态机的结构(1学时) 3、 状态机的VHDL设计方法举例(1...
VHDL_状态机_图文.pdf
VHDL_状态机 - 集大信息 EDA技术与VHDL 第五章 VHDL状态机 集大信息 TYPE 5.1 状态机设计相关语句 5.1.1 类型定义语句 数据类型名 IS 数据类型定义 ...
10 VHDL有限状态机设计_图文.ppt
10 VHDL有限状态机设计 - EDA技术 第10章 VHDL有限状态机设计 10.1 VHDL状态机的一般形式 状态机的一般分类及结构 ? 状态机分类 ? ? ? ? 从状态机的信号....
VHDL状态机_图文.ppt
VHDL状态机 - VHDL状态机 1 2 3 4 5 6 Moore型有限状态机的结构图 7 8 Mealy型有限状态机的结构图 9 10 11 ...
8 VHDL语言状态机_图文.ppt
8 VHDL语言状态机 - 第八章 有限状态机FSM的设计 哈尔滨工业大学(威海) 信息工程学院电子工程系 第八章 有限状态机FSM的设计 1.状态机概念 2.一般状态机 3....
第10章 VHDL有限状态机设计_图文.ppt
第10章 VHDL有限状态机设计 - 《EDA技术实用教程VHDL潘松(第五版)》课件(共14章)... 第10章 VHDL有限状态机设计 10.1 VHDL状态机的一般形式 10.1.1 状态机...
第7章 VHDL有限状态机设计N_图文.ppt
第7章 VHDL有限状态机设计N - EDA技术实用教程 第7章 VHDL有限状态机设计 内容提要 ?有限状态机及其设计技术,时使用数字系统设计中的重要 组成部分,是实现高效、...
第8章 VHDL状态机设计与应用.pdf
主控组合进程 8.1 VHDL状态机的一般形式 8.1.2 VHDL状态机的一般结构 8.1 VHDL状态机的一般形式 8.1.3 状态机设计初始约束与表述 (1)打开“状态机萃取”...
10进制加减计数器状态机的VHDL设计.doc
10进制加减计数器状态机的VHDL设计 - 本次设计选用的功能状态为: A. 复
EDA 第7章 VHDL有限状态机设计_图文.ppt
EDA 第7章 VHDL有限状态机设计 - EDA技术实用教程 第7章 VHDL有限状态机设计 1 有限状态机的基本概念 某学生在学校的学习生活可以简单地概括为宿舍、 教室、...
基于VHDL的Mealy状态机设计.doc
基于VHDL的Mealy状态机设计 - 基于 VHDL 的 Mealy 状态机设计 物理与电子信息科学系 姓名: 姓名:孙家芳 指导教师: 指导教师:胡湘娟 电子信息科学与技术专业 学号...
补充1 一般时序逻辑电路及状态机设计VHDL_图文.ppt
补充1 一般时序逻辑电路及状态机设计VHDL - 一般时序逻辑电路及状 态机的设计 常见电路: 1、触发器电路(D、T、RS、JK等) 2、寄存器电路 3、计数器电路 4、...
状态机及其VHDL设计.doc
状态机及其VHDL设计 - 同步状态机的原理、结构和设计同步状态机的原理、结构和设计... 关键词:状态机(State Machine),Moore,Mealy,VHDL 设计(VHDL Design) 7.1 ...
状态机及其VHDL设计.doc
状态机及其VHDL设计 - 第7章 状态机及其 VHDL 设计 内容提要: 内容提要:有限状态机(Finite State Machine,简称 FSM)是一类很重要的时序电路, 是许多数字...
更多相关标签: