版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EDA技术实用教程技术实用教程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,
2、sat) ; 枚举枚举数据数据类型类型数据类型数据类型详见详见p231TYPE 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 ; 符号化状态机:符号化状态机:用文字符号表示二进制数。用文字符号表示二进制数。确定化状态机:确定化状态机:直接
3、用数值表示。直接用数值表示。子类型子类型SUBTYPE的语句格式如下:的语句格式如下:SUBTYPE 子类型名子类型名 IS 基本数据类型基本数据类型 RANGE 约束范围约束范围; SUBTYPE digits IS INTEGER RANGE 0 to 9 ;没有定义新没有定义新的数据类型的数据类型7.1.2 为什么要使用状态机为什么要使用状态机状态机克服了纯硬件数字系统顺序方式控制不状态机克服了纯硬件数字系统顺序方式控制不灵活灵活的缺点的缺点 状态机的状态机的结构模式结构模式相对相对简单,设计方案相对固定简单,设计方案相对固定。 状态机容状态机容易构成易构成性能良好的性能良好的同步时序逻
4、辑模块同步时序逻辑模块(消除毛刺)(消除毛刺) 状态机的状态机的VHDL表述丰富多样,程序表述丰富多样,程序层次分明层次分明,结构清晰,结构清晰。 在在高速运算和控制高速运算和控制方面,状态机更方面,状态机更有有其巨大的其巨大的优势优势。 就就可靠性可靠性而言,状态机的优势也是十分明显的而言,状态机的优势也是十分明显的。对比对比与与VHDL的其他设计方案或的其他设计方案或CPU相比相比 VHDL综合器易于优化综合器易于优化 (结构模式相对简单,设计方案相对固定结构模式相对简单,设计方案相对固定) 易构成性能良好的时序逻辑模块易构成性能良好的时序逻辑模块(消除毛刺)(消除毛刺) 结构模式简单、层
5、次分明、易读易懂、易排错结构模式简单、层次分明、易读易懂、易排错 运行模式类似于运行模式类似于CPU,易于进行顺序控制易于进行顺序控制 利用同步时序和全局时钟线可实现高速利用同步时序和全局时钟线可实现高速FSM 高可靠性,非法状态易控制高可靠性,非法状态易控制 (高速运算和控制方面,状态机更优势高速运算和控制方面,状态机更优势)(优势明显优势明显)7.1.2 为什么要使用状态机为什么要使用状态机与与VHDL的其他设计方案或的其他设计方案或CPU相比相比7.1.3 一般有限状态机的设计一般有限状态机的设计用用VHDL设计的状态机有多种形式设计的状态机有多种形式从信号输出方式分:从信号输出方式分:
6、Mealy型状态机和型状态机和Moore型状态机型状态机从结构上分:从结构上分:单进程状态机和多进程状态机单进程状态机和多进程状态机从状态表达方式上分:从状态表达方式上分:符号化状态机、符号化状态机、 确定状态编码状态机确定状态编码状态机从编码方式上分:从编码方式上分:顺序编码状态机、顺序编码状态机、 一位热码编码状态机一位热码编码状态机 或其他编码方式状态机或其他编码方式状态机1. 说明部分说明部分2. 主控时序进程主控时序进程com b_outputsstate_inputsresetclkF S M :s_m achineC O Mnext_statecurrent_stateP R O
7、 C E S SR E GP R O C E S S图图7-1 一般状态机结构框图工作示意图一般状态机结构框图工作示意图ARCHITECTURE .IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST; . FSM(Finite State_Machine)负责状态机运转,在时钟驱动下负责状态转换的进程。负责状态机运转,在时钟驱动下负责状态转换的进程。 一般状态机包含如下四个部分:一般状态机包含如下四个部分:3. 主控组合进程主控组合进程 根据外部输入的控制信号(包括来自状态机外部的信根据外部输入的控
8、制信号(包括来自状态机外部的信号和来自状态机内部其它非主控的组合或时序进程的信号和来自状态机内部其它非主控的组合或时序进程的信号),或(和)当前状态的状态值确定下一状态号),或(和)当前状态的状态值确定下一状态(next_state)的取向,即的取向,即next_state的取值内的取值内容,以及确定容,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内对外输出或对内部其它组合或时序进程输出控制信号的内容。容。4. 辅助进程辅助进程用于配合状态机工作的组合进程或时序进程。用于配合状态机工作的组合进程或时序进程。 com b_outputsstate_inputsresetclkF S
9、M :s_m achineC O Mnext_statecurrent_stateP R O C E S SR E GP R O C E S S【例【例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;ARCHITECTURE behv OF s_m
10、achine 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= 5; - 输出输出仅取决于现态仅取决于现态 IF state_inputs = 00 THEN next_state=
11、s0; ELSE next_state comb_outputs= 8; IF state_inputs = 00 THEN 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;接上页对照
12、对照图图7-2 例例7-1状态机的工作时序图状态机的工作时序图clkResetState_ inputsCurrent_stateNext_stateComb_outputsx1xxs0 x5000/xxs0s0/s15000/xxs1s1/s28011/xxs2s0/s312011/xxs3s3/s014状态状态转换转换图图输出输出仅取决于现态仅取决于现态与输入无关与输入无关;输入仅决定次态输入仅决定次态Moore型型对照对照7.2 Moore型有限状态机的设计型有限状态机的设计7.2.1 多进程有限状态机多进程有限状态机AD754:采样周期约为采样周期约为20us, 采样采样50个点需花时
13、个点需花时20us501ms51单片机:单片机:控制完成一次采样最少需控制完成一次采样最少需30条指令,设单条指令,设单片机频率为片机频率为12MHz,一次采样花时,一次采样花时30220(等待(等待时间)时间)80us,采样,采样50个点需花时个点需花时80us504msFPGA:控制:控制完成一次采样需完成一次采样需45个状态,若个状态,若FPGA时钟频率为时钟频率为100MHz,一次采样需花时,一次采样需花时10ns550ns 采样采样50个点需花时个点需花时50ns502.5us图图7-3 AD0809工作时序和引脚图工作时序和引脚图 用状态机对用状态机对AD0809进行采样控制的设计
14、方法进行采样控制的设计方法 状态状态地址锁存地址锁存转换启动转换启动输出有效输出有效输出的数字信号输出的数字信号01243表表7-1 AD0809逻辑控制真值表逻辑控制真值表ALE START LOCK OE EOC 工工 作作 状状 态态 0 0 0010_初始化初始化 1 1 0001_启动采样启动采样 0 0 0002_转换未结束转换未结束 0 0 0012_转换结束转换结束 0 0 01 13_输出转换好的数据输出转换好的数据 0 0 111 4_输出数据送到锁存器输出数据送到锁存器状态状态地址地址锁存锁存转换转换启动启动输出输出有效有效内部内部锁存锁存图图7-4 AD0809采样状态
15、图采样状态图PROCESSREG时序进程时序进程PROCESSCOM组合进程组合进程PROCESSLATCH1锁存器锁存器current_statecurrent_statenext_statenext_stateLOCKLOCK状态机状态机FSMFSMFPGA/CPLDFPGA/CPLDCLKCLK状态机工作时钟状态机工作时钟ADC0809ADC0809Q7.0Q7.0模拟信号输入模拟信号输入采样数据输出采样数据输出A/DA/D工作时钟工作时钟clk=750KHzclk=750KHz ALEALE START START OE OE ADDA ADDA EOC EOCD7.0D7.0图图7-
16、5 采样状态机结构框图采样状态机结构框图 【例【例7-2】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY AD0809 IS PORT ( D :IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK,EOC : IN STD_LOGIC; -状态机时钟状态机时钟CLK,AD0809工作状态信号工作状态信号EOC LOCK0 : OUT STD_LOGIC; -内部锁存信号内部锁存信号LOCK的测试信号的测试信号 ALE,START,OE,ADDA : OUT STD_LOGIC; -AD0809控制信号控制信号 Q :
17、OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -锁存数据输出锁存数据输出 END AD0809; ARCHITECTURE behav OF AD0809 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; -模拟信号进入模拟信号进入0809通道通道1 接下页接下页 接上页
18、接上页 Q = REGL ; LOCK0 ALE=0; START=0;LOCK=0;OE=0; next_state ALE=1; START=1;LOCK=0;OE=0; next_state ALE=0; START=0;LOCK=0;OE=0; IF (EOC=1) THEN next_state = st3; -转换结束转换结束 ELSE next_state ALE=0; START=0;LOCK=0;OE=1; next_state ALE=0; START=0;LOCK=1;OE=1; next_state next_state = st0; END CASE ; END PR
19、OCESS COM ; 接下页接下页REG: PROCESS (CLK) -时序进程时序进程 BEGIN IF ( CLKEVENT AND CLK=1) THEN current_state = next_state; END IF;END PROCESS REG; -信号信号current_state将值带出此进程将值带出此进程 LATCH1 : PROCESS (LOCK) -数据锁存器进程数据锁存器进程 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL next_state next_state IF (EOC=1) THEN next_state = s
20、t3; ELSE next_state next_state next_state next_state ALE=0; START=0;LOCK=0;OE ALE=1; START=1;LOCK=0;OE ALE=0; START=0;LOCK=0;OE ALE=0; START=0;LOCK=0;OE ALE=0; START=0;LOCK=1;OEALE=0; START=0;LOCK=0; END CASE; END PROCESS COM2; 接上页接上页7.2.2 单进程单进程Moore型有限状态机型有限状态机【例【例7-4】LIBRARY IEEE;USE IEEE.STD_LOG
21、IC_1164.ALL;ENTITY MOORE1 IS PORT (DATAIN : IN STD_LOGIC_VECTOR(1 DOWNTO 0); CLK,RST : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(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 = ST
22、0 ; Q IF DATAIN =10 THEN C_ST = ST1 ; ELSE C_ST = ST0 ; END IF; Q IF DATAIN =11 THEN C_ST = ST2 ; ELSE C_ST = ST1 ;END IF; Q IF DATAIN =01 THEN C_ST = ST3 ; ELSE C_ST = ST0 ;END IF; Q IF DATAIN =00 THEN C_ST = ST4 ; ELSE C_ST = ST2 ;END IF; Q IF DATAIN =11 THEN C_ST = ST0 ; ELSE C_ST = ST3 ;END IF;
23、Q C_ST = ST0; END CASE; END IF; END PROCESS; END behav;接上页接上页clkRSTDATAINCurrent_stateNext _stateQx1xxST0 x0000010/xxST0ST1/ST01001011/xxST1ST2/ST10101001/xxST2ST3/ST01100000/xxST3ST4/ST20010011/xxST4ST0/ST31001状态状态转换转换图图C_ST输出输出仅取决于现态,与输入无关;仅取决于现态,与输入无关;(输入仅决定次态输入仅决定次态);Moore型型对照对照图图7-8 例例7-4单进程状态机
24、工作时序单进程状态机工作时序优点:优点:输出信号不会出现毛刺输出信号不会出现毛刺缺点:缺点:输出信号输出信号Q比多进程状态机的输出晚一个时钟周期比多进程状态机的输出晚一个时钟周期对照对照图图7-9 对应于例对应于例7-4的二进程状态机工作时序图的二进程状态机工作时序图优点:优点:输出信号输出信号Q比单进程状态机的输出早一个时钟周期比单进程状态机的输出早一个时钟周期缺点:缺点:输出信号有毛刺输出信号有毛刺对照对照7.3 Mealy型有限状态机的设计型有限状态机的设计【例【例7-5】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY1 I
25、SPORT ( CLK ,DATAIN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);END 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 =
26、 0 THEN STX IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX STX IF DATAIN = 1 THEN Q = 10000 ; ELSE Q IF DATAIN = 0 THEN Q = 10111 ; ELSE Q IF DATAIN = 1 THEN Q = 10101 ; ELSE Q IF DATAIN = 0 THEN Q = 11011 ; ELSE Q IF DATAIN = 1 THEN Q = 11101 ; ELSE Q Q=00000 ; END CASE ; END
27、PROCESS COM1 ;END behav;接上页接上页 clkRESETDATAINCurrent_stateNext _stateQx1xxST0 xxx01/0ST0ST1/ST010000/0101000/1ST1ST2/ST110111/1010001/0ST2ST3/ST210101/1001100/1ST3ST4/ST311011/0100101/0ST4ST0/ST411101/01101状态状态转换转换图图STX输出输出不仅取决于现态,还与输入有关;不仅取决于现态,还与输入有关;Mealy型型对照对照图图7-10 例例7-5状态机工作时序图状态机工作时序图缺点:缺点:输出
28、信号输出信号Q是由组合电路直接产生,故有毛刺。是由组合电路直接产生,故有毛刺。对照对照【例【例7-6】 MEALY2 LIBRARY IEEE; -MEALY FSMUSE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY2 IS PORT ( CLK ,DATAIN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);END MEALY2;ARCHITECTURE behav OF MEALY2 IS TYPE states IS (st0, st1, st2, st3,st4); SIGNAL STX
29、 : states ; SIGNAL Q1 : STD_LOGIC_VECTOR(4 DOWNTO 0); 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 DATAIN = 1 THEN Q2 := 10000 ; ELSE Q2 := 01
30、010 ; END IF ; 接下页接下页接上页接上页 WHEN st1 = 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:=01001 ; END IF ; WHEN st4= IF DATAIN = 1 THEN Q2 := 11101 ; ELSE Q2:=01101 ; END IF ; WHEN OTHERS = Q2:=00000 ; END CASE ; IF CLKEVENT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年河北客运员初级理论知识试卷
- 2024年客运资格证考什么内容
- 2024年农村土地出租协议
- 2024年小学食堂临时工用工合同范本
- 2024年《商贸系统企业产权制度改革企业出让合同》补充合同
- 2024年电器设备采购合同
- 2024年工程承揽合同书
- 2024年宁夏客运从业资格证考试模拟试题及答案
- 2024年长春客运资格证理论考试模拟题及答案
- 2024年聘用专兼职律师合同新
- 采伐树木合同模板
- 培训师破冰游戏大全课件
- 期中测试卷-2024-2025学年统编版语文三年级上册
- 《气能破岩作业技术规程》征求意见稿编制说明
- 消防救生照明线标准解析
- GB/T 24304-2024动植物油脂茴香胺值的测定
- 第一单元 史前时期:原始社会与中华文明的起源(复习课件)
- 广东省深圳市2023-2024学年高一上学期语文期中试卷(含答案)
- 医院检验科实验室生物安全程序文件SOP
- 92式手枪基础训练
- 封条模板A4直接打印版
评论
0/150
提交评论