实验三序列信号发生器与检测器设计
一、实验目的
1.学习一般有限状态机的设计; 2.实现串行序列的设计。
二、设计要求
1. 先设计11010序列信号发生器;
2. 再设计一个序列信号检测器,假设系统检测到串行序列11010那么输出为“1〞,
否那么输出为“0〞,并对其进展仿真和硬件测试。
三、实验设备
PC机,Quartueⅱ软件,实验箱
四、实验原理
1、序列信号发生器 CNT ZOUT CNT ZOUT
0000 0 1000 1 0001 1 1001 1 0010 1 1010 0 0011 1 1011 1 0100 0 1100 1 0101 1 1101 0 0110 0 1110 1 0111 0 1111 0 复位信号CLRN。当CLRN=0时,使CNT=0000,当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 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(CLK'EVENT AND CLK='1')THEN CNT<=CNT+'1'; END IF;
END IF; END PROCESS; PROCESS(CNT) BEGIN
CASE CNT IS
WHEN\"0000\"=>ZREG<='1'; WHEN\"0001\"=>ZREG<='1'; WHEN\"0010\"=>ZREG<='1'; WHEN\"0011\"=>ZREG<='0'; WHEN\"0100\"=>ZREG<='0'; WHEN\"0101\"=>ZREG<='1'; WHEN\"0110\"=>ZREG<='0'; WHEN\"0111\"=>ZREG<='1'; WHEN\"1000\"=>ZREG<='0'; WHEN\"1001\"=>ZREG<='1'; WHEN\"1010\"=>ZREG<='0'; WHEN\"1011\"=>ZREG<='0'; WHEN\"1100\"=>ZREG<='1'; WHEN\"1101\"=>ZREG<='0'; WHEN\"1110\"=>ZREG<='1'; WHEN\"1111\"=>ZREG<='1'; WHEN OTHERS=>ZREG<='0'; END CASE; END PROCESS; ZOUT<=ZREG; END one;
2〕对其进展波形仿真,如下列图:
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\" ; 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(4) THEN Q <= 1 ; ELSE Q <= 0 ; END IF ; WHEN 1=> IF DIN = D(3) THEN Q <= 2 ; ELSE Q <= 1 ; END IF ; WHEN 2=> IF DIN = D(2) THEN Q <= 3 ; ELSE Q <= 1 ; END IF ; WHEN 3=> IF DIN = D(1) THEN Q <= 4 ; ELSE Q <= 0 ; END IF ; WHEN 4=> IF DIN = D(0) THEN Q <= 5 ; ELSE Q <= 1 ; END IF ; WHEN OTHERS => 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、作检测器时要先画出其状态转移图,否那么很容易出错。
因篇幅问题不能全部显示,请点此查看更多更全内容