当前位置:文档之家› 使用D触发器设计一个11001序列检测器

使用D触发器设计一个11001序列检测器

使用D触发器设计一个11001序列检测器
使用D触发器设计一个11001序列检测器

讨论使用D触发器设计一个11001序列检测器,讨论序列可交迭(Overlap)检测和不可交迭检测在设计上的区别,讨论分别采用Mealy机设计和采用Moore机设计的区别,讨论未用状态的处理问题。

【要求】给出电路原理图或HDL代码,要求进行仿真,并给出仿真结果。

1.原件介绍

D触发器(74LS74)、“与”门(74LS08)、“或”门(74LS32)、“非”门(74LS04),集成电路引脚

2.设计思路

根据要求,设计的序列检测器有一个外部输入x和一个外部输出Z。输入和输出的逻辑关系为:当外部输入x第一个为"1",外部输出Z为"0";当外部输入x

第二个为"1",外部输出Z为"0";当外部输入第三个x为"0",外部输出Z为"0",当外部输入第四个x为“0”,外部输出Z为0,当外部输入第五个x为“1”,外部输出Z为“1”。假定有一个外部输入x序列以及外部输出Z为:

输入X 0 1 1 1 0 0 1 0 1

输出Y 0 0 0 0 0 0 1 0 0

要判别序列检测器是否连续接收了"11001",电路必须用不同的状态记载外部输入x的值。假设电路的初始状态为A,x 输入第一个"1",检测器状态由A装换到B,用状态B记载检测器接受了"11001"序列的第一个"1",这时外部输出Z=0;x输入第二个"1",检测器状态由B装换到C,用状态C 记载检测器接了“11001”序列的第二个"1",外部输出Z=0;x输入第三个"0",检测器状态由C装换到D,外部输出Z=0;x输入第四个为“0”,检测器状态由D装换到E,外部输出Z=0;x输入第五个为“1”,检测器状态由E装换到F,外部输出Z=1。然后再根据外部输入及其他情况时的状态转移,写出相应的输出。以上分析了序列检测器工作,由此可画出原始状态图。根据原始状态图可列出原始状态表。

状态转换表

A

B

D

C

E

F

1\0

1\0

0\0

0\0

1\1

0\0

0\0

1\0

1\0

0\0

0\0

现态 X

0 1

A A\0 B\0

B A\0 C\0

C D\0 B\0

D E\0 A\0 E

A\0

F\1

Z A

Q2Q1Q0 000 001 010 011 100

0 0 0 0 0 0 1 0 0 0 0 1

Q2* A

Q2Q1Q0 000 001 011 010 110

0 0 0 0 1 0 1 0 0 0 0 0

Q1* A

Q2Q1Q0

000 001 011 010 110

0 0 0 1 0 0 1 0

1

1

Q0* A

Q2Q1Q0

000 001 011 010 110

0 0 0 1 0 0 1

1

1

得到状态方程和输出方程 Z=A 0'1'2Q Q Q Q2*='01'2'Q Q Q A

Q1*=01'202Q Q Q Q AQ +'

Q0*='0'1'01'2'210'Q AQ Q Q AQ Q Q Q A ++

D2=Q2* D1=Q1* D0=Q0*

3.未用状态

关于未用状态涉及到了D 触发器自启动的检验:

前一状态为 111时,Q3*=A ’; Q2*=0; Q1*=A,下一状态为有效状态。 前一状态为110时,Q3*=A; Q2*=1; Q1*=1,对A 值分类讨论: A=0,下一状态为有效状态;

A=1,下一状态为111,再下一个状态为有效状态。 4.实际代码设计与仿真

MOORE 机有交迭的程序设计

library ieee;

use ieee.std_logic_1164.all; entity schk is

port(din,clk,rst:in std_logic; sout:out std_logic); end schk;

architecture behave of schk is

type states is(s0,s1,s2,s3,s4,s5); signal st,nst:states :=s0; begin

com: process(st,din) begin case st is

when s0=> if din='1' then nst <=s1;else nst <= s0; end if;

when s1=> if din='1' then nst <=s2;else nst <= s0; end if;

when s2=> if din='0' then nst <=s3;else nst <= s0; end if;

when s3=> if din='0' then nst <=s4;else nst <= s0; end if;

when s4=> if din='1' then nst <=s5;else nst <= s0; end if;

when s5=> if din='1' then nst <=s2;else nst <= s0;

end if;

when others => nst <=s0; end case; end process;

reg:process (clk,rst) begin--shixujincheng

if rst='1' then st <=s0;

elsif clk'event and clk='1' then st <= nst; end if;

end process reg;

sout <= '1' when st=s5 else '0';

end behave;

仿真结果

小的体现了交迭

mealy有交迭的程序设计

library ieee;

use ieee.std_logic_1164.all;

entity schk2 is

port(din,clk,rst:in std_logic;

sout:out std_logic);

end schk2;

architecture behave of schk2 is

type states is(s0,s1,s2,s3,s4,s5);

signal st:states :=s0;

begin

process(clk,rst,st,din) begin

if rst='1' then st <=s0; elsif clk'event and clk='1' then case st is

