电子设计自动化技术(EDA)_第1页
电子设计自动化技术(EDA)_第2页
电子设计自动化技术(EDA)_第3页
电子设计自动化技术(EDA)_第4页
电子设计自动化技术(EDA)_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、技术与应用 数字系统中状态机的设计回忆计数器设计设计一电路,包含基4计数器,和译码输出模块。计数器的输出(Present_value)从0到3循环;当计数值为2时,译码输出(DataOut)为“1”,否则输出“0”。Regs1ClkPresent_valueQ(n)Next_valueQ(n+1) 译码DataOutZ(n)Regs1ClkPresent_valueQ(n)Next_valueQ(n+1) 译码DataOutZ(n)00/001/010/111/0Regs/-1ClkPresent_valueQ(n)Next_valueQ(n+1) 译码DataOutZ(n)00/001/01

2、0/111/0扩展一个输入端din,当din = 1时计数器递增计数;当din = 0时计数器递减计数。dinDin = 1Din = 1Din = 1Din = 1Din = 0Din = 0Din = 0Din = 0Regs/-1ClkPresent_valueQ(n)Next_valueQ(n+1) 译码DataOutZ(n)再将计数器修改成一个状态转换器,状态为S0, S1, S2, S3。每个状态的取值根据具体情况而定。比如S0 = 00, S1 = 11, S3 = 01, S4 = 10。dinDin = 1Din = 1Din = 1Din = 100/001/010/111

3、/0Din = 0Din = 0Din = 0Din = 0Regs译码ClkPresent_valueQ(n)Next_valueQ(n+1) 译码DataOutZ(n)再将计数器修改成一个状态转换器,状态为S0, S1, S2, S3。每个状态的取值根据具体情况而定。比如S0 = 00, S1 = 11, S3 = 01, S4 = 10。dinDin = 1Din = 1Din = 1Din = 1S0/0S1/0S2/1S3/0Din = 0Din = 0Din = 0Din = 0Regs译码ClkPresent_stateQ(n)Next_stateQ(n+1) 译码DataOut

4、Z(n)dinDin = 1Din = 1Din = 1Din = 1S0/0S1/0S2/1S3/0Din = 0Din = 0Din = 0Din = 0现在我们得到了一个比较通用的时序电路,这种电路统称为状态机(State Machine)。状态机的分类: NS组合逻辑电路 CS 寄存器 OL组合逻辑电路DIN CP RDMoore状态机内部结构图DOUTDOUT NS组合逻辑电路 CS 寄存器 OL组合逻辑电路DIN CP RDMealy状态机的内部结构图moore型和mealy型状态机的表示方法1方法一:状态转换表输入当前状态下一状态输出0000001010000000状态机的表示方

5、法2方法二:算法流程图 方法与软件程序的流程图类似状态转换表和算法流程图都不适合复杂系统的设计状态机的表示方法3方法三:状态转换图这是最流行的表示方法状态1状态4状态2状态3入/出入入入/出/出/出Moore条件控制定序直接控制定序状态机的表示方法3方法三:状态转换图这是最流行的表示方法状态1状态4状态2状态3入/出入入入/出/出/出/出Mealy条件控制定序直接控制定序为什么要使用状态机一般有限状态机的设计 有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。 状态机的结构模式相对简单。 状态机容易构成性能良好的同步时序逻辑模块。 状态机的VHDL表述丰富多样。 在高速运算和控制方面,状

6、态机更有其巨大的优势。 就可靠性而言,状态机的优势也是十分明显的。有限状态机的VHDL设计用户自定义数据类型定义语句TYPE语句用法如下:TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型 ;或TYPE 数据类型名 IS 数据类型定义 ;以下列出了两种不同的定义方式:TYPE myarray IS ARRAY ( 0 TO 15 ) OF STD_LOGIC ;TYPE week IS (sun,mon,tue,wed,thu,fri,sat) ;有限状态机的VHDL设计用户自定义数据类型定义语句TYPE m_state IS ( st0,st1,st2,st3,st4,st5 )

