欢迎来到天天文库
浏览记录
ID:23810433
大小:203.51 KB
页数:12页
时间:2018-11-10
《实验三序列发生器与序列检测器实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、南昌大学实验报告姓名:学号:6100210173专业班级:中兴通信101实验类型:验证□综合■设计□创新□实验日期:2012、11、16实验四序列信号发生器与检测器设计一、实验目的1、.学习VHDL文本输入法2、学习有限状态机的设计3、设计序列信号发生器和检测器二.实验内容与要求1.设计序列发生器,完成序列为0111010011011010的序列生成器2.用有限状态机设计序列检测器,实现串行序列11010的检测器3.若检测到符合要求的序列,则输出显示位为“1”,否则为“0”4.对检测到的次数计数三.设计思路1.设计分频器因为最终要把待检测序列的检测次数
2、在数码管上显示出,所以必须设计一个分频器,将起始频率作为数码管的扫描频率,而将分频后的频率作为序列发生器的移位频率,所以在程序中设置10KHZ进行分频分成1HZ脉冲(10KHZ的扫描频率是为了让数码管的动态显示更加清晰)2.设计序列发生器在这次的设计序列发生器时没有用状态转移的方法来来形成一个16位的序列,而是通过直接设计一串16位的序列,通过对最高位的输出与并置来形成一串循环的16位序列,这样设计简单方便,易于操作与控制,也减少了在状态转移产生的误差,其主要的核心程序为:architecturebhvofp2issignalbs:std_logic_
3、vector(15downto0):="0111010011011010";beginxlout<=bs(15);process(clk1hz)beginif(clk1hz'eventandclk1hz='1')thenbs<=bs(14downto0)&bs(15);先将序列最高位输出至序列检测器中,然后在一个脉冲作用下,将此时最高位变成最低位,其余14位不变,使序列循环移动,最终形成一个16位循环序列。3.设计序列检测器基本思想是采用有限状态机设计,通过状态的转移来实现被检测序列的的检测,首先设定6个状态S0S1S2S3S4S5通过这6个状态的转移
4、情况来检测出11010这个序列。1212但因为序列发生器发生的序列不断循环过程中也会出现一些类似11010的特殊序列,则在状态转移中则需要通过一些状态的变换来检测出里面包含的11010序列,如下文所讲的两种特殊情形便是我们序列发生器产生序列中出现的特殊序列:(1)在序列发生器产生序列不断循环过程中出现该序列1110100,此序列中也有一个要检测到的序列但在状态转移过程需要注意:1110100S0S1S2S2S3S4S5S0即当S2状态转移到S3状态时,如果此时序列值为1,则只需转移到状态本身S2而不需要转移至S0,这样即可节约转移时间也可提高检测效率,
5、之后的状态按正常转移并且最后从状态S5回到S0。(2)在序列发生器产生序列不断循环过程中出现该序列110110100,此序列中也有一个要检测到的序列但是在状态团转移时同样需要注意:110110100S0S1S2S3S4S2S3S4S5S0即当状态S4转移到S5状态时,如果此时序列值为1,则需要将状态转移至S2状态,从S2状态重新开始检测,而不需要转移至S0,之后其它状态正常转移并且最后由S5状态转移至S0状态。S5S1S0S4S3S201101001010从上面的流程图可以看出所有的回路在检测完一次序列后在下一次没有该序列时会流向初始状态S0,而当两个
6、或多个被检测序列连续在一起时,状态S5会跳过状态S0直接转移至状态S1完成序列的的检测,直到检测完后再次回到初始状态S0,并且为了避免上面所讲的两种特殊序列在状态转移都进行了改进,在状态S2至状态S3时若序列值为1则返回自身,消除第一种特殊情况下序列的检测问题,在状态S4至状态S5时若序列值为1返回到状态S2,消除第二种特殊情况对1101016序列的检测。3、此外在设计序列检测器时,为了使实验现象更明显,更好的观测序列的的移动与检测情况我使用了5个LED分别来显示最新产生的五个序列位,分别输出到端口ledag(4),ledag(3),ledag(2),
7、ledag(1),ledag(0)实现程序语句如下if(clk1hz'eventandclk1hz='1')thenledag(4)<=ledag(3);---移位输出显示在led上以便观看ledag(3)<=ledag(2);1212ledag(2)<=ledag(1);ledag(1)<=ledag(0);ledag(0)<=xlout;--将最近生产的序列赋给最前端的ledge(0)位endif;3、设计计数器模块100计数模块因为序列发生器产生的序列不断地循环,待检测序列11010的个数很多,则在程序中设计计数模块,当序列检测器模块检测完一次待
8、检测序列11010时产生一次下降沿,而计数器模块通过该下降沿进行计数自动加一,因为用两个数码管
此文档下载收益归作者所有