【精品】第7章VHDL有限状态机设计
第九次课 第7章 VHDL有限状态机设计到17页

10-1
接上页
10.1 VHDL状态机的一般形式
7.1.2 一般有限状态机的结构
10.1 VHDL状态机的一般形式
7.1.3 状态机设计初始控制与表述
(1)打开“状态机萃取”开关
(2)状态图观察
10.2 Moore型(莫尔型)状态机
莫尔型状态机的输出逻辑仅与当前状态 有关,与输入变量无关,输入变量的作 用只是与当前状态一起决定当前状态的 下一状态是什么,属于同步状态机。莫 尔型状态机框图如图所示。
实验与设计
7-4 五功能智能逻辑笔设计
(1)实验目的: (2)实验原理:
实验与设计
7-4 五功能智能逻辑笔设计
(1)实验目的: (2)实验原理:
示例文件:/KX_7C5EE+/EXPERIMENTs/EXP14_LOGIC_PEN/ (3)实验内容:
实验与设计
7-5 比较器加DAC器件实现ADC转换功能电路设计
10.1.2 一般有限状态机的结构 1. 说明部分 p259 位置一般在ARCHITECTURE BEGIN 之间
2. 主控时序进程 负责状态机转换和时钟驱动下负责状态转换的进程, 状态机是随外部时钟信号,依同步时序方式工作的
10.1 VHDL状态机的一般形式
10.1.2 一般有限状态机的结构 3. 主控组合进程p260(译码器进程)根据外部输入的控制信号,以及来自状态 机的内部其他主控的组合或时序进程的信号,给出当前状态的状态值及确定下 个状态。
4. 辅助进程 配合状态机工作的组合进程或时序进程
VHDL有限状态机
P260某生产车间共分5道工序,(S0,S1,S2,S3,S4) 1)首道工序S0为粗分拣车间,工序号为5号,红色 按钮按下表示继续分拣,绿色按钮按下表示完成去 下道工序,下道工序为S1; 2)S1为清洗车间,工序号为8号,红色按钮按下表 示继续清洗,绿色按钮按下表示完成去下道工序, 下道工序为S2; 3)S2为消毒车间,工序号为12号,红色按钮按下 表示不合格,打回S0,绿色按钮按下表示完成去下 道工序,下道工序为S3;
状态机及其VHDL设计

第7章状态机及其VHDL设计内容提要:有限状态机(Finite State Machine,简称FSM)是一类很重要的时序电路,是许多数字系统的核心部件,也是实时系统设计中的一种数学模型,是一种重要的、易于建立的、应用比较广泛的、以描述控制特性为主的建模方法,它可以应用于从系统分析到设计的所有阶段。
有限状态机的优点在于简单易用,状态间的关系清晰直观。
建立有限状态机主要有两种方法:“状态转移图”和“状态转移表”。
标准状态机通常可分为Moore和Mealy 两种类型。
本章主要介绍了基于VHDL的常见有限状态机的类型、结构、功能及表达方法,重点是如何有效地设计与实现。
学习要求:了解状态机的基本结构、功能和分类,掌握有限状态机的一般设计思路与方法、状态机编码方案的恰当选取、Moore和Mealy状态机的本质区别及设计实现。
关键词:状态机(State Machine),Moore,Mealy,VHDL设计(VHDL Design)7.1 状态机的基本结构和功能7.2一般状态机的VHDL设计7.2.1 状态机的一般组成7.2.2 状态机的编码方案7.3 摩尔状态机的VHDL设计7.4 米立状态机的VHDL设计7.1 状态机的基本结构和功能状态机的基本结构如图7.1所示。
除了输人信号、输出信号外,状态机还包含一组寄存器记忆状态机的内部状态。
状态机寄存器的下一个状态及输出,不仅同输入信号有关,而且还与寄存器的当前状态有关,状态机可以认为是组合逻辑和寄存器逻辑的特殊组合。
它包括两个主要部分:即组合逻辑部分和寄存器。
组合逻辑部分又可分为状态译码器和输出译码器,状态译码器确定状态机的下一个状态,即确定状态机的激励方程,输出译码器确定状态机的输出,即确定状态机的输出方程。
寄存器用于存储状态机的内部状态。
1.状态机的内部状态转换。
状态机经历一系列状态,下一状态由状态译码器根据当前状态和输入条件决定。
2.产生输出信号序列。
2023年大学_EDA技术与VHDL第二版(潘松著)课后习题答案下载