when s0=> if din='1' then st <=s1; else st <= s0;end if; when s1=> if din='1' then st <=s2; else st <= s0;end if; when s2=> if din='0' then st <=s3; else st <= s0;end if; when s3=> if din='0' then st <=s4; else st <= s0;end if; when s4=> if din='1' then st <=s5; else st <= s0;end if; when s5=> if din='1' then st <=s2; else st <= s0;end if; when others => st <=s0;

end case;

if(st=s5) then sout<='1'; else sout <= '0';end if ; end if;

end process;

end behave;

实现检测11001的图

体现交迭的图

Mealy机无交叠的

library ieee;

use ieee.std_logic_1164.all;

entity schk2 is

port(din,clk,rst:in std_logic;

sout:out std_logic);

end schk2;

architecture behave of schk2 is

type states is(s0,s1,s2,s3,s4,s5);

signal st:states :=s0;

begin

process(clk,rst,st,din) begin

if rst='1' then st <=s0; elsif clk'event and clk='1' then case st is

when s0=> if din='1' then st <=s1; else st <= s0; end if;

when s1=> if din='1' then st <=s2; else st <= s0; end if;

when s2=> if din='0' then st <=s3; else st <= s0; end if;

when s3=> if din='0' then st <=s4; else st <= s0; end if;

when s4=> if din='1' then st <=s5; else st <= s0; end if;

when s5=> if din='1' then st <=s0; else st <= s0; end if;

when others => st <=s0;

end case;

if(st=s5) then sout<='1'; else sout <= '0';end if ; en d if;

end process;

end behave;

体现没有交迭的

Moore没有交迭的图

library ieee;

use ieee.std_logic_1164.all;

entity schk is

port(din,clk,rst:in std_logic;

sout:out std_logic);

end schk;

architecture behave of schk is

type states is(s0,s1,s2,s3,s4,s5);

signal st,nst:states :=s0;

begin

com: process(st,din) begin

case st is

when s0=> if din='1' then nst <=s1;else nst <= s0; end if;

when s1=> if din='1' then nst <=s2;else nst <= s0; end if;

when s2=> if din='0' then nst <=s3;else nst <= s0; end if;

when s3=> if din='0' then nst <=s4;else nst <= s0; end if;

when s4=> if din='1' then nst <=s5;else nst <= s0; end if;

when s5=> if din='1' then nst <=s0;else nst <= s0; end if;

when others => nst <=s0;

end case;

end process;

reg:process (clk,rst) begin--shixujincheng

if rst='1' then st <=s0;

elsif clk'event and clk='1' then st <= nst; end if;

end process reg;

sout <= '1' when st=s5 else '0';

end behave;

5.关于二者设计上的不同

Mealy状态机与Moore有限状态机不同,Mealy有限状态机的输出不但与当前状态有关,而且与输入信号的当前值有关,所以在st的赋值上二者会有不同,Moore赋给nst(下一状态的),mealy给st。而且相比于Moore机mealy有一个时钟的延时,不过这样可以起到滤波的作用。

使用D触发器设计一个11001序列检测器介绍

讨论使用D触发器设计一个11001序列检测器,讨论序列可交迭(Overlap)检测和不可交迭检测在设计上的区别,讨论分别采用Mealy机设计和采用Moore机设计的区别,讨论未用状态的处理问题。 【要求】给出电路原理图或HDL代码,要求进行仿真,并给出仿真结果。 1.原件介绍 D触发器(74LS74)、“与”门(74LS08)、“或”门(74LS32)、“非”门(74LS04),集成电路引脚

2.设计思路 根据要求,设计的序列检测器有一个外部输入x和一个外部输出Z。输入和输出的逻辑关系为:当外部输入x第一个为"1",外部输出Z为"0";当外部输入x 第二个为"1",外部输出Z为"0";当外部输入第三个x为"0",外部输出Z为"0",当外部输入第四个x为“0”,外部输出Z为0,当外部输入第五个x为“1”,外部输出Z为“1”。假定有一个外部输入x序列以及外部输出Z为: 输入X 0 1 1 1 0 0 1 0 1 输出Y 0 0 0 0 0 0 1 0 0 要判别序列检测器是否连续接收了"11001",电路必须用不同的状态记载外部输入x的值。假设电路的初始状态为A,x 输入第一个"1",检测器状态由A装换到B,用状态B记载检测器接受了"11001"序列的第一个"1",这时外部输出Z=0;x输入第二个"1",检测器状态由B装换到C,用状态C 记载检测器接了“11001”序列的第二个"1",外部输出Z=0;x输入第三个"0",检测器状态由C装换到D,外部输出Z=0;x输入第四个为“0”,检测器状态由D装换到E,外部输出Z=0;x输入第五个为“1”,检测器状态由E装换到F,外部输出Z=1。然后再根据外部输入及其他情况时的状态转移,写出相应的输出。以上分析了序列检测器工作,由此可画出原始状态图。根据原始状态图可列出原始状态表。 状态转换表 A B D C E F 1\0 1\0 0\0 0\0 1\1 0\0 0\0 1\0 1\0 0\0 0\0

设计一个1010的序列检测器

二、设计一个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…… 该电路仅有一个输入端,每个现态有两个可能转移方向,设电路初态为S0,当X=0时,电路仍处在状态S0,当输入一个1以后的状态为S1,输入10以后的状态为S2,输入101以后的状态为S3,输入1010以后的状态为S4。以S n表示电路的现态,S n+1表示电路的次态。 由此得出原始状态转换图和原始状态转换表:

