当前位置:首页 >> 临床医学 >>

第7章 VHDL有限状态机设计


EDA技术实用教程

第7章
VHDL有限状态机设计

第7章 有限状态机设计
教学内容:
7.1 7.2 7.3 7.4 7.5 7.6 7.7 VHDL状态机的一般形式 Moore型有限状态机的设计 Mealy型有限状态机的设计 状态机图形编辑设计方法 状态编码 安全状态机设计 硬件数字技术排除毛刺

教学要求:
学习和掌握用VHDL设计不同类型的有限状 态机的方法; 了解EDA工具和设计中关注的问题:综合 器优化、毛刺信号的克服、控制速度、状态 编码方式等。

状态机(State Machine)
状态机是一类很重要的时序电路,是很多数字 电路的核心部件,是大型电子设计的基础。 状态机相当于一个控制器,它将一项功能的 完成分解为若干步,每一步对应于二进制的一个 状态,通过预先设计的顺序在各状态之间进行转 换,状态转换的过程就是实现逻辑功能的过程。 状态机图是指用图形的 方式来表示一个设计实 体的各种工作状态、内 部各工作状态转换的条 件以及各工作状态对应 的输出信号序列。
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(输出只取决于当前状态) ->组合逻辑电路(只与输入有关)

比较: 传统的设计方法是首先绘制出控制器的状态图,并由此 列出状态表,再合并消除状态表中的等价状态项。在完成状 态寄存器的分配之后,根据状态表求出次态及输出方程,最 后画出设计原理图。采用这种方法设计复杂状态机将会十分 繁杂。
利用VHDL设计状态机,不需要进行繁琐的状态分配、绘 制状态表和化简次态方程。设计者不必使用卡诺图进行逻辑 化简,不必画电路原理图,也不必搭试硬件电路进行逻辑功 能的测试,所有这些工作都可以通过EDA工具自动完成。

应用VHDL设计状态机的具体步骤如下:
(1)根据系统要求确定状态数量、状态转移的条件和各 状态输出信号的赋值,并画出状态转移图(状态机图); (2)按照状态转移图编写状态机的VHDL设计程序;所 有的状态均可表达为CASE_WHEN结构中的一条CASE语句, 而状态的转移则通过IF_THEN_ELSE语句实现。 (3)利用EDA工具对状态机的功能进行仿真验证。

7.1 VHDL状态机的一般形式
7.1.1 为什么要使用状态机
(1)高效的顺序控制模型。 (2)容易利用现成的EDA优化工具。 (3)性能稳定。 (4)设计实现效率高。 (5)高速性能。

(6)高可靠性能。

7.1.2 一般有限状态机的设计
有限状态机分类:
从信号的输入与输出方式分:Mealy型和Moore型有限状态机 从结构分:单进程状态机和多进程状态机 从状态表达方式分:有符号状态机和确定编码状态机 从编码方式分:顺序编码状态机、一位热码编码状态机

或其它编码状态机

有限状态机的结构: 说明部分、主控时序进程、主控组合进程、辅助进程

1.说明部分
*说明部分在architecture与begin之间;

* 定义枚举型数据类型: 用于描述状态
*状态变量定义为信号:便于信息传输,状态变量数 据类型定义为含有既定状态元素的新定义的数 据类型
ARCHITECTURE ...IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST; ... begin

2. 主控时序进程
——负责状态机运转和在时钟驱动下负责状态转换的进程 作为状态机的“驱动泵”。 功能1:状态机随外部时钟信号以同步方式工作,当时钟的有 效跳变到来时,时序进程将代表次态的信号next_state中的内容 送入现态信号current_state中,而next_state中的内容完全由其 他进程根据实际情况而定。 功能2:此进程中包括一些清零或置位的控制信号。
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 的取值内容,以及确定对外输出或对内部其它组合或时 序进程输出控制信号的内容。-译码过程
FSM: s_machine PROCESS REG current_state PROCESS COM comb_outputs

clk reset state_inputs

next_state

图7-1 一般状态机结构框图工作示意图

