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

相关文章

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.图

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

关于最长递增子序列问题概述

《关于最长递增子序列问题概述》本文详细介绍了最长递增子序列问题的定义及两种优化解法:贪心+二分查找和动态规划+状态压缩,贪心+二分查找时间复杂度为O(nlogn),通过维护一个有序的“尾巴”数组来高效... 一、最长递增子序列问题概述1. 问题定义给定一个整数序列,例如 nums = [10, 9, 2

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

uva 10131 最长子序列

题意: 给大象的体重和智商,求体重按从大到小,智商从高到低的最长子序列,并输出路径。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vect

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

POJ1631最长单调递增子序列

最长单调递增子序列 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.util.StringTokenizer;publ

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return