- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VHDL数字系统设计与测试实验报告(一)——有限序列检测器一、设计功能与要求1、实验要求:利用状态机原理设计一个7位序列检测器(1110010)。2、功能分析:序列检测器一般有一个输入X和一个输出Y。输入信号在不断变化,从而形成一个与时间相关的输入序列。序列检测器就是当输入序列中包含特定串时,设置输出信号Y为高电平,表示检测到了特定串。本设计中需要检测的序列是“1110010”。二、设计思路序列检测器是一种同步时序电路,它用于搜索,检测输入的二进制代码串中是否出现指定的代码序列,1110010序列检测器的原理图如下:首先,要从一串二进制编码中检测出一个已预置的七位二进制码1110010,每增加一位相当于增加一个状态,再加上一个初始态,用八个状态可以实现。状态机初始状态为S1;当自动机接收到一个“1”时,自动机进入S2状态;如果在S2状态接收到“1”时,自动机进入到S3状态;如果在S3状态接收到“1”时,自动机进入到S4状态;如果在S4状态接收到“0”时,自动机进入到S5状态;如果在S5状态接收到“0”时,自动机进入到S6状态;如果在S6状态接收到“1”时,自动机进入到S7状态;如果在S7状态接收到“0”时,自动机进入到S8状态;如果自动机处于S8状态,则表示接收到了一个连续的串“1110010”,此时可以设置输出信号为高电平。其Moore型原始状态转移图如下:根据状态转移图可以得出Moore型原始状态转移表为:S’ZXS01S1S1S20S2S1S30S3S1S40S4S5S40S5S6S20S6S1S70S7S8S30S8S1S21三、源代码libraryieee;use ieee.std_logic_1164.all;entitycheckerarray isport(din:instd_logic;clk,clr:instd_logic;z:buffer std_logic);endcheckerarray; architecturearch_check of checkerarray is type StateType is(s1,s2,s3,s4,s5,s6,s7,s8);signalpresent_state,next_state:StateType;beginstate_comb:process(present_state,din)begincasepresent_state iswhen s1=z=0;if din=1thennext_state=s2;elsenext_state=s1;end if;when s2=z=0;if din=1thennext_state=s3;elsenext_state=s2;end if;when s3=z=0;if din=1thennext_state=s4;elsenext_state=s1;end if;when s4=z=0;if din=1thennext_state=s4;elsenext_state=s5;end if;when s5=z=0;if din=1thennext_state=s2;elsenext_state=s6;end if;when s6=z=0;if din=1thennext_state=s7;elsenext_state=s1;end if;when s7=z=0;if din=1thennext_state=s3;elsenext_state=s8;end if;when s8=z=1;if din=1thennext_state=s2;elsenext_state=s1;end if;end case;end process state_comb;state_clocked:process(clk,clr)beginif(clr=1)thenpresent_state=s1;elsif(clkevent and clk=1)thenpresent_state=next_state;end if;end process state_clocked;endarch_check;四、仿真结果与说明上图即为在modelsim中进行仿真的波形图像。图中黄线前输入的测试序列为1110011,在S7状态后再输入高电平1,状态转移至S3。黄线之后的输入测试序列为1110010。检测正确之后,输出端Z输出一个高电平信号1,表示已正确检测到测试序列。
文档评论(0)