欢迎来到天天文库
浏览记录
ID:13947349
大小:122.97 KB
页数:8页
时间:2018-07-25
《序列信号检测器的设计与实现 实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数字电路与逻辑设计实验实验名称:序列信号检测器的设计与实现学院:信息与通信工程学院班级:xxxxxxxxxx学号:xxxxxxxxxx班内序号:xx姓名大学霸8一、实验课题序列信号检测器的设计与实现二、实验任务及设计要求(1)熟悉用VHDL语言设计时序逻辑电路的方法。(2)熟悉序列信号检测器的设计方法(3)了解状态机的设计方法用VHDL语言设计实现一个序列信号检测器,当检测到“101”时,输出为“1”;其他情况时,输出为“0”,仿真验证其功能,并下载到实验板测试。三、设计思路与过程实验需要4个端口,时钟
2、输入clk,数据输入d_in,输出f。根据老师的要求后面还加入了时钟显示clk_out来保证数据输入在时钟上升沿之前1、设计思路序列检测器有输入信号d_in和输出信号f。输入输出的的逻辑关系为:当外部输入x第一个为“1”,外部输出Z为“0”;当外部输入x第二个为“0”,外部输出Z为“0”;当外部输入x第三个为“1”,外部输出Z才为“1”。要判断输入序列中的一段是否为“101”,电路需要用不同的状态来标记。假设电路的初始状态A,d_in输入第一个“1”,检测器状态由A转换到B,B代表101序列中的第一个“
3、1”,输出为f=0,如果之后继续输入“1”还会保持在这个状态;d_in输入“0”,检测器由B转换到C,C代表101序列中的“0”,输出f=0;d_in输入第三个值“1”时检测到完整的101序列,输出f=1,同时因为输入为“1”,状态由C又转换回B;如果d_in输入第三个值为“0”,状态由C退回到初始状态A,输出f=0。以上为序列检测器的功能分析。由此可以画出序列检测器的状态图80/0ABC0/01/01/00/01/1状态表如下:ZX=0X=1X=0X=1AAB00BCB00CAB012、实验过程(1)
4、用计算机QuartusII9.0软件新建工程,新建VHDL,写入程序代码,运行调试直至编译成功。(2)新建波形仿真软件,设置endtime,输入输出信号,运行,观察仿真结果确认无误。(3)将实验板与计算机相连,设置管脚后再次编译工程。(4)下载至实验板,检查其功能准确无误。四、VHDL代码单进程状态机P1:process(clk_tmp)—分频过后的时钟信号beginif(clk_tmp'eventandclk_tmp='1')then8casestateiswhenA=>if(d_in='1')the
5、nstate<=B;--A状态elsestate<=A;endif;f<='0';whenB=>if(d_in='1')thenstate<=B;--B状态elsestate<=C;endif;f<='0';whenC=>if(d_in='1')thenstate<=B;f<='1';--C状态elsestate<=A;f<='0';endif;endcase;endif;endprocess;分频器:实验板提供的2Hz低频信号感觉还是有点快,所以自己加入了上节课用到的50M分频器,将时钟信号调整成1H
6、z,同时将时钟信号显示在实验板上,方便观测p2:process(clk)beginif(clk'eventandclk='1')thenifcnt=24999999thencnt<=0;clk_tmp<=notclk_tmp;elsecnt<=cnt+1;endif;endif;endprocess;8clk_out<=clk_tmp;完整的结构体定义architecturemealyofd_101istypestate_typeis(A,B,C);signalstate:state_type;sign
7、alcnt:integerrange0to24999999;signalclk_tmp:std_logic;beginP1:process(clk_tmp)beginif(clk_tmp'eventandclk_tmp='1')thencasestateiswhenA=>if(d_in='1')thenstate<=B;elsestate<=A;endif;f<='0';whenB=>if(d_in='1')thenstate<=B;elsestate<=C;endif;f<='0';whenC=>if
8、(d_in='1')thenstate<=B;f<='1';elsestate<=A;f<='0';endif;endcase;endif;endprocess;p2:process(clk)beginif(clk'eventandclk='1')then8ifcnt=24999999thencnt<=0;clk_tmp<=notclk_tmp;elsecnt<=cnt+1;endif;endif;endprocess;clk_out<=c
此文档下载收益归作者所有