实验报告
学生姓名:EDA小王子学号:国家机密专业班级:国家机密
实验类型:□验证□综合√设计□创新实验日期:国家机密实验成绩:很高实验三序列信号发生器与检测器设计
一、实验目的
1.学习一般有限状态机的设计;
2.实现串行序列的设计。
二、设计要求
要求用状态机设计实现串行序列检测器的设计,先设计(可用原理图输入法)序列信号发生器,产生序列:0111010011011010;再设计检测器,若检测到串行序列11010则输出为“1”,否则输出为“0”,并对其进行仿真和硬件测试。
三、实验设备
PC机,Quartu eⅱ软件,实验箱
四、实验原理
1、序列信号发生器
复位信号CLRN。
当CLRN=0时,使CNT=0000,当CLRN=1时,不影响程序运行,每来一个CLK脉冲CNT加一。
2、序列信号检测器
状态转移图:
五、实验步骤
1、信号发生器
1)建立工作库文件夹,输入设计项目VHDL代码,如下:
L I B R A R Y I E E E;
U S E I E E E.S T D_L O G I C_1164.A L L;
U S E I E E E.S T D_L O G I C_A R I T H.A L L;
U S E I E E E.S T D_L O G I C_U N S I G N E D.A L L;
E N T I T Y
F S Q I S
P O R T(C L K,C L R N:I N S T D_L O G I C;
Z O U T:O U T S T D_L O G I C);
E N D
F S Q;
A R C H I T E C T U R E o n e O F F S Q I S
S I G N A L C N T:S T D_L O G I C_V E C T O R(3D O W N T O0);
S I G N A L Z R E G:S T D_L O G I C;
B E G I N
P R O C E S S(C L K,C L R N)
B E G I N
I F(C L R N='0')T H E N C N T<="0000";E L S E
I F(C L K'E V E N T A N D C L K='1')T H E N
C N T<=C N T+'1';
E N D I F;
E N D I F;
E N D P R O C E S S;
P R O C E S S(C N T)
B E G I N
C A S E C N T I S
W H E N"0000"=>Z R E G<='0';
W H E N"0001"=>Z R E G<='1';
W H E N"0010"=>Z R E G<='1';
W H E N"0011"=>Z R E G<='1';
W H E N"0100"=>Z R E G<='0';
W H E N"0101"=>Z R E G<='1';
W H E N"0110"=>Z R E G<='0';
W H E N"0111"=>Z R E G<='0';
W H E N"1000"=>Z R E G<='1';
W H E N"1001"=>Z R E G<='1';
W H E N"1010"=>Z R E G<='0';
W H E N"1011"=>Z R E G<='1';
W H E N"1100"=>Z R E G<='1';
W H E N"1101"=>Z R E G<='0';
W H E N"1110"=>Z R E G<='1';
W H E N"1111"=>Z R E G<='0';
W H E N O T H E R S=>Z R E G<='0';
E N D C A S E;
E N D P R O C E S S;
Z O U T<=Z R E G;
E N D o n e;
2)对其进行波形仿真,如下图:
3)将其转换成可调用元件如图:
2、信号检测器
1)建立工作库文件夹,输入设计项目VHDL代码,如下:
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY JCQ IS
PORT(DIN, CLK, CLR : IN STD_LOGIC;
ss : OUT std_logic_vector(0 downto 0));
END JCQ;
ARCHITECTURE behav OF JCQ IS
type states is (S0,S1,S2,S3,S4,S5);
SIGNAL Q : states ;
SIGNAL D : STD_LOGIC_VECTOR(4 DOWNTO 0);
BEGIN
D <= "11010" ;
PROCESS( CLK, CLR )
BEGIN
IF CLR = '1' THEN Q <= S0 ;
ELSIF CLK'EVENT AND CLK='1' THEN
CASE Q IS
WHEN S0=> IF DIN = D(4) THEN Q <= S1 ; ELSE Q <= S0 ; END IF ; WHEN S1=> IF DIN = D(3) THEN Q <= S2 ; ELSE Q <= S0 ; END IF ; WHEN S2=> IF DIN = D(2) THEN Q <= S3 ; ELSE Q <= S2 ; END IF ; WHEN S3=> IF DIN = D(1) THEN Q <= S4 ; ELSE Q <= S0 ; END IF ; WHEN S4=> IF DIN = D(0) THEN Q <= S5 ; ELSE Q <= S2 ; END IF ;
WHEN OTHERS => Q <= S0 ;
END CASE ;
END IF ;
END PROCESS ;
PROCESS( Q )
BEGIN
IF Q = S5 THEN ss <="1";
ELSE ss <= "0";
END IF ;
END PROCESS ;
END behav ;
状态机如图:
3)将其转换成可调用元件如图:
3.序列信号检测器顶层文件
1)调用序列信号发生器和序列信号检测器元件,建立工作库文件夹,输入设计项目原理图如下图:
2)对总体进行波形仿真,如下图:
4.管脚邦定
六、实验现象及验证
当PIN53灭,PIN54亮时:
七、实验心得
1.首先用VHDL语言设计序列信号发生器和序列信号检测器模块。
2.了使设计简化,顶层文件采用原理图法,直接将两个模块连接起来。
3.测器时要先画出其状态转移图,否则很容易出错。
4.通过本次实验,加深了我序列信号检测器状态转移的理解。