ELSE
QL<=QL+1; END IF;
END IF; --END IF LOAD END IF; END PROCESS;
END ARCHITECTURE ART; 8. 序列信号发生器
在数字信号的传输和数字系统的测试中,有时需要用到一组特定的串行数字信号。产生序列信号的电路称为序列信号发生器。 1) “01111110”序列发生器
该电路可由计数器与数据选择器构成,其VHDL描述如下: 【例3.9.20】 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SENQGEN IS
PORT(CLK,CLR,CLOCK:IN STD_LOGIC;
ZO:OUT STD_LOGIC); END ENTITY SENQGEN;
ARCHITECTURE ART OF SENQGEN IS
SIGNA COUNT:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNA Z:STD_LOGIC :=‘0’; BEGIN
PROCESS(CLK,CLR) IS --注意各进程间的并行性 BEGIN
IF(CLR=‘1’)THEN COUNT<=\; ELSE
IF(CLK=‘1’AND CLK'EVENT)THEN
IF(COUNT=\; ELSE COUNT<=COUNT +‘1’; END IF; END IF; END IF; END PROCESS; PROCESS(COUNT) IS BEGIN
CASE COUNT IS
WHEN \‘0’; WHEN \‘1’; WHEN \‘1’; WHEN \‘1’; WHEN \‘1’;
WHEN \‘1’; WHEN \‘1’; WHEN OTHERS=>Z<=‘0’; END CASE; END PROCESS;
PROCESS(CLOCK,Z) IS
BEGIN --消除毛刺的锁存器 IF(CLOCK'EVENT AND CLOCK=‘1’)THEN ZO<=Z; END IF;
END PROCESS;
END ARCHITECTURE ART; 9.序列信号检测器
下面是一个“01111110”序列信号检测器的VHDL描述。 【例3.9.22】 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY DETECT IS
PORT( DATAIN:IN STD_LOGIC; CLK:IN STD_LOGIC; Q:OUT STD_LOGIC); END ENTITY DETECT;
ARCHITECTURE ART OF DETECT IS
TYPE STATETYPE IS(S0,S1,S2,S3,S4,S5,S6,S7,S8); BEGIN
PROCESS(CLK) IS
VARIABLE PRESENT_STATE:STATETYPE; BEGIN
Q<=‘0’;
CASE PRESENT_STATE IS WHEN S0=>
IF DATAIN=‘0’ THEN PRESENT_STATE:=S1; ELSE PRESENT_STATE:=S0; END IF;
WHEN S1=>
IF DATAIN=‘1’ THEN PRESENT_STATE:=S2; ELSE PRESENT_STATE:=S1; END IF;
WHEN S2=>
IF DATAIN=‘1’THEN PRESENT_STATE:=S3; ELSE PRESENT_STATE:=S1; END IF;
WHEN S3=>
IF DATAIN=‘1’THEN PRESENT_STATE:=S4; ELSE PRESENT_STATE:=S1; END IF;
WHEN S4=>
IF DATAIN=‘1’THEN PRESENT_STATE:=S5;
ELSE PRESENT_STATE:=S1; END IF;
WHEN S5=>
IF DATAIN=‘1’THEN PRESENT_STATE:=S6; ELSE PRESENT_STATE:=S1; END IF;
WHEN S6=>
IF DATAIN=‘1’THEN PRESENT_STATE:=S7; ELSE PRESENT_STATE:=S1; END IF;
WHEN S7=>
IF DATAIN=‘0’THEN PRESENT_STATE:=S8; Q<='1';ELSE PRESENT_STATE:=S0;END IF;
WHEN S8=>
IF DATAIN=‘0’THEN PRESENT_STATE:=S1; ELSE PRESENT_STATE:=S2; END IF;
END CASE;
WAIT UNTI CLK='1'; END PROCESS;
END ARCHITECTURE ART;