第8章 有限状态机设计(1)
第八次课-8章状态机精选全文
z<=0;
三、基于状态机的设计要点
1.起始状态的选择
起始状态是指电路复位后所处的状态,选择一 个合理的起始状态将使整个系统简洁高效。有的 EDA软件会自动为基于状态机的设计选择一个最佳 的起始状态。
2.状态转换的描述
一般使用case语句来描述状态之间的转换, 用case语句表述比用if-else语句更清晰明了。
有限状态机类型 有限状态机的Verilog描述 有限状态机的设计要点
一、两种有限状态机
二、有限状态机的Verilog描述
描述对象:
当前状态、下一状态、输出逻辑
描述方式: 单过程、双过程、三过程
单过程描述方式: 放在一个过程中描述,相当于采用时
钟信号同步,克服输出产生毛刺。但输出 逻辑相对于双过程,要延迟一个时钟周期。
end end
s3: begin if(x==0)
begin state<=s0; z<=0;
end else begin
state<=s4; z<=1; end end
s4: begin if(x==0)
begin state<=s0; end else begin state<=s4; z<=1; end end default:
双过程描述方式: 一个过程 由时钟信号触发的时序过程
(当时钟发生跳变时,状态机状态发生变 化。一般用case语句检查状态机的当前状态; 另一过程是组合过程,对于摩尔型,输出 只与当前状态有关,因此只需用case语句即 可,对米里型,因与当前状态和输入都有 关,因此可用case 语句和 if组合进行描述。
Verilog 有限状态机设计(课堂PPT)
begin
case( state )
state0:
out = 3'b001;
state1:
out = 3'b010;
state2:
out = 3'b100;
state3:
out = 3'b111;
default:
out = 3'b001;
endcase
end
endmodule
11
8.2 有限状态机的Verilog描述
begin if(clr) qout<=0;
//异步复位
else case(qout)
3'b000: qout<=3'b001;
3'b001: qout<=3'b010;
3'b010: qout<=3'b011;
3'b011: qout<=3'b100;
3'b100: qout<=3'b000;
default: qout<=3'b000; /*default语句*/
state2 = 2’b11, state3 = 2’b10; // 格雷码
always @( posedge clk or posedge clr ) begin
if( clr ) state <= state0; // 定义初态 state <= next_state; end
8
always @( state or start or step2 or step3 ) // 状态转换
EDA技术与应用
第八章 有限状态机设计
1
有限状态机设计
实验七有限状态机设计一、实验目的1、掌握利用有限状态机实现一般时序逻辑分析的方法;2、掌握用VHDL或Verilog编写可综合的有限状态机的标准模板;3、掌握用VHDL或Verilog编写序列检测器以及其他复杂逻辑电路的设计;二、实验内容1、用MOORE型状态机设计一个具有双向步进电动机控制实验:该控制电路有三个输入信号:clk时钟信号,clr复位信号,dir方向控制信号。
输出信号为phase[3..0]用来控制步进电机的动作。
当dir=1时要求phase[3..0]按照“0001”,“0010”,“0100”,“1000”的顺序变化;当dir=0时要求phase[3..0]按照“0001”,“1000”,“0100”,“0010”的顺序变化。
2、设计一个简单的状态机,功能是检测一个5位的二进制序列“10010”。
3、设计一个串行数据检测器,要求是:连续4个或4个以上为1时输出为1,其他输入情况为0。
(选做)4、根据状态图,写出对应于结构图b,分别由主控组合进程和主控时序进程组成的VERILOG 有限状态机描述。
(选做)三、实验步骤实验一:1、建立工程2、创建Verilog HDL文件3、输入程序代码并保存module moore1(clk,clr,dir,phase);input clk,clr,dir;output[3:0] phase;reg[3:0] phase;reg[1:0] state;parameter s0='b00,s1='b01,s2='b10,s3='b11;always@(posedge clk)beginif(clr)beginphase<='b0000;state<=s0;endelsebegincase(state)s0:if(dir) beginphase<='b0010;state<=s1;endelsebeginphase<='b1000;state<=s3;ends1:if(dir) beginphase<='b0100;state<=s2;endelse beginphase<='b0001;state<=s0;ends2:if(dir) beginphase<='b1000;state<=s3;endelse beginphase<='b0010;state<=s1;ends3:if(dir) beginphase<='b0001;state<=s0;endelse beginphase<='b0100;state<=s2;endendcaseendendendmodule4、进行综合编译5、新建波形文件6、导入引脚,设置信号源并保存7、功能仿真,结果分析由仿真波形图可以看出当dir=1时,phase[3..0]按照0001,0010,0100,1000的顺序变化,当dir=0时phase[3..0]按照0001,1000,0100,0010的顺序变化。
天津工业大学第08章_状态机设计
能克服纯硬件数字系统顺序方式控制不灵活的缺点 可定义符号化枚举类型的状态 易构成性能良好的同步时序逻辑模块 VHDL表述丰富多样、程序层次分明,易读易懂 巨大的优势在于高速运算和控制方面 高可靠性
8.1.2 数据类型定义语句
8.1 一般有限状态机设计
1) TYPE语句用法: TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型 ;
②自定义新的数据类型:枚举类型、整数类型、数组类型、记录类型、 时间类型、实数类型等多种。
8.1 一般有限状态机设计
3)子类型SUBTYPE定义格式
● 子类型SUBTYPE:是由TYPE所定义原数据类型的一个子集,满足原数据类型 所有的约束条件。
● 格式: SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围; 例: SUBTYPE digits IS INTEGER RANGE 0 to 9 ;
--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;
【例8-2】采样状态机程序---续
EDA复习要点
第1章 EDA技术概述1. EDA:EDA(Electronic Design Automation)电子设计自动化,EDA技术依赖于强大的计算机,在EDA工具软件平台上,对以HDL(Hardware Description Language--硬件描述语言)为系统逻辑描述手段完成的设计文件,自动完成逻辑化简、逻辑分割、逻辑综合、结构综合(布局布线),以及逻辑优化和仿真测试等项功能,直至实现既定性能的电子线路系统功能。
2. EDA的设计输入有:图形输入方式:原理图输入,状态图输入;HDL文本输入:VHDL,Verilog3. 常用缩写FPGA(Field Programable Gate Araay)CPLD(Complex Programmable Logic Device)ASIC(Application Specific Interated Circuit)SOC(System on a Chip)SOPC(System-on-a-Programmable-Chip)HDL(Hardware Description Language)IP(Intellectual Property)CAD(Computer Aided Design)CAM(Computer Aided Manufacturing)CAT(Computer Aided Test)CAE(Computer Aided Engineering)CAA(Computer Aided Analysis)4.综合(Synthesis):将用行为和功能层次表达的系统转换成低层次的便于具体实现的模块组合装配过程。
整个综合过程就是将设计者在EDA平台上编辑输入的HDL文本、原理图或状态图形描述,依据给定的硬件结构组件和约束控制条件进行编译、优化、转换和综合,最终获得门级电路甚至更底层的电路描述网表文件。
5.适配:适配器也称结构综合器,它的功能是将由综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件,如JEDEC、Jam格式的文件。
eda技术实用教程-veriloghdl答案
eda技术实用教程-veriloghdl答案【篇一:eda技术与vhdl程序开发基础教程课后答案】eda的英文全称是electronic design automation2.eda系统设计自动化eda阶段三个发展阶段3. eda技术的应用可概括为4.目前比较流行的主流厂家的eda软件有、5.常用的设计输入方式有原理图输入、文本输入、状态机输入6.常用的硬件描述语言有7.逻辑综合后生成的网表文件为 edif8.布局布线主要完成9.10.常用的第三方eda工具软件有synplify/synplify pro、leonardo spectrum1.8.2选择1.eda技术发展历程的正确描述为(a)a cad-cae-edab eda-cad-caec eda-cae-cadd cae-cad-eda2.altera的第四代eda集成开发环境为(c)a modelsimb mux+plus iic quartus iid ise3.下列eda工具中,支持状态图输入方式的是(b)a quartus iib isec ispdesignexpertd syplify pro4.下列几种仿真中考虑了物理模型参数的仿真是(a)a 时序仿真b 功能仿真c 行为仿真d 逻辑仿真5.下列描述eda工程设计流程正确的是(c)a输入-综合-布线-下载-仿真b布线-仿真-下载-输入-综合c输入-综合-布线-仿真-下载d输入-仿真-综合-布线-下载6.下列编程语言中不属于硬件描述语言的是(d)a vhdlb verilogc abeld php1.8.3问答1.结合本章学习的知识,简述什么是eda技术?谈谈自己对eda技术的认识?答:eda(electronic design automation)工程是现代电子信息工程领域中一门发展迅速的新技术。
2.简要介绍eda技术的发展历程?答:现代eda技术是20世纪90年代初从计算机辅助设计、辅助制造和辅助测试等工程概念发展而来的。
EDA技术6-Verilog状态机
i
o
(c)状态输出型 图 1 有限状态机的分类
厦门理工学院通信系 刘虹
6
说明部分:
厦门理工学院通信系 刘虹
7
8.2 Moore型有限状态机的设计
8.2.1 ADC采样控制设计及多过程结构型状态机
厦门理工学院通信系 刘虹
8
厦门理工学院通信系 刘虹
9
厦门理工学院通信系 刘虹
10
厦门理工学院通信系 刘虹
11
厦门理工学院通信系 刘虹
12
厦门理工学院通信系 刘虹
13
厦门理工学院通信系 刘虹
14
8.3 Mealy型有限状态机的设计
8.3.1 序列检测器之状态机设计
厦门理工学院通信系 刘虹
15
厦门理工学院通信系 刘虹
16
程序8-5描述的是一个 Mealy型状态机,实现 的功能为:序列检测器。 检测的输入序列为 DIN1=11110,输出信号 由DIN2控制,并结合 当前状态得到相应的输 出信号Q,具体输出编 码见右表。
当前状态 st0 st1 st2 st3 st4
DIN2 1 0 1 0 1
Q 5’H10 5’H0A 5’H14 5’H17 5’H15
0
1 0 1 0
5’H13
5’H09 5’H1B 5’H1D 5’H0D
厦门理工学院通信系 刘虹
17
Hale Waihona Puke 厦门理工学院通信系 刘虹 3
i
有限状态机的分类 状
组 合 逻 辑 态 寄 存 器
组 合 逻 辑
o
(1)Moore型状态机:输出仅是状态向量的函数, (a)Mealy 型 结构如图(b)所示。
eda技术实用教程-veriloghdl答案
eda技术实用教程-veriloghdl答案【篇一:eda技术与vhdl程序开发基础教程课后答案】eda的英文全称是electronic design automation2.eda系统设计自动化eda阶段三个发展阶段3. eda技术的应用可概括为4.目前比较流行的主流厂家的eda软件有、5.常用的设计输入方式有原理图输入、文本输入、状态机输入6.常用的硬件描述语言有7.逻辑综合后生成的网表文件为 edif8.布局布线主要完成9.10.常用的第三方eda工具软件有synplify/synplify pro、leonardo spectrum1.8.2选择1.eda技术发展历程的正确描述为(a)a cad-cae-edab eda-cad-caec eda-cae-cadd cae-cad-eda2.altera的第四代eda集成开发环境为(c)a modelsimb mux+plus iic quartus iid ise3.下列eda工具中,支持状态图输入方式的是(b)a quartus iib isec ispdesignexpertd syplify pro4.下列几种仿真中考虑了物理模型参数的仿真是(a)a 时序仿真b 功能仿真c 行为仿真d 逻辑仿真5.下列描述eda工程设计流程正确的是(c)a输入-综合-布线-下载-仿真b布线-仿真-下载-输入-综合c输入-综合-布线-仿真-下载d输入-仿真-综合-布线-下载6.下列编程语言中不属于硬件描述语言的是(d)a vhdlb verilogc abeld php1.8.3问答1.结合本章学习的知识,简述什么是eda技术?谈谈自己对eda技术的认识?答:eda(electronic design automation)工程是现代电子信息工程领域中一门发展迅速的新技术。
2.简要介绍eda技术的发展历程?答:现代eda技术是20世纪90年代初从计算机辅助设计、辅助制造和辅助测试等工程概念发展而来的。
《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是主控组合进程。
《VHDL语言程序设计》课程教学大纲
《VHDL语言程序设计》课程教学大纲课程简介课程简介:本课程为软件工程专业嵌入式专业方向的专业课,是开发基于FPGA/CPLD嵌入式系统的必备基础。
主要内容包括FPGA/CPLD目标器件的结构和工作原理、EDA技术和工作流程、VHDL基础知识、VHDL实用方法和设计深入、原理图输入法、LPM宏功能模块实用方法、状态机设计以及EDA优化设计。
目的是为后续课程的学习和嵌入式系统的设计作必须的基础准备。
课程大纲一、课程的性质与任务:本课程是软件工程专业的专业方向课程。
教学任务主要包括使学生了解EDA技术的工作流程,正确使用开发平台,掌握以VHDL为代表的硬件描述语言的基本知识、编程实用方法和工程设计方法,掌握原理图设计法、状态机设计法,能够正确使用IP Core和LPM等宏功能模块。
本课程是软件工程专业嵌入式专业方向的第一门专业方向课,是后续课程的必备基础,具有较重要的地位。
二、课程的目的与基本要求:本课程涉及到的学科基础知识面广,要求软硬件兼备,需要较好的学科基础。
通过本课程的学习,最终达到能够设计基于FPGA/CPLD的ASIC,并能进行EDA优化的目的。
三、面向专业:软件工程四、先修课程:《计算系统基础》五、本课程与其它课程的联系:本课程的先行课程是计算系统基础。
服务的主要后续课程包括基于FPGA的嵌入式软件开发、基于ARM的嵌入式软件开发等。
六、教学内容安排、要求、学时分配及作业:第一章概述(2学时)1.1 EDA技术及其发展(C)1.2 硬件描述语言硬件描述语言种类、自顶向下设计方法、EDA工程设计流程。
(A)1.3 面向FPGA/CPLD的开发流程设计输入、分析综合、布局布线、仿真、下载和硬件测试。
(A)1.4 IP Core 及EDA技术发展趋势。
(C)第二章 FPGA硬件特性与编程技术(8学时)2.1 PLD发展历程及其分类(c)2.2 低密度PLD工作原理PROM、PLA、PAL、GAL。
实验八用状态机实现序列检测器的设计
实验八用状态机实现序列检测器的设计
1、实验目的
本实验旨在通过状态机的设计实现一个序列检测器,该序列检测器可
以检测01序列中可编程的模式,并实现相应的响应动作。
2、实验原理
序列检测器是一种有限状态机,由一系列状态和一系列触发器组成,
可以检测特定的序列,并拥有一定的驱动和响应动作。
根据所检测的序列,检测器通过触发器设置能够自动的转换到特定的状态,触发器的设置可以
根据需要进行调整,从而实现不同的序列和不同的响应动作。
3、实验内容
(1)状态机的设计
状态机的设计分为状态图设计和状态表设计两部分,在状态图设计中,绘制出起始状态、可能的转移状态以及相应的触发器, shown by figure 1 below . 再根据实验的要求,结合状态图和状态表,确定每一个触发器
的对应的转移状态以及响应动作, shown by table 1 below .
(2)用VHDL编程实现状态机
在VHDL中,可以实现上面的状态机,用自定义的类型定义状态、触
发器、响应动作以及转移条件,将状态图转换成可执行的VHDL代码,shown by listing 1 below .
(3)VHDL代码的仿真
在仿真中,可以根据状态图测试序列检测器的功能,确保能够检测出正确的模式,并实现预期的响应动作, shown by figure 2 below.
4、实验结果。
EDA技术实用教程Verilog四版第8章
第8章有限状态机设计技术有限状态机及其设计技术是实用数字系统设计中的重要组成部分,也是实现高效率、高可靠和高速控制逻辑系统的重要途径。
广义而论,只要是涉及触发器的电路,无论电路大小,都能归结为状态机。
因此,对于数字系统设计工程师,面对的只要是时序电路设计,状态机的概念则是必须贯穿于整个设计始终的最基本的设计思想和设计方法论;只有从电路状态的角度去考虑,才能从根本上把握可靠,高效的时序逻辑的设计关键。
在现代数字系统设计中,状态机的设计对系统的高速性能、高可靠性、稳定性都具有决定性的作用。
读者对于此章的学习必须给于高度的关注。
有限状态机应用广泛,特别是对那些操作和控制流程非常明确的系统设计,在数字通信领域、自动化控制领域、CPU设计领域以及家电设计领域都拥有重要的和不可或缺的地位。
尽管到目前为止,有限状态机的设计理论并没有增加多少新的内容,然而面对先进的EDA工具、日益发展的大规模集成电路技术和强大的硬件描述语言,有限状态机在其具体的设计和优化技术以及实现方法上却有了许多新的内容和新的实现方法。
本章重点介绍用Verilog设计不同类型有限状态机的方法,同时考虑EDA工具和设计实现中许多必须重点关注的问题,如优化、毛刺的处理及编码方式等方面的问题。
8.1 Verilog状态机的一般形式就理论而言,任何时序模型都可以归结为一个状态机。
如只含一个D触发器的二分频电路或一个普通的4位二进制计数器都可算作一个状态机;前者是两状态型状态机,后者是16状态型状态机,都属于一般状态机的特殊形式。
但这些并非出自明确的自觉的设计目的和合理的状态机设计方案而导致的时序模块,未必能成为一高速、高效、稳定、控制流畅、修改便捷和功能目标明确的真正意义上的状态机。
基于现代数字系统设计技术自觉意义上的状态机的HDL表述形态和表述风格具有一定的典型性和格律化。
正是据此,现代EDA的综合器能从不同表述形态的HDL程序中轻易地萃取出(Extract)状态机设计,并加以多侧面多目标和多种形式的优化;甚至还能能动地改变、脱离甚至不遵从设计程序文字上的表述,而按照综合器自己的方式去优化状态机的设计。
夏宇文 第八章
第八章可综合的VerilogHDL设计实例---简化的RISC CPU设计简介---前言:在前面七章里我们已经学习了VerilogHDL的基本语法、简单组合逻辑和简单时序逻辑模块的编写、Top-Down设计方法、还学习了可综合风格的有限状态机的设计,其中EEPROM读写器的设计实质上是一个较复杂的嵌套的有限状态机的设计,它是根据我们完成的实际工程项目设计为教学目的改写而来的,可以说已是真实的设计。
在这一章里, 我们将通过一个经过简化的用于教学目的的 RISC_CPU 的设计过程,来说明这种新设计方法的潜力。
这个模型实质上是第四章的RISC_CPU模型的改进。
第四章中的RISC_CPU模型是一个仿真模型,它关心的只是总体设计的合理性,它的模块中有许多是不可综合的,只可以进行仿真。
而本章中构成RISC_CPU的每一个模块不仅是可仿真的也都是可综合的,因为他们符合可综合风格的要求。
为了能在这个虚拟的CPU上运行较为复杂的程序并进行仿真, 因而把寻址空间扩大到8K(即15位地址线)。
下面让我们一步一步地来设计这样一个CPU,并进行仿真和综合,从中我们可以体会到这种设计方法的魅力。
本章中的VerilogHDL程序都是我们自己为教学目的而编写的,全部程序在CADENCE公司的LWB (Logic Work Bench)环境下和 Mentor 公司的ModelSim 环境下用Verilog语言进行了仿真, 通过了运行测试,并分别用Synergy和Synplify综合器针对不同的FPGA进行了综合。
分别用Xilinx和Altera公司的的布局布线工具在Xilinx3098上和Altera Flex10K10实现了布线。
顺利通过综合前仿真、门级结构仿真以及布线后的门级仿真。
这个CPU 模型只是一个教学模型, 设计也不一定合理, 只是从原理上说明了一个简单的RISC _CPU的构成。
我们在这里介绍它的目的是想说明:Verilog HDL 仿真和综合工具的潜力和本文介绍的设计方法对软硬件联合设计是有重要意义的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
加 锁
开 锁
通过 / 加锁
通过传感器
锁执行
控 制
投币传感器 加锁执行
器
声光报警
初始状态 加锁 通过 报警
CLK
投币 锁 投币
加 锁
锁
通过
加锁
一、概述
关于状态机 状态机的特点 状态机的基本结构和功能
关于状态机
状态机就是事物存在状态的一种综合描述。 状态机就是事物存在状态的一种综合描述。 一个单向路口的一盏红绿灯:红灯、 例:一个单向路口的一盏红绿灯:红灯、 黄灯、绿灯。 黄灯、绿灯。 状态机就是对这盏红绿灯的3种状态进行 状态机就是对这盏红绿灯的 种状态进行 综合描述, 综合描述,说明任意两个状态之间的转变 条件。 条件。
Chapter 5 有限状态机
计算机与信息学院 毕春跃
2011.10.25
引子: 引子:
有一自动门,它可以被锁上,也可以开锁。当门 有一自动门,它可以被锁上,也可以开锁。 锁上时,某人可以在它的槽中塞进一枚硬币。这样, 锁上时,某人可以在它的槽中塞进一枚硬币。这样, 门就会自动开锁,转变到开锁的状态;人通过后, 门就会自动开锁,转变到开锁的状态;人通过后, 门就会自动锁上。 门就会自动锁上。
分析设计要求,列出全部可能状态: (1) 分析设计要求,列出全部可能状态:
未收到一个有效位( 未收到一个有效位(0) 收到一个有效位( 收到一个有效位(1) 连续收到两个有效位(11) 连续收到两个有效位(11) 连续收到三个有效位(110) 连续收到三个有效位(110) 连续收到四个有效位(1101) 连续收到四个有效位(1101) :S0 :S1 :S2 :S3 :S4
WHY? 为什么使用状态机 ?
有限状态机克服了纯硬件数字系统顺序方式控制不灵 活的缺点。 活的缺点。 状态机的结构模式相对简单。 状态机的结构模式相对简单。 状态机容易构成性能良好的同步时序逻辑模块。 状态机容易构成性能良好的同步时序逻辑模块。 状态机的VHDL表述丰富多样。 表述丰富多样。 状态机的 表述丰富多样 在高速运算和控制方面,状态机更有其巨大的优势。 在高速运算和控制方面,状态机更有其巨大的优势。 就可靠性而言,状态机的优势也是十分明显的。 就可靠性而言,状态机的优势也是十分明显的。
ARCHITECTURE a OF moore IS 定义状态机 TYPE STATE IS (S0,S1,S2,S3,S4); SIGNAL pstate :STATE; BEGIN PROCESS(clk) 状态转移描述 BEGIN IF (clk’EVENT AND clk=‘1’) THEN CASE pstate is WHEN S0=> IF data=‘1’ THEN pstate<=S1; ELSE pstate<=S0; END IF; WHEN S1=> IF data=‘1’ THEN pstate<=S2; ELSE pstate<=S0; END IF; WHEN S2=> IF data=‘0’ THEN pstate<=S3; ELSE pstate<=S2; END IF; WHEN S3=> IF data=‘1’ THEN pstate<=S4; ELSE pstate<=S0; END IF; WHEN S4=> IF data=‘1’ THEN pstate<=S1; ELSE pstate<=S0; END IF; END CASE; END IF; 输出信号描述 END PROCESS; zo<=‘1’ WHEN pstate=s4 ELSE ‘0’; END a;
例:设计一个序列检测器。要求检测器连续收到 设计一个序列检测器。 串行码{1101} {1101}后 输出检测标志1 否则输出0 串行码{1101}后,输出检测标志1,否则输出0。
状态机设计步骤: 状态机设计步骤: 分析设计要求,列出全部可能状态; ① 分析设计要求,列出全部可能状态; 画出状态转移图; ② 画出状态转移图; VHDL语言描述状态机 语言描述状态机。 ③ 用VHDL语言描述状态机。
Moore型有限状态机的结构图 型有限状态机的结构图
输入 X
组组 电电 状 态 寄 存 器 组组 电电
输出 Y
c1k
Mealy型有限状态机的结构图 型有限状态机的结构图
有限状态机的主要功能: 有限状态机的主要功能:
实现一个数字系统设计中的控制部分。 实现一个数字系统设计中的控制部分。
有限状态机中的每一个状态对应于控制单元的一个 控制步; 控制步; 有限状态机中的次态和输出对应于控制单元中与每 一个控制步有关的转移条件。 一个控制步有关的转移条件。
8421循环计数器
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity autocnt is port(clk:in std_logic; q:out std_logic_vector(3 downto 0)); end autocnt; architecture a of autocnt is type state is (s0,s1,s2,s3); signal st:state; signal n:state; begin process(clk) begin if clk'event and clk='1' then st<=n; end if; end process;
process(st,clr) begin if (clr='0') then t1<='0';t2<='0';t3<='0'; else case st is when s0=> t1<='1';t2<='0';t3<='0'; when s1=> t1<='0';t2<='1';t3<='0'; when s2=> t1<='0';t2<='1';t3<='0'; when s3=> t1<='0';t2<='0';t3<='1'; when s4=> t1<='0';t2<='0';t3<='1'; when s5=> t1<='1';t2<='0';t3<='0'; end case; end if; end process; end rtl;
(2) 状态转移图 ) 状态转移图:
(3)用VHDL语言描述状态机 ) 语言描述状态机 定义状态机— 定义状态机 枚举类型 状态转换描述 输出信号描述
Moore型状态机设计方法 型状态机设计方法
(2) 状态转移图 ) 状态转移图:
Data_INi
0
1101
Si/ZOi
S0/0
0 0 1 0 1 1 1
说明部分:主要是设计者使用 语句定义新的数据类型, 说明部分:主要是设计者使用TYPE语句定义新的数据类型,如: 语句定义新的数据类型 TYPE states IS (st0, st1, st2, st3, st4, st5); SIGNAL present_state, next_state: states;
What? What?什么是状态机
有限状态机(简称状态机 相当于一个控制器 有限状态机 简称状态机)相当于一个控制器, 简称状态机 相当于一个控制器, 它将一项功能的完成分解为若干步, 它将一项功能的完成分解为若干步,每一步对应 于二进制的一个状态, 于二进制的一个状态,通过预先设计的顺序在各 状态之间进行转换, 状态之间进行转换,状态转换的过程就是实现逻 辑功能的过程。 辑功能的过程。
Moore型状态机设计方法 型状态机设计方法 More型状态机输出仅和存储电路的状 型状态机输出仅和存储电路的状 态有关,与外部输入无关, 态有关,与外部输入无关,即: 外部输出是内部状态的函数。 外部输出是内部状态的函数。
状态转移图描述方式: 状态转移图描述方式:
Data_INi
Si/ZOi
Moore型状态机设计方法 型状态机设计方法
二、一般有限状态机的组成
说明部分 说明部分中使用TYPE语句定义新的数据类型,此数据类型 语句定义新的数据类型, 说明部分中使用 语句定义新的数据类型 一般为枚举类型 例如: 例如: TYPE state_type IS (start_state,run_state,error_state); ; SIGNAL state:state_type; ; 说明部分一般放在结构体的ARCHITECTURE和BEGIN之 和 说明部分一般放在结构体的 之 间。
一般有限状态机的VHDL组成 一般有限状态机的VHDL组成 VHDL
主控时序逻辑部分:任务是负责状态机运转和在外部时 主控时序逻辑部分: 钟驱动下实现内部状态转换的进程。 钟驱动下实现内部状态转换的进程。时序进程的实质是 一组触发器,因此, 一组触发器,因此,该进程中往往也包括一些清零或置 位的输入控制信号, 信号。 位的输入控制信号,如Reset信号。 信号 主控组合逻辑部分: 主控组合逻辑部分:任务是根据状态机外部输入的状态 控制信号( 控制信号(包括来自外部的和状态机内部的非进程的信 和当前的状态值current_state来确定下一状态 号)和当前的状态值 来确定下一状态 next_state的取值内容,以及对外部或对内部其他进 的取值内容, 的取值内容 程输出控制信号的内容。 程输出控制信号的内容。 辅助逻辑部分: 辅助逻辑部分:辅助逻辑部分主要是用于配合状态机的 主控组合逻辑和主控时序逻辑进行工作, 主控组合逻辑和主控时序逻辑进行工作,以完善和提高 系统的性能。 系统的性能。