VHDL序列检测器的设计

发布时间:2011-01-19 03:22:51   来源:文档文库   
字号:

6.3 序列检测器的设计

1.设计思路

序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,这在数字通信领域有广泛的应用。当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。如图6.3所示,当一串待检测的串行数据进入检测器后,若此数在每一位的连续检测中都与预置的密码数相同,则输出“A”,否则仍然输出“B”

6.3 8位序列检测器逻辑图

2VHDL源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY CHK IS

PORT(DININ STD_LOGIC; --串行输入数据位

CLK,CLRIN STD_LOGIC; --工作时钟/复位信号

DIN STD_LOGIC_VECTOR(7 DOWNTO 0);--8位待检测预置数

ABOUT STD_LOGIC_VECTOR(3 DOWNTO 0));--检测结果输出

END CHK;

ARCHITECTURE ART 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 IF ;

END PROCESS;

PROCESS(Q) --检测结果判断输出

BEGIN

IF Q= 8 THEN AB<= "1010"; --序列数检测正确,输出“A”

ELSE AB<= "1011"; --序列数检测错误,输出 “B”

END IF ;

END PROCESS;

END ART;

3.硬件逻辑验证

选择实验电路结构图NO.8,5.2节的实验电路结构图NO.8和图6.3确定引脚的锁定。待检测串行序列数输入DINPIO10(左移,最高位在前),清零信号CLRPIO8,工作时钟CLKPIO9,预置位密码D[7..0]PIO7PIO0,指示输出AB[3..0]PIO39PIO36(显示于数码管6)

进行硬件验证时方法如下:① 选择实验电路结构图NO.8,按实验板系统复位; 用键2和键1输入两位十六进制待测序列数; 利用键4和键3输入两位十六进制预置码; 按键8,高电平初始化清零,低电平清零结束(平时数码6应显“B”); 按键6(CLK)8,这时若串行输入的8位二进制序列码与预置码相同,则数码7应从原来的“B”变成“A”,表示序列检测正确,否则仍为“B”

本文来源:https://www.2haoxitong.net/k/doc/485c214ce518964bcf847cba.html

《VHDL序列检测器的设计.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式