verilog练习

来源:互联网 发布:手机版 淘宝 人工客服 编辑:程序博客网 时间:2024/05/29 09:16

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITY SCHKIS

  PORT(DIN, CLK, CLR :INSTD_LOGIC;--串行输入数据位/工作时钟/复位信号

        AB :OUTSTD_LOGIC_VECTOR(3DOWNTO0));--检测结果输出

END SCHK;

ARCHITECTURE behavOF SCHK IS

    SIGNAL Q:INTEGERRANGE0TO8;

    SIGNAL D:STD_LOGIC_VECTOR(7DOWNTO0);  --8位待检测预置数

BEGIN

    D <="11100101" ;--8位待检测预置数:密码:E5H

 Com1:PROCESS( CLK, CLR)

  BEGIN

  IF CLR = '1'THEN    Q <=0;

  ELSIF  CLK'EVENTAND CLK='1'THEN--时钟到来时,判断并处理当前输入的位

     CASE QIS

      WHEN0=> IF DIN = D(7)THEN Q <=1;ELSE Q<=0;ENDIF;

      WHEN1=> IF DIN = D(6)THEN Q <=2;ELSE Q<=0;ENDIF;

      WHEN2=> IF DIN = D(5)THEN Q <=3;ELSE Q<=0;ENDIF;

      WHEN3=> IF DIN = D(4)THEN Q <=4;ELSE Q<=0;ENDIF;

      WHEN4=> IF DIN = D(3)THEN Q <=5;ELSE Q<=0;ENDIF;

      WHEN5=> IF DIN = D(2)THEN Q <=6;ELSE Q<=0;ENDIF;

      WHEN6=> IF DIN = D(1)THEN Q <=7;ELSE Q<=0;ENDIF;

      WHEN7=> IF DIN = D(0)THEN Q <=8;ELSE Q<=0;ENDIF;

      WHENOTHERS=>  Q<=0;

            ENDCASE;

    ENDIF;

  ENDPROCESS;

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

  BEGIN

      IF Q=8 THEN  AB <="0001";    --序列数检测正确,输出 "1"

      ELSE      AB<="0011";          --序列数检测错误,输出 "3"

      ENDIF;

  ENDPROCESS;

END behav ;

0 0