当前位置: 首页 > news >正文

【数字电路与逻辑设计】实验一 序列检测器

文章总览:YuanDaiMa2048博客文章总览


【数字电路与逻辑设计】实验一 序列检测器

    • 一、实验内容
    • 二、设计过程
      • (一)作出状态图或状态表
      • (二)状态化简
      • (三)状态编码
    • 三、源代码
      • (一)代码说明:
      • (二)代码内容:
    • 四、仿真验证与实验结果
      • (一)波形图
      • (二)波形图说明
      • (三)实验结果
    • 五、全部实验
      • 第一部分 组合逻辑
      • 第二部分 时序逻辑

一、实验内容

设计一个序列检测器检测序列 1110010。使用波形图进行仿真(至少要有一个检测成功
的波形)。

二、设计过程

(一)作出状态图或状态表

Moore型:

在这里插入图片描述

在这里插入图片描述

(二)状态化简

在该状态表中没有输出和次态完全相同的输入序列,因此已经是最简状态。

(三)状态编码

规则1:S0-S1,S0-S2,S0-S5,S0-S7,S1-S2,S1-S5,S1-S7,S2-S5,S2-S7,S5-S7,S2-S3,S1-S6,S0-S4;S4-S7
规则2:
S0-S1,S0-S2,S0-S3,S4-S3,S5-S1,S0-S6,S7-S2
规则3:
S0-S1-S2-S3-S4-S5-S6
规则4:S0分配逻辑“0”

编码方案如下
S0=“000”,S1=“001”,S2=“010”,S3=“011”,S4=“100”,S5=“110”,S6=“101”,S7=“111”

在这里插入图片描述

三、源代码

(一)代码说明:

① clk:输入,表示时钟脉冲信号,上升沿触发。

② rst:输入,表示清零。

③ X:输入,表示输入待检测的一位信号。

④ Z:输出,表示检测结果,如果检测到该序列则输出‘1’,否则为‘0’。

⑤ 利用case语句去分别讨论不同现态,在其中运用if语句分别讨论在X输入为1和0的情况下,次态的情况以及Z输出的值,从而实现功能。主要依据状态转移图完成代码编写。

(二)代码内容:

library ieee;
use ieee.std_logic_1164.all;
entity sequence_dectector	isport(clk,rst,X:in std_logic;Z:out std_logic);
end entity sequence_dectector;
architecture behav of sequence_dectector istype state is(s0,s1,s2,s3,s4,s5,s6,s7);signal present_state,next_state:state;beginprocess(rst,clk)beginif(rst='1')thenpresent_state<=s0;elsif(clk'event and clk='1')thenpresent_state<=next_state;end if;end process;process(X,present_state)begincase present_state iswhen s0 =>Z<='0';if(X='1')thennext_state<=s1;elsenext_state<=s0;end if;when s1 =>Z<='0';if(X='1')thennext_state<=s2;elsenext_state<=s0;end if;when s2 =>Z<='0';if(X='1')thennext_state<=s3;elsenext_state<=s0;end if;when s3 =>Z<='0';if(X='0')thennext_state<=s4;elsenext_state<=s3;end if;when s4 =>Z<='0';if(X='0')thennext_state<=s5;elsenext_state<=s1;end if;when s5 =>Z<='0';if(X='1')thennext_state<=s6;elsenext_state<=s0;end if;when s6 =>Z<='0';if(X='0')thennext_state<=s7;elsenext_state<=s2;end if;when s7 =>Z<='1';if(X='0')thennext_state<=s0;elsenext_state<=s1;end if;end case;end process;
end behav;

四、仿真验证与实验结果

(一)波形图

在这里插入图片描述

(二)波形图说明

图中,clk代表时钟脉冲(上升沿有效),rst表示复位(高电平有效),在X连续输入“1110010”时,在clk上升沿到来时,Z输出为1。

(三)实验结果

如图,证明该段程序可以实现序列“1110010”检测功能。

五、全部实验

第一部分 组合逻辑

  • 实验一 8421 码和格雷码的转换
  • 实验二 数值比较器
  • 实验三 全加器
  • 实验四 3 线-8 线译码器
  • 实验五 表决器

第二部分 时序逻辑

  • 实验一序列检测器
  • 实验二计数器
  • 实验三 8 位寄存器 74374

http://www.mrgr.cn/news/79447.html

相关文章:

  • python 基于 docx 文件模板生成 docx 或 PDF 文件
  • Rerender A Video 技术浅析(五):对象移除与自动配色
  • 24上半年系统分析师考题个人回忆版
  • LabVIEW偏心圆筒流变仪测控系统
  • 如何让verilog支持二维数组,三维数组作为I/O ports
  • C++是如何工作的?
  • 阻塞队列详解
  • 文件IO——01
  • 高性能MySQL(第四版)读书笔记
  • 树莓派开发笔记
  • 第32天:安全开发-JavaEE应用Servlet路由技术JDBCMybatis数据库生命周期
  • OpenCV圆形标定板检测算法findCirclesGrid原理详解
  • day1:ansible
  • 【ManiSkill】ppo.py - notes
  • API设计指南:详解HTTP状态码错误解析、HTTP方法及参数命名规则
  • 【人工智能基础】知识导图
  • 档案学实物
  • 表的约束.
  • android studio 读写文件操作(应用场景三)
  • shell 6 if条件判断与for循环结构 (泷羽sec)
  • 14.数据容器-set集合
  • 前端面经每日一题day05
  • [C++]对象数组
  • 数据结构---单链表
  • Dockerfile容器镜像构建技术
  • [C++]友元函数和友元类