VHDL序列检测器_第1页
VHDL序列检测器_第2页
VHDL序列检测器_第3页
VHDL序列检测器_第4页
VHDL序列检测器_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、作业一:序列检测器(1110010)1 设计功能与要求(1) 利用有限状态的状态机设计一个序列检测器,序列检测器要检测的序列设定为“1110010”。 (2) 根据设计功能和要求运用VHDL硬件描述语言进行设计编程,并且画出序列检测器的原理流程图。 (3) 对设计的序列检测器程序进行仿真,并予以分析和说明。2 设计思路序列检测器的设计是采用VHDL硬件描述语言设计程序,对预先设置的序列信号进行检测。序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的相同,则输出1,否则输出0。设计采用有限状态机来实现序列检测器。3

2、原理流程图根据预先设置的序列信号“1110010”,根据有限状态机的原理进行编程,设计出符合要求的八状态的状态机的序列检测器,原理流程说明如下图。如图所示,假设状态机的初始状态为S1,当输入信号为“1”时,进入S2状态;为“0”还是在S1状态。在S2状态下,如果输入信号为“1”,则进入S3状态,为“0”则返回S1状态。在S3状态下,如果输入信号为“1”,则进入S4状态,为“0”则返回S1状态。在S4状态下,如果输入信号为“0”,则进入S5状态,为“0”还是在S4状态。在S5状态下,如果输入信号为“0”,则进入S6状态,为“1”则进入S2状态。在S6状态下,如果输入信号为“1”,则进入S7状态,

3、为“0”则返回S1状态。在S7状态下,如果输入信号为“0”,则进入S8状态,为“1”则进入S3状态。在S8状态下,如果输入信号为“1”,则进入S2状态,为 “0”则返回S1状态,并输出序列信号1110010。4 序列检测器VHDL程序代码在序列检测器的程序代码中采用cin表示输入序列信号,clr为复位控制信号,clk为时钟信号,cout为输出信号。当检测到序列信号中出现“1110010“序列的时候,cout输出为高电平,否则为低电平,详细程序代码如下。library ieee;use ieee.std_logic_1164.all;entity sq_det isport(cin,clr,cl

4、k:in std_logic; cout:out std_logic);end sq_det;architecture behav of sq_det istype state is(s1,s2,s3,s4,s5,s6,s7,s8);signal c_state,n_state:state;beginprocess(clk,clr) beginif(clr='1')then c_state<=s1;elsif(clk'event and clk='1') then c_state <=n_state;end if;end process;pr

5、ocess(c_state,cin) begin case(c_state) is when s1=>cout<='0'if(cin='1')then n_state<=s2;else n_state<=s1; end if;when s2=>cout<='0'if(cin='1')then n_state<=s3;else n_state<=s1;end if; when s3=>cout<='0'if(cin='1')then n_st

6、ate<=s4;else n_state<=s1;end if;when s4=>cout<='0'if(cin='1')thenn_state<=s4;else n_state<=s5;end if;when s5=>cout<='0'if(cin='1')then n_state<=s2; else n_state<=s6;end if;when s6=>cout<='0'if(cin='1')then n_state<

7、;=s7;else n_state<=s1;end if;when s7=>cout<='0'if(cin='1')then n_state<=s3;else n_state<=s8;end if; when s8=>cout<='1'if(cin='1')then n_state<=s2; else n_state<=s1;end if;end case;end process; end architecture behav;5 仿真结果与说明序列检测器程序仿真结果如下图,c

8、in为输入序列信号,clr为复位控制信号,高电平复位清零准备进入工作状态,clk为时钟信号,cout为输出信号。当检测到序列信号cin中出现“1110010“序列的时候,cout输出为高电平。当没有出现“1110010”序列时,cout输出低电平,如下如所示。作业二:三位任意二值序列检测器1 设计功能与要求(1) 利用有限状态的状态机设计一个序列检测器,序列检测器可以检测输入序列中的任意一个3位2进制数。 (2) 根据设计功能和要求运用VHDL硬件描述语言进行设计编程,并且画出序列检测器的原理流程图。 (3) 对设计的序列检测器程序进行仿真,并予以分析和说明。2 设计思路序列检测器的设计是采用

9、VHDL硬件描述语言设计程序,对预先设置的序列信号进行检测。序列检测器可用于检测任意三位2进制数,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的相同,则输出1,否则输出0。设计采用有限状态机来实现序列检测器。3 原理流程图4.RTL级表示5.程序LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY detect_3 ISPORT( Din:IN STD_LOGIC; Clk:IN STD_LOGIC; reset:IN STD_LOGIC; Dout_000,Dout_001,Dout_010,Dout_011,Dout_100

10、,Dout_101,Dout_110,Dout_111:OUT STD_LOGIC );END detect_3;ARCHITECTURE RTL OF detect_3 ISTYPE STATE IS(S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14);SIGNAL pre_state,next_state:STATE;BEGINPROCESS(Din,pre_state) -Input Combinational LogicBEGINCASE pre_state ISWHEN S0=>IF(Din='1')THENne

11、xt_state<=S2;ELSEnext_state<=S1;END IF;WHEN S1=>IF(Din='1')THENnext_state<=S4;ELSEnext_state<=S3;END IF;WHEN S2=>IF(Din='1')THENnext_state<=S6;ELSEnext_state<=S5;END IF;WHEN S3=>IF(Din='1')THENnext_state<=S8;ELSEnext_state<=S7;END IF;WHEN S4=&

12、gt;IF(Din='1')THENnext_state<=S10;ELSEnext_state<=S9;END IF;WHEN S5=>IF(Din='1')THENnext_state<=S12;ELSEnext_state<=S11;END IF;WHEN S6=>IF(Din='1')THENnext_state<=S14;ELSEnext_state<=S13;END IF;WHEN S7=>IF(Din='1')THENnext_state<=S8;ELSEn

13、ext_state<=S7;END IF;WHEN S8=>IF(Din='1')THENnext_state<=S10;ELSEnext_state<=S9;END IF;WHEN S9=>IF(Din='1')THENnext_state<=S12;ELSEnext_state<=S11;END IF;WHEN S10=>IF(Din='1')THENnext_state<=S14;ELSEnext_state<=S13;END IF;WHEN S11=>IF(Din='

14、;1')THENnext_state<=S8;ELSEnext_state<=S7;END IF;WHEN S12=>IF(Din='1')THENnext_state<=S10;ELSEnext_state<=S9;END IF;WHEN S13=>IF(Din='1')THENnext_state<=S12;ELSEnext_state<=S11;END IF;WHEN S14=>IF(Din='1')THENnext_state<=S14;ELSEnext_state<

15、;=S13;END IF;END CASE;END PROCESS;PROCESS(Clk,reset) BEGIN IF(reset='1')thenpre_state<=s0;ELSIF(clk'event and clk='1') THEN pre_state<=next_state;END IF;END PROCESS;PROCESS(pre_state) BEGINIF(pre_state=S7)THENDout_000<='1'ELSEDout_000<='0'END IF;IF(pre

16、_state=S8)THENDout_001<='1'ELSEDout_001<='0'END IF;IF(pre_state=S9)THENDout_010<='1'ELSEDout_010<='0'END IF;IF(pre_state=S10)THENDout_011<='1'ELSEDout_011<='0'END IF;IF(pre_state=S11)THENDout_100<='1'ELSEDout_100<='0'END IF;IF(pre_state=S12)THENDout_101<='1'ELSEDout_101<='0'END IF;IF(pre_state=S13)THENDout_110<=

温馨提示

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

最新文档

评论

0/150

提交评论