第二步:状态化简: 依据状态等效条件判断得出S0和S4在相同的输入条件下,它们转换到相同的次态去,且有相同的输出,故S0和S4等效,经分析比较,找出最大等效类:{S1},{S2},{S3},{S0,S4}。 由此得出化简的状态转换图和最简状态表: 第三步:状态编码: 最贱状态表共有四种状态,可用两位二进制代码来表示,设状态变量为Q1,Q2,依据状态编码原则,确定S0=00,S1=01,S2=11,S3=10四种状态,其编码后的状态转换图和状态转换表:

1011序列检测器

综合设计性实验报告 题目: 学生姓名: 学号: 班级: 指导教师: 学期:2010——2011第2学期

目录 一基本知识点 (1) 二实验器件 (1) 三设计思路 (1) 四设计过程 (2) (一)三位二进制减法计数器(无效状态000,001) (二)5 五引脚功能 (9) 六逻辑电路图: (11) 七实验结果波形图 (12) 八设计心得体会 (12)

一基本知识点 1、掌握时序电路的设计方法和步骤 2、掌握触发器的设计与应用 3、掌握移位寄存器的原理与应用 4 熟悉集成电路的引脚排列; 5 掌握芯片的逻辑功能及使用方法; 6 了解序列产生及检测器的组成及工作原理 7 会在EWB软件上进行仿真; 二实验器件 1、移位寄存器74LS194 1片 2、负边沿JK触发器74LS112 1片 3四输入与非门74LS20 1片 4、六输入非门74LS05 1片 5 电源一个 6 地线一个 7 与门,或门,非门若干个 8 时钟脉冲一个 三设计思路 1作原始状态表。根据给定的电路设计条件构成原始状态表和状

态转化图 2状态表的简化。原始状态表通常不是最小化状态表,它往往包括多余的状态,因此必须首先对它进行简化。 3状态分配。即对简化后的状态给以编码。这就要根据状态数确定触发器的数量并对每个状态指定一个二进制数构成的编码。 4根据给定的电路设计条件选择触发器根据 5 作激励函数和输出函数。根据选用的触发器激励表和电路的状态表,综合出电路中各触发器的激励函数和电路的输出函数。 ⑸6画逻辑图,并检查自启动功能 四设计过程 (一)101101001信号发生器的设计 设计一个信号序列发生器,在产生的信号序列中,含有“1011”信号码,要求用一片移位寄存器,生成信号序列“10110100”,其中含有1011码,其设计按以下步骤进行:、、 1本实验所用仪器为移位寄存器74LS194,确定移存器的位数n。因M=9,故n≥4,用74LS194 的四位。 2确定移存器的九个独立状态。将序列码101101001按照每四位一组,划分为九个状态,其迁移关系如下所示: 3作出状态转换表及状态转换图如下:

八位序列检测器设计

八位序列检测器设计 班级:1302012 学号: 姓名:郭春晖

一、设计说明 使用quartus软件进行仿真和验证,并且还可以检测其他的序列,只需要修改一部分代码就可以实现。 二、方案 工作原理:基于FPGA的多路脉冲序列检测器的设计方案,使用VHDL语言设计时序逻辑电路,先设计序列发生器产生序列:01010;再设计序列检测器,检测序列发生器产生序列,若检测到信号与预置待测信号相同,则输出“1”,否则输出“0”,并且将检测到的信号的显示出来。 三、单元模块设计 1、序列信号发生器 序列信号是指在同步脉冲作用下循环地产生一串周期性的二进制信号。利用状态机设计,首先定义一个数据类型FSM_ST它的取值为st0到st15的16个状态。 序列信号发生器的代码如下:

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SHK IS PORT (CLK,RST :IN STD_LOGIC; CO :OUT STD_LOGIC ); END SHK; ARCHITECTURE behav OF SHK IS TYPE FSM_ST IS (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15); SIGNAL REG:FSM_ST; SIGNAL Q:STD_LOGIC; BEGIN PROCESS(CLK,RST) BEGIN IF RST ='1' THEN REG<=s0;Q<='0'; ELSIF CLK'EVENT AND CLK='1' THEN CASE REG IS WHEN s0=> Q<='1'; REG<=s1; WHEN s1=> Q<='0';REG<=s2; WHEN s2=> Q<='1';REG<=s3; WHEN s3=> Q<='1';REG<=s4; WHEN s4=> Q<='0';REG<=s5; WHEN s5=> Q<='1';REG<=s6; WHEN s6=> Q<='0';REG<=s7; WHEN s7=> Q<='0';REG<=s8; WHEN s8=> Q<='0';REG<=s9; WHEN s9=> Q<='1';REG<=s10; WHEN s10=> Q<='1';REG<=s11; WHEN s11=> Q<='0';REG<=s12; WHEN s12=> Q<='1';REG<=s13; WHEN s13=> Q<='0';REG<=s14;

利用D触发器构成计数器

利用D触发器构成计数 器 TYYGROUP system office room 【TYYUA16H-TYY-TYYYUA8Q8-

