序列检测器的设计
实验三序列检测器的设计
一、实验目的:
学习序列检测器的设计、分析和测试方法,锻炼分析VHDL语言的能力。
二、原理说明:
序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,这在数字通信领域有广泛的应用。当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的相同,则输出1,否则输出0。由于这种检测的关键在于正确码收到必须是连续的每一位码都与预置数的对应码相同。
在检测过程中,任何一位不相等都将回到初始状态重新开始检测。
三、实验内容:
1、分析图3-1中的各语句功能、设计原理、逻辑功能。
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);
check_out:out STD_LOGIC
);
END chk;
architecture chk of chk is
signal q: integer range 0 to 8;
begin
process(clk,clr)
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)
begin if q=8 then check_out<='1';
else check_out<='0';
end if;
end process;
end chk;
图3-1 序列检测器VHDL源程序
2、输入不同的D与DIN值,给出序列检测器的时序波形。



