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

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设计
状态机及其VHDL设计 - 第7章 状态机及其 VHDL 设计 内容提要: 内容提要:有限状态机(Finite State Machine,简称 FSM)是一类很重要的时序电路, 是许多数字...
基于VHDL状态机设计的智能交通控制灯
基于VHDL状态机设计的智能交通控制灯 - 基于 VHDL 状态机设计的智能交通控制灯 来源:国外电子元器件 作者:徐春娇 1 设计方案 十字路口设计两组交通灯分别控制东西...
vhdl设计ad转换状态机
vhdl设计ad转换状态机_计算机硬件及网络_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 vhdl设计ad转换状态机_计算机硬件及网络_IT/计算机_专业资料。...
VHDL设计 有限状态机设计
VHDL设计 有限状态机设计 - 南京工程学院 通信工程学院 实验报告 课程名称 实验项目名称 实验学生班级 实验学生姓名 实验时间实验地点 可编程逻辑电路设计A 有限...
10进制加减计数器状态机的VHDL设计
10进制加减计数器状态机的VHDL设计 - 本次设计选用的功能状态为: A. 复位功能 B. 十进制加法计数 C. 十进制减法计数 D. 数码管闪动 E. 8个led灯闪动 F....
基于VHDL状态机的交通灯控制器设计
基于VHDL状态机的交通灯控制器设计 - 基于 VHDL 状态机的交通灯控制器设计 0 引言 交通灯是城市交通监管系统的重要组成部分, 对于保证机动车辆的安全运行, 维持...
基于EDA的VHDL语言设计的交通灯
基于EDA的VHDL语言设计的交通灯_计算机软件及应用_IT/计算机_专业资料。用有限状态机设计一个交通灯控制器,设计要求:A路和B路,每路都有红、黄、绿三种灯,持续时...
实验六VHDL有限状态机设计(ADC0809)
实验预习 1.实验目的: 6 实验名称 实验室 VHDL 有限状态机设计 同析楼 114 2014 年 5 月 30 日 学习用状态机对 A/D 转换器 ADC0809 的采样控制电路的...
VHDL序列检测器设计1110010
VHDL 数字系统设计与测试作业 序列检测器设计 学院:通信工程学院 学院 学号:1101120012 学号 姓名:汤清 姓名 设计要求: 设计要求用状态机设计序列检测器(1110010) ...
状态机设计交通灯
状态机设计交通灯 - 利用有限状态机的交通灯控制系统设计与仿真 时间:2012-03-09 17:09:59 来源:电子科技 作者:冯竞楠 陕西科技大学 摘要:基于硬件电路设计软件...
更多相关标签: