同步有限状态机设计

合集下载

状态机程序设计

状态机程序设计
6.2 典型状态机设计
典型状态机设计由状态信号定义、准备下一状态进程、状态切换进程、输出进程等四部分构成。 【例6-1】用FPGA/CPLD控制AD574进行12位A/D转换,并将转换结果保存在Q0~Q11中
CE
CS
RC
X12/8
A0
工作状态
0
X
X
X
X
禁止
X
1
X
X
X
禁止
1
0
0
X
0
启动12位转换
状态信号定义:采用枚举数据类型定义系统中有哪些状态,并定义当前状态信号、下一状态信号。一般放在结构体的ARCHITECTURE和BEGIN之间。
在数字系统中,每一状态对应一个二进制数,称状态编码。如AD574控制有5个状态,可用3位二进制表示:(000、001、010、011、100)。
但设计者在状态机的设计中,为了更利于阅读、编译和VHDL综合器的优化,往往将表征每一状态的二进制数组用文字符号来代表,即所谓状态符号化。如(s0,sl,s2,s3,s4,s5),或者(READY,START,WAIT_H, WAIT_L ,READ, LOCK)等更直观的符号表示。
PROCESS(c_st,STATUS) --准备下一状态 BEGIN CASE c_st IS WHEN s0=>n_st<=s1; CE<=‘0’;RC<='0‘;LOCK<='0'; WHEN S1=>n_st<=s2; CE<=‘1’;RC<=‘0’;LOCK<='0‘; WHEN s2=>IF(STATUS='1') THEN n_st<=s3; ELSE n_st<=s2; END 1F; CE<=‘0’;RC<=‘0’;LOCK<=‘0’; WHEN s3=> IF(STATUS='1') THEN n_st<=s3; ELSE n_st<=s4; END 1F; CE<=‘0’;RC<=‘0’;LOCK<=‘0’; WHEN S4=>n_st<=s5;CE<=‘1’;RC<=‘1’;LOCK<=‘0’; WHEN S5=>n_st<=s0;CE<=‘1’;RC<=‘1’;LOCK<=‘1’; WHEN OTHERS=>n_st<=s0; CE<=‘0’;RC<=‘0’;LOCK<=‘0’; END CASE; END PROCESS;

Verilog 有限状态机设计 ppt课件

Verilog 有限状态机设计 ppt课件
EDA技术与应用
第八章 有限状态机设计
Verilog 有限状态机设计
MOORE状态机 MEALY状态机 有限状态机的几种描述方式 有限状态机的状态编码
8.1 有限状态机
构成
组合逻辑 状态译码、产生输出 时序逻辑 存储状态
分类
Moore 输出是现态的函数 Mealy 输出是现态和输入的函数
always @(state) /*该过程产生输出逻辑*/
begin case(state) S3: z=1'b1; default:z=1'b0;
endcase end endmodule
“101”序列检测器(单过程描述)
module fsm4_seq101(clk,clr,x,z); input clk,clr,x; output reg z; reg[1:0] state; parameter S0=2'b00, S1=2'b01, S2=2'b11, S3=2'b10;/*状态编码,采用格雷(Gray)编码方 式*/
parameter S0=2'b00,S1=2'b01,S2=2'b11,S3=2'b10;
/*状态编码,采用格雷(Gray)编码方式*/
always @(posedge clk or posedge clr) /*该过程定义当前状态*/
begin
if(clr) state<=S0; //异步复位,s0为起始状态
(1)用三个过程描述:即现态(CS)、次态(NS)、 输出逻辑(OL)各用一个always过程描述。
(2)双过程描述(CS+NS、OL双过程描述):使用两 个always过程来描述有限状态机,一个过程描述现态和次 态时序逻辑(CS+NS);另一个过程描述输出逻辑(OL)。

06 第六讲 有限状态机设计(新版)

06  第六讲 有限状态机设计(新版)

cola_out
40
y1_out
自动售货机状态转移图
自动机的状态转移图看似复杂,却非常有规律。 其中每个状态表示了当前已经投入的金额,其 中5表示已经投入5角,10表示已经投入1元等 等。其中系统复位后的初始状态为0,表示未 有钱币投入。
自动售货机状态转移图
对于从0到20的五个状态,由于已经投入的钱 币还没有达到2.5元,因此系统还能接收新的 钱币。所以,这些状态的输出均有3条不同的 路径。 以状态20为例,此时已经接收了2元,如果继 续投入5角则进入25状态,表示接收了2.5元; 如果继续投入1元则进入35状态,表示已经接 收了3.5元;如果继续投入2元,则进入40状态, 表示已经接收了4元。
第六讲 有限状态机设计
提纲
序列检测器设计 自动售货机设计
序列检测器设计
序列检测器是时序逻辑中的经典问题。 序列检测器一般有一个输入X和一个输出 Match。输入信号在不断变化,从而形成一个 与时间相关的输入序列。序列检测器的任务就 是当输入序列中包含特定串时,设置Match信 号为高,表示检测到了特定串。 本设计中需要检测的序列为”01011”。
自动售货机总体结构和状态转移图
j5 y1 y2
自动售 货机
Cola_out y1_out j5_out
clk rst
rst j5 y2
y1 1
y1 1
y1 1
y1 1
0
5 y2
j5
10
j5
15
j5
20
j5
25
y2 y1_out+cola_out j5_out+cola_out 30 35
y2
y1
y2
在如S4状态,如果进入S4状态表示前面的输 入序列为”0101”,若当前输入为0,则表示输 入序列为”01010”,与待检测序列”01011比 Байду номын сангаас,可以发现实际输入了”010”,因此应该转 移到S3状态。

同步状态机的原理、结构和设计

同步状态机的原理、结构和设计

输出集合
(执行动作) 执行动作)
nn
S 状态等待 状态位置
a1 , a2 , … , an x1 , x2 , … , xn
状态名称
转移方向
FSM应用 FSM应用
FSM通过状态图描述状态转换过程 FSM通过状态图描述状态转换过程 FSM:数字系统控制单元的建模 FSM:数字系统控制单元的建模 数字系统:
受控模块:功能模块,设计较易 控制模块实现
CPU FSM
执行耗费时间,执行时间的确定性方面,FSM优于CPU 执行耗费时间,执行时间的确定性方面,FSM优于CPU
FSM 构成
FSM用来解决一般时序逻辑电路问题,包括 FSM用来解决一般时序逻辑电路问题,包括 同步/ 同步/异步时序逻辑 状态寄存器
输入集合 A 状 态 迁 移
合 输 状 态 记 忆 成 输 集 合 形 出
状态迁移图
输入集合
(触发事件) 触发事件)
输出集合
(执行动作) 执行动作)
S
状态等待 状态位置
a1 , a2 , … , an x1 , x2 , … , xn
状态名称
转移方向
状态迁移图
状态编码 输入集合
(触发事件) 触发事件)来自什么是状态机有限状态机(简称状态机) 有限状态机(简称状态机)相当于一个控制器, 它将一项功能的完成分解为若干步,每一 步对应于二进制的一个状态,通过预先设 计的顺序在各状态之间进行转换,状态转 换的过程就是实现逻辑功能的过程。
为什么使用状态机
有限状态机克服了纯硬件数字系统顺序方式控制不灵活 的缺点。 的缺点。 设计方案相对固定,结构模式简单,可定义符号化枚 设计方案相对固定,结构模式简单, 举类型的状态。 举类型的状态。 状态机的HDL描述层次分明,结构清晰,易读易懂。 状态机的HDL描述层次分明,结构清晰,易读易懂。 描述层次分明 状态机容易构成性能良好的同步时序逻辑模块。 状态机容易构成性能良好的同步时序逻辑模块。 在高速运算和控制方面,状态机更有其巨大的优势。 在高速运算和控制方面,状态机更有其巨大的优势。 基于有限状态机技术设计的控制器其工作速度大大优于 CPU。 CPU。 就可靠性而言,状态机的优势也是十分明显的。基于 就可靠性而言,状态机的优势也是十分明显的。 有限状态机技术设计的控制器其可靠性也优于CPU。 有限状态机技术设计的控制器其可靠性也优于CPU。

第12章 有限状态机设计-数字电路与逻辑设计-张俊涛-清华大学出版社