数字电路实验设计: D触发器组成的4位异步二进制加法计数器一、选用芯片74LS74,管脚图如下: 说明:74LS74是上升沿触发的双D触发器, D触发器的特性方程为 二、设计方案: 用触发器组成计数器。触发器具有0 和1两种状态,因此用一个触发器就可以表示一位二进制数。如果把n个触发器串起来,就可以表示n位二进制数。对于十进制计数器,它的10 个数码要求有 10 个状态,要用4位二进制数来构成。下图是由D触发器组成的4位异步二进制加法计数器。 三、实验台: 四、布线: 1、将芯片(1)的引脚4、10连到一起, 2、将芯片(2)的引脚4、10连到一起, 3、将芯片(1)的引脚10和芯片(2)的引脚10连到一起, 4、将芯片(1)的引脚10连到+5V; 5、将芯片(1)的引脚1、13连到一起, 6、将芯片(2)的引脚1、13连到一起, 7、将芯片(1)的引脚13和芯片(2)的引脚13连到一起, 8、将芯片(1)的引脚13连到+5V; 9、将芯片(1)的引脚3接到时钟信号CP 10、将芯片(1)的引脚2、6接到一起,再将引脚2接到引脚11 11、将芯片(1)的引脚8、12接到一起,再将芯片(1)的引脚8接到芯片(2)的引脚3 12、将芯片(2)的引脚2、6接到一起,再将引脚6接到引脚11 13、将芯片(1)的引脚5、9分别接到Q 0、Q 1 ,再将芯片(2)的引脚5、9分 别接到Q 2、Q 3 14、分别将两芯片的14脚接电源+5V,分别将两芯片的7脚接地0V。

序列检测器的一种简化实现算法

第8卷第6期石家庄学院学报Vol.8,No.62006年11月JournalofShijiazhuangUniversityNov.2006序列检测器的一种简化实现算法 李俊红,解建军 (河北师范大学数学与信息科学学院,石家庄050016) 摘要:分析了序列检测器的内部原理,给出它的一种新硬件实现.利用它无需对状态图进行状态化简,极大地简化了时序线路的设计.最后结合具体实例说明了该设计思想的详细步骤和具体实现方法. 关键词:子串;主串;序列检测器 中图分类号:TP16文献标识码:A文章编号:1673-1972(2006)06-0063-03 1序列检测器原理 序列检测是指将一个指定的序列从数字流中识别出来,或在主串中查询相应子串,一般可以通过软件方法或时序电路即硬件方法实现.有关软件实现方法的研究可参见文献[1],本文主要针对时序电路进行讨论.用硬件方法实现序列检测器时,检测器中存储模式串,主串可以通过输入端流入检测器[2,3].在主串的输入过程中,检测器可以动态检测子串.检测器利用时序线路记忆已检测出的有效序列,并与自身所含的模式串进行比对,若检测成功,输出端自动输出成功标记[4].设计一个“11100”序列检测器,当识别到一组序列时,输入一个高电平.由于采用时序线路,主串的内容应每给一个上升沿或下降沿输入一位,具体应视所选触发器类型而定. 我们提出一种新硬件实现方法,在该方法中对每一个状态都根据实际意义给予特殊的含义,具体含义在后面的实例中再加以说明,由于不存在重复状态,故最终的状态图不用化简. 序列检测器的初态是指被检序列的第一位出现前的特定状态,此状态后如果输入的代码对检测有效(即被测序列的第一位),则相应次态为新的状态(第2个状态,它记住了被测序列的第一位),否则相应次态仍为初态.第2个状态是指被检序列的第一位出现后的特定状态,此状态后如果输入的代码对检测有效,(即被测序列的第2位)则相应次态为新的状态(第2个状态,它记住了被测序列的前2位),否则判断最近输入的代码是否是被检序列的第一位,是则相应次态仍为第2个状态,否则相应次态为初态.以次类推,第i个状态记住了被检序列的前i-1位,相应次态确定方法如下: 假设序列长度为n,当i<n时,如果第i个状态后输入的一位代码是被检序列的第i位,则次态为新的状态(记住了被检序列的前i位),否则次态按如下规则选择:从初态开始输入的i位代码中如果其中的后i-j位为被检序列的前i-j位,则次态为第i-j+1个状态(j=1,2,...,i-1,找到次态即停止),否则次态为初态.此时所有的外输出均为‘0’. 当i=n时,第n个状态已经记住了被检序列的前n-1位,此状态后输入的一位代码如果是被检序列的第n位,则外输出为‘1’,否则外输出为‘0’,其次态按如下规则选择:从初态开始输入的n位代码中如果其中的后n-j位为被检序列的前n-j位,则次态为第i-j+1个状态(j=1,2,...,n-1,找到次态即停止),当j=n时,次态为初态. 按上述方法构造的原始状态转移图中恰好含n个状态,且每个状态都有确定的含义,避免了其设计过程中,构造原始状态转移图繁杂,化简原始状态转移图麻烦的弊端,设计时既逻辑清晰,又不用化简,从而极大地简化了该类线路的设计. 收稿日期:2005-12-09 基金项目:河北省石家庄市科学研究与发展计划项目(05213570);河北师范大学青年基金资助(L2005Q02) 作者简介:李俊红(1971-),女,山西运城人,河北师范大学数学与信息科学学院讲师,硕士,研究方向:并行逻辑模拟,计算机系统结构.

实验四8序列检测器的设计