2023年EDA技术与VHDL第二版(潘松著)课后习题答案下载EDA技术与VHDL第二版(潘松著)课后答案下载第1章 EDA技术概述1.1 EDA技术及其发展1.1.1 EDA技术的发展1.1.2 EDA技术的涵义1.1.3 EDA技术的基本特征1.2 EDA技术的主要内容及主要的EDA厂商1.2.1 EDA技术的主要内容1.2.2 主要EDA厂商概述1.3 EDA技术实现目标1.3.1 超大规模可编程逻辑器件1.3.2 半定制或全定制ASIC1.3.3 混合ASIC1.4 EDA技术应用1.4.1 EDA技术应用形式1.4.2 EDA技术应用场合1.5 EDA技术的发展趋势1.5.1 可编程器件的发展趋势1.5.2 软件开发工具的发展趋势1.5.3 输入方式的发展趋势__小结思考题和习题第2章大规模可编程逻辑器件2.1 可编程逻辑器件概述2.1.1 PLD的'发展进程2.1.2 PLD的种类及分类方法2.2 简单可编程逻辑器件2.2.1 PLD电路的表示方法及有关符号 2.2.2 PROM基本结构2.2.3 PLA基本结构2.2.4 PAL基本结构2.2.5 GAL基本结构2.3 复杂可编程逻辑器件2.3.1 CPLD基本结构2.3.2 Altera公司器件2.4 现场可编程逻辑器件2.4.1 FPGA整体结构2.4.2 Xilinx公司FPGA器件2.5 在系统可编程逻辑器件2.5.1 ispLSl/pLSl的结构2.5.2 Lattice公司ispLSI系列器件 2.6 FPGA和CPLD的开发应用2.6.1 CPLD和FPGA的编程与配置2.6.2 FPGA和CPLD的性能比较2.6.3 FPGA和CPLD的应用选择__小结思考题和习题第3章 EDA设计流程与开发3.1 EDA设计流程3.1.1 设计输入3.1.2 综合3.1.3 适配3.1.4 时序仿真与功能仿真3.1.5 编程下载3.1.6 硬件测试3.2 ASIC及其设计流程3.2.1 ASIC设计方法3.2.2 一般的ASIC设计流程3.3 可编程逻辑器件的开发环境 3.4 硬件描述语言3.5 IP核__小结思考题和习题第4章硬件描述语言VHDL4.1 VHDL概述4.1.1 VHDL的发展历程4.1.2 VHDL的特点4.2 VHDL程序基本结构4.2.1 实体4.2.2 结构体4.2.3 库4.2.4 程序包4.2.5 配置4.3 VHDL基本要素4.3.1 文字规则4.3.2 数据对象4.3.3 数据类型4.3.4 运算操作符4.3.5 VHDL结构体描述方式 4.4 VHDL顺序语句4.4.1 赋值语句4.4.2 IF语句4.4.3 等待和断言语句4.4.4 cASE语句4.4.5 LOOP语句4.4.6 RETIARN语句4.4.7 过程调用语句4.4.8 REPORT语句4.5 VHDL并行语句4.5.1 进程语句4.5.2 块语句4.5.3 并行信号代人语句4.5.4 并行过程调用语句4.5.5 并行断言语句4.5.6 参数传递语句4.5.7 元件例化语句__小结思考题和习题第5章 QuartusⅡ软件及其应用5.1 基本设计流程5.1.1 建立工作库文件夹和编辑设计文件 5.1.2 创建工程5.1.3 编译前设计5.1.4 全程编译5.1.5 时序仿真5.1.6 应用RTL电路图观察器5.2 引脚设置和下载5.2.1 引脚锁定5.2.2 配置文件下载5.2.3 AS模式编程配置器件5.2.4 JTAG间接模式编程配置器件5.2.5 USBBlaster编程配置器件使用方法 __小结思考题和习题第6章 VHDL应用实例6.1 组合逻辑电路设计6.1.1 基本门电路设计6.1.2 译码器设计6.1.3 数据选择器设计6.1.4 三态门设计6.1.5 编码器设计6.1.6 数值比较器设计6.2 时序逻辑电路设计6.2.1 时钟信号和复位信号6.2.2 触发器设计6.2.3 寄存器和移位寄存器设计6.2.4 计数器设计6.2.5 存储器设计6.3 综合实例——数字秒表的设计__小结思考题和习题第7章状态机设计7.1 一般有限状态机7.1.1 数据类型定义语句7.1.2 为什么要使用状态机 7.1.3 一般有限状态机的设计 7.2 Moore型有限状态机设计 7.2.1 多进程有限状态机7.2.2 单进程有限状态机7.3 Mealy型有限状态机7.4 状态编码7.4.1 状态位直接输出型编码 7.4.2 顺序编码7.4.3 一位热码编码7.5 状态机处理__小结思考题和习题第8章 EDlA实验开发系统8.1 GW48型实验开发系统原理与应用8.1.1 系统性能及使用注意事项8.1.2 GW48系统主板结构与使用方法8.2 实验电路结构图8.2.1 实验电路信号资源符号图说明8.2.2 各实验电路结构图特点与适用范围简述8.3 GW48CK/GK/EK/PK2系统信号名与芯片引脚对照表 __小结思考题和习题第9章 EnA技术实验实验一:全加器的设计实验二:4位加减法器的设计实验三:基本D触发器的设计实验四:同步清零计数器的设计实验五:基本移位寄存器的设计串人/串出移位寄存器实验六:同步预置数串行输出移位寄存器的设计实验七:半整数分频器的设计实验八:音乐发生器的设计实验九:交通灯控制器的设计实验十:数字时钟的设计EDA技术与VHDL第二版(潘松著):内容简介《EDA技术与VHDL》主要内容有Altera公司可编程器件及器件的选用、QuartusⅡ开发工具的使用;VHDL硬件描述语言及丰富的数字电路和电子数字系统EDA设计实例。
一种应用VHDL语言设计有限状态机控制器的方法

