文档库 最新最全的文档下载
当前位置:文档库 › EDA设计实验序列检测器.doc

EDA设计实验序列检测器.doc

EDA设计实验序列检测器.doc
EDA设计实验序列检测器.doc

华中农业大学理学院计算机系

实验题目:

设计串行数据检测器

实验说明:

设计一个“1001”串行数据检测器。使得但输出序列中出现“1001”时,结果中就输出1。输入/输出如下所示:

输入x:000 101 010 010 011 101 001 110 101

输出z:000 000 000 010 010 000 001 000 000

实验分析:

初始状态设为s0,此时检测数据序列为“0000”,当再检测到一个0时,仍为s0,当检测到1时,进入下一个状态s1,此时序列为“0001”;当在状态s1检测到0时,进入到状态s2,此时序列为“0010”,当检测到1时,仍为s1;当在状态s2检测到0时,进入到状态s3,此时序列为“0100”,当检测到1时,进入s1;当在状态s3检测到0时,进入s0,当检测到1时,进入状态s4,此时序列为“1001”,结果输出为1;当在s4检测到0时,进入状态s2,当检测到1时,进入状态s1。状态图如下:

实验代码:

module sjjcq10_3(x,z,clk,reset,state);

input x,clk,reset;

output z;

output[2:0]state;

reg[2:0]state;

reg z;

parameter s0='d0,s1='d1,s2='d2,s3='d3,s4='d4;

always@(posedge clk)

begin

if(reset)begin state<=s0;z<=0;end

else

casex(state)

s0: begin

if(x==0) begin state<=s0;z<=0;end

else begin state<=s1;z<=0;end

end

s1: begin

if(x==0) begin state<=s2;z<=0;end

else begin state<=s1;z<=0;end

end

s2:begin

if(x==0) begin state<=s3;z<=0;end

else begin state<=s1;z<=0;end

end

s3:begin

if(x==0) begin state<=s0;z<=0;end

else begin state<=s4;z<=1;end

end

s4:begin

if(x==0) begin state<=s2;z<=0;end

else begin state<=s1;z<=0;end

end

default: state<=s0;

endcase

end

endmodule

实验仿真波形:

分析:每当到达状态四即s4,此时检测序列为“1001”,输出即为1.

序列信号检测器

南昌大学实验报告 学生姓名:学号:专业班级: 实验类型:□验证□综合 设计□创新实验日期:实验成绩:实验三序列信号发生检测器 一、实验目的 1、学会运用VHDL语言设计方法构建具有一定逻辑功能的模块,并能运用图形设计方法完成顶层原理图的设计。 2、掌握脉冲序列检测器的主要功能 二、实验要求 1、设计一个序列信号发生器,用以产生输入序列“1101010011010101”由左开始。 2、设计一个序列检测器,用以检测输入序列,检测序列为10011 3、运用QuartusⅡ软件中的仿真功能对所设计的序列检测器的各个模块及顶层电路的功 能进行仿真分析。 三、设计过程 1,序列信号检测器设计原理: 序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的相同,则输出 1,否则输出 0。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码与预置数的对应码相同。设计中一般采用状态机来实现。 2,模块设计: 根据层次化设计理论以及序列信号检测器的基本原理,本次设计的序列检测器采用自顶向下的思路可分为时钟输入模块、序列发生模块、序列检测模块、数码管动态扫描显示模块及LED状态转换显示模块,系统框图如下

序列信号检测器系统框图 3、使用文本设计底层文件,并生成相应元器件,再使用原理图设计顶层文件 四、实验步骤 1、顶层文件的设计 顶层原理图设计可以依据系统框图进行,时钟输入模块(clkdiv)、序列发生模块(fsq)、序列检测模块(jcq)、数码管动态扫描显示模块及LED状态转换显示模块(scan_led)、序列信号译码模块(czb) 2,各模块设计文件 ①时钟clkdiv: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DIV IS PORT(CLK : IN STD_LOGIC; CLK_DIV : OUT STD_LOGIC); END DIV; ARCHITECTURE RT1 OF DIV IS SIGNAL DA TA:INTEGER RANGE 0 TO 500;