实验四序列检测器的设计 一、实验目的 1)了解序列检测器的工作原理 2)熟悉MAX+plusII软件的基本使用方法 3)熟悉EDA实验开发的基本使用方法 4)学习VHDL程序中数据对象,数据类型,顺序语句,并行语句的综合使用 二、实验内容 设计一个序列检测器,当序列检测器连续收到一组串行的二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同,在检测过程中,任何一位不相等都将回到初始状态重新开始检测。 三、实验条件 开发软件:MAX+plus II 9.23 Baseline 硬件设备:装有windows7的pc机 四、实验设计 1)系统的原理框架图

2)VHDL源程序 chk.vhd源代码 library ieee; use ieee.std_logic_1164.all; entity chk is port(din: in std_logic; clk,clr:in std_logic; d:in std_logic_vector(7 downto 0); ab:out std_logic_vector(3 downto 0)); end entity chk; architecture art of chk is signal q:integer range 0 to 8; begin process(clk,clr)is begin if clr='1'then q<=0; elsif clk'event and clk='1'then case q is when 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)is begin if q=8 then ab<="1010"; else ab<="1011"; end if; end process; end architecture;

8位序列检测器的设计

八位序列检测器设计 摘要:序列检测器多用于通信系统中对禁用码的检测,或者是对所需信号的提取,即一旦检测到所需信号就输出高电平,这在数字通信领域有广泛的应运。本文介绍了一种采用单片PGA 芯片进行脉冲序列检测器的设计方法,主要阐述如何使用新兴的EDA 器件取代传统的电子设计方法,利用FPGA 的可编程性,简洁而又多变的设计方法,缩短了研发周期,同时使设计的电路体积更小功能更强大。本次课程设计设计出能够检测序列“”的序列检测器,并以此来描述序列检测器的设计过程和基于FPGA 的软件仿真。最后通过QuartusII 的波形输出对设计方案进行检测,在硬件调试经检测输出正确设计符合要求。 关键词: VHDL 序列检测QuartusⅡFPGA Abstract:Sequence detector system used for communication on the detection code disabled, or is the extraction of the desired signal, that is, once detected, the required high output signal, which in the broad field of digital communications to be transported. This paper presents a single FPGA chip with the detector pulse sequence design method, mainly on how to us e new device to replace the traditional EDA electronic design, the use of FPGA's programmability, concise and changing the design method shortens the development cycle, while allowing smaller circuit design and more powerful. The curriculum is designed to detect sequence "" sequence detectors, and detector in order to describe the sequence of the design process and FPGA- based software simulation. Finally, the output of the waveform QuartusII design testing, debugging the hardware design has been tested and meet the requirements of the correct output. Keywords:VHDL Sequence detection QuartusⅡFPGA

110序列检测器的设计及仿真实现

题目:设计110序列检测器,当输入信号时输 出,否则 一、设计思路 我们采用Moore机完成这个功能。对于触发器的选择,为了简便我们选用D触发器以及基本的门电路完成基本设计。 二、时钟同步状态机 1根据题目要求我们得到下面的状态图 状态表示的意义Q X=0 X=1 输出Z 等待1的出现 A A B 0 出现1 B A C 0 出现11 C D C 0 出现110 D A B 1 * Q 2 转移输出表 01 Q Q输入X 输出Z X=0 X=1 00 00 01 0 01 00 11 0 11 10 11 0

10 00 01 1 01Q Q * * 3 状态图如图: 通过卡诺图化简可得 转移方程: 00111=Q Q Q Q X Q X * * += 输出方程:01 Z Q Q ? = 我们选择D 触发器作为记忆电路部分 由D 触发器的特征方程: Q D * = 得激励方程: 00111D =Q Q Q X D X += 三、V erilog 程序如下: module shiyan2 (clk,x,z); input clk,x; output z; wire[1:0] state;

wire[1:0] excite; nextlogic u1(x,state,excite); statememory u2(clk,excite,state); outputlogic u3(state,z); endmodule module statememory (clk,d,q); input clk; input[1:0] d; output[1:0] q; reg[1:0] q; always @ (posedge clk) begin q <= d; end endmodule module nextlogic (x,q,d); input x; input[1:0] q; output[1:0] d; assign d[0]=(q[1]&q[0])|(q[1]&x); assign d[1]=x; endmodule

课程设计------序列检测器

电子课程设计 ------序列检测器 学院: 专业班级: 姓名: 学号: 指导老师: 2012年12月

目录 一、设计任务与要求 (1) 二、总体框图 (1) 三、选择器件 (1) 四、功能模块 (1) 1、脉冲发生器 (1) 2、序列检测器 (2) 3、分频器 (3) 五、总体设计电路图 (5) 1、总体电路原理图 (5) 2、Q UARATU SII的仿真结果图与分析 (5) 3、管脚分配 (6) 4、E DA实验箱验证 (6)

