数字电路设计课件第六讲状态机设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SUBTYPE digits IS INTEGER RANGE 0 to 9 ;
2020/7/16
7.1 一般有限状态机的设计
7.1.2 为什么要使用状态机
有限状态机克服了纯硬件数字系统顺序方式控制不灵活 的缺点。 状态机的结构模式相对简单。 状态机容易构成性能良好的同步时序逻辑模块。 状态机的VHDL表述丰富多样。 在高速运算和控制方面,状态机更有其巨大的优势。 就可靠性而言,状态机的优势也是十分明显的。
BEGIN
REG: PROCESS (reset,clk)
BEGIN
wk.baidu.com
IF reset = '1' THEN current_state <= s0;
ELSIF clk='1' AND clk'EVENT THEN
current_state <= next_state;
END IF;
END PROCESS;
2020/7/16
6.1 一般有限状态机的设计
6.1.3 一般有限状态机的设计
1. 说明部分 2. 主控时序进程
ARCHITECTURE ...IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state:
FSM_ST; ...
comb_outputs : OUT INTEGER RANGE 0 TO 15 );
END s_machine;
ARCHITECTURE behv OF s_machine IS
TYPE FSM_ST IS (s0, s1, s2, s3);
SIGNAL current_state, next_state: FSM_ST;
TYPE my_logic IS ( '1' ,'Z' ,'U' ,'0' ) ; SIGNAL s1 : my_logic ; s1 <= 'Z' ;
2020/7/16
7.1 一般有限状态机的设计 6.1.1 用户自定义数据类型定义语句
子类型SUBTYPE的语句格式如下:
SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围;
CO20M2:0/7P/1R6OCESS(current_state, state_Inputs)
接下页
接上页
BEGIN CASE current_state IS WHEN s0 => comb_outputs<= 5; IF state_inputs = "00" THEN next_state<=s0; ELSE next_state<=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;
clk reset state_inputs
PROCESS REG
FSM: s_machine
current_state next_state
PROCESS COM
comb_outputs
2020/7/16
图7-1 一般状态机结构框图工作示意图
7.1.3 一般有限状态机的设计
3. 主控组合进程
控组合进程的任务是根据外部输入的控制信号(包括 来自状态机外部的信号和来自状态机内部其它非主控的 组合或时序进程的信号),或(和)当前状态的状态值 确定下一状态(next_state)的取向,即next_state的 取值内容,以及确定对外输出或对内部其它组合或时序 进程输出控制信号的内容。
EDA技术实用教程
第六讲 有限状态机设计
6.1 一般有限状态机的设计
6.1.1 用户自定义数据类型定义语句
TYPE语句用法如下:
TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型 ; 或 TYPE 数据类型名 IS 数据类型定义 ;
以下列出了两种不同的定义方式:
TYPE st1 IS ARRAY ( 0 TO 15 ) OF STD_LOGIC ; TYPE week IS (sun,mon,tue,wed,thu,fri,sat) ;
2020/7/16
6.1 一般有限状态机的设计
6.1.1 用户自定义数据类型定义语句
TYPE m_state IS ( st0,st1,st2,st3,st4,st5 ) ; SIGNAL present_state,next_state : m_state ; 布尔数据类型的定义语句是:
TYPE BOOLEAN IS (FALSE,TRUE) ;
END PROCESS; END behv;
2020/7/16
7.1.3 一般有限状态机的设计 4. 辅助进程
图7-2 例7-1状态机的工作时序图
2020/7/16
2020/7/16
VHDL综合器易于优化 易构成性能良好的时序逻辑模块 结构模式简单、层次分明、易读易懂、易排错 利用同步时序和全局时钟线可实现高速FSM 运行模式类似于CPU,易于进行顺序控制 高可靠性,非法状态易控制
2020/7/16
7.2 Moore型有限状态机的设计
7.2.1 三进程有限状态机
表7-1 AD574逻辑控制真值表(X表示任意)
2020/7/16
7.1.3 一般有限状态机的设计 4. 辅助进程
【例7-1】
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY s_machine IS
PORT ( clk,reset : IN STD_LOGIC;
state_inputs : IN STD_LOGIC_VECTOR (0 TO 1);
2020/7/16
7.1 一般有限状态机的设计
7.1.2 为什么要使用状态机
有限状态机克服了纯硬件数字系统顺序方式控制不灵活 的缺点。 状态机的结构模式相对简单。 状态机容易构成性能良好的同步时序逻辑模块。 状态机的VHDL表述丰富多样。 在高速运算和控制方面,状态机更有其巨大的优势。 就可靠性而言,状态机的优势也是十分明显的。
BEGIN
REG: PROCESS (reset,clk)
BEGIN
wk.baidu.com
IF reset = '1' THEN current_state <= s0;
ELSIF clk='1' AND clk'EVENT THEN
current_state <= next_state;
END IF;
END PROCESS;
2020/7/16
6.1 一般有限状态机的设计
6.1.3 一般有限状态机的设计
1. 说明部分 2. 主控时序进程
ARCHITECTURE ...IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state:
FSM_ST; ...
comb_outputs : OUT INTEGER RANGE 0 TO 15 );
END s_machine;
ARCHITECTURE behv OF s_machine IS
TYPE FSM_ST IS (s0, s1, s2, s3);
SIGNAL current_state, next_state: FSM_ST;
TYPE my_logic IS ( '1' ,'Z' ,'U' ,'0' ) ; SIGNAL s1 : my_logic ; s1 <= 'Z' ;
2020/7/16
7.1 一般有限状态机的设计 6.1.1 用户自定义数据类型定义语句
子类型SUBTYPE的语句格式如下:
SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围;
CO20M2:0/7P/1R6OCESS(current_state, state_Inputs)
接下页
接上页
BEGIN CASE current_state IS WHEN s0 => comb_outputs<= 5; IF state_inputs = "00" THEN next_state<=s0; ELSE next_state<=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;
clk reset state_inputs
PROCESS REG
FSM: s_machine
current_state next_state
PROCESS COM
comb_outputs
2020/7/16
图7-1 一般状态机结构框图工作示意图
7.1.3 一般有限状态机的设计
3. 主控组合进程
控组合进程的任务是根据外部输入的控制信号(包括 来自状态机外部的信号和来自状态机内部其它非主控的 组合或时序进程的信号),或(和)当前状态的状态值 确定下一状态(next_state)的取向,即next_state的 取值内容,以及确定对外输出或对内部其它组合或时序 进程输出控制信号的内容。
EDA技术实用教程
第六讲 有限状态机设计
6.1 一般有限状态机的设计
6.1.1 用户自定义数据类型定义语句
TYPE语句用法如下:
TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型 ; 或 TYPE 数据类型名 IS 数据类型定义 ;
以下列出了两种不同的定义方式:
TYPE st1 IS ARRAY ( 0 TO 15 ) OF STD_LOGIC ; TYPE week IS (sun,mon,tue,wed,thu,fri,sat) ;
2020/7/16
6.1 一般有限状态机的设计
6.1.1 用户自定义数据类型定义语句
TYPE m_state IS ( st0,st1,st2,st3,st4,st5 ) ; SIGNAL present_state,next_state : m_state ; 布尔数据类型的定义语句是:
TYPE BOOLEAN IS (FALSE,TRUE) ;
END PROCESS; END behv;
2020/7/16
7.1.3 一般有限状态机的设计 4. 辅助进程
图7-2 例7-1状态机的工作时序图
2020/7/16
2020/7/16
VHDL综合器易于优化 易构成性能良好的时序逻辑模块 结构模式简单、层次分明、易读易懂、易排错 利用同步时序和全局时钟线可实现高速FSM 运行模式类似于CPU,易于进行顺序控制 高可靠性,非法状态易控制
2020/7/16
7.2 Moore型有限状态机的设计
7.2.1 三进程有限状态机
表7-1 AD574逻辑控制真值表(X表示任意)
2020/7/16
7.1.3 一般有限状态机的设计 4. 辅助进程
【例7-1】
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY s_machine IS
PORT ( clk,reset : IN STD_LOGIC;
state_inputs : IN STD_LOGIC_VECTOR (0 TO 1);