Mealy状态机的一点理解

      在Mealy状态机中,输出是由输入和现态决定的。而状态机的次态是由输入的变化和现态决定的。这个特点决定了再verilog中实现的方式。建议简单的状态机就使用两段式always结构。

       一个always中进行状态的转换,一个always中进行输出状态的变化。

       刚刚已经说过,状态的变化是有输入时钟和输入信号的状态决定的。这里输入信号不属于敏感信号变量,因为状态的转换只是在输入时钟信号的边沿发生变化。但是在always内部中会使用输入信号的状态,依据输入信号的状态进行转换。

       状态机的输出是输入信号和现态决定的。此时输入信号和现态均属于这个always的敏感信号。因为这个时候输出并不是只有在输入时钟信号的边沿发生变化,而是随着现态和输入信号的变化而变化。

       在书写always结构的时候,理解这点还是很重要的。下面就看看具体的代码吧。

module mealy_state_machine(IN,CP,Y,CR);

input IN,CP,CR;

output Y;

reg [1:0]state;

parameter S0=2'b00,S1=2'b10,S2=2'b11;

reg Y;

always @(posedge CP or negedge CR)

begin

if(~CR)begin state<=0;end

else

begin

case(state)

S0:state<=S0;

S1:

begin

if(IN)state<=S2;

else state<=S0;

end

S2:begin

if(IN)state<=S2;

else state<=S0;

end

endcase

end

end

always @(state or IN)

begin

case(state)

S0:Y<=0;

S1:Y<=0;

S2:begin

if(IN)Y<=0;

else Y<=1;

end

endcase

end

endmodule

下面是状态转移图,状态转移图和预定的状态转移图是一样的。这也说明代码描述的功能没错。

      上面的状态转移图是对应 康华光电子技术基础 数字部分(第五版)中P267。但是后面P307中代码描述这个电路图好像有点问题。最后综合出来的状态机和要求的状态机不一样。但是我一直没看出错误来,所以还请大家多多指导。

 

转载于:https://www.cnblogs.com/farbeyond/p/5204573.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js运行机制

说到js的运行机制&#xff0c;那么就要先从几个名词开始&#xff0c;这是为了让更多的人能看懂。如下&#xff1a;进程和线程&#xff1a;进程&#xff1a;进程是正在运行的程序的实例。程序关于数据集合上的一次运行活动&#xff0c;是系统进行资源分配和调度的基本单位&#…

javafx 推箱子小游戏object类_突破LeetCode Hard模式之《推箱子》

导读&#xff1a;算法哥好久没分享有趣的算法题了&#xff0c;有点寂寞空虚冷&#xff0c;今天看到一道似曾相识的题目&#xff0c;而且难度是hard模式&#xff0c;勾起了算法哥的征服欲。特分享之&#xff01;题目描述「推箱子」是一款风靡全球的益智小游戏&#xff0c;玩家需…

利用Excel VBA实现批量数据分组转置

问题:如上图所示,按lon,lat分组,再进行转置。 VBA代码: Sub admin()Dim conn, xRs, xFdSet conn = CreateObject("ADODB.Connection")conn.Open "Provider=Microsoft.Jet.Oledb.4.0;" & _"Extended Properties= Excel 8.0;hdr=yes;IMEX=1 …

.NET 7 Preview 3添加了这些增强功能

.NET 7 Preview 3 已发布&#xff0c; .NET 7 的第三个预览版包括对可观察性、启动时间、代码生成、GC Region、Native AOT 编译等方面的增强。有兴趣的用户可以下载适用于 Windows、macOS 和 Linux 的 .NET 7 Preview 3。Microsoft 建议使用Visual Studio 17.2 Preview 3 的 预…

MySQL基本分区表

2019独角兽企业重金招聘Python工程师标准>>> 准备工作 1、查看数据库的信息 了解当前的Mysql数据库的版本和平台以及字符集等相关信息 mysql> status -------------- mysql Ver 14.14 Distrib 5.6.17, for Win64 (x86_64)Connection id: 4 Current dat…

分段线性拟合经典案例:计算多年气温最低值和最高值的分段线性变化趋势(附分段线性拟合工具下载)

分段线性回归:是用虚拟变量估计不同数量水平的解释变量对被解释变量的影响。在经济关系中,当解释变量X的值达到某一水平X′之前,与被解释变量之间存在某种线性关系;当解释变量X的值达到或者超过X′以后,与被解释变量的关系就会发生变化。此时,如果已知X的转折点X′,我们…

谷歌不支持调用摄像头麦克风_谷歌发布安卓11系统:全新界面、更严的隐私管理...

来源&#xff1a;快科技在发布三个beta版之后&#xff0c;谷歌刚刚发布了安卓11(Android 11)正式版&#xff0c;主要加强了聊天气泡、安全隐私、电源菜单&#xff0c;以及对各种新屏幕&#xff0c;如瀑布屏、折叠屏、双屏的支持。最近几个版本的安卓系统其实变化都不是很大&…