序列检测器 一、任务与要求 设计一个序列检测器,在上升沿的作用下,输入一组二进制码,与预先设置的吗“11100101”一致时,输出A,不同时则输出B,(在检测过程中,任何一位不相等都将回到初始状态重新开始检测。) 二、总体框图 脉冲发生器:为检测器提供脉冲。 检测器:具有存储功能。 数码显示器:显示输出A或B 方案:设计手动的脉冲发生器为检测器提供脉冲,使其正常工作,然后设计检测器存储的数字为“11100101”再用译码器使其显示在数码管上,这就要求检测器必须记住前一次的正确吗及正确序列,直到在连续的检测中所收到的每一位吗与预置数的对应码相同,否则重新开始检测。 三、选择器件 芯片:EDA实验箱中EP1C12核心板;七段数码管等。 外围电路:将IO_CLK用导线连接到IO3上,将IO9,IO10用导线连接到两个LED灯上,接上电源下载完成即可验证。 四、功能模块 1.脉冲发生器 VHDL程序: LIBRARY ieee; use ieee.std_logic_1164.all; entity pulse is port(pul,M: in std_logic; nq,q: out std_logic --VGA:out std_logic_vector(3 downto 0) ); end pulse; architecture a of pulse is signal temp: std_logic; begin --VGA <= "0001";' q<=temp; nq<=not temp; process(m)

序列检测器的设计实验报告

班级:生物医学工程141班姓名:刘玉奔学号:6103413018 设计性实验项目名称序列信号发生和检测器设计 (一)实验目的 1、进一步熟悉EDA实验装置和QuartusⅡ软件的使用方法; 2、学习有限状态机法进行数字系统设计; 3、学习使用原理图输入法进行设计。 (二)设计要求 完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现一个串行序列信号发生器和一个序列信号检测器的功能,具体要求如下: 1、先用设计0111010011011010序列信号发生器,其最后6BIT数据用LED显示出来; 2、再设计一个序列信号检测器,检测上述序列信号,若检测到串行序列“11010”则 输出为“1”,否则输出为“0”; 3、检查检测01011,即将发生的序列最后五位改为01011,为0111010011001011 (三)主要仪器设备 1、微机1台 2、QuartusII集成开发软件1套 3、EDA实验装置1套 (四)实验步骤 主要有三个模块 1:一个设计序列信号发生器 2:一个设计序列信号检测器 3:综合两个设计,通过对模块的调用达到最终效果 (五)实验数据 --设计时间:2016.10.29 --设计者:刘玉奔 --设计内容:1、先用设计0111010011001011序列信号发生器,其最后6BIT数据用LED 显示出来; --2、再设计一个序列信号检测器,检测上述序列信号,若检测到串行序列“01011”则输出

为“1”,否则输出为“0”; --序列信号发生器部分 LIBRARY IEEE;--声明IEEE库 USE IEEE.STD_LOGIC_1164.ALL;--允许使用IEEE中程序包STD_LOGIC_1164 ENTITY serialsignalgenerator IS PORT(CLK,RST:IN STD_LOGIC; CO:OUT STD_LOGIC; LED0,LED1,LED2,LED3,LED4,LED5:OUT STD_LOGIC); END behav; 得到symbol file: 序列信号检测器: LIBRARY IEEE;--声明IEEE库 USE IEEE.STD_LOGIC_1164.ALL;--允许使用IEEE中程序包STD_LOGIC_1164 ENTITY serialsignaltest IS PORT(CLK,DIN,CLR:IN STD_LOGIC; SS:OUT STD_LOGIC; LED0,LED1,LED2,LED3,LED4:OUT STD_LOGIC);

D触发器的设计

目录 第一章绪论0 简介0 集成电路0 版图设计1 软件介绍1 标准单元版图设计1 标准单元版图设计的概念1 标准单元版图设计的历史1 标准单元的版图设计的优点2 标准单元的版图设计的特点2 第二章D触发器的介绍 2 简介2 维持阻塞式边沿D触发器3 电路工作过程3 状态转换图和时序图3 同步D触发器3 电路结构3 逻辑功能4 真单相时钟(TSPC)动态D触发器4 第三章工艺基于TSPC原理的D触发器设计5 电路图的设计5 创建库与视图5 基于TSPC原理的D触发器电路原理图5 创建D触发器版图6 设计步骤6 器件规格7 设计规则的验证及结果8 第四章课程设计总结9 参考文献 9 第一章绪论 简介 集成电路 集成电路(Integrated Circuit,简称IC)是20世纪60年代初期发展起来的一种新型半导体器件。它是经过氧化、光刻、扩散、外延、蒸铝等半导体制造工艺,把构成具有一定功能的电路所需的半导体、电阻、电容等元件及它们之间的连接导线全部集成在一小块硅片上,然后焊接封装在一个管壳内的电子器件。其封装外壳有圆壳式、扁平式或双列直插式等多种形式。是一种微型电子器件或部件,采

