(精品)EDA技术实用教程第8章.ppt
《(精品)EDA技术实用教程第8章.ppt》由会员分享,可在线阅读,更多相关《(精品)EDA技术实用教程第8章.ppt(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、EDA 技术实用教程技术实用教程第第 8 8 章章 状态机设计状态机设计 8.1 一般有限状态机设计一般有限状态机设计 K KX康芯科技康芯科技8.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,sat);8.1 一般有限状态机设计一般有限状态机设
2、计 K KX康芯科技康芯科技8.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;SUBTYPE 子类型名子类型名 IS 基本数据类型基本数据类型 RANGE 约束范围约束范围;SUBTYPE digits IS INTEGER RANGE 0 to 9;8.1 一般有限状态机设计
3、一般有限状态机设计 K KX康芯科技康芯科技8.1.2 为什么要使用状态机为什么要使用状态机 状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点 状态机可以定义符号化枚举类型的状态状态机可以定义符号化枚举类型的状态 状态机容易构成性能良好的同步时序逻辑模块状态机容易构成性能良好的同步时序逻辑模块 状态机的状态机的VHDLVHDL表述丰富多样、程序层次分明,易读易懂表述丰富多样、程序层次分明,易读易懂 在高速运算和控制方面,状态机更有其巨大的优势在高速运算和控制方面,状态机更有其巨大的优势 高可靠性高可靠性 8.1 一般有限状态机设计一般有限状态
4、机设计 K KX康芯科技康芯科技8.1.3 一般有限状态机的设计一般有限状态机的设计 1.1.说明部分说明部分 ARCHITECTURE.ISTYPE FSM_ST IS(s0,s1,s2,s3);SIGNAL current_state,next_state:FSM_ST;.8.1 一般有限状态机设计一般有限状态机设计 K KX康芯科技康芯科技8.1.3 一般有限状态机的设计一般有限状态机的设计 2.2.主控时序进程主控时序进程 图图8-1 一般状态机结构框图一般状态机结构框图 8.1 一般有限状态机设计一般有限状态机设计 K KX康芯科技康芯科技8.1.3 一般有限状态机的设计一般有限状态
5、机的设计 3.3.主控组合进程主控组合进程 4.4.辅助进程辅助进程 【例【例8-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);-数据类型定义,状态
6、符号化数据类型定义,状态符号化 SIGNAL current_state,next_state:FSM_ST;-将现态和次态定义为新的数据类型将现态和次态定义为新的数据类型BEGIN REG:PROCESS(reset,clk)-主控时序进程主控时序进程 (接下页)(接下页)K KX康芯科技康芯科技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
7、=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;8.1 一般有限状态机设计一般有限状态机设计 K KX康芯科技
8、康芯科技8.1.3 一般有限状态机的设计一般有限状态机的设计 图图8-2a 例例8-1状态机的工作时序状态机的工作时序 4.4.辅助进程辅助进程 8.1 一般有限状态机设计一般有限状态机设计 K KX康芯科技康芯科技8.1.3 一般有限状态机的设计一般有限状态机的设计 图图8-2b 打开打开QuartusII状态图观察器状态图观察器 4.4.辅助进程辅助进程 8.1 一般有限状态机设计一般有限状态机设计 K KX康芯科技康芯科技8.1.3 一般有限状态机的设计一般有限状态机的设计 图图8-2c 例例8-1的状态图的状态图 4.4.辅助进程辅助进程 8.2 Moore型有限状态机设型有限状态机设
9、 K KX康芯科技康芯科技8.2.1 多进程有限状态机多进程有限状态机 图图8-3 ADC0809工作时序工作时序 8.2 Moore型有限状态机设型有限状态机设 K KX康芯科技康芯科技8.2.1 多进程有限状态机多进程有限状态机 图图8-4 控制控制ADC0809采样状态采样状态图图 K KX康芯科技康芯科技8.2.1 多进程有限状态机多进程有限状态机 图图8-5 采样状态机结构框图采样状态机结构框图 K KX康芯科技康芯科技【例例8-2】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADCINT IS PORT(D :IN STD_LOG
10、IC_VECTOR(7 DOWNTO 0);-来自来自0809转换好的转换好的8位数据位数据CLK :IN STD_LOGIC;-状态机工作时钟状态机工作时钟EOC :IN STD_LOGIC;-转换状态指示,低电平表示正在转换转换状态指示,低电平表示正在转换ALE :OUT STD_LOGIC;-8个模拟信号通道地址锁存信号个模拟信号通道地址锁存信号START :OUT STD_LOGIC;-转换开始信号转换开始信号OE :OUT STD_LOGIC;-数据输出数据输出3态控制信号态控制信号ADDA :OUT STD_LOGIC;-信号通道最低位控制信号信号通道最低位控制信号LOCK0 :O
11、UT STD_LOGIC;-观察数据锁存时钟观察数据锁存时钟Q :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-8位数据输出位数据输出END ADCINT;ARCHITECTURE behav OF ADCINT ISTYPE 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;-转换后数据输出锁存时钟信号转换后
12、数据输出锁存时钟信号 BEGINADDA=1;-当当ADDA=0,模拟信号进入通道模拟信号进入通道IN0;当当ADDA=1,则进入通道则进入通道IN1Q=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;-EOC=1表明转换结束表明转换结束 ELSE next_state ALE=0;START=0;LOCK=0;OE=1;next_state ALE=0;START
13、=0;LOCK=1;OE=1;next_state next_state=st0;END CASE;END PROCESS COM;REG:PROCESS(CLK)BEGIN IF(CLKEVENT AND CLK=1)THEN current_state=next_state;END IF;END PROCESS REG;-由信号由信号current_state将当前状态值带出此进程将当前状态值带出此进程:REG LATCH1:PROCESS(LOCK)-此进程中,在此进程中,在LOCK的上升沿,将转换好的数据锁入的上升沿,将转换好的数据锁入 BEGIN IF LOCK=1 AND LOCK
14、EVENT THEN REGL next_state next_state IF(EOC=1)THEN next_state=st3;ELSE next_state next_state next_state next_state ALE=0;START=0;LOCK=0;OEALE=1;START=1;LOCK=0;OEALE=0;START=0;LOCK=0;OEALE=0;START=0;LOCK=0;OEALE=0;START=0;LOCK=1;OE ALE=0;START=0;LOCK=0;END CASE;END PROCESS COM2;8.2 Moore型有限状态机设型有限状态
15、机设 K KX康芯科技康芯科技8.2.1 多进程有限状态机多进程有限状态机 图图8-6 ADC0809采样状态机工作时序采样状态机工作时序 8.2 Moore型有限状态机设型有限状态机设 K KX康芯科技康芯科技8.2.2 单进程单进程Moore型有限状态机型有限状态机【例【例8-4】LIBRARY IEEE;USE IEEE.STD_LOGIC_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
16、);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=ST0;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
17、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;Q C_ST=ST0;END CASE;END IF;END PROCESS;END behav;8.2 Moore型有限状态机设型有限状态机设 K KX康芯科技康芯科技8.2.2 单进程单进程Moore型有限状态机型有限状态机 图图8-7 例例8-4状态机综合后的部分主要状态机综合后的部分主要RTL电路模块(电路模块(Synplify综合)综合)8.2 Moore型有限状态机设型有限状态机
18、设 K KX康芯科技康芯科技8.2.2 单进程单进程Moore型有限状态机型有限状态机 图图8-8 例例8-4单进程状态机工作时序单进程状态机工作时序 8.2 Moore型有限状态机设型有限状态机设 K KX康芯科技康芯科技8.2.2 单进程单进程Moore型有限状态机型有限状态机 图图8-9 对应于例对应于例8-4的二进程状态机工作时序图的二进程状态机工作时序图 8.3 Mealy型有限状态机设计型有限状态机设计 K KX康芯科技康芯科技【例【例8-5】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY1 ISPORT(CLK,DATA
19、IN,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=0 THEN STX IF DATAIN=1 THEN STX IF DA
20、TAIN=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 PROCESS COM1;END behav;8.3 Mealy型有限状态机设计型有限状态机设计 K KX康芯科技康芯科技图图8-10 例例8-5状态机工作
21、时序图状态机工作时序图8.3 Mealy型有限状态机设计型有限状态机设计 K KX康芯科技康芯科技图图8-11 例例8-6状态机工作时序图状态机工作时序图 8.3 Mealy型有限状态机设计型有限状态机设计 K KX康芯科技康芯科技【例【例8-6】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 MEAL
22、Y2 IS TYPE states IS(st0,st1,st2,st3,st4);SIGNAL STX: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 TH
23、EN Q2:=10000;ELSE Q2:=01010;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
24、 CLKEVENT AND CLK=1 THEN Q1=Q2;END IF;END PROCESS COM1;Q=Q1;END behav;8.4 状态编码状态编码 K KX康芯科技康芯科技8.4.1 状态位直接输出型编码状态位直接输出型编码 状态状态 ST000000初始态初始态ST111000启动转换启动转换ST200001若测得若测得EOC=1时,转下一状态时,转下一状态ST3ST300100输出转换好的数据输出转换好的数据ST400110利用利用LOCK的上升沿将转换好的数据锁存的上升沿将转换好的数据锁存STARTALEOELOCKB功功 能能 说说 明明状状 态态 编编 码码表表8-
25、1 控制信号状态编码表控制信号状态编码表 8.4 状态编码状态编码 K KX康芯科技康芯科技【例【例8-7】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;ALE,START,OE,ADDA :OUT STD_LOGIC;c_state :OUT STD_LOGIC_VECTOR(4 DOWNTO 0);Q :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END AD0809;ARCHI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 EDA 技术 实用教程
限制150内