4. 辅助进程
——用于配合状态机工作的组合进程或时序进程 例如: 完成某种算法的进程; 配合状态机工作的其他时序进程; 稳定输出设置的数据锁存器等。

【例7-1】 2进程 Moore型
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);--定义FSM_ST为枚举型数据类型(符号化状态机) SIGNAL current_state, next_state: FSM_ST; BEGIN REG: PROCESS (reset,clk)--主控时序进程 BEGIN IF reset = '1' THEN current_state <= s0; --异步复位 ELSIF clk='1' AND clk'EVENT THEN current_state <= next_state; --当检测到时钟上升沿时转换至下一状态 END IF; END PROCESS; --由current_state将当前状态值带出此进程,进入进程COM

接下页

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;

注意:状态变量的状态判断必须用CASE语句,不能用IF语句

2 3 4

图7-2 例7-1状态机的工作时序图

clk=2? reset='1' next_state= s0 current_state =s0?comb_outputs= 5 state_inputs = “ 01” ? next_state= s1

--REG --COM --COM

clk=3? next_state= s1? current_state --REG current_state =s1?comb_outputs= 8 --COM state_inputs = “ 10”? next_state= s2 --COM clk=4? next_state= s2 ? current_state --REG current_state =s2?comb_outputs=12 --COM state_inputs = “10” ? next_state= s3 --COM

7.1.3 状态机设计初始控制与表述 (1)打开“状态机萃取”开关
(2)状态图观察

7.2 Moore型有限状态机的设计
按状态机的信号输出方式分类:

—Moore(摩尔)型和Mealy(米里)型
Moore型:异步输出状态机—当时钟到来时,输出 仅为当前状态的函数。moore型最大的优点就是可 以将输入部分与输出部分隔离开 。 Mealy型: 同步输出状态机—输出当前状态和所有 输入信号函数,输出是在输入变化后立即发生。 不依赖时钟的同步。

Moore型状态机框图
输入 次态 译 码 器 寄 存 器 输出 译 码 器 输

...

Mealy状态机的框图
输入 次态 译 码 器 寄 存 器 输出 译 码 器 输

...

...



...

...

...



7.2.1 ADC采样控制设计及多进程结构状态机
在一般状态机的设计过程中,为了能获得可综合的 ,高效的VHDL状态机描述,建议使用枚举类数据类型 来定义状态机的状态,并使用多进程方式来描述状态机 的内部逻辑。 例如可使用两个进程来描述,—个进程描述时序逻 辑,包括状态寄存器的工作和寄存器状态的输出,另一 个进程描述组合逻辑,包括进程间状态值的传递逻辑以 及状态转换值的输出。必要时还可以引入第三个进程完 成其它的逻辑功能。

进程描述方式:
描述方式 进程描述功能

三进程描述方式

进程1:描述次态逻辑 进程2:描述状态寄存器 进程3:描述输出逻辑
进程1:描述次态逻辑、状态寄存器 进程2:描述输出逻辑 进程1:描述状态寄存器、输出逻辑 进程2:描述次态逻辑 进程1:描述次态逻辑、输出逻辑 进程2:描述状态寄存器 进程1:描述次态逻辑、状态寄存器和描述输出逻辑

两进程 形式1 描述方式 形式2 形式3 单进程描述方式

两进程描述的第三种和单进程描述方式最为常用,因 为将组合逻辑和时序逻辑清楚区分,故综合效果较好

AD采样控制器-AD574启动时序
/CS

RC
STATUS 20us D[11..0]

D[11..0]

Z

AD采样控制器-ADC0809设计
输入选通端口地址锁存信号

转换启动控制信号 状态转换信号

输出控制信号

图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 ;
接下页

