版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 状态机(State Machine)是一类很重要的时序电路,是很多数字电路的核心部件,是大型电子设计的基础。状态机相当于一个控制器,它将一项功能的完成分解为若干步,每一步对应于二进制的一个状态,通过预先设计的顺序在各状态之间进行转换,状态转换的过程就是实现逻辑功能的过程。状态机有摩尔(Moore)型和米立(Mealy)型两种。Moore型状态机的输出信号只与当前状态有关;Mealy型状态机的输出信号不仅与当前状态有关,还与输入信号有关。为什么要使用状态机为什么要使用状态机? ? 状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点 状态机可以定
2、义符号化枚举类型的状态状态机可以定义符号化枚举类型的状态 状态机容易构成性能良好的同步时序逻辑模块状态机容易构成性能良好的同步时序逻辑模块 状态机的状态机的VHDLVHDL表述丰富多样、程序层次分明,易读易懂表述丰富多样、程序层次分明,易读易懂 在高速运算和控制方面,状态机更有其巨大的优势在高速运算和控制方面,状态机更有其巨大的优势 高可靠性高可靠性 1.1 数据类型定义语句数据类型定义语句 TYPE m_state IS ( st0,st1,st2,st3,st4,st5 ) ; SIGNAL present_state,next_state : m_state ; TYPE BOOLEAN
3、 IS (FALSE,TRUE) ; TYPE my_logic IS ( 1 ,Z ,U ,0 ) ; SIGNAL s1 : my_logic ; s1 = Z ; SUBTYPE 子类型名子类型名 IS 基本数据类型基本数据类型 RANGE 约束范围约束范围; SUBTYPE digits IS INTEGER RANGE 0 to 9 ; 1.2 一般有限状态机的设计一般有限状态机的设计 1. 1. 说明部分说明部分 ARCHITECTURE .ISTYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_S
4、T; . 2. 2. 主控时序进程主控时序进程负责状态机运转和在时钟驱动下负责状态转换的过程。负责状态机运转和在时钟驱动下负责状态转换的过程。 comb_outputsstate_inputsresetclkFSM:s_machineCOMnext_statecurrent_statePROCESSREGPROCESS一般状态机结构框图一般状态机结构框图 3. 3. 主控组合进程主控组合进程根据外部输入的控制信号,和当前状态的状态值确定下一根据外部输入的控制信号,和当前状态的状态值确定下一状态的取值及对外输出值。状态的取值及对外输出值。 lEND case;lEND PROCESS; lEND
5、 behv; 1 .0 s 1 .5 s 2 .0 s 2 .5 s 3 .0 s 3 .5 s 4 .0 s 状态机的工作时序状态机的工作时序打开打开QuartusII状态图观察器状态图观察器 状态图状态图状态机的结构示意图 2.1 多进程状态机设计多进程状态机设计 ADC0809工作时序工作时序 控制控制ADC0809采样状态图采样状态图 采样状态机结构框图采样状态机结构框图 【例例2】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADCINT IS PORT(D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -来自
6、来自0809转换好的转换好的8位数据位数据CLK : IN STD_LOGIC; -状态机工作时钟状态机工作时钟EOC : IN STD_LOGIC; -转换状态指示,低电平表示正转换状态指示,低电平表示正在转换在转换ALE : OUT STD_LOGIC; -8个模拟信号通道地址锁存信号个模拟信号通道地址锁存信号START : OUT STD_LOGIC; -转换开始信号转换开始信号OE : OUT STD_LOGIC; -数据输出数据输出3态控制信号态控制信号ADDA : OUT STD_LOGIC; -信号通道最低位控制信号信号通道最低位控制信号LOCK0 : OUT STD_LOGIC
7、; -观察数据锁存时钟观察数据锁存时钟Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -8位数据输出位数据输出END ADCINT;ARCHITECTURE behav OF ADCINT ISTYPE 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; - 转换后数据输出锁存
8、时转换后数据输出锁存时钟信号钟信号 BEGINADDA = 1;-当当ADDA=0,模拟信号进入通道,模拟信号进入通道IN0;当;当ADDA=1,则,则进入通道进入通道IN1Q = REGL; LOCK0 ALE=0;START=0;LOCK=0;OE=0; next_state ALE=1;START=1;LOCK=0;OE=0;next_state ALE=0;START=0;LOCK=0;OE=0; IF (EOC=1) THEN next_state = st3; -EOC=1表明转换结束表明转换结束 ELSE next_state ALE=0;START=0;LOCK=0;OE=1;
9、 next_state ALE=0;START=0;LOCK=1;OE=1; next_state next_state = st0; END CASE ; END PROCESS COM ; REG: PROCESS (CLK) BEGIN IF (CLKEVENT AND CLK=1) THEN current_state=next_state; END IF; END PROCESS REG ; - 由信号由信号current_state将当前状态值带将当前状态值带出此进程出此进程:REG LATCH1: PROCESS (LOCK) - 此进程中,在此进程中,在LOCK的上升沿,将转换
10、好的的上升沿,将转换好的数据锁入数据锁入 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL next_state next_state IF (EOC=1) THEN next_state = st3; ELSE next_state next_state next_state next_state ALE=0;START=0;LOCK=0;OEALE=1;START=1;LOCK=0;OEALE=0;START=0;LOCK=0;OEALE=0;START=0;LOCK=0;OEALE=0;START=0;LOCK=1;OE ALE=0;START=0;LOCK
11、=0; END CASE ; END PROCESS COM2 ; ADC0809采样状态机工作时序采样状态机工作时序 2.2 单进程单进程Moore状态机设计状态机设计 状态机综合后的部分主要状态机综合后的部分主要RTL电路模块(电路模块(Synplify综合)综合) 【例例4】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MOORE1 IS PORT (DATAIN :IN STD_LOGIC_VECTOR(1 DOWNTO 0); CLK,RST : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(3 DOW
12、NTO 0);END MOORE1;ARCHITECTURE behav OF MOORE1 IS TYPE ST_TYPE IS (ST0, ST1, ST2, ST3,ST4); SIGNAL C_ST : ST_TYPE ; BEGIN PROCESS(CLK,RST) BEGIN IF RST =1 THEN C_ST = ST0 ; Q IF DATAIN =10 THEN C_ST = ST1 ; ELSE C_ST = ST0 ; END IF; Q IF DATAIN =11 THEN C_ST = ST2 ; ELSE C_ST = ST1 ;END IF; Q IF DAT
13、AIN =01 THEN C_ST = ST3 ; ELSE C_ST = ST0 ;END IF; Q IF DATAIN =00 THEN C_ST = ST4 ; ELSE C_ST = ST2 ;END IF; Q IF DATAIN =11 THEN C_ST = ST0 ; ELSE C_ST = ST3 ;END IF; Q C_ST = ST0; END CASE; END IF; END PROCESS;END behav; 单进程状态机工作时序单进程状态机工作时序 对应于例对应于例4的二进程状态机工作时序图的二进程状态机工作时序图 例例5状态机工作时序图状态机工作时序图 【
14、例例5】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY1 ISPORT ( CLK ,DATAIN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);END MEALY1;ARCHITECTURE behav OF MEALY1 IS TYPE states IS (st0, st1, st2, st3,st4); SIGNAL STX : states ; BEGIN COMREG : PROCESS(CLK,RESET) BEGIN -决定转换状态的进程决定转
15、换状态的进程 IF RESET =1 THEN STX IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX STX IF DATAIN = 1 THEN Q = 10000 ; ELSE Q IF DATAIN = 0 THEN Q = 10111 ; ELSE Q IF DATAIN = 1 THEN Q = 10101 ; ELSE Q IF DATAIN = 0 THEN Q = 11011 ; ELSE Q I
16、F DATAIN = 1 THEN Q = 11101 ; ELSE Q Q=00000 ; END CASE ; END PROCESS COM1 ;END behav; 例例6状态机工作时序图状态机工作时序图 【例例6】LIBRARY IEEE; -MEALY FSMUSE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY2 IS PORT ( CLK ,DATAIN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);END MEALY2;ARCHITECTURE behav OF MEALY2 I
17、S TYPE states IS (st0, st1, st2, st3,st4); SIGNAL STX : states ; SIGNAL Q1 : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN COMREG : PROCESS(CLK,RESET) -决定转换状态决定转换状态的进程的进程 BEGIN IF RESET =1 THEN STX IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN S
18、TX STX IF DATAIN=1 THEN Q2 :=10000; ELSE Q2:=01010; END IF; WHEN st1= IF DATAIN=0 THEN Q2 :=10111; ELSE Q2:=10100; END IF; WHEN st2= IF DATAIN=1 THEN Q2 :=10101; ELSE Q2:=10011; END IF; WHEN st3= IF DATAIN=0 THEN Q2 :=11011; ELSE Q2:=01001; END IF; WHEN st4= IF DATAIN=1 THEN Q2 :=11101; ELSE Q2:=011
19、01; END IF; WHEN OTHERS = Q2:=00000 ; END CASE ; IF CLKEVENT AND CLK = 1 THEN Q1=Q2; END IF; END PROCESS COM1 ; Q = Q1 ;END behav; 4.1 状态位直接输出型编码状态位直接输出型编码 表表1 控制信号状态编码表控制信号状态编码表 状状态态 状状 态态 编编 码码S TARTALEOELOCKB功功 能能 说说 明明 ST0 00000初始态初始态ST111000启动转换启动转换ST200001若测得若测得EOC=1时,转下一状态时,转下一状态ST3ST300100输出
20、转换好的数据输出转换好的数据ST400110利用利用LOCK的上升沿将转换好的数的上升沿将转换好的数据锁存据锁存【例例7】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY AD0809 IS. PORT (D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK ,EOC : IN STD_LOGIC; ALE, START, OE, ADDA : OUT STD_LOGIC; c_state : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(7 DOW
21、NTO 0);END AD0809;ARCHITECTURE behav OF AD0809 ISSIGNAL current_state, next_state: STD_LOGIC_VECTOR(4 DOWNTO 0 ); CONSTANT st0 : STD_LOGIC_VECTOR(4 DOWNTO 0) := 00000 ; CONSTANT st1 : STD_LOGIC_VECTOR(4 DOWNTO 0) := 11000 ; CONSTANT st2 : STD_LOGIC_VECTOR(4 DOWNTO 0) := 00001 ; CONSTANT st3 : STD_LO
22、GIC_VECTOR(4 DOWNTO 0) := 00100 ; CONSTANT st4 : STD_LOGIC_VECTOR(4 DOWNTO 0) := 00110 ; SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL LOCK : STD_LOGIC; BEGIN ADDA = 1; Q = REGL; START=current_state(4); ALE=current_state(3); OE=current_state(2); LOCK=current_state(1);c_state next_state next_state IF (EOC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GB-T 31230.4-2014工业以太网现场总线EtherCAT 第4部分:数据链路层协议规范》专题研究报告
- 2026年华北理工大学轻工学院单招职业技能考试题库附答案详解ab卷
- 2026年南京城市职业学院单招综合素质考试题库附答案详解(培优)
- 2026年伊犁职业技术学院单招职业倾向性考试题库附参考答案详解(培优)
- 2026年六安职业技术学院单招职业技能考试题库带答案详解(a卷)
- 2026年信阳学院单招职业倾向性考试题库附答案详解(黄金题型)
- 2026年南昌健康职业技术学院单招职业适应性测试题库含答案详解(能力提升)
- 2026年南阳职业学院单招职业技能测试题库含答案详解(培优)
- 2026年北京科技大学天津学院单招职业适应性测试题库带答案详解(综合卷)
- 2026年南阳农业职业学院单招职业技能考试题库附答案详解ab卷
- 2026年智能驾驶系统架构师面试题及答案解析
- 2026年苏州职业大学高职单招职业适应性测试参考题库带答案解析
- 人工智能在市场营销中的应用实践案例
- 2025年单招护理类历年考试题目及答案
- 2025年广东中考化学试卷及答案
- 企业员工通勤车辆代驾服务协议
- 2025年中考数学二轮复习:二次函数最值问题 提分刷题练习题(含答案解析)
- 二年级上册口算题1000道打印版
- 环境设计实地调研法
- 活动策划 培训课件
- 抖音直播带货的技巧与策略
评论
0/150
提交评论