实验七 序列检测器的 VHDL 设计
(1)实验目的:用状态机实现序列检测器的设计,了解一般状态机的设计
与应用。
(2)实验原理:序列检测器可用于检测一组或多组由二进制码组成的脉冲
序列信号,当序列检测器连续收到一组串 行二进制码后,如果这组码与检测器
中预先设置的码相同,则输出 1,否则输出 0。由于这种检测的关键在于正确
码的收 到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,
直到在连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程
中,任何一位不相等都将回到初始状态重新开始检测。书上 P168 例 5-11 描
述的电路完成对序列数”11100101”的检测,当这一串序列数高位在前(左移)
串行进入检测器后,若此数与预置的密码数相同,则输出” A”,否则仍然输
出”B”。
(3)实验内容 1:用 VHDL 状态机设计一个 8 位序列信号检测器。
实验程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY SCHK IS
PORT (DIN,CLK,CLR: IN STD_LOGIC;
AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END ENTITY SCHK;
ARCHITECTURE ONE OF SCHK IS
SIGNAL Q : INTEGER RANGE 0 TO 8;
SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
D<="11100101";
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;
评论0