Moore 序列检测器

本文介绍了Moore序列检测器的实现,特别是针对连续信号值检测时如何处理复位问题。通过具体例子展示了如何利用边沿敏感事件表达式的嵌套解决连续0或1的检测,同时提供了Verilog代码实现连续两个相同值时输出置位。此外,还提到了敏感列表的嵌套用于实现周期性操作,如每3个时钟周期输出一个信号。
摘要由CSDN通过智能技术生成

分类

  1. 若只是单独检测连续的0或者连续1,相对更简单,不涉及到复位的问题,可使用标准状态机来实现;
  2. 若是检测连续的采样值,即出现连续的0和1时都检测,就涉及到复位初始状态的问题。什么意思呢?例如,我现在检测两个连续信号,当reset 有效时,我将第一个信号置为0,reset 无效后,在第一个时钟时,第一个信号接收新的值,若为0;而第二个信号接收第一个信号传过来的值,也是0,意味着此时第二个信号和第一个信号相同,则输出错误的检测结果。在这种情况下,我们得使用边沿敏感事件表达式的嵌套,也就是@(posedge clk …)中嵌套@(posedge …)

具体例子

以上可能听得云里雾里,举一个简单的例子,对D_in 的两个连续值进行检测,在出现两个连续的0或者1时,将输出D_out 置位。代码如下,其中使用了嵌入式的表达式,以及额外的控制信号flag。

在第一个时钟周期,清除last_bit 或者将数据载入到this_bit,同时将flag 置为0;
在第二个时钟周期,this_bit 的值传给 last_bit,并且将flag 置为1;
在reset 有效后,跳出forever 的循环检测,重新回到machine 的program 中;

module Seq_Rec_Moore_imp(output D_out,input D_in,clock,rst);
reg last_bit,this_bit,flag;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值