数字逻辑实验 8_序列检测器.doc_第1页
数字逻辑实验 8_序列检测器.doc_第2页
数字逻辑实验 8_序列检测器.doc_第3页
数字逻辑实验 8_序列检测器.doc_第4页
数字逻辑实验 8_序列检测器.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验八 序列检测器的设计与仿真一、 实验要求1. 用VHDL语言设计一个Mealy机以检测“1101001”序列;2. 用VHDL语言设计一个Moore机以检测“1101001”序列;3. 在文本编辑区使用VHDL硬件描述语言设计逻辑电路,再利用波形编辑区进行逻辑功能仿真,以此验证电路的逻辑功能是否正确。二、 实验内容用VHDL语言设计各一个mealy和moore状态机测试“1101001”位串的序列检测器,并通过仿真波形验证设计的功能是否正确。三、 实验过程由于在报告1中已经详尽描述了如何使用Quartus 2建立逻辑原理图和使用VHDL语言实现元件功能,所以本次的实验报告中便不再赘述上述内容,报告将主要就VHDL语言描述实现元件的功能的过程进行阐述。1. Mealy机选择FileNew,弹出新建文本对话框,在该对话框中 选择VHDL File并单击OK按钮,进入文本编辑窗口,输入VHDL代码。library ieee;use ieee.std_logic_1164.all;entity melay isport(clk,rst,d: in std_logic; z: out std_logic);end melay;architecture arc of melay istype state_type is(s0,s1,s2,s3,s4,s5,s6);signal state: state_type;begin process(clk,rst) begin if rst= 1 then state if d=1 then state=s1; else state if d=1 then state=s2; else state if d=0 then state=s3; else state if d=1 then state=s4; else state if d=0 then state=s5; else state -1101001 if d=0 then state=s6; else state if d=1 then state=s0; else state if d=1 then z=1; else z z=0; end case;end process;end arc;保存文件并编译,选择菜单FileNew,选择Vector Waveform File新建波形图,添加节点,参数设置为:End Time=2us, Grip size=50ns。所完成的波形图如下图:波形解释:rst为复位端,高电平有效,返回最初状态;clk为时钟信号输入端口;,state。s0s6表示mealy机中各步状态;z表示检测序列为“1101001”时,表示输出高电平。保存波形文件,并在settings中选择functional功能仿真,绘制网格,仿真可得出如图波形:根据mealy状态表和序列检测器相应功能验证,当rst=1时,不管当前状态为何,都将被初始为最初态s0;当输入d端依次输入“1101001”时,当检测到最后一位输入正确的同时,z端马上跳为高电平,表示所检测序列正确。其他可看出,当处于时钟上升沿时,state中各状态依照输入数据依次跳变。最后mealy机成功检测出相应序列,设计成功。已知序列检测器的Mealy机状态表为:现 态(present_state) 次态 / 输出(next_state / cout) cin=0cin=1S0 S0 / 0 S1 / 0S1 S0 / 0 S2 / 0S2 S0 / 0 S3 / 0S3 S4 / 0 S3 / 0S4 S5 / 0 S1 / 0S5 S0 / 0 S6 / 0S6 S0 / 1 S2 / 0同样可依次对照上述仿真图形,显然上述序列检测器mealy机功能设计正确。2. 序列检测器moore机选择FileNew,弹出新建文本对话框,在该对话框中 选择VHDL File并单击OK按钮,进入文本编辑窗口,输入VHDL代码。library ieee;use ieee.std_logic_1164.all;entity moore isport(clk,rst,d: in std_logic; z: out std_logic);end moore;architecture arc of moore is -moore: 输出只和当前状态有关;type state_type is(s0,s1,s2,s3,s4,s5,s6,s7); signal state:state_type; begin process(clk,rst) begin if rst= 1 then -1101001 state if d=1 then state=s1; else state if d=1 then state=s2; else state if d=0 then state=s3; else state if d=1 then state=s4; else state if d=0 then state=s5; else state -1101001 if d=0 then state=s6; else state if d=1 then state=s7; else state if d=1 then state=s1; else state if d=1 then z=1; else z z=0; end case;end process;end arc;可看出,moore机的设计和mealy机上大体相同,只有在状态的传递上有细微区别。保存文件并编译,选择菜单FileNew,选择Vector Waveform File新建波形图,添加节点,参数设置为:End Time=3us, Grip size=50ns。所完成的波形图如下图: 图中各端口设置功能同mealy机。保存波形文件,并在settings中选择functional功能仿真,绘制网格,仿真可得出如图波形:仿真波形分析:由于设计的moore状态机检测序列功能相同,与mealy不同在于当状态跳变判断s7时,z端才跳变为高电平。根据刚刚对mealy机的仿真分析和下表的状态值变化显然可知,moore机实现了检测序列“1101001”的功能,设计成功。已知序列检测器的Mealy机状态表为:现 态(present_state)次态输出zd=0d=1S0S0S10S1S0S20S2S0S30S3S4S30S4S5S10S5S0S60S6S0S70S7s0s11四、 总结本节实验中,通过对用VHDL语言对mealy状态机和moore状态机进行设计,更加熟练了使用VHDL语言对元件的设计。也通过用不同的状态机设计序列检测器,而对两种状态机的区别有了更深刻的了解。Moore状态机输出只和当前状态有关,而mealy机输出和当前状态和输入信号有关,由于moore机没有组合逻辑,所以moore机的状态会多一些。也对序列检测器的实现使得我对序列检测器的作用和功能了之于心。一开始没有弄清moore机和mealy机的区别,导致后来写moore机的时候出现了停滞,不过在弄清他们的区别时候,写出moore机就没什么问题了。不已然,已经到了数字逻辑的最后一个实验了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论