资源描述:
《EDA4序列信号发生器与检测器设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、南昌大学实验报告学生姓名:邱永洪学号:6100210026专业班级:中兴101班实验类型:□验证□综合■设计□创新实验日期:2012/11/12实验四序列信号发生器与检测器设计一、实验目的1、设计序列信号发生器2、用有限状态机的方法设计检测器二、实验内容与要求1、设计序列发生器,完成序列为0111010011011010的序列发生器2、用有限状态机设计序列检测器,实现串行序列11010的检测器3、对检测到的次数计数,并将实时产生的序列6位动态显示三、设计思路及程序1、序列发生器的设计设计一个‘0111010011011010’的序列发生器,利用S0到S15的
2、16个状态机循环产生‘0111010011011010’序列。CLK为时钟脉冲输入口,D-RESET为复位口使其重新发送序列,COUNT为序列输出口。程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYCOUNTISPORT(CLK,RST:INSTD_LOGIC;COUNT:OUTSTD_LOGIC);ENDCOUNT;ARCHITECTUREbehavOFCOUNTISTYPEFSM_STIS(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15);SIGN
3、ALREG:FSM_ST;10SIGNALQ:STD_LOGIC;BEGINPROCESS(CLK,RST)BEGINIFRST='1'THENREG<=s0;Q<='0';ELSIFCLK'EVENTANDCLK='1'THENCASEREGISWHENs0=>Q<='0';REG<=s1;WHENs1=>Q<='1';REG<=s2;WHENs2=>Q<='1';REG<=s3;WHENs3=>Q<='0';REG<=s4;WHENs4=>Q<='0';REG<=s5;WHENs5=>Q<='0';REG<=s6;WHENs6=>Q<='1';REG<=
4、s7;WHENs7=>Q<='1';REG<=s8;WHENs8=>Q<='0';REG<=s9;WHENs9=>Q<='1';REG<=s10;WHENs10=>Q<='1';REG<=s11;WHENs11=>Q<='0';REG<=s12;WHENs12=>Q<='0';REG<=s13;WHENs13=>Q<='1';REG<=s14;WHENs14=>Q<='1';REG<=s15;WHENs15=>Q<='0';REG<=s0;WHENOTHERS=>REG<=s0;Q<='0';ENDCASE;ENDIF;ENDPROCESS;COUNT<=Q
5、;ENDbehav;2、设计序列检测器基本思想是采用有限状态机设计,先设定5个状态S0、S1、S2、S3、S4,实现序列11010的检测,用到状态机。在状态机,我们再每个状态的下一个转义的状态都有俩个转移方向。这样就提高了其检测效率,而且实现简单。如碰到序列11010,大可不必要再检测到第三个1时跳回到s0状态,而是留在s1状态。10S1S0S4S3S20110100101DIN是序列输入口CLK为时钟输入口CLR为清零命令输入口SS为计数输出口程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSEQUENCEC
6、HECKISPORT(DIN,CLK,CLR:INSTD_LOGIC;ss:OUTSTD_LOGIC);ENDSEQUENCECHECK;ARCHITECTUREbehavOFSEQUENCECHECKISTYPEFSM_STIS(s0,s1,s2,s3,s4);SIGNALQ:FSM_ST;SIGNALD:STD_LOGIC_VECTOR(4DOWNTO0);SIGNALflag:INTEGERRANGE0TO1;BEGIND<="11010";PROCESS(CLK,CLR)BEGINIFCLR='1'THENQ<=s0;ELSIFCLK'EVENTAN
7、DCLK='1'THENCASEQISWHENs0=>IFDIN=D(4)THENQ<=s1;flag<=1;ELSEQ<=s0;ENDIF;10WHENs1=>IFDIN=D(3)THENQ<=s2;ELSEQ<=s0;ENDIF;WHENs2=>IFDIN=D(2)THENQ<=s3;ELSEQ<=s2;ENDIF;WHENs3=>IFDIN=D(1)THENQ<=s4;ELSEQ<=s0;ENDIF;WHENs4=>IFDIN=D(0)THENQ<=s0;ELSEQ<=s2;ENDIF;ENDCASE;ENDIF;ENDPROCESS;PROCESS(
8、Q,flag)BEGINIF(flag=1ANDQ=