第12章 有限状态机设计-数字电路与逻辑设计-张俊涛-清华大学出版社

// 阻塞赋值
S2: ... ;
... : ... ;
default: ...;
endcase
《数字电路与逻辑设计》
// 第三个always,时序逻辑模块,描述输出
always @ (posedge clk or negedge rst_n) ... //初始化 case(current_state) S1: out1 <= ...; // 非阻塞逻辑 S2: out2 <=... ; default: ...; endcase
CLK 控制器时钟
AD转换控制器
时序过程 always
Current_state Next_state
组合过程 always(1) always(2)
LOCK 锁存过程 always
Q[7..0]
转换数据 输出
模拟量输入
ADC0809
A/D转换时钟 (640kHz)
clk
ALE START
OE ADDR
《数字电路与逻辑设计》
12.3 状态机设计示例 ADC0809是八路8位逐次渐近式A/D转换器,其
内部结构框图和工作时序如图9-21和9-22所示。
Vref(+)
Vref(-)
EOC
IN0~IN7
ADDC~A ALE
8路 模拟开关
地址锁存 与
译码
8位 逐次渐近型
A/D 转换器
三态 锁存 缓冲器
START CLK
// 同步时序逻辑过程,状态转换
always @(posedge clk or negedge rst_n) if (!rst_n) curr_state<=st0; else curr_state<=next_state; // 组合逻辑过程,确定次态 always @(curr_state,eoc) case (curr_state) st0: next_state=st1; st1: next_state=st2; st2: if (eoc) next_state=st3; else next_state=st2; st3: next_state=st4; st4: next_state=st0; default: next_state=st0; endcase

第7章 有限状态机设计

第7章 有限状态机设计

