文档详情

序列信号发生器和检测器.doc

发布:2017-06-16约7.14千字共9页下载文档
文本预览下载声明
南昌大学实验报告 学生姓名: 赖硕秋 学 号: 6100208060 专业班级: 电子081 实验类型:□ 验证 □ 综合 ■ 设计 □ 创新 实验日期:2010.11.12 实验成绩: 实验三 序列信号发生器与检测器设计 一、实验目的 (1)掌握产生特定序列信号的方法; (2)学会用状态机方法来实现VHDL编程设计; (3)进一步巩固分层设计的方法. 二、实验内容与要求 用状态机设计实现串行序列检测器,先设计序列信号发生器,产生序列“0111010011011011010”;再设计检测器,若检测到串行序列11010则输出计数器计入个数,并对其进行仿真和硬件测试。 三、设计原理 本实验中,采用分层设计的思想,底层分别用VHDL文本来描述序列发生器和序列检测器,顶层用原理图法连线好元件化的器件。 对于序列发生器(特定序列)设计比较多样,可以采用并行case语句来实现产生特定的周期性序列;序列检测器采用状态机的设计方法,在不同状态下检测特定的序列信号,最后通过一个计数器计入所检测到的序列个数,并且通过并行移位来显示有限个产生信号。根据所检测的序列“11010”,可以得到以下的状态转移图: 四、实验程序 方法一:VHDL文本法,不分层(独立编写) LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY XULIE IS PORT(CLK,CLR,RESET:IN STD_LOGIC; M:OUT STD_LOGIC; COUT1,COUT2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END ENTITY; ARCHITECTURE ONE OF XULIE IS TYPE M_STATE IS(ST0,ST1,ST2,ST3,ST4); SIGNAL STA:M_STATE; SIGNAL SHUZI:STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL A:STD_LOGIC; SIGNAL CC:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN SHUZI=11010; PROCESS(CLK,CLR,RESET,A,CC) VARIABLE N:INTEGER RANGE 16 DOWNTO 1; BEGIN IF RESET=1 THEN N:=1; --序列发生器0111010011011010 ELSIF CLKEVENT AND CLK=1 THEN CASE N IS WHEN 1=A=0;N:=N+1; WHEN 2=A=1;N:=N+1; WHEN 3=A=1;N:=N+1; WHEN 4=A=1;N:=N+1; WHEN 5=A=0;N:=N+1; WHEN 6=A=1;N:=N+1; WHEN 7=A=0;N:=N+1; WHEN 8=A=0;N:=N+1; WHEN 9=A=1;N:=N+1; WHEN 10=A=1;N:=N+1; WHEN 11=A=0;N:=N+1; WHEN 12=A=1;N:=N+1; WHEN 13=A=1;N:=N+1; WHEN 14=A=0;N:=N+1; WHEN 15=A=1;N:=N+1; WHEN 16=A=0;N:=1; WHEN OTHERS=NULL; END CASE; END IF; IF CLR=1 THEN STA=ST0;CC=(OTHERS=0); --序列检测器11010 ELSIF CLKEVENT AND CLK=0 THEN CASE STA IS WHEN ST0= IF A=SHUZI(4) THEN STA=ST1; ELSE STA=ST0; END IF; WHEN ST1= IF A=SHUZI(3) THEN STA=ST2; ELSE STA=ST0; END IF;
显示全部
相似文档