用一定的工艺,把一个电路中所需的晶体管、二极管、电阻、电容和电感等元件及布线互连一起,制作在一小块或几小块半导体晶片或介质基片上,然后封装在一个管壳内,成为具有所需电路功能的微型结构;其中所有元件在结构上已组成一个整体,使电子元件向着微小型化、低功耗和高可靠性方面迈进了一大步。集成电路发明者为杰克·基尔比(基于硅的集成电路)和罗伯特·诺伊思(基于锗的集成电路)。当今半导体工业大多数应用的是基于硅的集成电路。 版图设计 版图(Layout)是集成电路设计者将设计并模拟优化后的电路转化成的一系列几何图形,包含了集成电路尺寸大小、各层拓扑定义等有关器件的所有物理信息。集成电路制造厂家根据版图来制造掩膜。版图的设计有特定的规则,这些规则是集成电路制造厂家根据自己的工艺特点而制定的。不同的工艺,有不同的设计规则。设计者只有得到了厂家提供的规则以后,才能开始设计。版图在设计的过程中要进行定期的检查,避免错误的积累而导致难以修改。很多集成电路的设计软件都有设计版图的功能,Cadence 的Virtuoso的版图设计软件帮助设计者在图形方式下绘制版图。 对于复杂的版图设计,一般把版图设计分成若干个子步骤进行: (1)划分为了将处理问题的规模缩小,通常把整个电路划分成若干个模块。(2)版图规划和布局是为了每个模块和整个芯片选择一个好的布图方案。(3)布线完成模块间的互连,并进一步优化布线结果。 (4)压缩是布线完成后的优化处理过程,他试图进一步减小芯片的面积。软件介绍 目前大部分IC 公司采用的是UNIX 系统,使用版本是SunSolaris。版图设计软件通常为Cadence ,它是一个大型的EDA 软件,它几乎可以完成电子设计的方方面面,包括ASIC 设计、FPGA设计和PCB 设计。软件操作界面人性化,使用方便,安全可靠,但价格较昂贵。 标准单元版图设计 标准单元版图设计的概念 标准单元,也叫宏单元。它先将电路设计中可能会遇到的所有基本逻辑单元的版图, 按照最佳设计的一定的外形尺寸要求, 精心绘制好并存入单元库中。实际设计ASIC电路时, 只需从单元库中调出所要的元件版图, 再按照一定的拼接规则拼接, 留出规则而宽度可调的布线通道, 即可顺利地完成整个版图的设计工作了。 基本逻辑单元的逻辑功能不同, 其版图面积也不可能是一样大小的。但这些单元版图的设计必须满足一个约束条件, 这就是在某一个方向上它们的尺寸必须是完全一致的, 比如说它们可以宽窄不一, 但它们的高度却必须是完全相等的,这就是所谓的“等高不等宽”原则。这一原则是标准单元设计法得以实施的根本保证。 标准单元版图设计的历史 随着集成电路产业迅猛的发展,工艺水平不断提高,集成电路特征尺寸循着摩尔定律不断缩小。设计芯片时需要考虑的因素越来越多,芯片设计的复杂程度也越来越高。因而尽可能复用一些已经通过工艺验证的IP核可以提高设计的效率,降低芯片设计的成本。

设计一个的序列检测器完整版

设计一个的序列检测器 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四种状态,其编码后的状态 转换图和状态转换表:

D触发器工作原理

D触发器工作原理 D触发器工作原理 主从JK触发器是在CP脉冲高电平期间接收信号,如果在CP高电平期间输入端出现干扰信号,那么就有可能使触发器产生与逻辑功能表不符合的错误状态。边沿触发器的电路结构可使触发器在CP脉冲有效触发沿到来前一瞬间接收信号,在有效触发沿到来后产生状态转换,这种电路结构的触发器大大提高了抗干扰能力和电路工作的可靠性。下面以维持阻塞D触发器为例介绍边沿触发器的工作原理。 维持阻塞式边沿D触发器的逻辑图和逻辑符号如图9-7所示。该触发器由六个与非门组成,其中G1、G2构成基本RS触发器,G3、G4组成时钟控制电路,G5、G6组成数据输入电 路。和分别是直接置0和直接置1端,有效电平为低电平。分析工作原理时,设和 均为高电平,不影响电路的工作。电路工作过程如下。 (a) 逻辑图 (b) 逻辑符号 图9-7 维持阻塞型D触发器 ①CP=0时,与非门G3和G4封锁,其输出为1,触发器的状态不变。同时,由于至G5和至G6的反馈信号将这两个门G5、G6打开,因此可接收输入信号,使=,= =。 ②当CP由0变1时,门G3和G4打开,它们的输出和的状态由G5和G6的输出状态决定。==,==。由基本RS触发器的逻辑功能可知,=。

③触发器翻转后,在CP=1时输入信号被封锁。G3和G4打开后,它们的输出和的状态是互补的,即必定有一个是0,若为0,则经G4输出至G6输入的反馈线将G6封锁,即封锁了D通往基本RS触发器的路径;该反馈线起到了使触发器维持在0状态和阻止触发器变为1状态的作用,故该反馈线称为置0维持线,置1阻塞线。G3为0时,将G4和G5封锁,D端通往基本RS触发器的路径也被封锁;G3输出端至G5反馈线起到使触发器维持在1状态的作用,称作置1维持线;G3输出端至G4输入的反馈线起到阻止触发器置0的作用,称为置0阻塞线。因此,该触发器称为维持阻塞触发器。 由上述分析可知,维持阻塞D触发器在CP脉冲的上升沿产生状态变化,触发器的次态取决于CP脉冲上升沿前D端的信号,而在上升沿后,输入D端的信号变化对触发器的输出状态没有影响。如在CP脉冲的上升沿到来前=0,则在CP脉冲的上升沿到来后,触发器置0;如在CP脉冲的上升沿到来前=1,则在CP脉冲的上升沿到来后触发器置1。维持阻塞触发器的逻辑功能表如表9-4所示。 表9-4 触发器的逻辑功能表 说明 0 0 复位 1 1 置位 依据逻辑功能表可得触发器的状态方程为 (9-2) 【例9-4】已知上升沿触发的D触发器输入和时钟CP的波形如图9-8所示,试画出端波形。设触发器初态为0。 图9-8 维持阻塞触发器的波形图