图 2 ADC0809 控制器连接方法及其时序图
其 中 D 7~ D 0 为 A D 变 换 数 据 输 出; AD 2 V HDL 语言在同一进程内不允许时钟的两个沿作
DR ESS 为 8 路通道选择地址; STA R T 信号是转换 为敏感变量, 所以将产生 STA R T 信号单列为一个
of Sequen tia l F in ite Sta te M ach ines IEEE T ran saction s on Com p u ter- A ided D esign. 1989, 8 (11) : 1206~ 1217
图 1 状态机进程划分图
3. 2 状态划分 在进行状态机控制部分的设计过程中, 主要是
通过分析 ADC0809 的时序来确定状态转换进程中 的各个状态和几个状态下的控制信号输出。 3. 2. 1 ADC0809 时序分析
ADC0809 为单极性输 入, 8 位 转 换 逐 次 逼 近 A D 转换器, 可对 0~ 5V 的 IN T 0~ IN T 7 8 路模拟 信号分时进行转换, 完成一次转换的时间约为 100 微秒。 其与控制器连接方法及时序图见图 2 所示。
状 态 S2, 启 动 转 换; 在 启 动 转 换 后, ADC0809 使 EO C 置为低电平, 设置 S3 状态等待 A D 转换结 束; 当数据转换结束后, EO C 信号由低电平转换为 高电平, 状态机进入 S4 状态, 开启输出允许 O E; 状 态机进入 S5 状态, 开启数据锁存信号 LO CK 对输 出数据进行锁存; 为产生与其它进程通信的信号, 状 态机设置 S6 状态作为最后一个状态, 然后跳转回 S0 初始状态。 其状态转换及控制输出如图 3 所示。
启动信号, 上升沿有效; EO C 为状态结束标志, 低电 平转为高电平时转换结束; O E 为数据输出允许信 号, 高电平有效; AL E 为地址锁存允许信号; LO CK 为数据锁存信号。
第7章 VHDL有限状态机设计