7、;SIGNAL present_state,next_state : m_state ;一般有限状态机的设计实现有限状态机的VHDL设计1. 说明部分2. 主控时序进程一般状态机结构框图工作示意图ARCHITECTURE .IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST; . 主控时序进程主控组合进程3. 主控组合进程一般有限状态机的设计实现 主控组合进程的任务是根据外部输入的控制信号(包括来自状态机外部的信号和来自状态机内部其它非主控的组合或时序进程的信号),或(和)当前状态的状态值确定下一状

8、态(next_state)的取向,即next_state的取值内容,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内容。4. 辅助进程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 I

9、S 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=s0; ELSE next_state comb_outputs= 8; IF state_input

10、s = 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;接上页思考:moore?ormealy?状态机的工作时序图一般有限状态机的设计状态机的应用设计例子:设计一个二进

11、制序列检测器,当检测到10110序列时,就输出1(一个时钟周期的脉冲)。其他情况下输出0。 规定检测到一次之后,检测器复位到最初始的状态,重新从头检测。如下所示:输入:01101101101100输出:1000001状态转换图设计(Moore)10110S0/0S1/0S2/0S3/0S4/0S5/1Reset11001101001010110s1s2s3s4s5s0问题1:如何保证状态机在初始时状态为s0?问题2:在状态机跑飞,即脱离有效状态(s0s5)时,如何使状态机能恢复工作Sx/0波形波形如下图所示问题:如果需要将输出脉冲往前推一个时钟周期,该如何修改设计?1011010110s1s2

12、s3s4s5s0输入时钟输出当前状态 发现当当前壮态为s4,并且输入为0时,输出为1。状态转换图设计(Mealy)S0S1S2S3S4S5Reset100110100101sX/0/0/0/0/0/0/0/0/0/1/0/01011010110s1s2s3s4s5s0/00/1s0练习:用状态机设计序列检测器()在通信系统中可以有什么用途?用VHDL设计状态机 AD574A采样控制状态机 VHDL综合器易于优化 易构成性能良好的时序逻辑模块 结构模式简单、层次分明、易读易懂、易排错 运行模式类似于CPU,易于进行顺序控制 利用同步时序和全局时钟线可实现高速FSM 高可靠性,非法状态易控制 为什

13、么要使用状态机?AD574控制方法现在我们来讨论AD574A 的CE、12/n8、nCS、R/nC和A0 对其工作状态的控制过程。在CE=1、nCS=0 同时满足时,AD574A 才会正常工作,在AD574 处于工作状态时,当R/nC=0 时A/D 转换,当R/nC=1 时进行数据读出。12/n8和A0 端用来控制启动转换的方式和数据输出格式。A0=0时,启动的是按完整12 位数据方式进行的。当A0=1 时,按8 位A/D 转换方式进行。当R/nC=1,也即当AD574A 处于数据状态时,A0 和12/n8控制数据输出状态的格式。当12/n8=1 时,数据以12 位并行输出,当12/n8=0

14、时,数据以8 位分两次输出。而当A0=0 时,输出转换数据的高8 位,A0=1 时输出A/D 转换数据的低4 位,这四位占一个字节的高半字节,低半字节补零。其控制逻辑真值表见表1。Moore型有限状态机的设计三进程有限状态机CE nCS R/nC 12/n8 A0工 作 状 态0XXXX禁止X1XXX禁止100X0启动12位转换100X1启动8位转换1011X12位并行输出有效10100高8位并行输出有效10101低4位加上尾随4个0有效AD574逻辑控制真值表(X表示任意)三进程有限状态机AD574工作时序 STATUS:AD574芯片的一个输出引脚,标志芯片的忙或闲的状态,在转换进行时,它