7.2 一般状态机的设计 一、 状态机建立的一般步骤
利用VHDL来设计状态机的一般步骤如下: 来设计状态机的一般步骤如下: 利用 来设计状态机的一般步骤如下 (1) 利用自定义枚举类型定义状态空间: 利用自定义枚举类型定义状态空间: TYPE state_space IS (idle,decision,read,write); SIGNAL Current_State,next_state: state_space; 状态名最好具有明显的解释性意义
process(clk) --主控时序进程 主控时序进程 begin if clk'event and clk='1' then current_state<=next_state; end if; end process; process(lock) --输出进程 输出进程 begin if lock'event and lock='1' then reg8b<=d; end if; end process; q<=reg8b; end behav;
ready Read_write
Oe(读信号) (读信号)
存储器控 制器
We(写信号) (写信号)
存储控制器状态转移图和真值表分别如下: 存储控制器状态转移图和真值表分别如下:
idle ready 空闲( 空闲(idle) ) ready decision ready write_read 判断 (decision) ) 写(write) ) read 读(read) ) 0 0 1 0 1 0 /ready 输出 状态 Oe(读) ( 0 We(写) ( 0
(3) 建立状态机主控时序进程
状态机是同步时序电路, 状态机是同步时序电路,必须包含一个对工作时钟信号敏 感的进程,作为状态机的“驱动泵” 感的进程,作为状态机的“驱动泵”。当时钟发生有效跳 变时,状态机的状态才发生变化。 变时,状态机的状态才发生变化。状态机的主控时序进程 主要负责将主控时序进程得到的下一个状态锁存到状态寄 存器中。如: 存器中。

有限状态机设计

有限状态机设计

ENTITY AD574 IS
PORT (
d:
IN STD_LOGIC_VECTOR(11 DOWNTO 0);
clk,status :
IN STD_LOGIC; --时钟CLK,状态信号STATUS
lock0 :
OUT STD_LOGIC; --内部锁存信号LOCK旳测试信号
cs,a0,rc,k12x8 : OUT STD_LOGIC; --AD574控制信号
决定进入下一种状态。
(if - then - else)
二、一般有限状态机旳设计
6.2.1 一般有限状态机构成
4. 辅助进程:
clk reset State_inputs
状态机 Current_state
Next_state
一般状态机工作示意图
Comb_output
二、一般有限状态机旳设计
【例 6-1 】一般两进程有限状态机描述
下一状态 输出
001
0
000
0


状态机旳表达措施2
措施二:算法流程图 措施与软件程序旳流程图类似
状态机旳表达措施3
措施三:状态转换图 条件控制
定序
状态1


/出
状态4
/出


状态3
/出
状态2
/出
Moore
直接控制 定序
状态机旳表达措施3
措施三:状态转换图 条件控制
定序
状态1
入 /出
入 /出
状态4
工作状态
禁止
禁止
开启12位转换 开启8位转换 12位并行输出有效 高8位并行输出有效 低4位加上尾随4个0有效

《FPGA系统设计》实验报告》有限状态机的设计

《FPGA系统设计》实验报告》有限状态机的设计

《FPGA系统设计》实验报告》有限状态机的设计一、设计任务了解有限状态机的概念;掌握Moore型有限状态机的特点和其VHDL语言的描述方法掌握Mealy型有限状态机的特点和其VHDL语言的描述方法二、设计过程1.单进程Moore型有限状态机程序代码这是一个单进程的Moore状态机, 其特点是组合进程和时序进程在同一个进程中, 此进程可以认为是一个混合进程。

2.该状态机时一个2进程Mealy型状态机, 进程COMREG是时序与组合混合型进程;进程COM1负责根据状态和输入信号给出不同的输出信号。

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 one of MEALY1 istype states is (st0,st1,st2,st3,st4);signal stx : states;begincomreg : process(clk,reset,datain,stx) --主控时序进程beginif reset = '1' then stx <= st0;elsif clk'event and clk = '1' thencase stx iswhen st0 => if datain = '1' then stx <= st1;end if;when st1 => if datain = '0' then stx <= st2;end if;when st2 => if datain = '1' then stx <= st3;end if;when st3 => if datain = '0' then stx <= st4;end if;when st4 => if datain = '1' then stx <= st0;end if;when others => stx <= st0;end case;end if;end process comreg;com1 : process(stx,datain) --主控组合进程begincase stx iswhen st0 => if datain = '1' then q <= "10000"; else q <= "01010"; end if;when st1 => if datain = '0' then q <= "10111"; else q <= "10100"; end if;when st2 => if datain = '1' then q <= "10101"; else q <= "10011"; end if;when st3 => if datain = '0' then q <= "11011"; else q <= "01001"; end if;when st4 => if datain = '1' then q <= "11101"; else q <= "01101"; end if;when others => q <= "00000";end case;end process com1;end one;3.该状态机属于Moore型状态机, 由两个主控进程构成, 其中进程REG是主控时序进程, COM是主控组合进程。

有限状态机(FSM)的设计

有限状态机(FSM)的设计
有限状态机FSM 简称状态机) VHDL设计 FSM( 第4章 有限状态机FSM(简称状态机)的VHDL设计 一、有限状态机的基本概念 1、有限状态机的基本结构和功 能 有限状态机( 有限状态机(Finite Machine,简称FSM FSM) State Machine,简称FSM)是 一种十分重要的时序逻辑电路, 一种十分重要的时序逻辑电路, 由状态寄存器和组合逻辑电路 组成, 组成,是数字逻辑电路以及数 次态组合 字系统的重要组成部分, 字系统的重要组成部分,尤其 输出组合 逻辑电路 应用于数字系统核心部件( 应用于数字系统核心部件(控 逻辑电路 输 制单元)的设计, 制单元)的设计,以实现高效 输入 状态 出 输出 率高可靠性的逻辑控制。 率高可靠性的逻辑控制。 状态 状态 译 译码器 寄存器 有限状态机可实现以下两种基本操作: 有限状态机可实现以下两种基本操作: 码 反馈 器 (1)状态机内部状态转换。由状态译 )状态机内部状态转换。 码器根据当前状态和输入信号确定。 码器根据当前状态和输入信号确定。 状态机结构示意图 (2)产生输出信号序列。由输出译码 )产生输出信号序列。 器根据状态机当前状态和输入信号确定。 器根据状态机当前状态和输入信号确定。
SIGNAL CS,NS: STATE_TYPE; BEGIN REG:PROCESS(CLK,RESET) BEGIN IF RESET=‘0’ THEN CS<=S0; THEN CS<=NS; --寄存器进程 --寄存器进程
ELSIF END
CLK'EVENT AND CLK='1‘
IF;
END PROCESS; FUNC1:PROCESS(INPUT,CS) BEGIN CASE CS IS WHEN S0=>IF INPUT ELSE END IF; WHEN S1=>IF INPUT ELSE END IF; WHEN S2=>IF INPUT ELSE END IF; WHEN S3=>IF INPUT ELSE END IF; --次态组合逻辑译码进程 --次态组合逻辑译码进程

EDA-第7讲-状态机的设计(选讲)全

EDA-第7讲-状态机的设计(选讲)全
布尔数据类型的定义语句是:
TYPE BOOLEAN IS (FALSE,TRUE) ;
TYPE my_logic IS ( '1' ,'Z' ,'U' ,'0' ) ; SIGNAL s1 : my_logic ; s1 <= 'Z' ;
状态机的设计举例
例子:设计一个二进制序列检测器,当检测 到10110序列时,就输出1(一个时钟周期的脉 冲)。其他情况下输出0。
确定下一状态(next_state)的取值,确定输出或产生内
部其它组合进程或时序进程所需的控制信号。
4.辅助进程 配合时序进程或组合进程工作的数据锁存器等进程。
用户自定义数据类型定义语句
TYPE语句用法如下:
TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型 ; 或 TYPE 数据类型名 IS 数据类型定义 ;
S1 = 11, S3 = 01, S4 = 10。
Next_value
+/-1
Present_value
Q(n+1)
Regs
Clk
Q(n) 译

DataOut Z(n)
Din = 1
S0/0 Din = 0
Din = 1 Din = 0 Din = 0
Din = 0 S3/0
S2/1 Din = 1
以下列出了两种不同的定义方式:
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 ;

Verilog HDL数字设计教程(贺敬凯)第5章

Verilog HDL数字设计教程(贺敬凯)第5章

第5章 同步有限状态机设计
其仿真结果如图5-11所示。 【例5-5】 对应于步骤四的Verilog HDL建模。 ///产生JK激励信号:D触发器的激励d---->JK触发器的激励J 和K
module D_JK(d,q,j,k);
input d,q; output reg j,k;
always @(d,q)
利用多余状态,卡诺图化简后的激励方程和输出方程为:
n n D1 Q0 A,D0 A, Y Q1 A
第六步:画出逻辑图并检查自启动能力。逻辑图如图57所示。
第5章 同步有限状态机设计
图5-7 例5-1的逻辑图
第5章 同步有限状态机设计
经检查,该电路具有自启动能力。 至此解题完毕。 以上六步,我们均可以采用Verilog HDL进行电路建模, 下面从后向前对各个步骤进行建模,见例5-2至例5-9。
第5章 同步有限状态机设计
程序说明:
(1) 例5-4的实现要求得出输出方程和激励方程,然后才
能对时序逻辑电路建模。这种建模方法同例5-2一样,需要 手工做大量复杂的工作,而不是由计算机来完成复杂的计算 工作。 (2) 该模块的综合结果如图5-12所示。
第5章 同步有限状态机设计
图5-12 例5-4的综合结果
第5章 同步有限状态机设计
【例5-3】 对例5-2的改进——消除毛刺。 module input clk,A; output reg Y; wire q0,q1; mydff_2 dff0(.D(A),.Q(q0),.clk(clk)), dff1(.D(A&q0), .Q(q1), .clk(clk)); always @(posedge clk) Y= q1 & (~A); endmodule 该模块的综合结果如图5-10所示。 fsm_1(clk,A,Y);

有限状态机设计

有限状态机设计
以下列出了两种不同的定义方式:
9.1 一般有限状态机的设计
9.1.1 用户自定义数据类型定义语句
TYPE m_state IS ( st0,st1,st2,st3,st4,st5 ) ; SIGNAL present_state,next_state : m_state ;
布尔数据类型的定义语句是: TYPE BOOLEAN IS (FALSE,TRUE) ;
TYPE my_logic IS ( '1' ,'Z' ,'U' ,'0' ) ; SIGNAL s1 : my_logic ; s1 <= 'Z' ;
9.1 一般有限状态机的设计
9.1.1 用户自定义数据类型定义语句
子类型SUBTYPE的语句格式如下: SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围;
S3
S4/0
S3/0
S4
S5/0
S1/0
S5
S0/0
S6/0
S6
S0/1
S2/0
简化后状态图
程序代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY CHK2 IS PORT(CLK, RESET: IN STD_LOGIC; S_IN: IN STD_LOGIC; FD: OUT STD_LOGIC); END CHK2; ARCHITECTURE a OF CHK2 IS TYPE STATE_TYPE IS (S0, S1, S2,S3,S4,S5,S6); SIGNAL state: STATE_TYPE; BEGIN PROCESS (CLK,RESET) BEGIN IF RESET= '1' THEN state <= S0; ELSIF CLK'EVENT AND CLK = '1' THEN CASE state IS WHEN S0 =>FD <='0'; IF S_IN='1' THEN state <= S1;ELSE STATE <= S0; END IF; WHEN S1 =>FD<='0'; IF S_IN='1' THEN state <=S2;ELSE STATE <=S0; END IF; 接下页

第6章 有限状态机设计技术

第6章 有限状态机设计技术

A/K1=0
Start
!Reset /K2=0 K1=0 !Reset /K2=0 K1=0
Idle !Reset /K2=0 K1=0
!A Stop
(!Reset |!A )/ K2=0 K1=1
Clear
A/K2=1
图3.4 状态转移图
有限状态机的Verilog描述
1. 定义模块名和输入输出端口; 2. 定义输入、输出变量或寄存器; 3. 定义时钟和复位信号; 4. 定义状态变量和状态寄存器; 5. 用时钟沿触发的always块表示状态转移过程; 6. 在复位信号有效时给状态寄存器赋初始值; 7. 描述状态的转换过程:符合条件,从一个状态到
- 状态机可用于产生在时钟跳变沿时刻开关的 复杂的控制逻辑,是数字逻辑的控制核心。
Mealy 状态机
下一个状态 = F(当前状态,输入信号); 输出信号 = G(当前状态,输入信号);
输入
下一状态 激励信号 的逻辑
F
状态 寄存器
clk 输入
当前状态
输出逻辑 输出
G
时钟信号clk
图1 . 时钟同步的状态机结构 (Mealy 状态机)
表示方法之四
用输出指定的码表示状态的状态机
方法四采用了另一种方法:直接把状态码定义 为输出。也就是把状态码的指定与状态机控制 的输出联系起来,把状态的变化直接用作输出, 这样做可以提高输出信号的开关速度并节省电 路器件。这种设计方法常用在高速状态机中。 建议同学们在设计高速状态机时采用方法四的 风格。例中state[3] 和state[0]分别表示前 面两个例子中的输出K2和K1。
Clear: if (!A) state <= ClearToIdle;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.1 同步有限状态机引例
【例5-1】 设计一个串行数据检测器。电路的输入信号 A是与时钟脉冲同步的串行数据,其时序关系如图所 示。输出信号为Y;要求电路在信号输入A出现110序 列时,输出信号Y为1,否则为0。
5.1 同步有限状态机引例
由给定的逻 辑功能建立 原始状态图 和原始状态 表
状态 化简
Y
5.1 同步有限状态机引例
【例5-2】 对应于步骤六的层次建模方法
module fsm_1(clk,A,Y); input clk,A; output Y; wire q0,q1; assign Y= q1 & (~A);
mydff_2:dff0
mydff_2:dff1
A
D
comb~0
Q
clk
clk
input d,q;
output reg j,k;
always @(d,q)
case({d,q})
2'b00,2'b11:
begin j=0; k=0; end
2'b01,2'b10:
begin j=1; k=1; end
endcase endmodule
JK:jk0 D_JK:d_jk0
temp~0
A clk
D Q
clk
com b~0
D Q
Y~0
Y~reg0
PRE
clk
D
Q
Y
ENA CLR
mydclk)),
dff1(.D(A&q0), .Q(q1), .clk(clk));
always @(posedge clk)
Y= q1 & (~A);
Y~0
D
Q
clk
Y
mydff_2 dff0(.D(A),.Q(q0),.clk(clk)),
dff1(.D(A&q0), .Q(q1), .clk(clk));
endmodule
//以下实现被调用模块mydff_2
module mydff_2(D,Q,clk);
input D,clk;
output reg Q;
endmodule
5.1 同步有限状态机引例
【例5-4】 对应于步骤五的Verilog建模
module fsm_2(clk,A,Y);
input clk,A;
output reg Y;
A
reg q0,q1;
clk
always @ (posedge clk)
q1~0
q[1..0]
PRE
Y~0
Y~reg0
case({j,k}) 2'b11: q=~q; 2'b10: q=1; 2'b01: q=0; 2'b00: q=q; default: ;
endcase endmodule
//顶层模块,实现例5-2的功能 module fsm_3(clk,A,Y); input clk,A; output reg Y; wire q0,q1,j0,k0,j1,k1,temp; assign temp=q0&A; D_JK d_jk0(A,q0,j0,k0); D_JK d_jk1(temp,q1,j1,k1); JK jk0(clk,j0,k0,q0); JK jk1(clk,j1,k1,q1); always @ (posedge clk)
状态 分配
选择 触发 器类

