您的当前位置:首页正文

实验三序列信号发生器与检测器设计

来源:好兔宠物网
实验三 序列信号发生器与检测器设计

一、实验目的

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、作检测器时要先画出其状态转移图,否那么很容易出错。

因篇幅问题不能全部显示,请点此查看更多更全内容