quartus设计状态机实现序列检测器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用状态机实现序列检测器的设计

一、原理

序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果与检测器预先设置的码相同,则输出为1,否则输出为0。

二、内容与步骤:

1、状态转换图

2、设计一个序列检测器,对1110010进行检测,编写实验程序。

3、对程序进行仿真测试并给出仿真波形。

4、仿真通过后进行引脚锁定,再进行一次全编译,并下载到实验箱上进行验证。

三、状态机源程序:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY STATEMACHINE IS

PORT(DIN,CLK,RST:IN STD_LOGIC;

SOUT:OUT STD_LOGIC);

END STATEMACHINE;

ARCHITECTURE BEHA V OF STATEMACHINE IS

TYPE STATES IS (S0,S1,S2,S3,S4,S5,S6,S7);

SIGNAL ST,NST:STATES:=S0;

BEGIN

COM:PROCESS(ST,DIN) BEGIN

CASE ST IS

WHEN S0=>IF DIN='1' THEN NST<=S1;ELSE NST<=S0;END IF;

WHEN S1=>IF DIN='1' THEN NST<=S2;ELSE NST<=S0;END IF;

WHEN S2=>IF DIN='1' THEN NST<=S3;ELSE NST<=S0;END IF;

WHEN S3=>IF DIN='1' THEN NST<=S3;ELSE NST<=S4;END IF;

WHEN S4=>IF DIN='1' THEN NST<=S1;ELSE NST<=S5;END IF;

WHEN S5=>IF DIN='1' THEN NST<=S6;ELSE NST<=S0;END IF;

WHEN S6=>IF DIN='1' THEN NST<=S2;ELSE NST<=S7;END IF;

WHEN S7=>IF DIN='1' THEN NST<=S1;ELSE NST<=S0;END IF;

WHEN OTHERS=>NST<=S0;

END CASE;

END PROCESS;

REG:PROCESS (CLK,RST)

BEGIN

IF RST='1' THEN ST<=S0;

ELSIF CLK'EVENT AND CLK='1' THEN ST<=NST;END IF; END PROCESS REG;

SOUT<='1' WHEN ST=S7 ELSE '0';

END BEHAV;

相关文档
最新文档