确定激励 方程组 和 输出 方程组
画出 逻辑图 并检查 自启动
能力
图5-2 时序逻辑电路设计过程
5.1 同步有限状态机引例
第一步:理 解题意,由 给定的逻辑 功能建立原 始状态图, 如图5-3所示
S A/Y
初始状态
0/0 a
0/0
1/0 b
0/0
1/0 1/0
d
c
0/1
Y= q1 & (~A); endmodule
5.1 同步有限状态机引例
【例5-6】 对应于步骤一、步骤二和步骤三的同 步状态机
s1: begin if(A) state<=s2;
module fsm_3(clk,A,Y); input clk,A; output reg Y; reg[1:0] state; parameter s0=2'b00, //状态编码为顺序编码方式
D
Q
PRE
D
Q
Y
ENA CLR
ENA CLR
begin
q0 <= A;
q1 <= q0 & A;
Y= q1 & (~A);
end
endmodule
5.1 同步有限状态机引例
【例5-5】 对应于步骤四的Verilog建模
///产生JK激励信号:D触发器的激励d----
>JK触发器的激励J和K
module D_JK(d,q,j,k);
D_JK:d_jk1
JK:jk1
clk
Y~0
Y~reg0
PRE
clk
DQ
Y
d
j
j
q
A
d
j
j
q
q
k
k
q
k
k
ENA
CLR
clk
5.1 同步有限状态机引例
//JK触发器实现---->JK全1翻转,全0不变, 其它为J module JK(clk,j,k,q); input clk,j,k; output reg q; always @(posedge clk)
5.1 同步有限状态机引例
第五步:求 出电路的激 励方程和输 出方程
D1
n
Q0
0010
n
Q1
×
×
1
0
A
D0
n
Q0
0110
n
Q1
×
×
1
0
A
Y
n
Q0
0000
n
Q1
×
×
0
1
A
5.1 同步有限状态机引例
第六步:画出逻辑图并检查自启动能力
D:dff0
D:dff1
A
D
comb~0
Q
clk
clk
Y~0
D
Q
clk
11 1/0
01 1/0
图5-5 编码后的状态图
5.1 同步有限状态机引例
第四步:选 择触发器的 个数和类型
✓ 触发器个数可根据状态数确 定,要求满足2n-1<M≤2n, 式中M为状态数,n为触发器 的个数。对于本例,已知M为 3,所以可求出触发器的个数 为2个。
✓ 触发器可以选择D触发器、 JK触发器等等,本例选用D触 发器。
always @(posedge clk)
Q<=D;
endmodule
5.1 同步有限状态机引例
【例5-3】 对例5-2的改进——消除毛刺
module fsm_1(clk,A,Y); input clk,A; output reg Y; wire q0,q1;
m ydff_2:dff0
m ydff_2:dff1
1/0
图5-3 原始状态图 图中,S表示状态,A/Y中横线上面的 为输入,横线下面的为输出。
5.1 同步有限状态机引例
第二步:状 态化简,合 并等价状态
0/0
0/0
1/0 a
b
1/0 0/1
c
1/0
图5-4 化简后的状态图
5.1 同步有限状态机引例
第三步:状 态编码
0/0
00
0/1
1/0 0/0
相关文档
最新文档