7-9 硬件消抖动电路设计
设计任务:FPGA中的去抖动电路十分常用,在以后的实验中会多次用到。 基于5E+系统的演示示例:/KX_7C5EE+/EXPERIMENTs/EXP41_Di_Tremble/
7-10 状态机控制串/并转换8数码静态显示
(1)实验原理: (2)实验任务1: (3)实验任务2: (4)实验任务3: 演示示例:/KX_7C5EE+/EXPERIMENTs/EXP43_74HC164_8LED/
7-4 五功能智能逻辑笔设计
(1)实验目的: (2)实验原理:
7-4 五功能智能逻辑笔设计
(1)实验目的: (2)实验原理:
示例文件:/KX_7C5EE+/EXPERIMENTs/EXP14_LOGIC_PEN/ (3)实验内容:
7-5 比较器加DAC器件实现ADC转换功能电路设计
(1)实验原理: (2)实验内容1: (3)实验内容2:
Moore型和Mealy型有限状态机的区别
接下页
接上页
接下页
接上页
接下页
接上页
状态编码方式
直接输出型编码 顺序编码 一位热码状态编码
7.5.1 直接输出型编码
7.5.1 直接输出型编码
7.5.1 直接输出型编码
接下页
接上页
7.5.1 直接输出型编码
Moore型有限状态机
输出时序:异步输出状态机 Moore型有限状态机的输出仅为当前状态的函数,
这类状态机在输入发生变化后再等待时钟的到来,时钟
使状态发生变化时才导致输出的变化。
Mealy型有限状态机
输出时序:异步输出状态机 Mealy型有限状态机的输出是当前状态和所有输入
有限状态机设计

实验七有限状态机设计一、实验目的1、掌握利用有限状态机实现一般时序逻辑分析的方法;2、掌握用VHDL或Verilog编写可综合的有限状态机的标准模板;3、掌握用VHDL或Verilog编写序列检测器以及其他复杂逻辑电路的设计;二、实验内容1、用MOORE型状态机设计一个具有双向步进电动机控制实验:该控制电路有三个输入信号:clk时钟信号,clr复位信号,dir方向控制信号。
输出信号为phase[3..0]用来控制步进电机的动作。
当dir=1时要求phase[3..0]按照“0001”,“0010”,“0100”,“1000”的顺序变化;当dir=0时要求phase[3..0]按照“0001”,“1000”,“0100”,“0010”的顺序变化。
2、设计一个简单的状态机,功能是检测一个5位的二进制序列“10010”。
3、设计一个串行数据检测器,要求是:连续4个或4个以上为1时输出为1,其他输入情况为0。
(选做)4、根据状态图,写出对应于结构图b,分别由主控组合进程和主控时序进程组成的VERILOG 有限状态机描述。
(选做)三、实验步骤实验一:1、建立工程2、创建Verilog HDL文件3、输入程序代码并保存module moore1(clk,clr,dir,phase);input clk,clr,dir;output[3:0] phase;reg[3:0] phase;reg[1:0] state;parameter s0='b00,s1='b01,s2='b10,s3='b11;always@(posedge clk)beginif(clr)beginphase<='b0000;state<=s0;endelsebegincase(state)s0:if(dir) beginphase<='b0010;state<=s1;endelsebeginphase<='b1000;state<=s3;ends1:if(dir) beginphase<='b0100;state<=s2;endelse beginphase<='b0001;state<=s0;ends2:if(dir) beginphase<='b1000;state<=s3;endelse beginphase<='b0010;state<=s1;ends3:if(dir) beginphase<='b0001;state<=s0;endelse beginphase<='b0100;state<=s2;endendcaseendendendmodule4、进行综合编译5、新建波形文件6、导入引脚,设置信号源并保存7、功能仿真,结果分析由仿真波形图可以看出当dir=1时,phase[3..0]按照0001,0010,0100,1000的顺序变化,当dir=0时phase[3..0]按照0001,1000,0100,0010的顺序变化。
有限状态机的VHDL设计

