2. 验证1101序列(Mealy)

2023-10-16 05:45
文章标签 验证 序列 1101 mealy

本文主要是介绍2. 验证1101序列(Mealy),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目要求:
M e a l y \rm Mealy Mealy型状态机验证 1101 1101 1101序列

题目描述:
使用状态机验证 1101 1101 1101序列,注意:允许重复子序列。
在这里插入图片描述

方法一: 去掉 M o o r e \rm Moore Moore s 4 s_4 s4,然后将最后一个always的条件改成*

module mealy_1101(input clk,input clr,input din,output reg dout);reg [2 : 0] curr, next;//状态保存parameter temp = 3'd0, s1 = 3'd1, s2 = 3'd2, s3 = 3'd3;always @ (posedge clk) beginif (clr) curr = temp;else curr = next;endalways @ (*) begincase(curr)temp: next <= din ? s1 : temp;//闲置状态s1: next <= din ? s2 : temp;//已有一个1的状态,再得到一个1进s2,得到0则进闲置s2: next <= din ? s2 : s3;//已有11的状态,再得到1进s2,得到0进s3s3: next <= din ? s1 : temp;//已有110的状态,再得到一个1进s4,得到0进闲置endcaseend//状态转移always @ (*) beginif (clr) dout <= 0;else dout <= ((curr == s3) ? 1 : 0);endendmodule

方法二

上文已经说过,使用 n n n个触发器为能解决所有问题的通用解法,那么对于具体问题,我们能否使用更少的触发器实现呢?
答案是可以的
1101 1101 1101序列为例
使用 3 3 3 D D D触发器,则在现态为 110 110 110,输入为 1 1 1时输出 1 1 1
输出方程改为 c o u t = \rm cout = cout= q 2 q_2 q2 & q 1 q_1 q1 & ~ q 0 q_0 q0 & x x x;
删除 q 3 q_3 q3,此即为 M e a l y \rm Mealy Mealy型电路

module mealy_1101(input clk,input clr,input din,output dout);reg q2 = 0, q1 = 0, q0 = 0;    always @ (posedge clk or posedge clr) beginif (!clr) beginq0 <= din;q1 <= q0;q2 <= q1;endelse beginq0 <= 0;q1 <= 0;q2 <= 0;endendassign dout = (({q2, q1, q0, din} == 4'b1101) ? 1 : 0);
endmodule

方法三:
在这里插入图片描述

总结
M o o r e \rm Moore Moore型电路的特点是现态即输出,意思是只有现态影响输出,输入只影响状态转移。
M e a l y \rm Mealy Mealy型电路的输出不仅与现态有关,还与输入有关

这篇关于2. 验证1101序列(Mealy)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/219447

相关文章

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图