COM: PROCESS(current_state,EOC) BEGIN --规定各状态转换方式 CASE current_state IS WHEN st0=>ALE<='0';START<='0';LOCK<='0';OE<='0'; next_state <= st1; --0809初始化 WHEN st1=>ALE<='1';START<='1';LOCK<='0';OE<='0'; next_state <= st2; --启动采样 WHEN st2=> ALE<='0';START<='0';LOCK<='0';OE<='0'; IF (EOC='1') THEN next_state <= st3; --EOC=1表明转换结束 ELSE next_state <= st2; --转换未结束,继续等待 END IF ; WHEN st3=> ALE<='0';START<='0';LOCK<='0';OE<='1'; next_state <= st4;--开启OE,输出转换好的数据 WHEN st4=> ALE<='0';START<='0';LOCK<='1';OE<='1'; next_state <= st0; WHEN OTHERS => next_state <= st0; END CASE ; END PROCESS COM ; REG: PROCESS (CLK) BEGIN IF (CLK'EVENT AND CLK='1') THEN current_state<=next_state; END IF; END PROCESS REG ; -- 由信号current_state将当前状态值带出此进程:REG LATCH1: PROCESS (LOCK) --st4进入进程中,在LOCK的上升沿,将转换好的数据锁入 BEGIN IF LOCK='1' AND LOCK'EVENT THEN REGL <= D ; END IF;

【例7-3】--将例7-2主控组合进程COM 分为两个组合进程COM1(状态转换)、 COM 2(状态译码)
COM1: PROCESS(current_state,EOC) --状态转换 BEGIN CASE current_state IS WHEN st0=> next_state <= st1; WHEN st1=> next_state <= st2; WHEN st2=> IF (EOC='1') THEN next_state <= st3; ELSE next_state <= st2; END IF ; WHEN st3=> next_state <= st4; --开启OE WHEN st4=> next_state <= st0; WHEN OTHERS => next_state <= st0; END CASE ; END PROCESS COM1 ; COM2: PROCESS(current_state) --状态译码 BEGIN CASE current_state IS WHEN st0=>ALE<='0';START<='0';LOCK<='0';OE<='0' ; WHEN st1=>ALE<='1';START<='1';LOCK<='0';OE<='0' ; WHEN st2=>ALE<='0';START<='0';LOCK<='0';OE<='0' ; WHEN st3=>ALE<='0';START<='0';LOCK<='0';OE<='1' ; WHEN st4=>ALE<='0';START<='0';LOCK<='1';OE<='1' ;

7.2.2 序列检测器之状态机设计
序列检测器

接下页

接上页

7.2.2 序列检测器之状态机设计

例: 用摩尔型状态机的设计空调控制器
空调控制器有两个输入,分别与温度传感器 相连,用于检测室内温度。如果温度适宜(如 18℃~25℃),则两个输入temp_high和 temp_low均为低;如果室内温度超过上限 (25℃),则输入temp_high为高;如果室内温度 低于下限(18℃),则输入temp_low为高。设控 制器的输出为“heat”和“cool”,当两者之一为 高时,空调器就制热或制冷。

tm-ih0 ephg= tm-o= eplw0
正 好 ha 0 e t= co 0 o l=

tm-ih0 ephg= tm-o= eplw0
太 冷 co 0 o l= ha 1 e t=

tm-ih0 ephg= tm-o= eplw0

te p-lo = m w1 te p-h h 1 m ig = te p-h h= m ig 1 te p-lo = m w1
太 热 co 1 o l= ha 0 e t=

te p-lo = m w1

te p-h h 1 m ig =

空调控制器状态转换图

控制器的VHDL描述

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY air_cont IS PORT( clk: IN STD_LOGIC; temp_high: IN STD_LOGIC; temp_low: IN STD_LOGIC; heat: OUT STD_LOGIC; cool: OUT STD_LOGIC); END air_cont; ARCHITECTURE arc1 OF air_cont IS TYPE state_type IS(just_right, too_cold, too_hot); --状态类型,枚举三种状态 SIGNAL stvar: state_type; --状态变量 BEGIN

接上页
PROCESS
BEGIN WAIT ON clk UNTIL RISING_EDGE(clk); --等待clk上升沿 IF temp_low='1' THEN stvar<=too_cold; --次态逻辑 ELSIF temp_high='1' THEN stvar<=too_hot; ELSE stvar<=just_right; END IF; CASE stvar IS --输出逻辑 WHEN just_right=>heat<='0';cool<='0'; --正好,不制冷,也不制热 WHEN too_cold=>heat<='1';cool<='0'; --太冷,制热 WHEN too_hot=>heat<='0';cool<='1'; --太热,制冷 END CASE; END PROCESS; END arc1;

例:

用摩尔型状态机的设计序列检测器

序列检测器在数字通信、雷达和遥控遥测等领域中 用于检测同步识别标志。它是一种用来检测一组或多组 序列信号的电路,本例中要求检测器连续收到一组串行 码(1110010)后,输出检测标志为1;否则,输出为0。 分析: 该例子中要求检测的序列码是7位,因此需要7个状 态分别记忆连续收到了1,11,111,1110,11100, 111001,1110010的7个状态,另外,还需要增加一个初 始状态,即“未收到一个有效位”的状态,共8个状态 。这8个状态用S0~S7来表示,序号就表示已收到有效 位的个数。显然,输出检测标志只有在进入S7状态时才 输出为1,很显然这是一个摩尔(Moore)型状态机。

0 0 0 1 1 0 S6/0 0 1 1 S5/0 0 1 0 S4/0 1 S3/0

s0/0
0 S7/1

S1/0

1

S2/0

1

序列检测器的状态图

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY jcq IS PORT (clk, xi: IN STD_LOGIC; z: OUT STD_LOGIC); END jcq; ARCHITECTURE archjcq OF jcq IS TYPE state_type IS (S0, S1, S2, S3, S4, S5, S6, S7); SIGNAL present_state, next_state: state_type ; BEGIN state_comb: PROCESS (present_state, xi) BEGIN CASE present_state IS WHEN S0=> z<='0'; IF xi='1' THEN next_state<=S1; ELSE next_state<=S0; END IF;

WHEN S1=> z<='0'; IF xi ='1' THEN next_state<=S2; ELSE next_state<=S0; END IF; WHEN S2=> z<='0'; IF xi='1' THEN next_state<=S3; ELSE next_state<=S0; END IF; WHEN S3=> z<='0'; IF xi='1' THEN next_state<=S3; ELSE next_state<=S4; END IF; WHEN S4=> z<='0'; IF xi='1' THEN next_state<=S1; ELSE next_state<=S5; END IF; WHEN S5=> z<='0'; IF xi='1' THEN next_state<=S6; ELSE next_state<=S0; END IF; WHEN S6=> z<='0'; IF xi='1' THEN next_state<=S2; ELSE next_state<=S7; END IF; WHEN S7=> z<='1'; IF xi='1' THEN next_state<=S1; ELSE next_state<=S0; END IF; END CASE;

END PROCESS state_comb; state_clk: PROCESS(clk) BEGIN IF clk'EVENT AND clk='1' THEN present_state<=next_state; END IF; END PROCESS state_clk; END archjcq; 序列检测器的VHDL源文件中,有两个进程:第一个进程 说明次态的取值由现态及输入决定,但并没有指出它在什么时 候成为现态;第二个进程,可以看到该赋值过程与时钟的上升沿 同步。因为序列检测器使用了两个进程来定义有限状态机,故 而称之为双进程的有限状态机描述方式。

7.3 Mealy型有限状态机的设计
Mealy型状态机的输出逻辑不仅与当前状态有关,还与当 前的输入变量有关,因此,一个基本的Mealy型状态机应 具有以下端口信号: 时钟输入端: clk; 输入变量:input; 输出变量:output; 状态复位端: reset; Mealy型状态机的 输出变化比Moore型状态机要领先一 个周期,即一旦输入状态发生变化,输出信号即刻发生变化
outputs 寄存器 clk inputs 组合逻辑

reset 当前状态

双进程状态机--MEALY

接下页

接上页

毛刺
消除毛刺,改进方法 1)将输出通过寄存器锁存 2)改为单进程状态机—MEALY

