序列检测器的设计VHDL代码Quartus仿真

名称:序列检测器的设计VHDL代码Quartus仿真(文末获取)

软件:Quartus

语言:VHDL

代码功能:

用VHDL语言编写一个序列检测器,该序列检测器用于检测一组由二进制码组成的脉冲序列信号,当序列检测器连续收到这组串行二进制码后与检测器中预先设置的码(11100101)相同,则输出1,否则输出0。由于这种检测的关键在于正确码的收到必须是连续的,在检测过程中,任何一位不相等都将导致回到初始状态重新开始检测。

端口信息为:

clk:时钟输入端;din:待检测的数据输入端;clr:清零端

dout:数据输出端,输出’1’表示接收到了正确序列,输出’0’表示没接收到正确序列。

设计具体要求:

(1)各模块采用文本方法编辑该序列检测器,语言采用VHDL语言,检查编辑并编译,仿真验证。

(2)采用层次化文件设计该序列检测器,检查编辑并编译进行波形仿真,观察输出波形,验证是否满足设计要求。

1. 工程文件

2. 程序文件

3. 程序编译

4. 状态图

5. 仿真图

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
--序列检测
ENTITY Sequence_detect IS
   PORT (
      clk          : IN STD_LOGIC;--时钟输入端
      din          : IN STD_LOGIC;--待检测的数据输入端
      clr          : IN STD_LOGIC;--清零端
      dout         : OUT STD_LOGIC--数据输出端
   );
END Sequence_detect;
ARCHITECTURE trans OF Sequence_detect IS
   type state_type is
      (
      s_idel       ,
      s_d1         ,
      s_d11        ,
      s_d111       ,
      s_d1110      ,
      s_d11100     ,
      s_d111001    ,
      s_d1110010   ,
      s_d11100101  
   );
   SIGNAL state :state_type;
BEGIN
   
   PROCESS (clk, clr)
   BEGIN
      IF (clr = '1') THEN
         state <= s_idel;
      ELSIF (clk'EVENT AND clk = '1') THEN
         CASE state IS
            WHEN s_idel =>--初始状态
               IF (din = '1') THEN
                  state <= s_d1;
               END IF;
            WHEN s_d1 =>--检测1
               IF (din = '1') THEN
                  state <= s_d11;
               ELSE
                  state <= s_idel;
               END IF;
            WHEN s_d11 =>--检测11
               IF (din = '1') THEN
                  state <= s_d111;
               ELSE
                  state <= s_idel;
               END IF;
            WHEN s_d111 =>--检测111
               IF (din = '1') THEN
                  state <= s_d111;
               ELSE
                  state <= s_d1110;
               END IF;
源代码

 扫描文章末尾的公众号二维码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值