一、实验目的
1.学习一般有限状态机的设计; 2.实现串行序列的设计。
二、设计要求
1. 先设计0111010011011010序列信号发生器;
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_11.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_11.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、作检测器时要先画出其状态转移图,否则很容易出错。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务