设计一个的序列检测器完整版
EDA实验报告实验三、序列检测器的设计

实验三、序列检测器的设计一、预习内容1、预习序列发生器和检测器的基本工作原理;2、画出实验原理草图;3、写出实验的基本步骤和源程序。
二、实验目的1、掌握序列检测器的工作原理;2、学会用状态机进行数字系统设计。
三、实验器材PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干四、实验要求1、检测连续4个‘1’的状态机,画出状态转移图,并写出VHD代码;(必做部分)2、了解试验箱,完成数据分配器的硬件实验。
(实验一的硬件操作,首次使用请谨慎使用试验箱!)3、检测“10001110”序列,当检测到该序列后输出为‘1’。
(此部分选作)五、实验原理和实验内容1、序列发生器原理(此部分选作)在数字信号的传输和数字系统的测试中,有时需要用到一组特定的串行数字信号,产生序列信号的电路称为序列信号发生器。
本实验要求产生一串序列“10001110”。
该电路可由计数器与数据选择器构成,其结构图如图6-1所示,其中的锁存输出的功能是为了消除序列产生时可能出现的毛刺现象:图6-1 序列发生器结构图2、序列检测器的基本工作过程:序列检测器用于检测一组或多组由二进制码组成的脉冲序列信号,在数字通信中有着广泛的应用。
当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。
由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置的对应码相同。
在检测过程中,任何一位不相等都将回到初始状态重新开始检测。
状态图如图6-2所示:图6-2 序列检测器状态图3、状态机的基本设计思想:在状态连续变化的数字系统设计中,采用状态机的设计思想有利于提高设计效率,增加程序的可读性,减少错误的发生几率。
同时,状态机的设计方法也是数字系统中一种最常用的设计方法。
一般来说,标准状态机可以分为摩尔(Moore)机和米立(Mealy)机两种。
EDA设计——序列检测器的设计PPT课件

EDA课程设计
设计题目:序列检测器的设计
指导老师:张广忠 张薇 组员:宋成发 克彩霞 彭亚伟
2021/3/9
授课:XXX
1
序列检测器的介绍
• 序列检测器用于检测一组或多组由二进制 组成的脉冲序列信号,在数字通信中有着广泛 的应用。当序列检测器连续收到一组串行二进 制码后,如果这组码与检测器中预先设置的8 位二进制码相同,则输出1,否则输出0。由于 这种检测器的关键在于正确码的收到必须记住 前一次的正确码及正确序列,直到在连续的检 测中所收到的每一位码都与预置的对应码相同。 在检测过程中,任何一位不相等都将导致回到 初始状态重新开始检测。
2021/3/9
授课:XXX
2
附加功能
• 本次设计中不但完成了对VHDL程序中预设的 序列检测。我们组还设计:数码显示被检测数 (十六进制);并对被检测数据(二进制)统 计其连续0的个数,规定该被检测数据中只能 有一串连0出现,即8位串行数据中0是相邻的。 否则,认为数据无效,连0计数器清0,并且给 出错误提示信号,即D8点亮,表示该被检测数 据不合法!
2021/3/9
授课:XXX
4
顶层设计原理图
2021/3/9
授课:XXX
5
Hale Waihona Puke 连续0数统计仿真图2021/3/9
授课:XXX
6
序列检测仿真图
2021/3/9
授课:XXX
7
顶层仿真图
2021/3/9
授课:XXX
8
2021/3/9
授课:XXX
9
实验三 序列信号检测器的设计