使用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;

序列检测器实验报告

序列检测器设计 实验内容: 设计一个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 is port ( 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 is signal a:std_logic_vector(7 downto 1); signal combination: std_logic_vector(7 downto 1); begin process(clk) begin if clk'event and clk='1' then a<=a(6 downto 1)&x; if y='1' then combination<="1110010";

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

第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

实验六 序列信号发生器与序列信号检测器的设计1

实验六、序列信号发生器与序列信号检测器的设计 一、实验目的 1、掌握序列发生器和检测器的工作原理; 2、初步学会用状态机进行数字系统设计。 二、实验要求 1、基本要求 1)设计一个“10001110”序列发生器; 2)设计一个“10001110”序列的检测器。 2、扩展要求 1)设计一个序列发生器,将8 位待发生序列数据由外部控制输入进行预置,从而可随时改变输出序列数据。 2)将8 位待检测预置数由按键作为外部输入,从而可随时改变检测密码。写出该检测器的VHDL 代码,并进行编译下载测试。 3)如果待检测预置数以右移方式进入序列检测器,写出该检测器的VHDL 代码(两进程符号化有限状态机)。 三、实验原理 1、序列发生器原理 在数字信号的传输和数字系统的测试中,有时需要用到一组特定的串行数字信号,产生序列信号的电路称为序列信号发生器。 本实验要求产生一串序列“10001110”。该电路可由计数器与数据选择器构成,其结构图如图6-1所示,其中的锁存输出的功能是为了消除序列产生时可能出现的毛刺现象: 图6-1 序列发生器结构图 2、序列检测器的基本工作过程: 序列检测器用于检测一组或多组由二进制码组成的脉冲序列信号,在数字通信中有着广泛的应用。当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。状态图如图6-2所示:

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);

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

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

EDA实验报告实验三:序列信号发生器与检测器设计

实验三序列信号发生器与检测器设计 一、实验目的 1.学习一般有限状态机的设计; 2.实现串行序列的设计。 二、设计要求 1.先设计0111010011011010序列信号发生器; 2.再设计一个序列信号检测器,若系统检测到串行序列11010则输出为“1”,否则输出为“0”,并对其进行仿真和硬件测试。 三、实验设备 PC机,Quartu eⅱ软件,实验箱 四、实验原理 1、序列信号发生器 复位信号CLRN。当CLRN=0时,使CNT=0000,当CLRN=1时,不影响程序运行,每来一个CLK脉冲CNT加一。 2、序列信号检测器 状态转移图:

五、实验步骤 1、信号发生器 1)建立工作库文件夹,输入设计项目VHDL代码,如下: L I B R A R Y I E E E; U S E I E E E.S T D_L O G I C_1164.A L L; U S E I E E E.S T D_L O G I C_A R I T H.A L L; U S E I E E E.S T D_L O G I C_U N S I G N E D.A L L; E N T I T Y X L S I G N A L16_1I S P O R T(C L K,C L R N:I N S T D_L O G I C; Z O U T:O U T S T D_L O G I C); E N D X L S I G N A L16_1; A R C H I T E C T U R E o n e O F X L S I G N A L16_1I S S I G N A L C N T:S T D_L O G I C_V E C T O R(3D O W N T O0); S I G N A L Z R E G:S T D_L O G I C; B E G I N P R O C E S S(C L K,C L R N) B E G I N I F(C L R N='0')T H E N C N T<="0000";E L S E I F(C L K'E V E N T A N D C L K='1')T H E N C N T<=C N T+'1'; E N D I F;

EDA实验报告--序列信号发生器

南昌大学实验报告 学生姓名:林聪学号:5801209051 专业班级:中兴091班 实验类型:□验证□综合□设计□创新实验日期:2011/10/19实验成绩: 实验三序列信号发生和检测器 一、实验目的 1、进一步熟悉EDA实验装置和QuartusⅡ软件的使用方法; 2、学习有限状态机法进行数字系统设计; 二、设计要求 完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现一个串行序列信号发生器和一个序列信号检测器的功能,具体要求如下: 1、先设计0111 0100 1101 1010序列信号发生器,其最后8BIT数据用LED显示出来; 2、再设计一个序列信号检测器,检测上述序列信号,若检测到串行序列“11010”则输出为“1”, 否则输出为“0”; 三、主要仪器设备 1、微机1台 2、QuartusII集成开发软件1套 3、EDA实验装置1套 四、实验步骤 1、分析实验,由于实验需要产生具备序列发生器和序列检测器的功能,根据分模块处理的 思想,可以把实验分为两个模块,通过顶层元件建立输入输出的连接。 2、建立模块使用VHDL编程,首先,建立序列发生器的模块,名为xlfsq,VHDL代码如下: libraryieee; use ieee.std_logic_1164.all; useieee.std_logic_unsigned.all; entityxlfsq is port(clk,rst:instd_logic; cout,e1,e2,e3,e4,e5,e6,e7,e8:out std_logic); endxlfsq; architecture one of xlfsq is signalcq:std_logic; signal f1,f2,f3,f4,f5,f6,f7:std_logic; begin P1:process(clk,rst) variablecount:std_logic_vector(3 downto 0); begin if(rst='0')then count:="0000"; elsif(clk'event and clk='1')then count:=count+1; end if;

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

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 );

110序列检测器仿真报告

Lab 110序列检测器仿真 1.实验目的 学会序列检测的设计,学会modelsim的使用,熟悉用Quartus编译Verilog语言的方法,熟悉DEO板的操作。 2.实验内容 1)用HDL语言的输入方式,实现110序列检测器。 2)用modelsim进行仿真。 3)用DE0下载并进行测试。 3.代码分析 1)该实验使用状态机进行设计,使用两个always语句,一个作为时序逻辑,另一个作为组合逻辑,其结构图为 2)首先定义输入输出变量和中间变量: module test110(data_in,data_out,Q,cp,en); output data_out,Q; //定义输出变量; input data_in,cp,en; //定义输出变量; reg data_out; //定义中间变量;

reg[1:0]pres_state,next_state; //定义两个时态; wire Q; //定义wire型中间变量; parameter s0=2'd0,s1=2'd1,s2=2'd2; //指定状态编码; 3)第一个always语句实现时序逻辑功能: fenpinqi(Q,cp); //调用分频器,改变时钟信号; always@(posedge Q or negedge en) //采用边沿触发; if(~en)pres_state<=s0; //清零; else pres_state<=next_state; //在Q上升沿触发器状态翻转; 4)第二个always语句实现组合逻辑功能: always@(pres_state or data_in) //电平触发事件 Begin next_state<=2' xx; //定义输出为零 data_out=1'b0; case(pres_state) //判断条件为现态的状态,对各状态值惊醒判断,并输出值s0:next_state<=(data_in==1)?s1:s0; s1:next_state<=(data_in==1)?s2:s0; s2:begin next_state<=(data_in==1'b1)?s2:s0; if(data_in==1'b0)data_out=1'b1; end endcase end endmodule 5)所调用的分频器的模块: module fenpinqi(Q,CP); output Q; //定义输出端口 input CP; //定义输入端口 wire [32:0]A; //定义中间变量 counter(A,CP); //调用计数器进行计数 D_FF(Q,~Q,CP,A); //调用D触发器是信号发生翻转endmodule module counter(Q,CP); //计数器,每第25M个信号发生一次变化output Q[32:0]; //定义输出端口 input CP; //定义信号输入端口 reg[32:0]Q; //定义中间变量 always@(posedge CP) //采用边沿触发 if(Q==33'd2*******)Q<=33'd0;//每25M作为一个计数周期 else Q<=Q+1'd1; //Q自增并输出 endmodule module D_FF(Q,D,CP,CR); //D触发器 output Q; //定义输出端 input D,CP; //定义输入端及D信号输入 input [32:0]CR; //定义输入变量 reg Q; //定义中间变量

相关文档
相关文档 最新文档