单进程状态机—MEALY 消除毛刺

接下页

接上页

序列检测器-将例7-4双进程的MOORE改为单进程的mealy

接下页

接上页

不同:输出SOUT延时一个时钟,输出延时具有滤波作用。

7.4 状态机图形编辑设计方法

7.5 状态编码
状态机从状态表达方式可分为: 有符号状态机和确定编码状态机

有符号状态机:用文字符号表示状态变量的状态机 ,其状态编码由VHDL综合器根据具体情况确定。
确定编码状态机:其状态编码可人为控制或由综合 器自动对编码方式进行选择。 状态机从编码方式可分为:

顺序编码状态机、一位热码编码状态机或其它 编码状态机

7.5.1 直接输出型编码
将状态编码直接输出作为控制信号,即output=state;要 求对状态机各状态的编码作特殊的选择,以适应控制时序的 要求。这种状态机称为状态码直接输出型状态机。

直接输出型编码应用:计数器

表7-1 0809采样机控制信号状态编码表
START:转换启动控制信号
ALE:输入选通端口地址锁存信号
状态编码
START

OE:输出控制信 号 EOC:状态转换信号

状态

ALE 0

OE 0

LOCK

B 0 初始态

功能说明

ST0

0

0

ST1
ST2

1
0

1
0

