资源描述
实验三 序列信号发生器与检测器设计
一、实验目的
1.学习一般有限状态机的设计;
2.实现串行序列的设计。
二、设计要求
1. 先设计0111010011011010序列信号发生器;
2. 再设计一个序列信号检测器,若系统检测到串行序列11010则输出为“1”,否则输出为“0”,并对其进行仿真和硬件测试。
三、实验设备
PC机,Quartueⅱ软件,实验箱
四、实验原理
1、序列信号发生器
CNT
0000
0001
0010
0011
0100
0101
0110
0111
ZOUT
0
1
1
1
0
1
0
0
CNT
1000
1001
1010
1011
1100
1101
1110
1111
ZOUT
1
1
0
1
1
0
1
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、作检测器时要先画出其状态转移图,否则很容易出错。
展开阅读全文