8.4 米立状态机设计(续2)
例8.3四状态米立状态机的描述。
COM:PROCESS (state, input) -- 依据当前状态和输入信号决定输出信号,与时钟无关 BEGIN CASE state IS WHEN s0=> IF input = '0' THEN output <= "00"; ELSE output <= "01"; END IF; WHEN s1=> IF input = '0' THEN output <= "01"; ELSE output <= "10"; END IF; WHEN s2=> IF input = '0' THEN output <= "10"; ELSE output <= "11"; END IF; WHEN s3=> IF input = '0' THEN output <= "11"; ELSE output <= "00"; END IF; END CASE; END PROCESS; END rtl;
8.3 摩尔状态机设计(续1)
例8.2 四状态摩尔型有限状态机的描述。
BEGIN PROCESS (clk, reset) -- 状态转换的时序进程 BEGIN IF reset = '1' THEN state <= s0; ELSIF (clk'EVENT and clk='1') THEN CASE state IS WHEN s0=> IF input = '1' THEN ELSE END IF; WHEN s1=> IF input = '1' THEN ELSE END IF; WHEN s2=> IF input = '1' THEN ELSE END IF; WHEN s3 => IF input = '1' THEN ELSE END IF; END CASE; END IF; END PROCESS; PROCESS (state) -- 输出由当前状态唯一决定的组合逻辑进程 BEGIN CASE state IS WHEN s0 => output <= "00"; WHEN s1 => output <= "01"; WHEN s2 => output <= "10"; WHEN s3 => output <= "11"; END CASE; END PROCESS;
基于VHDL语言的有限状态机设计方法

计算机技术与应用进展 ・ 0 2 4 0
硬币,则给出 1 盒饮料的同时找回5 角钱。 这是一个属于M a 型状态机问 el y 题。 状态机的状态转换图 如图4 所示, 投币 信号是输入逻辑变量, 用 A和 B表示,A 1 = 表示投入一枚 1 元硬币,B 1 = 表示投入一枚 5 角硬币。输出信号用 Y和 Z表示, Y1 = 表示售出一盒饮料,Z 1 = 表示找回 5 角钱。
E I Y OOR I NT T M EI S
PR( O T
C , I S D L G C 一C O K PR : T _ I; d N O LC
AB: T e I; - I u - , I S D L GC N s O pt n S nl ia g S nl ia g
BE N GI
R G : R C S (dC ) O E S , E IP R P
BE N GI
I R =' T N F d 0 HE '
C r nSa < S ; ur tt e O e t =
E SE 'VE L I CPE NTAND CP=' T N 1 HE '
态译码电路较少。
3 o 型状态机的描述 Mor e
用V D 描述状态转换图如图3 HL 所示的状态机, 该状态 机属于 Mor型,状态机有四种状态,分别是 S , , , o e O S S l 2 S 。有一个状态输入信号 A和一个状态输出信号 Y 3 o 用V D 描述 M O E型 HL O R 状态机时, 需要区分组合逻辑 电 路部分和时序逻辑电路部分。用一个 P O E S R C S 语句描述 N 组合逻辑电路和输出组合逻辑电路, S 用另一个 P O E S R CS 语句描述当前状态寄存器, 属于时序逻辑电路。 P O E S 用 R CS 语句描述时序逻辑电路要用到 I C ' E T D F E N A C PV N P=1 1 . TE H N语句,并且要把时钟信号引入敏感信号列表中。因为 M O E型状态机的输出只与当前的状态有关,所以在描述 OR 图3 o 型状态机状态转换图 Mor e 组合逻辑电路的进程中用 C S- E 语句判别有限状态 A EWH N F LEE D语 - 机的四个状态, 把输出 信号变量的赋值语句放在 I-L EE D语句之后,而不能放在 I E S-N F S-N E
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
接下页
COM:PROCESS (current_state, state_Inputs) --主控组合进程 接上页 BEGIN CASE current_state IS --确定当前状态的状态值 WHEN s0 => comb_outputs<= 5; --译码输出 IF state_inputs = “00” THEN --根据外部的状态控制,外部状态输入“00” next_state<=s0 ; -- 在下一时钟后,进程REG的状态维持为s0 ELSE next_state<=s1; --否则,在下一时钟后,进程REG的状态将为s1 END IF; WHEN s1 => comb_outputs<= 8; IF state_inputs = "00" THEN next_state<=s1; ELSE next_state<=s2; END IF; 进程间一般是并行运行的, WHEN s2 => comb_outputs<= 12; IF state_inputs = "11" THEN next_state <= s0; 但由于敏感信号的设置不同 ELSE next_state <= s3; 以及电路的延迟,在时序上 END IF; 进程间的动作是有先后的。 WHEN s3 => comb_outputs <= 14; IF state_inputs = "11" THEN next_state <= s3; ELSE next_state <= s0; END IF; END case; END PROCESS; --由信号next_state将下一状态值带出此进程,进入进程REG END behv;
两进程 形式1 描述方式 形式2 形式3 单进程描述方式
两进程描述的第三种和单进程描述方式最为常用,因 为将组合逻辑和时序逻辑清楚区分,故综合效果较好
AD采样控制器-AD574启动时序
/CS
RC
STATUS 20us D[11..0]
D[11..0]
Z
AD采样控制器-ADC0809设计
输入选通端口地址锁存信号
比较: 传统的设计方法是首先绘制出控制器的状态图,并由此 列出状态表,再合并消除状态表中的等价状态项。在完成状 态寄存器的分配之后,根据状态表求出次态及输出方程,最 后画出设计原理图。采用这种方法设计复杂状态机将会十分 繁杂。
利用VHDL设计状态机,不需要进行繁琐的状态分配、绘 制状态表和化简次态方程。设计者不必使用卡诺图进行逻辑 化简,不必画电路原理图,也不必搭试硬件电路进行逻辑功 能的测试,所有这些工作都可以通过EDA工具自动完成。
--REG --COM --COM
clk=3 next_state= s1 current_state --REG --COM state_inputs = “ 10” next_state= s2 --COM clk=4 next_state= s2 current_state --REG current_state =s2comb_outputs=12 --COM state_inputs = “10” next_state= s3 --COM
或其它编码状态机
有限状态机的结构: 说明部分、主控时序进程、主控组合进程、辅助进程
1.说明部分
*说明部分在architecture与begin之间;
* 定义枚举型数据类型: 用于描述状态
*状态变量定义为信号:便于信息传输,状态变量数 据类型定义为含有既定状态元素的新定义的数 据类型
ARCHITECTURE ...IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST; ... begin
7.1 VHDL状态机的一般形式
7.1.1 为什么要使用状态机
(1)高效的顺序控制模型。 (2)容易利用现成的EDA优化工具。 (3)性能稳定。 (4)设计实现效率高。 (5)高速性能。
(6)高可靠性能。
7.1.2 一般有限状态机的设计
有限状态机分类:
从信号的输入与输出方式分:Mealy型和Moore型有限状态机 从结构分:单进程状态机和多进程状态机 从状态表达方式分:有符号状态机和确定编码状态机 从编码方式分:顺序编码状态机、一位热码编码状态机
注意:状态变量的状态判断必须用CASE语句,不能用IF语句
2 3 4
图7-2 例7-1状态机的工作时序图
clk=2 reset='1' next_state= s0 current_state =s0comb_outputs= 5 state_inputs = “ 01” next_state= s1 current_state =s1comb_outputs= 8
转换启动控制信号 状态转换信号
输出控制信号
图7-3 ADC0809工作时序
进程 : 状态机由两个主控进程构成,其中进程REG为主控时序进程 ,COM为主控组合进程。辅助进程LATCH
图7-5 采样状态机结构框图
【例 7-2】描述的状态机由 辅助进程 LATCH 和 两个主控进程构成,其中进程 REG为主控时序进程,COM为主控组合进程。 LIBRARY IEEE; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADCINT IS PORT (D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK ,EOC : IN STD_LOGIC; ALE, START, OE, ADDA,LOCK0 : OUT STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ADCINT; ARCHITECTURE behav OF ADCINT IS TYPE states IS (st0, st1, st2, st3,st4) ; --定义各状态子类型 SIGNAL current_state, next_state: states :=st0 ; SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL LOCK : STD_LOGIC; -- 转换后数据输出锁存时钟信号 BEGIN ADDA <='1';--当ADDA<='0',模拟信号进入0809通道0;当ADDA<='1',则进入通道1 Q <= REGL; LOCK0 <= LOCK ;
EDA技术实用教程
第7章
VHDL有限状态机设计
第7章 有限状态机设计
教学内容:
7.1 7.2 7.3 7.4 7.5 7.6 7.7 VHDL状态机的一般形式 Moore型有限状态机的设计 Mealy型有限状态机的设计 状态机图形编辑设计方法 状态编码 安全状态机设计 硬件数字技术排除毛刺
教学要求:
FSM: PROCESS REG next_state s_m achine PROCESS COM com b_outputs
current_state
clk reset state_inputs
图7-1 一般状态机结构框图工作示意图
3. 主控组合进程
主控组合进程的任务是根据外部输入的控制信号(包 括来自状态机外部的信号和来自状态机内部其它非主控 的组合或时序进程的信号),或(和)当前状态的状态 值确定下一状态(next_state)的取向,即next_state 的取值内容,以及确定对外输出或对内部其它组合或时 序进程输出控制信号的内容。-译码过程
应用VHDL设计状态机的具体步骤如下:
(1)根据系统要求确定状态数量、状态转移的条件和各 状态输出信号的赋值,并画出状态转移图(状态机图); (2)按照状态转移图编写状态机的VHDL设计程序;所 有的状态均可表达为CASE_WHEN结构中的一条CASE语句, 而状态的转移则通过IF_THEN_ELSE语句实现。 (3)利用EDA工具对状态机的功能进行仿真验证。
2. 主控时序进程
——负责状态机运转和在时钟驱动下负责状态转换的进程 作为状态机的“驱动泵”。 功能1:状态机随外部时钟信号以同步方式工作,当时钟的有 效跳变到来时,时序进程将代表次态的信号next_state中的内容 送入现态信号current_state中,而next_state中的内容完全由其 他进程根据实际情况而定。 功能2:此进程中包括一些清零或置位的控制信号。
S0 0/0 0/0 S1 0/1 1/0 S2 1/1 R 1/0
有限状态机 FSM-Finite State Machine
有限状态机是由寄存器组和组合逻辑构成的硬件时序电 路,其状态(即由寄存器组的1和0的组合状态所构成的有 限个状态)只可能在同一时钟跳变沿的情况下才能从一个 状态转向另一个状态,究竟转向哪一状态还是留在原状态 不但取决于各个输入值,还取决于当前所在状态。[这里指 的是米里(Mealy)型有限状态机,而摩尔(Moore)型有限状 态机究竟转向哪一状态只决于当前状态。] 对应: Mealy(输出不但取决于各个输入值,还取决于当前所在状态) ->时序逻辑电路(不仅与输入有关还和当前状态有关) Moore(输出只取决于当前状态) ->组合逻辑电路(只与输入有关)
进程描述方式:
描述方式 进程描述功能
三进程描述方式
进程1:描述次态逻辑 进程2:描述状态寄存器 进程3:描述输出逻辑
进程1:描述次态逻辑、状态寄存器 进程2:描述输出逻辑 进程1:描述状态寄存器、输出逻辑 进程2:描述次态逻辑 进程1:描述次态逻辑、输出逻辑 进程2:描述状态寄存器 进程1:描述次态逻辑、状态寄存器和描述输出逻辑