0
0

0
0

0
1

启动转换
若测得EOC=1时,转下一状态ST3

ST3
ST4

0
0

0
0

1
1

0
1

0
0

输出转换好的数据
利用LOCK的上升沿将转换好的数据锁存

将状态编码直接输出作为控制信号 ,每一位的编码值都赋予了实际的控制功能,

即: START= current_state(4); ALE = current_state(3) ; OE = current_state(2) ; LOCK = current_state(1) 。

根据编码表7-1编写的代码

7.5 状 态 编 码
7.5.1 直接输出型编码

接下页

接上页

7.5 状 态 编 码
7.5.1 直接输出型编码

其他编码方式 用属性定义语句设 置

用属性定义语句设置

7.5.2 顺序编码
顺序编码方式就是利用若干个触发器的编码组合 来实现n个状态的状态机,这种编码方式最为简单, 且使用的触发器数量最少,剩余的非法状态最少, 容错技术最为简单。

【例】
... SIGNAL CRURRENT_STATE,NEXT_STATE: STD_LOGIC_VECTOR(2 DOWNTO 0 ); CONSTANT ST0 : STD_LOGIC_VECTOR(2 DOWNTO 0) := "000" ; CONSTANT ST1 : STD_LOGIC_VECTOR(2 DOWNTO 0) := "001" ;

CONSTANT ST2 : STD_LOGIC_VECTOR(2 DOWNTO 0) := "010" ;
CONSTANT ST3 : STD_LOGIC_VECTOR(2 DOWNTO 0) := "011" ; CONSTANT ST4 : STD_LOGIC_VECTOR(2 DOWNTO 0) := "100" ;

...

7.5.3 一位热码状态编码
(One-hot encoding)
一位热码编码方式就是用n个触发器来实现 具有n个状态的状态机,状态机中的每一个状态 都由其中一个触发器的状态表示,即当处于某状 态时,对应的触发器为‘1’,其余的触发器都置 ‘0’。
一位热码编码方式尽管用了较多的触发器, 但其简单的编码方式大为简化了状态译码逻辑, 提高了状态转换速度,这对于含有较多的时序逻 辑资源,较少的组合逻辑资源的FPGA器件是好 的解决方案。

一位热码编码(One-hot encoding)
一位热码编码方式是用n个触发器实现具有n个状态的状 态机,状态机中的每一个状态都由其中一个触发器的状态表 示,对应的触发器为‘1’,其余的触发器都置‘0’。
状态 STATE0 顺序编码 000 一位热码 编码 100000

STATE1 STATE2
状态机编码方式设置 STATE3 STATE4 STATE5

001 010
011 100 101

010000 001000
000100 000010 000001

一位热码编码方式选择对话框

Assign?Global Project Synthesis

7.5.4 状态编码设置
1. 用户自定义方式
将需要的编码方式直接写入程序中,不需EDA软件干预

2. 直接设置方法

一位热码形式

3. 用属性定义语句设置

7.6 安全状态机设计
状态机剩余状态: 未不需要被定义的 编码 组合,这些状态在状态机的 正常运行中 不需要出现的, 通常称为非法状态。

