版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EDA技术及其应用第6章实用状态机设计技术
有限状态机(Finite-StateMachine,FSM)
FSM简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。
传统时序电路的控制流程是顺序的:遵循事先设定的逻辑,从头到尾地执行。很少有事件能改变标准执行流程。
FSM能处理任何顺序的事件(输入),并提供有意义的响应(输出)——即使这些事件发生的顺序和预计的不同。
什么是状态机?状态机可归纳为4个要素,即现态、条件、动作、次态。“现态”和“条件”是因,“动作”和“次态”是果。①现态:指当前所处状态。②条件:又称为“事件”。当一个条件满足,将会触发一个动作,或执行一次状态的转移。③动作:动作执行后,可以转移到新状态,也可以保持原状态。动作不是必需的。④次态:条件满足后创新建立的新状态。“次态”是相对于“现态”而言的;“次态”一旦被激活,就转变成新的“现态”了。状态机的基本要素?案例一:电梯门FSM案例二:接收器FSM
按输出Y与现态Qn及输入X的关系分:Moore型:输出只和现态有关,没有输入。Mealy型:输出不仅和现态有关,还和输入有关。(由于输出会受到输入的干扰,可能会产生毛刺(Gitch)现象)
Z组合电路触发器CPXYQZ组合电路触发器CPYQFSM的结构分类Moore型:Mealy型:Y=F1(Qn
)Y=F1(X,Qn
)FSM的结构分类6.1有限状态机设计初步
(1)为什么使用状态机(其优势在哪里?)
1、克服了纯硬件数字系统顺序方式控制不灵活的缺点。2、由于状态机的结构相对简单,设计方案相对固定。3、状态机容易构成性能良好的同步时序逻辑模块。4、状态机的VHDL表述丰富多样、有其独到的好处。5、在高速运算和控制方面,状态机更有其巨大的优势。6、高可靠性。6.1有限状态机设计初步
6.1.2数据类型定义语句(这里将被用于“状态”的定义)
TYPE数据类型名IS数据类型定义OF基本数据类型;
或
TYPE数据类型名IS数据类型定义;TYPEweekIS(sun,mon,tue,wed,thu,fri,sat);TYPEm_stateIS(st0,st1,st2,st3,st4,st5);
SIGNALpresent_state,next_state:m_state;TYPEBOOLEANIS(FALSE,TRUE);
TYPEmy_logicIS('1','Z','U','0');SIGNALs1:my_logic;s1<='Z';6.1有限状态机设计初步
6.1.3一般有限状态机的结构
1.说明部分
定义新的数据类型;定义状态(信号型)。
ARCHITECTURE...ISTYPEFSM_STIS(s0,s1,s2,s3);SIGNALcurrent_state,next_state:FSM_ST;...
6.1有限状态机设计初步
6.1.3一般有限状态机的结构
2.主控时序进程
负责状态机运转和在时钟驱动下实现状态转换,称为“驱动泵”。图6-1一般状态机结构图
6.1有限状态机设计初步
6.1.3一般有限状态机的结构
3.主控组合进程
即状态译码进程,根据现态和输入确定次态和输出。
4.辅助进程不是必需的。常用来配合主控时序或组合进程,以实现数据锁存、算法完成等功能。6.1有限状态机设计初步
6.1.3一般有限状态机的结构
【例6-1】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYs_machineISPORT(clk,reset:INSTD_LOGIC;
state_inputs:INSTD_LOGIC_VECTOR(0TO1);
comb_outputs:OUTINTEGERRANGE0TO15);ENDs_machine;ARCHITECTUREbehvOFs_machineISTYPEFSM_STIS(s0,s1,s2,s3);--数据类型定义,状态符号化SIGNALcurrent_state,next_state:FSM_ST;--现态和次态定义为新数据类型BEGINREG:PROCESS(reset,clk)--主控时序进程
BEGINIFreset='1'THENcurrent_state<=s0;--检测异步复位信号
ELSIFclk='1'ANDclk‘EVENTTHEN
current_state<=next_state;--长江后浪推前浪ENDIF;ENDPROCESS;
接下页COM:PROCESS(current_state,state_Inputs)--主控组合进程
BEGINCASEcurrent_stateISWHENs0=>comb_outputs<=5;IFstate_inputs="00"THENnext_state<=s0;ELSEnext_state<=s1;ENDIF;WHENs1=>comb_outputs<=8;IFstate_inputs="00"THENnext_state<=s1;ELSEnext_state<=s2;ENDIF;WHENs2=>comb_outputs<=12;IFstate_inputs="11"THENnext_state<=s0;ELSEnext_state<=s3;ENDIF;WHENs3=>comb_outputs<=14;IFstate_inputs="11"THENnext_state<=s3;ELSEnext_state<=s0;ENDIF;ENDcase;ENDPROCESS;ENDbehv;
6.1有限状态机设计初步
6.1.3一般有限状态机的结构
图6-2例6-1的工作时序6.1有限状态机设计初步
6.1.3一般有限状态机的结构
图6-3通过StateMachineViewer观察到的例6-1的状态图
6.2Moore型有限状态机设计
6.2.1多进程有限状态机
图6-4ADC0809工作时序特点:·CMOS电路·8路模拟输入,8bit输出(3S门)·与常用μP兼容·采用逐次比较法,转换时间约100μsADC0809—集成逐次比较型ADCADC0809ADC0809原理图数字系统和FSM在集成电路设计时,通常可以将系统划分为两部分,一部分是数据单元,另一部分是控制单元。数据单元包含保存运算数据和运算结果的数据寄存器,也包括完成数据运算的组合逻辑。数据单元要产生输出信号,数据运算状态等有用信号。控制单元用来产生信号序列,以决定何时进行何种数据运算,控制单元要从数据单元得到条件信号,以决定继续进行那些数据运算。数据单元和控制单元中,有两个非常重要的信号,即复位信号和时钟信号。复位信号保证了系统初始状态的确定性,时钟信号则是时序系统工作的必要条件。状态机通常在复位信号到来的时候恢复到初始状态,每个时钟到来的时候内部状态发生变化。FSM要点(1)moore和mealy的区别在于输出是否只和当前状态有关。(2)状态机的两种基本操作:一是状态机内部状态的转换,另一是产生输出信号序列。(3)状态机的分析可以从状态图入手,状态机的设计也可以从状态图入手。6.2Moore型有限状态机设计
6.2.1多进程有限状态机
图6-5控制ADC0809采样状态图
6.2Moore型有限状态机设计
6.2.1多进程有限状态机
图6-6采样状态机结构框图6.2Moore型有限状态机设计
6.2.1多进程有限状态机
【例6-2】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYADCINTISPORT(D:INSTD_LOGIC_VECTOR(7DOWNTO0);--来自0809转换好的8位数据CLK:INSTD_LOGIC;--状态机工作时钟EOC:INSTD_LOGIC;--转换状态指示,低电平表示正在转换ALE:OUTSTD_LOGIC;--8个模拟信号通道地址锁存信号START:OUTSTD_LOGIC;--转换开始信号OE:OUTSTD_LOGIC;--数据输出3态控制信号ADDA:OUTSTD_LOGIC;--信号通道最低位控制信号LOCK0:OUTSTD_LOGIC;--观察数据锁存时钟Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--8位数据输出ENDADCINT;ARCHITECTUREbehavOFADCINTISTYPEstatesIS(st0,st1,st2,st3,st4);--定义各状态子类型
SIGNALcurrent_state,next_state:states:=st0;SIGNALREGL :STD_LOGIC_VECTOR(7DOWNTO0);SIGNALLOCK :STD_LOGIC;--转换后数据输出锁存时钟信号接下页
BEGINADDA<='1';--当ADDA<='0',模拟信号进入通道IN0;当ADDA<='1',则进入通道IN1Q<=REGL;LOCK0<=LOCK;
COM:PROCESS(current_state,EOC)BEGIN--规定各状态转换方式
CASEcurrent_stateISWHENst0=>ALE<='0';START<='0';LOCK<='0';OE<='0';next_state<=st1;--0809初始化
WHENst1=>ALE<='1';START<='1';LOCK<='0';OE<='0';Next_state<=st2;--启动采样
WHENst2=>ALE<='0';START<='0';LOCK<='0';OE<='0';IF(EOC='1')THENnext_state<=st3;--EOC=1表明转换结束
ELSEnext_state<=st2;ENDIF;--转换未结束,继续等待
WHENst3=>ALE<='0';START<='0';LOCK<='0';OE<='1';Next_state<=st4;--开启OE,输出转换好的数据
WHENst4=>ALE<='0';START<='0';LOCK<='1';OE<='1';next_state<=st0;WHENOTHERS=>next_state<=st0;ENDCASE;ENDPROCESSCOM;REG:PROCESS(CLK)BEGINIF(CLK'EVENTANDCLK='1')THENcurrent_state<=next_state;ENDIF;ENDPROCESSREG;--由信号current_state将当前状态值带出此进程REGLATCH1:PROCESS(LOCK)--此辅助进程中,在LOCK的上升沿将转换好的数据锁入
BEGINIFLOCK='1'ANDLOCK'EVENTTHENREGL<=D;ENDIF;ENDPROCESSLATCH1;ENDbehav;
6.2Moore型有限状态机设计
6.2.1多进程有限状态机
图6-7ADC0809采样状态机工作时序6.2Moore型有限状态机设计
6.2.1多进程有限状态机
【例6-3】
例6-2中组合进程的拆分COM1:PROCESS(current_state,EOC)
--确定状态转换方式BEGIN
CASEcurrent_stateISWHENst0=>next_state<=st1;WHENst1=>next_state<=st2;WHENst2=>IF(EOC='1')THENnext_state<=st3; ELSEnext_state<=st2;ENDIF;WHENst3=>next_state<=st4;--开启OEWHENst4=>next_state<=st0;WHENOTHERS=>next_state<=st0;ENDCASE;ENDPROCESSCOM1;COM2:PROCESS(current_state)
--状态译码BEGIN
CASEcurrent_stateISWHENst0=>ALE<='0';START<='0';LOCK<='0';OE<='0';WHENst1=>ALE<='1';START<='1';LOCK<='0';OE<='0';WHENst2=>ALE<='0';START<='0';LOCK<='0';OE<='0';WHENst3=>ALE<='0';START<='0';LOCK<='0';OE<='1';WHENst4=>ALE<='0';START<='0';LOCK<='1';OE<='1';WHENOTHERS=>ALE<='0';START<='0';LOCK<='0';ENDCASE;ENDPROCESSCOM2;
6.2.2单进程Moore型有限状态机
【例6-4】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMOORE1ISPORT(DATAIN:INSTD_LOGIC_VECTOR(1DOWNTO0);
CLK,RST:INSTD_LOGIC;
Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDMOORE1;ARCHITECTUREbehavOFMOORE1ISTYPEST_TYPEIS(ST0,ST1,ST2,ST3,ST4);SIGNALC_ST:ST_TYPE;
BEGIN
PROCESS(CLK,RST)
--混合进程(组合+时序)BEGINIFRST='1'THENC_ST<=ST0;Q<="0000";ELSIFCLK'EVENTANDCLK='1'THENCASEC_STISWHENST0=>IFDATAIN="10"THENC_ST<=ST1;
ELSEC_ST<=ST0;ENDIF;
Q<="1001";WHENST1=>IFDATAIN="11"THENC_ST<=ST2;
ELSEC_ST<=ST1;ENDIF;
Q<="0101";WHENST2=>IFDATAIN="01"THENC_ST<=ST3;
ELSEC_ST<=ST0;ENDIF;
Q<="1100";WHENST3=>IFDATAIN="00"THENC_ST<=ST4;
ELSEC_ST<=ST2;ENDIF;
Q<="0010";WHENST4=>IFDATAIN="11"THENC_ST<=ST0;
ELSEC_ST<=ST3;ENDIF;
Q<="1001";WHENOTHERS=>C_ST<=ST0;ENDCASE;ENDIF;ENDPROCESS;ENDbehav;
例6-4单进程状态机状态转移图
6.2.2单进程Moore型有限状态机
st0/1001st1/0101st2/1100st3/0010st4/100110110100Not10Not11Not01Not00Not11116.2.2单进程Moore型有限状态机
优点:输出经锁存(状态机外加锁存器),由时序器件同步输出,避免冒险现象,无毛刺;缺点:输出滞后一个时钟周期。6.2Moore型有限状态机设计
图6-9对应于例6-4的二进程状态机工作时序图
例6-4中二进程Moore型有限状态机
缺点:输出由组合电路产生,未经锁存,可能有毛刺;优点:输出不滞后交通灯控制器设计由分频模块获得1秒钟信号SEC06.3Mealy型有限状态机设计
6.3Mealy型有限状态机设计
【例6-5】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMEALY1ISPORT(CLK,DATAIN,RESET:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(4DOWNTO0));ENDMEALY1;ARCHITECTUREbehavOFMEALY1ISTYPEstatesIS(st0,st1,st2,st3,st4);SIGNALSTX:states;BEGINCOMREG:PROCESS(CLK,RESET)BEGIN--决定转换状态的进程
IFRESET='1'THENSTX<=ST0;ELSIFCLK'EVENTANDCLK='1'THENCASESTXISWHENst0=>IFDATAIN='1'THENSTX<=st1;ENDIF;WHENst1=>IFDATAIN='0'THENSTX<=st2;ENDIF;WHENst2=>IFDATAIN='1'THENSTX<=st3;ENDIF;WHENst3=>IFDATAIN='0'THENSTX<=st4;ENDIF;WHENst4=>IFDATAIN='1'THENSTX<=st0;ENDIF;WHENOTHERS=>STX<=st0;(接下页)6.3Mealy型有限状态机设计
ENDCASE;ENDIF;ENDPROCESSCOMREG;COM1:PROCESS(STX,DATAIN)BEGIN--输出控制信号的进程
CASESTXISWHENst0=>IFDATAIN='1'THENQ<="10000";ELSEQ<="01010";ENDIF;WHENst1=>IFDATAIN='0'THENQ<="10111";ELSEQ<="10100";ENDIF;WHENst2=>IFDATAIN='1'THENQ<="10101";ELSEQ<="10011";ENDIF;WHENst3=>IFDATAIN='0'THENQ<="11011";ELSEQ<="01001";ENDIF;WHENst4=>IFDATAIN='1'THENQ<="11101";ELSEQ<="01101";ENDIF;WHENOTHERS=>Q<="00000";ENDCASE;ENDPROCESSCOM1;ENDbehav;6.3Mealy型有限状态机设计
图6-10例6-5状态机工作时序图6.3Mealy型有限状态机设计
【例6-6】LIBRARYIEEE;--MEALYFSMUSEIEEE.STD_LOGIC_1164.ALL;ENTITYMEALY2ISPORT(CLK,DATAIN,RESET:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(4DOWNTO0));ENDMEALY2;ARCHITECTUREbehavOFMEALY2ISTYPEstatesIS(st0,st1,st2,st3,st4);SIGNALSTX:states;SIGNALQ1:STD_LOGIC_VECTOR(4DOWNTO0);BEGINCOMREG:PROCESS(CLK,RESET)--决定转换状态的进程
BEGINIFRESET='1'THENSTX<=ST0;ELSIFCLK'EVENTANDCLK='1'THENCASESTXISWHENst0=>IFDATAIN='1'THENSTX<=st1;ENDIF;WHENst1=>IFDATAIN='0'THENSTX<=st2;ENDIF;WHENst2=>IFDATAIN='1'THENSTX<=st3;ENDIF;WHENst3=>IFDATAIN='0'THENSTX<=st4;ENDIF;WHENst4=>IFDATAIN='1'THENSTX<=st0;ENDIF;WHENOTHERS=>STX<=st0;ENDCASE;ENDIF;ENDPROCESSCOMREG;COM1:PROCESS(STX,DATAIN,CLK)--输出控制信号的进程
VARIABLEQ2:STD_LOGIC_VECTOR(4DOWNTO0);BEGINCASESTXISWHENst0=>IFDATAIN='1'THENQ2:="10000";ELSEQ2:="01010";ENDIF;WHENst1=>IFDATAIN='0'THENQ2:="10111";ELSEQ2:="10100";ENDIF;WHENst2=>IFDATAIN='1'THENQ2:="10101";ELSEQ2:="10011";ENDIF;WHENst3=>IFDATAIN='0'THENQ2:="11011";ELSEQ2:="01001";ENDIF;WHENst4=>IFDATAIN='1'THENQ2:="11101";ELSEQ2:="01101";ENDIF;WHENOTHERS=>Q2:="00000";ENDCASE;IFCLK'EVENTANDCLK='1'THENQ1<=Q2;ENDIF;ENDPROCESSCOM1;Q<=Q1;ENDbehav;
6.3Mealy型有限状态机设计
图6-11例6-6状态机工作时序图
6.4状态编码
6.4.1状态位直接输出型编码START=current_state(4);ALE=current_state(3);OE=current_state(2);LOCK=current_state(1);
状态状态编码STARTALEOELOCKB功能说明ST000000初始态ST111000启动转换ST200001若测得EOC=1时,转下一状态ST3ST300100输出转换好的数据ST400110利用LOCK的上升沿将转换好的数据锁存表6-1控制信号状态编码表
6.4状态编码
6.4.1状态位直接输出型编码【例6-7】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYAD0809IS...PORT(D:INSTD_LOGIC_VECTOR(7DOWNTO0);CLK,EOC:INSTD_LOGIC;ALE,START,OE,ADDA:OUTSTD_LOGIC;c_state:OUTSTD_LOGIC_VECTOR(4DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDAD0809;ARCHITECTUREbehavOFAD0809ISSIGNALcurrent_state,next_state:STD_LOGIC_VECTOR(4DOWNTO0);CONSTANTst0:STD_LOGIC_VECTOR(4DOWNTO0):="00000";CONSTANTst1:STD_LOGIC_VECTOR(4DOWNTO0):="11000";CONSTANTst2:STD_LOGIC_VECTOR(4DOWNTO0):="00001";CONSTANTst3:STD_LOGIC_VECTOR(4DOWNTO0):="00100";CONSTANTst4:STD_LOGIC_VECTOR(4DOWNTO0):="00110";SIGNALREGL:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALLOCK:STD_LOGIC;BEGINADDA<='1';Q<=REGL;START<=current_state(4);ALE<=current_state(3);OE<=current_state(2);LOCK<=current_state(1);c_state<=current_state;COM:PROCESS(current_state,EOC)BEGIN--规定各状态转换方式
CASEcurrent_stateISWHENst0=>next_state<=st1;--0809初始化
WHENst1=>next_state<=st2;--启动采样
WHENst2=>IF(EOC='1')THENnext_state<=st3;--EOC=1表明转换结束
ELSEnext_state<=st2;--转换未结束,继续等待
ENDIF;WHENst3=>next_state<=st4;--开启OE,输出转换好的数据
WHENst4=>next_state<=st0;WHENOTHERS=>next_state<=st0;ENDCASE;ENDPROCESSCOM;REG:PROCESS(CLK)BEGINIF(CLK'EVENTANDCLK='1')THENcurrent_state<=next_state;ENDIF;ENDPROCESSREG;--由信号current_state将当前状态值带出此进程:REGLATCH1:PROCESS(LOCK)--此进程中,在LOCK的上升沿,将转换好的数据锁入
BEGINIFLOCK='1'ANDLOCK'EVENTTHENREGL<=D;ENDIF;ENDPROCESSLATCH1;ENDbehav;6.4状态编码
6.4.1状态位直接输出型编码图6-12例6-7状态机工作时序图6.4状态编码
6.4.2顺序编码
表6-2编码方式
状态顺序编码一位热码编码STATE0000100000STATE1001010000STATE2010001000STATE3011000100STATE4100000010STATE51010000016.4状态编码
6.4.2顺序编码
【例6-8】SIGNALCRURRENT_STATE,NEXT_STATE:STD_LOGIC_VECTOR(2DOWNTO0);CONSTANTST0:STD_LOGIC_VECTOR(2DOWNTO0):="000";CONSTANTST1:STD_LOGIC_VECTOR(2DOWNTO0):="001";CONSTANTST2:STD_LOGIC_VECTOR(2DOWNTO0):="010";CONSTANTST3:STD_LOGIC_VECTOR(2DOWNTO0):="011";CONSTANTST4:STD_LOGIC_VECTOR(2DOWNTO0):="100";6.4状态编码
6.4.3一位热码编码图6-13一位热码编码方式选择对话框6.5非法状态处理
表6-3剩余状态状态
st0
St1
St2
St3
St4
st_ilg1
st_ilg2st_ilg3顺序编码
000
001
010011
100
101
110
111
WHENst_ilg1=>next_state<=st0;WHENst_ilg2=>next_state<=st0;6.5非法状态处理
【例6-9】TYPEstatesIS(st0,st1,st2,st3,st4,st_ilg1,st_ilg2,st_ilg3);SIGNALcurrent_state,next_state:states;...COM:PROCESS(current_state,state_Inputs)--组合逻辑进程BEGINCASEcurrent_stateIS--确定当前状态的状态值
...WHENOTHERS=>next_state<=st0;ENDcase;
6.5非法状态处理
【例6-10】alarm<=(st0AND(st1ORst2ORst3ORst4ORst5))OR(st1AND(st0ORst2ORst3ORst4ORst5))OR(st2AND(st0ORst1ORst3ORst4ORst5))OR(st3AND(st0ORst1ORst2ORst4ORst5))OR(st4AND(st0ORst1ORst2ORst3ORst5))OR(st5AND(st0ORst1ORst2ORst3ORst4));习题
6-1.
仿照例6-1,将例6-4用两个进程,即一个时序进程,一个组合进程表达出来。6-2.
为确保例6-5的状态机输出信号没有毛刺,试用例6-4的方式构成一个单进程状态,使输出信号得到可靠锁存,在相同输入信号条件下,给出两程序的仿真波形。6-3.
序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。例6-11描述的电路完成对序列数“11100101”的检测,当这一串序列数高位在前(左移)串行进入检测器后,若此数与预置的密码数相同,则输出“A”,否则仍然输出“B”。习题
【例6-11】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSCHKISPORT(DIN,CLK,CLR:INSTD_LOGIC;--串行输入数据位/工作时钟/复位信号
AB:OUTSTD_LOGIC_VECTOR(3DOWNTO0));--检测结果输出ENDSCHK;ARCHITECTUREbehavOFSCHKISSIGNALQ:INTEGERRANGE0TO8;SIGNALD:STD_LOGIC_VECTOR(7DOWNTO0);--8位待检测预置数(密码=E5H)BEGIND<="11100101";--8位待检测预置数
PROCESS(CLK,CLR)BEGINIFCLR='1'THENQ<=0;ELSIFCLK'EVENTANDCLK='1'THEN--时钟到来时,判断并处理当前输入的位
CASEQISWHEN0=>IFDIN=D(7)THENQ<=1;ELSEQ<=0;ENDIF;WHEN1=>IFDIN=D(6)THENQ<=2;ELSEQ<=0;ENDIF;WHEN2=>IFDIN=D(5)THENQ<=3;ELSEQ<=0;ENDIF;WHEN3=>IFDIN=D(4)THENQ<=4;ELSEQ<=0;ENDIF;WHEN4=>IFDIN=D(3)THENQ<=5;ELSEQ<=0;ENDIF;WHEN5=>IFDIN=D(2)THENQ<=6;ELSEQ<=0;ENDIF;WHEN6=>IFDIN=D(1)THENQ<=7;ELSEQ<=0;ENDIF;WHEN7=>IFDIN=D(0)THENQ<=8;ELSEQ<=0;ENDIF;WHENOTHERS=>Q<=0;ENDCASE;ENDIF;ENDPROCESS;PROCESS(Q)--检测结果判断输出
BEGINIFQ=8THENAB<="1010";--序列数检测正确,输出“A”ELSEAB<="1011";--序列数检测错误,输出“B”ENDIF;ENDPROCESS;ENDbehav;
习题
6-4.
根据图6-14(a)所示的状态图,分别按照图6-14(b)和图6-14(c)写出对应结构的VHDL状态机。图6-14习题6-4状态图习题
6-5.
在不改变原代码功能的条件下用两种方法改写例6-2,使其输出的控制信号(ALE、START、OE、LOCK)没有毛刺。方法1:将输出信号锁存后输出;方法2:使用状态码直接输出型状态机,并比较这三种状态机的特点。实验与实践
6-1.
序列检测器设计
6-2.ADC0809采样控制电路实现6-3.
基于0809的数据采集电路和简易存储示波器设计
实验与实践
图6-15ADC0809采样电路系统:RSV.bdf
实验与实践
【例6-12】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10BISPORT(LOCK0,CLR:INSTD_LOGIC;CLK:INSTD_LOGIC;WE:INSTD_LOGIC;DOUT:OUTSTD_LOGIC_VECTOR(8DOWNTO0);CLKOUT:OUTSTD_LOGIC);ENDCNT10B;ARCHITECTUREbehavOFCNT10BISSIGNALCQI:STD_LOGIC_VECTOR(8DOWNTO0);SIGNALCLK0:STD_LOGIC;BEGINCLK0<=LOCK0WHENWE='1'ELSECLK;PROCESS(CLK0,CLR,CQI)BEGINIFCLR='1'THENCQI<="000000000";ELSIFCLK0'EVENTANDCLK0='1'THENCQI<=CQI+1;ENDIF;ENDPROCESS;DOUT<=CQI;CLKOUT<=CLK0;ENDbehav;
实验与实践
6-4.
基于5510/5651的数字存储示波器设计图6-16存储示波器结构简图实验与实践
6-4.
基于5510/5651的数字存储示波器设计图6-17TLC5510引脚图
实验与实践
6-4.
基于5510/5651的数字存储示波器设计图6-18TLC5510采样时序图实验与实践
6-5.VGA彩条信号显示控制器设计
图6-19VGA行扫描、场扫描时序示意图
实验与实践
6-5.VGA彩条信号显示控制器设计
表6-4行扫描时序要求:(单位:像素,即输出一个像素Pixel的时间间隔)行同步头行图像行周期对应位置TfTaTbTcTdTeTg时间(Pixels)8964086408800实验与实践
6-5.VGA彩条信号显示控制器设计
表6-5场扫描时序要求:(单元:行,即输出一行Line的时间间隔)
对应位置TfTaTbTcTdTeTg时间(Lines)222584808525行同步头行图像行周期实验与实践
6-5.VGA彩条信号显示控制器设计
图6-20HS和VS的时序图
实验与实践
6-5.VGA彩条信号显示控制器设计
图6-20HS和VS的时序图
实验与实践
6-5.VGA彩条信号显示控制器设计
表6-6颜色编码颜色黑蓝红品绿青黄白R00001111G00110011B01010101实验与实践
6-5.VGA彩条信号显示控制器设计
【例6-13】LIBRARYIEEE;--VGA显示器彩条发生器USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCOLORISPORT(CLK,MD:INSTD_LOGIC;HS,VS,R,G,B:OUTSTD_LOGIC);--行场同步/红,绿,兰ENDCOLOR;ARCHITECTUREbehavOFCOLORISSIGNALHS1,VS1,FCLK,CCLK:STD_LOGIC;SIGNALMMD:STD_LOGIC_VECTOR(1DOWNTO0);--方式选择
SIGNALFS:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALCC:STD_LOGIC_VECTOR(4DOWNTO0);--行同步/横彩条生成
SIGNALLL:STD_LOGIC_VECTOR(8DOWNTO0);--场同步/竖彩条生成
SIGNALGRBX:STD_LOGIC_VECTOR(3DOWNTO1);--X横彩条
SIGNALGRBY:STD_LOGIC_VECTOR(3DOWNTO1);--Y竖彩条
SIGNALGRBP:STD_LOGIC_VECTOR(3DOWNTO1);SIGNALGRB:STD_LOGIC_VECTOR(3DOWNTO1);BEGINGRB(2)<=(GRBP(2)XORMD)ANDHS1ANDVS1;GRB(3)<=(GRBP(3)XORMD)ANDHS1ANDVS1;GRB(1)<=(GRBP(1)XORMD)ANDHS1ANDVS1;PROCESS(MD)(接下页)
实验与实践
6-5.VGA彩条信号显示控制器设计
BEGINIFMD'EVENTANDMD='0'THENIFMMD="10"THENMMD<="00";ELSEMMD<=MMD+1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJF 2388-2026水声材料声学性能参数测量系统(自由场法)校准规范
- 低压电器及元件装配工安全生产基础知识竞赛考核试卷含答案
- 电器附件零部件制造工岗前实践理论考核试卷含答案
- 炭极生产工发展趋势知识考核试卷含答案
- 煤调湿工安全操作强化考核试卷含答案
- 2026年火锅蘸料原料供应协议
- 会计实训技能试题及答案
- 《传播学概论》教学大纲
- 2026年长期护理保险失能评估与待遇支付题库
- 2026年清廉机关建设标准知识测试
- 第8课避险逃生的方法教学设计人教版初中体育与健康八年级全一册
- 退役军人事务员培训课件
- 雨课堂在线学堂《文献管理与信息分析》课后作业单元考核答案
- django基于机器学习的电商评论情感分析-论文14000字
- 老年人健康体检流程及指导方案
- 文献检索与利用(信息素养的修炼之路)(贵州理工学院)知到智慧树网课答案
- 高一数学竞赛历年真题及解析
- 射频消融过程中温度控制与能量控制机制
- 建筑工伤预防知识培训课件
- 实施指南(2025)《HG-T4282-2011塑料焊接试样拉伸检测方法》
- T-BDCA 0003-2025 卸妆油卸妆能力评价指南
评论
0/150
提交评论