1、实验三 序列信号发生器与检测器设计一、实验目的1学习一般有限状态机的设计;2实现串行序列的设计。二、设计要求1 先设计0111010011011010序列信号发生器;2 再设计一个序列信号检测器,若系统检测到串行序列11010则输出为“1”,否则输出为“0”,并对其进行仿真和硬件测试。三、实验设备PC机,Quartue软件,实验箱四、实验原理1、序列信号发生器CNT00000001001000110100010101100111ZOUT01110100CNT10001001101010111100110111101111ZOUT11011010复位信号CLRN。当CLRN=0时,使CNT=00
2、00,当CLRN=1时,不影响程序运行,每来一个CLK脉冲CNT加一。2、序列信号检测器状态转移图:五、实验步骤1、信号发生器1) 建立工作库文件夹,输入设计项目VHDL代码,如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY XLSIGNAL16_1 IS PORT( CLK,CLRN:IN STD_LOGIC; ZOUT:OUT STD_LOGIC); END XLSIGNAL16_1;ARCHITECTURE one
3、 OF XLSIGNAL16_1 IS SIGNAL CNT:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL ZREG:STD_LOGIC;BEGIN PROCESS(CLK,CLRN) BEGIN IF(CLRN=0)THEN CNT=0000;ELSE IF(CLKEVENT AND CLK=1)THEN CNTZREGZREGZREGZREGZREGZREGZREGZREGZREGZREGZREGZREGZREGZREGZREGZREGZREG=0; END CASE; END PROCESS; ZOUT=ZREG;END one;2)对其进行波形仿真,如下图:
4、3)将其转换成可调用元件如图:2、信号检测器1)建立工作库文件夹,输入设计项目VHDL代码,如下:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK IS PORT(DIN, CLK, CLR : IN STD_LOGIC; ss : OUT STD_LOGIC_VECTOR END SCHK;ARCHITECTURE behav OF SCHK IS SIGNAL Q : INTEGER RANGE 0 TO 5 ; SIGNAL D : STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN D = 10010 ; P
5、ROCESS( CLK, CLR ) BEGIN IF CLR = 1 THEN Q IF DIN = D(4) THEN Q = 1 ; ELSE Q IF DIN = D(3) THEN Q = 2 ; ELSE Q IF DIN = D(2) THEN Q = 3 ; ELSE Q IF DIN = D(1) THEN Q = 4 ; ELSE Q IF DIN = D(0) THEN Q = 5 ; ELSE Q Q = 0 ; END CASE ; END IF ; END PROCESS ; PROCESS( Q ) BEGIN IF Q = 5 THEN ss = 1 ; ELSE ss = 0 ; END IF ; END PROCESS ;END behav ;3)将其转换成可调用元件如图:3.序列信号检测器顶层文件1)调用序列信号发生器和序列信号检测器元件,建立工作库文件夹,输入设计项目原理图如下图:2)对总体进行波形仿真,如下图:4管脚邦定六、实验心得1.首先用VHDL语言设计序列信号发生器和序列信号检测器模块。2 、为了使设计简化,顶层文件采用原理图法,直接将两个模块连接起来。3、作检测器时要先画出其状态转移图,否则很容易出错。