实验三序列信号检测器的设计一、实验目的:1、理解序列信号检测器的工作原理;2、掌握原理图和文本输入的混合设计输入方法;3、理解状态划分;4、掌握状态机程序的编写方法;二、实验原理:序列检测器是时序数字电路中非常常见的设计之一。
它的主要功能是:将一个指定的序列从数字码流中识别出来。
接下来的设计就是针对“011”这个序列的检测器。
设input为数字码流输入,output为检出标记输出,高电平表示“发现指定序列”,低电平表示“没有发现指定的序列”。
设输入的码流为“001101101111011111...”,在时钟2~4中,码流input里出现指定序列“011”,对应输出output在第4个时钟变为高电平“1”,表示发现指定"011”,以此类推。
序列发生器模块采用的是M(n=4)序列发生器,详细可以参考《EDA技术与应用》一书的4.4团队协作及逻辑锁定。
三、实验内容(1)最终的顶层设计原理图如下:左侧的四个D触发器组成的电路为M序列信号发生器模块,它可以产生15位随机的二进制码流。
发生器产生的二进制码流每隔15个时钟周期重复出现一次。
详细的可以在最终的时序仿真图中看出来。
右侧的get_str模块为检测模块,给予状态机的结构编写的,具体如下:library ieee;use ieee.std_logic_1164.all;entity get_ser isport(clk : in std_logic;input : in std_logic;reset : in std_logic;serout : out std_logic_vector(1 downto 0);output : out std_logic);end entity;architecture rtl of get_ser is-- Build an enumerated type for the state machine type state_type is (s0, s1, s2, s3);-- Register to hold the current statesignal state : state_type;beginserout <= ('0'&input);-- Logic to advance to the next stateprocess (clk, reset)beginif reset = '1' thenstate <= s0;elsif (rising_edge(clk)) thencase state iswhen s0=>if input = '0' thenstate <= s1;elsestate <= s0;end if;when s1=>if input = '1' thenstate <= s2;elsestate <= s1;end if;when s2=>if input = '1' thenstate <= s3;elsestate <= s1;end if;when s3 =>if input = '1' thenstate <= s0;elsestate <= s1;end if;end case;end if;end process;-- Output depends solely on the current state process (state)begincase state iswhen s0 =>output <= '0';when s1 =>output <= '0';when s2 =>output <= '0';when s3 =>output <= '1';end case;end process;end rtl;(2)理解状态机请根据上图对照get_str程序理解检测“011”序列的基本编程思路。
序列检测器实验报告

序列检测器设计实验内容:设计一个1110010序列检测器,即检测器检测到序列1110010时,输出为1,否则输出为0。
输入信号:一个时钟输入信号clk;一个输入端x以输入序列来检测;一个输入y用来选择是检测序列1110010或是检测自己输入的序列;一个输入k(7..0)用来输入想要检测器检测的序列;输出信号:一个7位输出信号q,用来输出正在检测的7位序列;一个1位输出信号unlk,当被检测序列符合时,输出unlk为1否则为0;中间信号:再定义两个7位的中间信号a和combination;执行操作:在上升的时钟沿时候,将从x输入的序列赋给7位a,在y等于1的情况下,令中间信号combination为1110010,否则,在y等于0的情况下,令中间信号combination为从k输入的七位长序列。
最后把a的值赋给q,如果a与combination输出unlk等于1否则等于0。
(1)序列检测器语言设计:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;USE IEEE.STD_LOGIC_ARITH.ALL;entity xulie2 isport (clk,x:in std_logic;y:in std_logic;k:in std_logic_vector(7 downto 1);unlk:out std_logic;q:out std_logic_vector(7 downto 1)); end xulie2;architecture art of xulie2 issignal a:std_logic_vector(7 downto 1);signal combination: std_logic_vector(7 downto 1);beginprocess(clk)beginif clk'event and clk='1' thena<=a(6 downto 1)&x;if y='1' thencombination<="1110010";else combination<=k;end if;end if;q<=a;end process;unlk<='1' when(a=combination) else '0';end art;序列检测器波形图:其中ENDTIME=10.0us GRIDSIZE=100.0ns波形图分析:如图,选择输入端y输入为1时,q对应着输出从x输入的7位序列,如果从x输入的待检测的7位序列为1110010时,unlk为1,否则为0,当选择输入端y输入为0时,q依旧对应着输出从x输入的待检测的当前7为序列,但是只有当从x输入的7为序列与从k输入的7位序列一致时,输出端unlk才为1,否则为0。
7位序列检测机设计