POJ2676,HDU4069解决数独的两种实现:DFS、DLX

搜索实现&#xff1a;解决数独有两种思考策略&#xff0c;一种是枚举当前格能填的数字的种数&#xff0c;这里有一优化策略就是先搜索能填入种数小的格子&#xff1b;另一种是考虑处理某一行&#xff08;列、宫&#xff09;时&#xff0c;对于某一个没用过的数字&#xff0c;若…

工业互联网上市公司.NET开发岗位来袭!!!

01公司简介2022 ABOUT /公司简介安徽容知日新科技股份有限公司&#xff08;股票代码&#xff1a;688768&#xff09;于2007年在合肥市成立&#xff0c;是一家工业互联网领域的高新技术企业&#xff0c;为客户提供设备智能运维平台解决方案和动设备预测性维护产品及服务。容知日…

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记24 popovers弹窗

上几话中我们详细了解了几种segue&#xff0c;我们也了解到了多MVC模式的几种控制器&#xff0c;比如导航、选项卡和分栏&#xff0c;除了这三种多MVC的模式之外&#xff0c;还有一种popover&#xff0c;它跟其他三种不太一样。首先先来认识一下popover&#xff08;弹窗&#x…

React Native之didFocus和didBlur

1 didFocus和didBlur解释 didFocus - the screen focused (if there was a transition, the transition completed)didBlur - the screen unfocused (if there was a transition, the transition completed) didFocus是指当前页面第一次加载的时候会调用一次 didBlur是指当前…

python语法详解_解析 Python3 基础语法

行与缩进 python最具特色的就是使用缩进来表示代码块&#xff0c;不需要使用大括号 {} 。 缩进的空格数是可变的&#xff0c;但是同一个代码块的语句必须包含相同的缩进空格数。实例如下&#xff1a; if True: print ("True") else: print ("False") Color…

ASP.NET 6 中间件 - 介绍与基础

这是一个关于 .NET 6 中间件的系列文章。在这个系列中&#xff0c;我们将了解到什么是中间件&#xff0c;它能够做什么&#xff0c;以及我们为什么要使用它&#xff0c;并演示几种不同类型的中间件的实现。之后&#xff0c;我们会进一步了解中间件所在的管道&#xff0c;以及如…

数组的迭代数组里面每个对象添加属性值_JS数组和对象循环遍历的几种实现方式...

数组遍历1. 普通for循环let arr [1,2,3,4,5] for (let i 0; i < arr.length; i) {console.log(arr[i]) } // 输出结果 // 1 // 2 // 3 // 4 // 52. 优化普通for循环let arr [1,2,3,4,5] for(var j 0,len arr.length; j < len; j){console.log(arr[j]); }3. forEach循…

Blend4精选案例图解教程(三):一键拖拽

原文:Blend4精选案例图解教程&#xff08;三&#xff09;&#xff1a;一键拖拽拖拽效果&#xff0c;常规实现方法是定义MoveLeftDwon、MoveLeftUp、MouseMove事件&#xff0c;在Blend的世界里&#xff0c;实现对象的拖拽&#xff0c;可以不写一行代码&#xff0c;而且非常简单&…

python画气泡图_​用Python把图做的好看点:用Matplotlib画个好看的气泡图

我们继续来把简单的图形丢到极坐标&#xff0c;这次是气泡图和柱状图&#xff0c;临摹的对象是澎湃美数课这个图看起来很好看&#xff0c;原理其实很简单&#xff0c;把柱状图和气泡图从笛卡尔坐标系中转移到极坐标系中来就OK 我们开始本次的临摹吧 本期的主题如下&#xff1a;…

Asp.NET Core一个接口的多个实现如何基于当前HTTP请求注册

前言假设我们有三个Service类实现了同一接口&#xff0c;示例代码如下&#xff1a;public interface IService { } public class ServiceA : IService { } public class ServiceB : IService { } public class ServiceC : IService { }我们希望在运行时使用依赖注入指定其具体…

pytorch forward_【Pytorch部署】TorchScript

TorchScript是什么&#xff1f;TorchScript - PyTorch master documentation​pytorch.orgTorchScript是一种从PyTorch代码创建可序列化和可优化模型的方法。任何TorchScript程序都可以从Python进程中保存&#xff0c;并加载到没有Python依赖的进程中。我们提供了一些工具来增量…

兼容ie8 rgba()用法

今天遇到了一个问题&#xff0c;要在一个页面中设置一个半透明的白色div。这个貌似不是难题&#xff0c;只需要给这个div设置如下的属性即可&#xff1a; background: rgba(255,255,255,.1); 但是要兼容到ie8。这个就有点蛋疼了。因为ie8不支持rgba()函数。下面我们总结一下rgb…