D触发器设计

要求:采用0.25um CMOS工艺(SPICE模型,BSIM3.1)设计一个基于传输门结构的D触发器,要求该D触发器带有异步高电平置位。 1)用HSPICE仿真验证该D触发器功能的正确性。 2)利用HSPICE仿真得出该D触发器的建立时间、保持时间和传输延时的值,假设D触发器的负载是该D触发器的数据输入端。 3)请优化该D触发器的晶体管尺寸,使建立时间最小。 4)优化尺寸使传输延时最小。 仿真过程中,输入信号和clock的跳变沿(上升沿时间和下降沿时间)统一为0.2ns。如下面的clock的例子: vclk clock 0 pulse (0 2.5 0 0.2n 0.2n 4.8n 10n) 建立时间定义含混,难以精确确定。一般减小寄存器数据到clock的时间不会使输出立刻出错,但它会使输出延时增大,所以一般建立时间的定义有两种方法: (b) 1、定义成时钟之前数据输入必须有效的时间。(但有效的含义是什么,难以精确确定) 2、定义成使D-Clk时间差与tc-q延时的和最小时寄存器的工作点。这一点使触发器的延时总开销最小。即图(b)中斜率45度的点。X轴和Y轴等比例! 在全定制设计中这个值可以比较接近出错点,但在半定制标准单元设计中,寄存器的建立时间和保持时间定义成相对tcq增大一个固定百分比时(一般为5%),数据-时钟的时间差。注意,这些曲线在0-1和1-0翻转时不同,因此0和1值得建立时间和保持时间是不一样的,另外建立时间和保持时间还和时钟与数据的斜率有关,在非线性模型中用一个二维表格表示。 在本练习中,采用第二种建立时间定义方法。假定都采用使输出延时比原来增大5%的时间点作为建立时间。分别测量输出“1”和输出“0”的不同的建立时间。保持设计的定义与此相似,,同样用输出延时增加5%作为定标点。

用状态机实现序列检测器的设计

1.掌握基于语言的ISE设计全流程; 实验三:用状态机实现序列检测器的设计 一、实验目的 用状态机实现序列检测器的设计,并对其进行仿真和硬件测试。 掌握基于语言的ISE设计全流程; 熟悉、应用VerilogHDL描述数字电路; 实验原理与设计过程 实验内容:序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出A,否则输出b。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。例3-1描述的电路完成对序列数""的。当这一串序列数高位在前(左移)串行进入检测器后,若此数与预置的密码数相同,则输出“A”,否则仍然输出“b”。 本次实验的核心是:应用有限状态机的设计思路,检测输入的串行数据是否是8’b。根据下载电路板的资源,拟用SW3---SW0,J4接口的E8,F8,C7,D7作为系统输入(系统由此需要设计一个8bits并行数据转串行的模块),一个7段数码显示译码器作为检测结果的输出显示,如果串行序列为”11100101”,显示A,否则显示b(系统需要设计一个7段数码显示译码器模块),为了显示可控,清晰,拟用V16,D18实现时钟,复位信号的输入。 设计参考:本实验由顶层文件、串行检测、并行数据转串行、数码管显示四个模块组成: 系统共包括4个模块:并行数据转串行数据模块、串行检测模块、数码管显示模块、消抖模块。由于需要用按键V16作为时钟输入,为保证实验效果,调用实验二中应用的消抖模块,对时钟clk输入信号进行消抖。 对于并行数据转串行数据模块输入输出端口说明: clk-----系统时钟,由按键V16通过消抖模块后提供。 din8-----8bits输入数据,需在时钟控制下,串行输出。 reset----系统复位信号,当reset=1’b1时,系统输出复位,否则系统正常工作。 din----------1bit输出信号。 该并行模块的设计如下: module xulie_u1(clk,din8,reset,din );

序列检测器

目录 第一章设计方案.........................................................1 1.1设计任务..........................................................1 1.2设计要求..........................................................1 1.2.1整体功能要求.................................................1 1.2.2测试要求.....................................................1 第二章设计思路.........................................................2 2.1数字频率计介绍....................................................2 2.2设计原理..........................................................2 2.2.1频率测量的基本原理...........................................2 2.2.2整体方框图及原理.............................................2 2.2.3序列器结构框图...............................................2 第三章模块介绍.........................................................4 3.1顶层文件模块......................................................4 3.1.1顶层文件原理.................................................4 3.1.2顶层文件模块verilog语言描述程序.............................4 3.2伪随机序列发生器模块..............................................4 3.2.1伪随机序列发生器.............................................4 3.2.2伪随机序列发生器原理.........................................5 3.2.3伪随机序列发生器模块verilog语言描述程序.....................6 3.3序列检测器模块....................................................7 3.3.1序列检测器原理...............................................7 3.3.2序列检测器模块verilog语言描述程序...........................7 第四章序列检测器的实现.................................................8 4.1序列检测器的verilog语言程序描述及仿真............................8 4.1.1序列检测器的verilog语言程序描述.............................8 4.1.2序列检测器的波形仿真.........................................9 4.2 设计中遇到的问题与解决方法.......................................10 4.2.1设计中遇到的问题.............................................10 4.2.2解决方法.....................................................10 第五章设计小结.........................................................11 5.1 心得体会..........................................................11

相关主题
文本预览
相关文档 最新文档