15、为高电平,转换结束时变低电平。8051与AD574的接口电路三进程有限状态机AD574工作时序三进程有限状态机 采样状态机结构框图LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY AD574 IS PORT (D :IN STD_LOGIC_VECTOR(11 DOWNTO 0); CLK ,STATUS : IN STD_LOGIC;-状态机时钟CLK,AD574状态信号STATUS LOCK0 : OUT STD_LOGIC; -内部锁存信号LOCK的测试信号 CS,A0,RC,K12X8 : OUT STD_LOGIC; -AD574控制

16、信号 Q : OUT STD_LOGIC_VECTOR(11 DOWNTO 0); -锁存数据输出END AD574;ARCHITECTURE behav OF AD574 ISTYPE states IS (st0, st1, st2, st3,st4); SIGNAL current_state, next_state: states :=st0 ; SIGNAL REGL : STD_LOGIC_VECTOR(11 DOWNTO 0); SIGNAL LOCK : STD_LOGIC; BEGIN K12X8 = 1; LOCK0 next_state next_state IF (ST

17、ATUS=1) THEN next_state = st2; ELSE next_state next_state next_state next_state CS=1; A0=1;RC=1;LOCK CS=0; A0=0;RC=0;LOCK CS=0; A0=0;RC=0;LOCK CS=0; A0=0;RC=1;LOCK CS=0; A0=0;RC=1;LOCKCS=1; A0=1;RC=1;LOCK=0;-其它情况返回初始态 接下页接上页END CASE ; END PROCESS COM2 ; REG: PROCESS (CLK) - 时序进程 BEGIN IF ( CLKEVENT

18、AND CLK=1) THEN current_state = next_state; END IF; END PROCESS REG; LATCH1 : PROCESS (LOCK) - 数据锁存器进程 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL = D ; END IF; END PROCESS ; Q = REGL; END behav;接上页三进程有限状态机AD574采样状态机工作时序单进程Moore型有限状态机LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MOORE1 IS PORT (DATAIN

19、 :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 = ST0 ; Q IF DATAIN =10 THEN C_ST = ST1 ; ELSE

20、 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; Q C_ST = ST0; END CASE; END IF; END PROCES

21、S;END behav;接上页状态机综合后的RTL电路模块图单进程Moore型有限状态机单进程Moore型有限状态机单进程状态机工作时序单进程Moore型有限状态机2进程状态机工作时序图Mealy型有限状态机的设计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 behav OF MEALY1 IS TYPE states IS

22、 (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 DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX STX IF DATAIN = 1 THEN Q = 10000 ; ELSE Q IF DATAIN = 0 THEN Q =

23、 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;接上页上例状态机工作时序图MEALY2: LIBRARY IEEE; -MEALY FSMUSE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY2 IS PORT ( CLK ,DATAIN,RESET : IN ST

24、D_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 : 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 =

25、 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 := 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 D

26、ATAIN = 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 AND CLK = 1 THEN Q1=Q2; END IF; END PROCESS COM1 ; Q next_state next_state IF (STATUS=1) THEN next_state = st2; ELSE next_st

27、ate next_state next_state next_state = st0; END CASE ; OUT4 = current_state(4 DOWNTO 1); END PROCESS COM1 ; REG: PROCESS (CLK) - 时序进程 BEGIN IF ( CLKEVENT AND CLK=1) THEN current_state = next_state; END IF; END PROCESS REG; LK = current_state(1) ; LATCH1 : PROCESS ( LK ) - 数据锁存器进程 BEGIN IF LK=1 AND L

28、KEVENT THEN REGL = D ; 接下页END IF; END PROCESS ; Q next_state next_state next_state next_state = st0; END case;.alarm if(inx=1) then state= B; elsif(inx=1) then state if(inx=1) then state= C; elsif(inx=0) then state if(inx=1) then state= C; elsif(inx=0) then state= A; end if;END CASE; end if; end pro

29、cess;One-hot Encoding(1)architecture one of statemachine2 is constant A :std_logic_vector(2 downto 0) := 001; constant B :std_logic_vector(2 downto 0) := 010; constant C :std_logic_vector(2 downto 0) := 100; signal state : std_logic_vector( 2 downto 0);begin process(clk) begin if(reset = 0) then sta

30、te if(inx=1) then state= B; elsif(inx=0) then state if(inx=1) then state= C; elsif(inx=0) then state if(inx=1) then state= C; elsif(inx=0) then state= A; end if; END CASE; end if; end process; end one;One-hot Encoding(2-1) process(inx , iState) variable iNext_State :std_logic_vector ( 2 downto 0); begin iNext_State := 000; if(istate (0)=1) then if(inx=1) then iNext_State(1) := 1; elsif(inx=0) then iNext_State(0) := 1; end if; elsif(istate (1)=1)then if(inx=1) then iNext_State(2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论