序列检测器实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

序列检测器设计

实验内容:

设计一个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";

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。

(2)扫描器与七段译码器一起的设计方案

为实现输出值在七段译码器上显示,需要有一个扫描器依次循环输出,为使设计更简单可以将扫描器和七段译码器设计在一起,并一起打包。

输入信号:一个扫描时钟输入信号clk;

一个输入信号b;

一个7位输入信号c;

输出信号:一个7位输出信号q;

一个7位输出信号ai;

中间信号:一个8位扫描信号a;

具体设计:

为实现器件所要求功能,在上升的时钟沿下,当扫描信号在第一位时,将从c输入的第一位赋给q,并判断其值,若为0,则使接到七段译码器的显示0,否则为1的时候显示1。

同样一直跳转,同样赋值,至最后一位,如果从序列输出端接入的输入b(序列检测器中unlk)为1时,令最后一根七段译码器显示1,否则,b为0时,最后一个七段译码器显示0。至扫描信号跳过最后一个七段译码器至其他情况时,返回至第一个七段译码器,重新循环扫描。

实现扫描器和七段译码器的语言(VHD):

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity SCA2 is

port(

clk:in std_logic;

Q:buffer std_logic_vector(7 downto 1);

b:in std_logic;

c:in std_logic_vector(7 downto 1);

a : buffer std_logic_vector(7 downto 0);

AI:out std_logic_vector(6 downto 0));

end entity;

architecture bhv of SCA2 is

begin

process(clk)

begin

if(clk'event and clk='1')then

case a is

when "00000001"=>a<="00000010";

IF c(7)='0' THEN q(1)<='0';AI<="1111110";ELSE q(1)<='1';AI<="0110000";END IF;

when "00000010"=>a<="00000100";

IF c(6)='0' THEN q(2)<='0';AI<="1111110";ELSE q(2)<='1';AI<="0110000";END IF;

when "00000100"=>a<="00001000";

相关文档
最新文档