7.6.1 程序直接导引法
1)在语句对每一个非法状态作出明确状态转换指示 2)利用OTHERS语句中对未提到的状态作统一处理

7.6.2 状态编码监测法
一位热码编码方式可减少状态转换间的译码 组合逻辑资源,但其剩余状态过多,处理方法: 正常的状态时,只有1个触发器的状态为‘1’,其 余的触发器都置‘0’。在状态机设计中加入对状 态‘1’个数是否大于一的判别逻辑,当大于1时 ,产生报警信号‘alarm ’ ,系统可根据此信号 是否有效决定是否调整状态或转向。

7.6.3 借助EDA优化控制工具生成安全状态机

7.7 硬件数字技术排除毛刺
7.7.1 延时方式去毛刺

7.7.2 逻辑方式去毛刺

7.7.3 定时方式去毛刺

接下页

接上页





7-1 根据图7-30(a)所示的状态图,分别按照图7-30(b)和图7-30 (c)写出对应结构的VHDL状态机。并根据表7-2,分别用3中不同编 码方式实现二状态机,并讨论他们的容错措施。





7-2 举二例说明,有那些常用时序电路是状态机比较典型 特殊形式,并说明它们属于什么类型的状态机(编码类型, 时序类型和结构类型)。 7-3 用mealy机类型,写出控制ADC0809采样的状态机。 7-4 请设计一种信号去抖动的电路模型,仿真后,讨论其 优缺点和使用范围。 7-5 根据7.5节,用表格法和绘图法设计状态机,实现例7-2 的功能,用时序仿真波形图验证之。最后将其转变成VHDL 程序,将此程序与例7-2相比,讨论他们的表述风格。

实验与设计
7-1 序列检测器设计 (1)实验目的: (2)实验任务: (3)实验思考题:。 (4)实验报告: 基于5E+系统的演示示例: /KX_7C5EE+/EXPERIMENTs/EXP34_SCHK/

实验与设计
7-2 并行ADC采样控制电路实现与硬件验证 (1)实验目的: (2)实验原理: (3)实验任务1:

实验与设计
7-2 并行ADC采样控制电路实现与硬件验证 (4)实验任务2: (5)实验任务3: (6)实验任务4: (7)实验报告:

实验与设计
7-3 数据采集模块和简易存储示波器设计 (1)实验目的: (2)实验原理:

实验与设计
7-3 数据采集模块和简易存储示波器设计 (3)实验内容1: (4)实验内容2: (5)实验内容3: (6)实验内容4: 向另一5E+系统下载: /KX_7C5EE/DEMOs/EXP10_DDS_Core_DAC0832/MCU 8951。 (7)实验内容5: (8)实验内容6: (9)实验内容7:

实验与设计
7-4 五功能智能逻辑笔设计 (1)实验目的: (2)实验原理:

实验与设计
7-4 五功能智能逻辑笔设计 (1)实验目的: (2)实验原理:

示例文件: /KX_7C5EE+/EXPERIMENTs/EXP14_LOGIC_PEN/ (3)实验内容:

实验与设计
7-5 比较器加DAC器件实现ADC转换功能电路设计 (1)实验原理: (2)实验内容1: (3)实验内容2:

实验与设计
7-6 通用异步收发器UART设计 (1) 实验目的: (2) 实验内容1:

实验与设计

(3) 实验内容2: (4) 实验内容3: 另一UART演示示例: /KX_7C5EE+/DEMOs/EXPL14_RS232_PIANO。

实验与设计
7-7 点阵型与字符型液晶显示器驱动控制电路设计 (1)实验目的: (2)实验原理: (3)实验任务1: (4)实验任务2: 以上2类基于5E+系统的LCD的演示示例是: /KX_7C5EE/DEMOs//EXPL18_PS2_64X128LCD/;或 /EXPERIMENTs/EXP20_8051_LCD128X64/; 或/EXPERIMENTs/EXP17_KX8051_GPS_FTEST/。

