在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

Mealy状态机的一点理解相关推荐

  1. Moore状态机和Mealy状态机的区别

    直接给出结论: 根据状态机的输出是否与输入条件相关来区分Moore状态机和Mealy状态机. Moore状态机:输出仅仅与当前状态有关: 如下实例,如三段式写法来写的一个序列检测的状态机([ FPGA ...

  2. 【 FPGA 】序列检测器的Mealy状态机实现

    上篇博文讲了使用Moore状态机来设计一个序列检测器:序列检测器的Moore状态机实现 原理一致,这里只不过采用了Mealy状态机实现,快速给出: 状态转移图如下:被检测序列为1101,也就是说,如果 ...

  3. 谈谈对APC的一点理解

    谈谈对APC的一点理解 异步过程调用(APCs) 是NT异步处理体系结构中的一个基础部分,理解了它,对于了解NT怎样操作和执行几个核心的系统操作很有帮助. 1) APCs允许用户程序和系统元件在一个进 ...

  4. python 3列表推导式的的一点理解!

    python 3列表推导式的的一点理解! Python的列表推导式对于新手来说一般都难以理解,简单看个例子: [x * x for x in range(1,100)] 上面是一个很简单的列表推导式, ...

  5. TSYS2.0对动态碎片的一点理解

    最近好多人对tsys很感兴趣,其实大家不知道的是tsys的asp版本早就已经停止开发了,为了不想让如此优秀的东西被埋没所以我在tsys的asp版 本的基础上使用PHP重新开发了一个功能更强的cms,名 ...

  6. 对事件循环的一点理解

    最近工作需要学习了解webworker-threads以应对Javascript多线程处理CPU密集型的可能性:参考文档JavaScript多线程之二 Node.js中的Web Worker; 以下是 ...

  7. Hyperledger Fabric 网络环境的一点理解

    Hyperledger Fabric 开发链码,一般都是测试网络开发,然后部署到生产网络. 下面介绍测试网络.生产网络的一点理解. 1 测试网络 使用cryptogen等工具建立测试网络,开发环境使用 ...

  8. Tecplot中用excel表格绘制xy图的一点理解

    原文地址:Tecplot中用excel表格绘制xy图的一点理解作者:又见谷雨 在画图的时候遇到一些问题,比如想用excel中的数据画xy图,那么应该怎样加载这些数据呢.在网上查找了下,也没有详细的说法 ...

  9. 2.深入一点理解C源程序的编译过程

    2.深入一点理解C源程序的编译过程 本文章的大多数灵感及知识来源于南京大学的计算机系统基础教材,如果希望更加深入地对相关知识做进一步了解,可以移步上述相关资源.在网上可以轻易获得上述资源,mooc也有 ...

最新文章

  1. python实现logistic_用Python实现机器学习算法—Logistic 回归算法
  2. 【问链-区块链与生活】 第一课 你为什么又在熬夜?
  3. 发送广播_DHCP服务器什么时候发送?为什么request要广播发送?那还不看?
  4. C#多线程之旅(七)——终止线程
  5. CS224n学习笔记1-nlp介绍和词向量
  6. 管理老板,让他乖乖给你涨工资
  7. 在VS2012集成Fortran95(Ftn95)
  8. ESP32-cam 初体验 从esp32-cam的购买到局域网监控的实现
  9. 测量string变量长度函数_测量字符串长度的函数
  10. Altium_Designer17-PCB-如何重新定义板子大小
  11. 个人“乱七八糟”笔记和摘要
  12. 走进一心堂,读懂数字化转型新风向
  13. 各大有名库的介绍(转)
  14. 单片机c语言中p1asf,基于51单片机的蓄水池自动控制系统 毕业设计.doc
  15. 怎样的婚恋网站,才能符合单身的交友信息呢。
  16. 2.商场促销 - 策略模式 (大话设计模式Kotlin版)
  17. 3d boxes background
  18. 网易月薪25K的Linux运维面试真题曝光
  19. OpenAI的模型下载(chatGPT模型)
  20. 欧尼酱讲JVM(18)——对象实例化内存布局与访问定位

热门文章

  1. redisTemplate设置key零点过期,生成自增的单号
  2. linux环境下用docker安装rabbitmq
  3. 数据库计算机报告,外文数据库计算机检索报告实例.pdf
  4. 计算机系统基础:校验码知识笔记
  5. java 框架mvc_JAVA框架-MVC模式
  6. linux fmt命令
  7. 时间轴ui设计_我应该在UI设计上花更多时间吗?
  8. 同态加法_同态的Spotify
  9. Python进阶:如何将字符串常量转化为变量?
  10. ip_vs实现分析(2)