VHDL有限状态机设计_第1页
VHDL有限状态机设计_第2页
VHDL有限状态机设计_第3页
VHDL有限状态机设计_第4页
VHDL有限状态机设计_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章 有限状态机设计,7.1 一般有限状态机的设计,7.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) ;,7.1.1 用户自定义数据类型定义语句,TYPE m_state IS( st0,st1,st2,st3,st4,st5 ) ; SIGNAL pres

2、ent_state,next_state : m_state ;,布尔数据类型的定义语句是: TYPE BOOLEAN IS (FALSE,TRUE) ;,TYPE my_logic IS ( 1 ,Z ,U ,0 ) ; SIGNAL s1 : my_logic ; s1 = Z ;,子类型SUBTYPE的语句格式如下: SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围;,SUBTYPE digits IS INTEGER RANGE 0 to 9 ;,7.1.2 为什么要使用状态机, 有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。, 状态机的结构模式相对简单。,

3、 状态机容易构成性能良好的同步时序逻辑模块。, 状态机的VHDL表述丰富多样。, 在高速运算和控制方面,状态机更有其巨大的优势。, 就可靠性而言,状态机的优势也是十分明显的。,7.1.3 一般有限状态机的设计,1. 说明部分,2. 主控时序进程,图7-1 一般状态机结构框图工作示意图,ARCHITECTURE .IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST; .,3. 主控组合进程,控组合进程的任务是根据外部输入的控制信号(包括来自状态机外部的信号和来自状态机内部其它非主控的组合或时序进程的信

4、号),或(和)当前状态的状态值确定下一状态(next_state)的取向,即:next_state的取值内容,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内容。,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); comb_outputs : OUT INTEGER RANGE 0 TO 15 ); END s_machine

5、; ARCHITECTURE behv OF s_machine IS TYPE FSM_ST IS (s0, s1, s2, s3); SIGNAL current_state, next_state: FSM_ST; BEGIN REG: PROCESS (reset,clk) BEGIN IF reset = 1 THEN current_state = s0; ELSIF clk=1 AND clkEVENT THEN current_state comb_outputs comb_outputs comb_outputs comb_outputs = 14; IF state_inp

6、uts = 11 THEN next_state = s3; ELSE next_state = s0; END IF; END case; END PROCESS; END behv;,接上页,图7-2 例7-1状态机的工作时序图,仿真波形,7.2 Moore型有限状态机的设计,7.2.1 三进程有限状态机,表7-1 AD574逻辑控制真值表(X表示任意),图7-3 AD574工作时序,图7-4 AD574工作时序,图7-5 采样状态机结构,【例7-2】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY AD574 IS PORT (D :I

7、N STD_LOGIC_VECTOR(11 DOWNTO 0); CLK ,STATUS : IN STD_LOGIC;-状态机时钟CLK,AD574状态信号STATUS LOCK0 : OUT STD_LOGIC; -内部锁存信号LOCK的测试信号 CS,A0,RC,K12X8 : OUT STD_LOGIC; -AD574控制信号 Q : OUT STD_LOGIC_VECTOR(11 DOWNTO 0); -锁存数据输出 END AD574; ARCHITECTURE behav OF AD574 IS TYPE states IS (st0, st1, st2, st3,st4); S

8、IGNAL current_state, next_state: states :=st0 ; SIGNAL REGL : STD_LOGIC_VECTOR(11 DOWNTO 0); SIGNAL LOCK : STD_LOGIC; BEGIN K12X8 = 1; LOCK0 next_state next_state IF (STATUS=1) THEN next_state next_state next_state next_state CS CS CS CS CSCS=1; A0=1;RC=1;LOCK=0;-其它情况返回初始态 接下页,END CASE ; END PROCESS

9、 COM2 ; REG: PROCESS (CLK) - 时序进程 BEGIN IF ( CLKEVENT AND CLK=1) THEN current_state = next_state; END IF; END PROCESS REG; LATCH1 : PROCESS (LOCK) - 数据锁存器进程 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL = D ; END IF; END PROCESS ; Q next_state next_state IF (STATUS=1) THEN next_state next_state next_state

10、 next_state CS CS CS=0; A0=0; RC=0; LOCK=0; IF (STATUS=1) THEN next_state = st2; ELSE next_state CS CS 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; LATCH: PROCESS (LOCK) BEGIN IF LOCK=1 AND L

11、OCKEVENT THEN REGL = D ; END IF; END PROCESS ; Q = REGL; K12X8 = 1 ; END behav;,状态机VHDL源程序,状态机RTL电路图,状态机工作时序图,状态2:等待,7.2.2 单进程Moore型有限状态机,【例7-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

12、(3 DOWNTO 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 IF DATAIN =11 THEN C_ST IF DATAIN =01 THEN C_ST IF DATAIN =00 THEN C_ST IF DATAIN =11 THEN C_

13、ST C_ST = ST0; END CASE; END IF; END PROCESS; END behav;,接上页,图7-7 例7-4状态机综合后的RTL电路模块图,图7-8 例7-4单进程状态机工作时序,图7-9 对应于例7-4的2进程状态机工作时序图,7.3 Mealy型有限状态机的设计,【例7-5】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MEALY1 IS PORT ( CLK ,DATAIN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); END

14、MEALY1; ARCHITECTURE behav OF MEALY1 IS TYPE states IS (st0, st1, st2, st3,st4); SIGNAL STX : states ; 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 STX STX IF DAT

15、AIN = 1 THEN Q IF DATAIN = 0 THEN Q IF DATAIN = 1 THEN Q IF DATAIN = 0 THEN Q = 11011 ; ELSE Q IF DATAIN = 1 THEN Q Q 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:=0

16、1001 ; END IF ; WHEN st4= IF DATAIN = 1 THEN Q2 := 11101 ; ELSE Q2:=01101 ; END IF ; WHEN OTHERS = Q2:=00000 ; END CASE ;,接下页,IF CLKEVENT AND CLK = 1 THEN Q1=Q2; END IF; END PROCESS COM1 ; Q next_state next_state IF (STATUS=1) THEN next_state next_state next_state next_state = st0; END CASE ; OUT4 =

17、 current_state(4 DOWNTO 1); END PROCESS COM1 ; REG: PROCESS (CLK) - 时序进程 BEGIN IF ( CLKEVENT AND CLK=1) THEN current_state = next_state; END IF; END PROCESS REG; LK = current_state(1) ; LATCH1 : PROCESS ( LK ) - 数据锁存器进程 BEGIN IF LK=1 AND LKEVENT THEN REGL = D ;,接下页,END IF; END PROCESS ; Q next_state = st0; END case;,【例7-10】 . alarm = (st0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论