实验与设计
7-8 串行ADC/DAC采样或信号输出控制电路设计 通过网络查阅一些常用串行ADC器件,包括它们的工作性 能、使用方法、时序特点。设计出对应的电路,然后用状 态机对其控制,最后比较用状态机和CPU的优缺点。 串行ADC/DAC资料查阅文件夹:“PDF实验设计文件”。 基于5E+的示例: /KX_7C5EE+/EXPERIMENTs/EXP40_SADC_SDAC/。 TLV5637和TLV5618A都是双通道DAC,比较适合于实现之 前的提出的几个需要双通道DAC输出的实验,如基于DDS 的移相信号发生器,里萨如图信号发生器,存储示波器等。

实验与设计
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-10 状态机控制串/并转换8数码静态显示
(1)实验原理: (2)实验任务1: (3)实验任务2: (4)实验任务3: 演示示例:/KX_7C5EE+/EXPERIMENTs/EXP43_74HC164_8LED/

实验与设计
7-11 数字温度器件DS18B20测控电路设计 设计任务:查阅DALLAS公司数字温度传感器DS18B20的 使用方法和工作时序,设计一个状态机,控制并处理来自 DS18B20的数据,将测得的温度显示在数码管上。 演示示例文件: /KX_7C5EE+/EXPERIMENTs/EXP19_8051_DS18B20/M CU8951。按复位键K1即可看到液晶的温度显示,可用键设 置温控上下限,超出温度限,蜂鸣器报警。


相关文章:
VHDL状态机的设计
VHDL状态机设计_信息与通信_工程科技_专业资料。状态机电路设计状态机(STATE MACHINE)可以说是一个广义时序电路,触发器, 计数器,移位寄存器都算是它的特殊功能的...
状态机设计交通灯
2.3.2 控制与倒计时模块的 VHDL 描述 用 VHDL 设计有限状态机并没有固定的...第7章_状态机设计 33页 免费 第七章_有限状态机设计 41页 免费 第5章 状态...
基于VHDL的Mealy状态机设计
基于VHDL 的 Mealy 状态机设计 物理与电子信息科学系 姓名: 姓名:孙家芳 指导教师: 指导教师:胡湘娟 电子信息科学与技术专业 学号: 学号:05120126 摘要: 伴随着...
VHDLFPGA状态机
VHDL 与数字系统设计》课程设计报告 ( 2014 -- 2015 年度第 1 学期) 名题院班学 称: VHDL 与数字系统设计 目: 系: 级: 号: 简单状态机 电气与电子...
基于EDA的VHDL语言设计的交通灯
基于EDA的VHDL语言设计的交通灯_计算机软件及应用_IT/计算机_专业资料。用有限状态机设计一个交通灯控制器,设计要求:A路和B路,每路都有红、黄、绿三种灯,持续时...
VHDL设计 有限状态机设计
第7章 VHDL有限状态机设计 71页 10财富值 第八章有限状态机的VHDL设... 16...有限状态机FSM设计 10页 1财富值如要投诉违规内容,请到百度文库投诉中心;如要提...
VHDL状态机程序
状态机| VHDL状态机程序_信息与通信_工程科技_专业资料。VHDL状态机程序 LIBRARY...有限状态机VHDL设计及... 4页 1下载券 第八章 VHDL状态机 86页 免费...
基于VHDL状态机的交通灯控制器设计
基于VHDL状态机的交通灯控制器设计 - 基于 VHDL 状态机的交通灯控制器设计 0 引言 交通灯是城市交通监管系统的重要组成部分, 对于保证机动车辆的安全运行, 维持...
10进制加减计数器状态机的VHDL设计
进制加减计数器状态机的 10 进制加减计数器状态机VHDL 设计 一、 【设计...(7 downto 0); signal com8_xhdl : std_logic_vector(7 downto 0); ...
自动售货机控制系统VHDL有限状态机实现
自动售货机控制系统VHDL有限状态机实现 - 自动售货机控制系统 VHDL 有限状态机实现 1 引言 有限状态机 FSM(Finite State Machine)及其设计技术是实用数字系统设计....
更多相关标签: