课件大三第8章vhdl状态机_第1页
课件大三第8章vhdl状态机_第2页
课件大三第8章vhdl状态机_第3页
课件大三第8章vhdl状态机_第4页
课件大三第8章vhdl状态机_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、EDA技术与VHDL 第8章VHDL状态机 8.1 状态机设计相关语句 8.1.1 类型定义语句 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) ; TYPE m_state IS ( st0,st1,st2,st3,st4,st5 ) ; SIGNAL present_state,next_state : m_state ; TYPE BOOLEAN IS

2、(FALSE,TRUE) ; 8.1 状态机设计相关语句 8.1.1 类型定义语句 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 ; 8.1 状态机设计相关语句 8.1.2 状态机的优势 1状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点;2由于状态机的结构相对简单,设计方案相对固定;3、状态机容易构成性能良好的同步时序逻辑模块;4、与VHDL的其他描述方式相比

3、,状态机的VHDL表述丰富多样、程序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有其独到的好处;5、在高速运算和控制方面,状态机更有其巨大的优势。 6、高可靠性。 8.1 状态机设计相关语句 8.1.3 状态机结构 1. 说明部分 ARCHITECTURE .IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST; . 8.1 状态机设计相关语句 8.1.3 状态机结构 2. 主控时序进程 图5-1 一般状态机结构框图 5.1 状态机设计相关语句 5.1.3 状态机结构 3. 主控组合进程

4、 4. 辅助进程 【例5-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;ARCHITECTURE behv OF s_machine IS TYPE FSM_ST IS (s0, s1, s2, s3); -数据类型定义,状态符号化 SIGNAL c

5、urrent_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= 5; IF state_inputs = 00 THEN next_state=s0; ELSE next_state comb_outputs= 8; IF state_inputs = 00 THE

6、N next_state=s1; ELSE next_state comb_outputs= 12; IF state_inputs = 11 THEN next_state = s0; ELSE next_state comb_outputs = 14; IF state_inputs = 11 THEN next_state = s3; ELSE next_state = s0; END IF; END case; END PROCESS; END behv; 5.1 状态机设计相关语句 5.1.3 状态机结构 图5-2 例5-1状态机的工作时序 0001001001001000Q3Q2Q

7、1Q01.需要设计一个4进制计数器-主控时序进程 用以产生系统的稳态。2. 对计数器的输出进行译码,产生需要的输出-主控组合进程用以产生需要的输出二、状态机的结构 因此, 状态机的基本操作有两种: (1) 状态机内部状态转换 状态机的下一个状态,由当前状态和输入条件决定。 (2) 产生输出信号序列 输出信号由输出译码器根据当前状态和输入条件决定。 在产生输出的过程中,由是否使用输入信号可以确定状态机的类型。两种典型的状态机是摩尔(MOORE)状态机和米立(MEALY)状态机。 另外,还要有说明部分定义枚举型数据,用于状态的表示辅助进程-用于计算、输出锁存等。次态逻辑 状 态 寄 存 器输出电路

8、输出输入反馈MOORE状态机次态现态次态逻辑 状 态 寄 存 器输出电路输出输入反馈MEALY状态机现态次态5.2 Moore 状态机例、 多进程状态机的VHDL设计。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MOORE1 ISPORT(CLK, RESET:IN STD_LOGIC; X:IN STD_LOGIC;Z:OUT STD_LOGIC);END MOORE1;ARCHITECTURE ART OF MOORE1 IS TYPE state IS (s0,s1,s2,s3); SIGNAL current_sate, next_s

9、tate: sate;说明部分s0s2s1s30/01/00/10/00/01/01/01/1x/zBEGINP1:PROCESS (CLK,reset) IS BEGINIF reset=1 THEN current_sate=st0; Elsif (CLK=1AND CLKEVENT) THEN current_satez=“0”; if X=0 then next_state=s1; else next_statez=“0”; if X=0 then next_state=s2; else next_statez=“0”; if X=0 then next_state=s3; else

10、next_statez=“1”; if X=0 then next_state=s0; else next_state=s2; End if;End case;End process P2;END ARCHITECTURE ART; 输出Z仅与状态st1,st1有关,与输入信号X无关-MOORE型s0s2s1s30/01/00/10/00/01/01/01/1x/z例、 单进程状态机的VHDL设计。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MOORE1 ISPORT(CLK,reset:IN STD_LOGIC; X:IN STD_LOGI

11、C;Z:OUT STD_LOGIC);END MOORE1;ARCHITECTURE ART OF MOORE1 IS TYPE state IS (s0,s1,s2,s3); SIGNAL current_sate: sate;BEGINP1:PROCESS (CLK) IS BEGINIF reset=1 THEN current_sate if X=0 then current_state=s1; else current_state=s3; End if; Z if X=0 then current_state=s2; else current_state=s0; End if;Zz=

12、“0”; if X=0 then current_state=s3; else current_state=s1; End if; Zz=“0”; if X=0 then current_state=s0; else current_state=s2; End if; Zcurrent_state=s0; end case;End if;End process;End art; 5.3 Mealy状态机1. 与MOORE状态机相比,MEALY状态机的输出变化要领先一个周期,即一旦输入信号或状态发生变化,输出信号即刻发生变化。2. MOORE机与MEALY机在设计上基本相同。不同的是,在组合进程

13、中MEALY的输出信号是 当前状态和当前输入的函数。【例】 米立状态机的VHDL设计。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY1 ISPORT(CLK,reset:IN STD_LOGIC; A:IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END MEALY1;ARCHITECTURE ART OF MEALY1 IS TYPE states IS (s0,s1,s2,s3); SIGNAL stx: sates;BEGINP1:PROCESS (CLK) IS BEGINI

14、F reset=1 THEN current_sate if A=0 then states if A=1 then states if A=0 then states if A=1 then statesstx if X=0 then Q=“1000”; else Q if X=0 then Q=“1011”; else Q if X=0 then Q=“1010”; else Q if X=0 then Q=“1101”; else QQ=“0000”;End case;End process P1;END ART; 输出Q不仅与状态st0有关,还与输入信号X有关-MEALY型【例】状态机

15、的VHDL设计模型。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY S_MACHINE IS PORT(CLK,RESET:IN STD_LOGIC; A:IN STD_LOGIC_VECTOR(0 TO 1); Y:OUT STD_LOGIC_VECTOR(0 TO 1);END S_MACHINE;ARCHITECTURE ART OF S_MACHINE ISTYPE STATES IS (ST0,ST1,ST2,ST3); -定义STATES为枚举型数据类型SIGNAL CURRENT_STATE,NEXT_STATE:STATES;BE

16、GINREG:PROCESS (RESET,CLK) IS -时序逻辑进程BEGINIF RESET=1 THEN CURRENT_STATE=ST0; -异步复位ELSIF (CLK=1 AND CLKEVENT) THENCURRENT_STATEY=“00”;-初始态译码输出“00” IF A=“00” THEN -根据外部的状态控制输入“00”NEXT_STATE=ST0; -在下一时钟后,进程REG的状态将维持为 ST0ELSENEXT_STATEY=“01”;IF A =“00” THEN NEXT_STATE=ST1; ELSENEXT_STATEY=“10”;IF A=“11”THENNEXT_STATE=ST2;E

温馨提示

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

评论

0/150

提交评论