VHDL数字系统设计与测试实验报告(一)——有限序列检测器一、设计功能与要求1、实验要求:利用状态机原理设计一个7位序列检测器(1110010)。
2、功能分析:序列检测器一般有一个输入X和一个输出Y。
输入信号在不断变化,从而形成一个与时间相关的输入序列。
序列检测器就是当输入序列中包含特定串时,设置输出信号Y为高电平,表示检测到了特定串。
本设计中需要检测的序列是“1110010”。
二、设计思路序列检测器是一种同步时序电路,它用于搜索,检测输入的二进制代码串中是否出现指定的代码序列,1110010 序列检测器的原理图如下:CPX Y 0111010010010首先,要从一串二进制编码中检测出一个已预置的七位二进制码1110010,每增加一位相当于增加一个状态,再加上一个初始态,用八个状态可以实现。
状态机初始状态为S1;当自动机接收到一个“1”时,自动机进入S2状态;如果在S2状态接收到“1”时,自动机进入到S3状态;如果在S3状态接收到“1”时,自动机进入到S4状态;如果在S4状态接收到“0”时,自动机进入到S5状态;如果在S5状态接收到“0”时,自动机进入到S6状态;如果在S6状态接收到“1”时,自动机进入到S7状态;如果在S7状态接收到“0”时,自动机进入到S8状态;如果自动机处于S8状态,则表示接收到了一个连续的串“1110010”,此时可以设置输出信号为高电平。
其Moore型原始状态转移图如下:根据状态转移图可以得出Moore型原始状态转移表为:三、源代码library ieee;use ieee.std_logic_1164.all;entity checkerarray isport(din:in std_logic;clk,clr:in std_logic;z:buffer std_logic);end checkerarray;architecture arch_check of checkerarray is type StateType is(s1,s2,s3,s4,s5,s6,s7,s8);signal present_state,next_state:StateType; beginstate_comb:process(present_state,din)begincase present_state iswhen s1=>z<='0';if din='1'thennext_state<=s2;elsenext_state<=s1;end if;when s2=>z<='0';if din='1'thennext_state<=s3;elsenext_state<=s2;end if;when s3=>z<='0';if din='1'thennext_state<=s4;elsenext_state<=s1;end if;when s4=>z<='0';if din='1'thennext_state<=s4;elsenext_state<=s5;end if;when s5=>z<='0';if din='1'thennext_state<=s2;elsenext_state<=s6;end if;when s6=>z<='0';if din='1'thennext_state<=s7;elsenext_state<=s1;end if;when s7=>z<='0';if din='1'thennext_state<=s3;elsenext_state<=s8;end if;when s8=>z<='1';if din='1'thennext_state<=s2;elsenext_state<=s1;end if;end case;end process state_comb;state_clocked:process(clk,clr) beginif(clr='1')thenpresent_state<=s1;elsif(clk'event and clk='1')thenpresent_state<=next_state;end if;end process state_clocked;end arch_check;四、仿真结果与说明上图即为在modelsim中进行仿真的波形图像。
序列检测器设计.

基于FPGA的简要通信模块设计
指导老师:杨会平
怀化学院物理与信息工程系
设计流程框图
设计背景介绍
(第一部分)
序列检测器设计
(第二部分)
序列发生器设计
(第三部分)
通信模块实现
(第四部分)
仿真实现
(第五部பைடு நூலகம்)
怀化学院物理与信息工程系
1-1 设计背景及意义
1.
广泛应用于生活、军事、航空航天等各个领域(密 码锁、数据通信、雷达、遥感、航天控制等)。
2. 中小规模的数字集成电路构成的传统序列检测器电路
往往存在电路设计复杂、体积大、抗干扰能力差以及 设计困难、设计周期长等缺点 。
怀化学院物理与信息工程系
1-2 设计背景及意义
3. 可编程逻辑器件(FPGA、CPLD)具有集成度高、工作
速度快、可靠性高、调试方便等特点,而且设计电路 简单、体积小。
怀化学院物理与信息工程系
序列检测器设计
right 1 S5 1 0 S4 1 S3 1 S2 0 0 S1 1 1 0 1 任意序列 检测start 0 S0
序列检测器状态图
怀化学院物理与信息工程系
2 -1序列发生器VHDL程序
architecture one of fsq is signal Q:std_logic_vector(0 to 2 ); begin process(cp) begin if (cp'event and cp ='1') then if Q="111" then Q<="000"; else Q<=Q+1; end if; end if; end process; with Q select y<=D(0) when "000", D(1) when "001", D(2) when "010", D(3) when "011", D(4) when "100", D(5) when "101", D(6) when "110", D(7) when "111", null when others; end one;
11100111的序列检测器

《电子设计基础》课程报告设计题目:序列检测器学生班级:电气1101学生学号:20115122学生姓名:代涛指导教师:刘春梅时间:2013/6/28一、 设计任务用D 触发器设计一个11100111的序列检测器。
二、设计要求用D 触发器设计序列检测器。
三、 设计内容1、设计思想由课程设计的题目可知,该电路输入为序列号,所以还需一个序列发生器,输出为脉冲信号,最后安一个LED 灯来检测脉冲。
由于输入序列号为8位的,所以需要3个D 触发器。
2、设计说明该电路的元器件主要由D 触发器,与、非、或门,电源,LED 灯组成。
输入的序列号经D 触发器和门电路组成的电路输出为脉冲信号,当输入的序列号为11100111就会产生高电平,使LED 灯亮。
3、系统方案由于方便,我令A=000,B=001,C=010,D=011,E=100,F=101,G=110,H=111。
X 为输入信号,Y 为输出信号。
0/01/1状态转换图从表上可以看出状态D和I是等价状态,可以合并。
所以可以将I一行去n+1根据真值表得到输入的表达式,下面用卡诺图进行化简。
D 2 Q 1 XQ 0 Q 200 01 11 10 00011110D 2=X —Q 2Q —1Q —0+X —Q —2Q 1Q 0+XQ 2Q —1Q 0+XQ 2Q 1Q —D 1 Q 1 XQ 0 Q 2 00 01 11 100001 1110D 1=X(Q 1+Q 0)D 0Q 1 X Q 0 Q 2D0=X(Q1+Q—0)+Q2Q—1Q—0Y=XQ1Q2Q34、设计方案(1)、序列发生器为了仿真能成功,我设计了一个序列发生器。
序列信号是把一组0、1数码按一定规则顺序排列的串行信号,该序列发生器能发出11100111的序列号,为了测试我连了个LED灯,当出现高电平时灯亮。
序列发生器发出的序列波形仿真(2)、序列检测器序列检测器是一种能够检测输入的一串二进制编码,当该二进制码与事先设定的码一致时,检测电路输出高电平,否则输出低电平。
EDA序列检测器设计

8-1 序列检测器设计一、实验目的:用状态机实现序列检测器的设计,了解一般状态机的设计。
二、实验原理:序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设计的码相同,则输出1,否则输出0。
由于这种检测的关键在于正确码的收到必须是连续的,这就要检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。
在检测过程中任何一位不相等都将回到初始状态重新开始检测。
三、实验程序:实验一LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK ISPORT(DIN,CLK,CLR:IN STD_LOGIC;AB:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) ;END SCHK;ARCHITECTURE behav OF SCHK ISSIGNAL Q:INTEGER RANGE 0 TO 8;SIGNAL D:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIND<="11100101";PROCESS(CLK,CLR)BEGINIF CLR='1' THEN Q<=0;ELSIF CLK'EVENT AND CLK='1' THENCASE Q ISWHEN 0=> IF DIN=D(7)THEN Q<=1;ELSE Q<=0;END IF;WHEN 1=> IF DIN=D(6)THEN Q<=2;ELSE Q<=0;END IF;WHEN 2=> IF DIN=D(5)THEN Q<=3;ELSE Q<=0;END IF;WHEN 3=> IF DIN=D(4)THEN Q<=4;ELSE Q<=0;END IF;WHEN 4=> IF DIN=D(3)THEN Q<=5;ELSE Q<=0;END IF;WHEN 5=> IF DIN=D(2)THEN Q<=6;ELSE Q<=0;END IF;WHEN 6=> IF DIN=D(1)THEN Q<=7;ELSE Q<=0;END IF;WHEN 7=> IF DIN=D(0)THEN Q<=8;ELSE Q<=0;END IF;WHEN OTHERS=> Q<=0;END CASE;END IF;END PROCESS;PROCESS(Q)BEGINIF Q=8 THEN AB<="1010";ELSE AB<="1011";END IF;END PROCESS;END behav;实验二LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK1 ISPORT( CLK,CLR : IN STD_LOGIC;DIN : IN STD_LOGIC;AB : OUT INTEGER RANGE 0 TO 15 ); END SCHK1;ARCHITECTURE behav OF SCHK1 ISTYPE FSM_ST IS(S0,S1,S2,S3,S4,S5,S6,S7,S8);SIGNAL current_state, next_state: FSM_ST;BEGINREG:PROCESS ( CLK ,CLR )BEGINIF CLR = '1' THEN current_state <= S0;ELSIF CLK='1' AND CLK'EVENT THENcurrent_state <= next_state ;END IF ;END PROCESS ;COM:PROCESS( current_state, next_state)BEGINCASE current_state ISWHEN S0 => AB<= 11;IF DIN = '1' THEN next_state<=S1 ;ELSE next_state<=S0;END IF;WHEN S1 => AB<= 11;IF DIN = '1' THEN next_state<=S2 ;ELSE next_state<=S0;END IF;WHEN S2 => AB<= 11;IF DIN = '1' THEN next_state<=S3 ;ELSE next_state<=S0;END IF;WHEN S3 => AB<= 11;IF DIN = '0' THEN next_state<=S4 ;ELSE next_state<=S0;END IF;WHEN S4 => AB<= 11;IF DIN = '0' THEN next_state<=S5 ;ELSE next_state<=S0;END IF;WHEN S5 => AB<= 11;IF DIN = '1' THEN next_state<=S6 ;ELSE next_state<=S0;END IF;WHEN S6 => AB<= 11;IF DIN = '0' THEN next_state<=S7 ;ELSE next_state<=S0;END IF;WHEN S7 => AB<= 11;IF DIN = '1' THEN next_state<=S8 ;ELSE next_state<=S0;END IF;WHEN S8 => AB<= 10;IF DIN = '0' THEN next_state<=S0 ;ELSE next_state<=S0;END IF;END CASE ;END PROCESS;END behav;实验三LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK2 ISPORT( CLK,CLR : IN STD_LOGIC;DIN : IN STD_LOGIC;DT : IN STD_LOGIC_VECTOR(7 DOWNTO 0);AB : OUT INTEGER RANGE 0 TO 15 );END SCHK2;ARCHITECTURE behav OF SCHK2 ISTYPE FSM_ST IS(S0,S1,S2,S3,S4,S5,S6,S7,S8);SIGNAL C_ST: FSM_ST;SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINREG:PROCESS ( CLK ,CLR )BEGINIF CLR = '1' THEN D <= DT;C_ST <= S0;AB <= 11;ELSIF CLK='1' AND CLK'EVENT THEN--current_state <= next_state ;--END IF ;--END PROCESS ;--COM:PROCESS( current_state, next_state) --BEGINCASE C_ST ISWHEN S0 => AB<= 11;IF DIN = D(7) THEN C_ST<=S1 ;ELSE C_ST<=S0;END IF;WHEN S1 => AB<= 11;IF DIN = D(6) THEN C_ST<=S2 ;ELSE C_ST<=S0;END IF;WHEN S2 => AB<= 11;IF DIN = D(5)THEN C_ST<=S3 ;ELSE C_ST<=S0;END IF;WHEN S3 => AB<= 11;IF DIN = D(4) THEN C_ST<=S4 ;ELSE C_ST<=S0;END IF;WHEN S4 => AB<= 11;IF DIN = D(3)THEN C_ST<=S5 ;ELSE C_ST<=S0;END IF;WHEN S5 => AB<= 11;IF DIN = D(2) THEN C_ST<=S6 ;ELSE C_ST<=S0;END IF;WHEN S6 => AB<= 11;IF DIN = D(1) THEN C_ST<=S7 ;ELSE C_ST<=S0;END IF;WHEN S7 => AB<= 11;IF DIN = D(0) THEN C_ST<=S8 ;ELSE C_ST<=S0;END IF;WHEN S8 => AB<= 10;IF DIN = D(0) THEN C_ST<=S0 ;ELSE C_ST<=S0;END IF;END CASE ;END IF;END PROCESS;END behav;实验四LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK3 ISPORT(DIN,CLK,CLR:IN STD_LOGIC;DATAIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);AB:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) ; END SCHK3;ARCHITECTURE f3 OF SCHK3 ISTYPE ST_TYPE1 IS (s0,s1,s2,s3,s4,s5,s6,s7,s8);SIGNAL C_ST:ST_TYPE1;SIGNAL Q:STD_LOGIC;BEGINPROCESS(CLR,CLK)BEGINIF CLR='1' THEN C_ST<=s0;Q<='0';ELSIF CLK='1' AND CLK'EVENT THENCASE C_ST ISWHEN s0 => IF DATAIN(7)=DIN THEN C_ST<=s1;ELSIF C_ST<=s0;END IF;WHEN s1 => IF DATAIN(6)=DIN THEN C_ST<=s2;ELSIF C_ST<=s0;END IF;WHEN s2 => IF DATAIN(5)=DIN THEN C_ST<=s3;ELSIF C_ST<=s0;END IF;WHEN s3 => IF DATAIN(4)=DIN THEN C_ST<=s4;ELSIF C_ST<=s0;END IF;WHEN s4 => IF DATAIN(3)=DIN THEN C_ST<=s5;ELSIF C_ST<=s0;END IF;WHEN s5 => IF DATAIN(2)=DIN THEN C_ST<=s6;ELSIF C_ST<=s0;END IF;WHEN s6 => IF DATAIN(1)=DIN THEN C_ST<=s7;ELSIF C_ST<=s0;END IF;WHEN s7 => IF DATAIN(0)=DIN THEN C_ST<=s8;ELSIF C_ST<=s0;END IF;WHEN s8 => Q<='1';END CASE;END IF;END PROCESS;IF Q='1' THEN AB<="1010";ELSIF AB<="1011";END IF;END f3;四、仿真结果:实验一实验二实验三实验四五、硬件分配:实验一F-7键7 键6 键2、键1 数码管6CLR CLK DIN AB(3) AB(2) AB(1) AB(0) PIO11 PIO9 PIO10 PIO39 PIO38 PIO37 PIO36 Pin4 Pin 2 Pin3 Pin160 Pin159 Pin158 Pin141 实验二同上实验三同上实验四同上六、实验结论:实验一是moore型状态机,其优点是其输出仅与当前的状态有关,是同步输出状态机。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计一个的序列检测器 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】
二、设计一个1010的序列检测器,检测到1010时输出为“1”否则为“0”,用D触发器实现。
第一步:根据要求进行逻辑抽象,得出电路的原始状态转换图和状态转换表。
取输入数据变量为X,检测的输出变量为Z,
该同步时序逻辑电路的功能是检测输入序列是否为1010,一旦输入序列出现一个1就记下来,因为这个1可能是1010序列的第一个1,;接着看输入是否为0,因为10是序列1010的前两位;其次再看输入是否为1,因为101是1010序列的前三位;最后再输入一个0,输出则为1,因为出现了一个1010序列,泽电路必须记住1,10,101,1010四种输入情况,每一种输入情况应与电路的一个状态相对应。
根据题意,设电路随机的输入和输出序列为:
X: 0 1 0 1 0 0 0 1 0 1 0 1 0……
Z: 0 0 0 0 1 0 0 0 0 0 1 0 0……
该电路仅有一个输入端,每个现态有两个可能转移方向,设电路初态为
S 0,当X=0时,电路仍处在状态S
,当输入一个1以后的状态为S
1
,输入10以后的状
态为S
2,输入101以后的状态为S
3
,输入1010以后的状态为S
4。
以S n表示电路的现
态,S n+1表示电路的次态。
由此得出原始状态转换图和原始状态转换表:
依据状态等效条件判断得出S
0和S
4
在相同的输入条件下,它们转换到相同的
次态去,且有相同的输出,故S
0和S
4
等效,经分析比较,找出最大等效类:{S
1
},
{S
2},{S
3
},{S
,S
4
}。
由此得出化简的状态转换图和最简状态表:
最贱状态表共有四种状态,可用两位二进制代码来表示,设状态变量为Q
1
,
Q 2,依据状态编码原则,确定S
=00,S
1
=01,S
2
=11,S
3
=10四种状态,其编码后的状态
转换图和状态转换表:
n n
n+1n n n n
(3)
Q
1n+1 = X Q
2
n + X Q
1
n + Q
3
n Q
1
n
由D触发器特性方程求出各个触发器的驱动方程:
D
2 = X Q
2
n Q
1
n + X Q
2
n Q
1
n
D
1 = X Q
2
n + X Q
1
n + Q
2
n Q
1
n
第五步:画出逻辑电路图:
第六次:检测该电路是否有自启动能力。
该电路没有无关状态。
当X=0时,输出Z=XQ
2n Q
1
n,触发器的次态
Q 2n+1=X Q
2
n Q
1
n+ XQ
2
n Q
1
n=0,Q
1
n+1=Q
2
n Q
1
n+ X Q
1
n=0,
若此时来一个时钟脉冲CP,则可转入有效状态00,即S。
当X=1时,输出Z=XQ
2n Q
1
n,触发器的次态
Q 2n+1=X Q
2
n Q
1
n+ XQ
2
n Q
1
n=1,Q
1
n+1= Q
2
n Q
1
n+ X Q
1
n=0,
若此时来一个时钟脉冲CP,则可转入有效状态10,即S
3。
所以该逻辑电路具有自启动能力。