设计块:

module Detector2 (
input CP,Sin,nCR,
output reg Out
); reg [1:0] Current_state,Next_state;
parameter S0=2'b00, S1=2'b01, S2=2'b10, S3=2'b11;
always @(posedge CP , negedge nCR)
begin
  if(~nCR)
      begin
        Current_state = S0;
        Next_state = S0;
      end
     
  else
      Current_state = Next_state;
end
always @(Current_state, Sin)
begin
  Next_state=2'bxx;
  Out=1'b 0;
  case(Current_state)
    S0: begin Out=1'b0; Next_state=(Sin==1)? S0 : S1; end
    S1: begin Out=1'b0; Next_state=(Sin==1)? S2 : S1; end
    S2: begin Out=1'b0; Next_state=(Sin==1)? S0 : S3; end
    S3: if (Sin==1)
    begin Out=1'b1; Next_state=S0;  end
    else
    begin Out =1'b0; Next_state=S1; end
  endcase
end
endmodule

测试块:

`timescale 1ms / 1ms
module Detector2test();
reg CP,Sin,nCR;
wire Out ;
 
// 实例化被测试模块
  Detector2 test (
    .Sin(Sin),
    .CP(CP),
    .nCR(nCR),
    .Out(Out)
  );  
initial
  begin
    //Current_state=2'b00;
   // Next_state=2'b00;
    nCR=1'b0;
    CP=1'b0;
    #100 nCR = 1'b1;
    Sin=1'b0;
    #10Sin=1'b1;
    #10Sin=1'b0;
    #10Sin=1'b1;
    #10Sin=1'b0;
    #10Sin=1'b1;
    #10Sin=1'b0;
    #10Sin=1'b1;
    #10Sin=1'b0;
    #10Sin=1'b1;
    #10Sin=1'b0;
    #10Sin=1'b1;
    #10Sin=1'b0;
  end
always #5 CP = ~CP;
//always #10 Sin =~ Sin;
 
   
 
   
 
 
endmodule

 
   
 
   

使用书上的源代码,报错,分析,发现循环语句中发现为见过的语句。推测打印错误,开始以为是编码问题,使用vs code 打开后取出非法字符

编译还是出现错误,教材未对always @(pose<e CP, nege<e nCR)

begin修改代码做出解释,所以应该是和第一种编写方式一样才对。

修改后,编译通过。

1.参考例5.2.1,设计一个序列检测器。功能是检测出串行输入数据Sin中的4位二进制序列0101(自左至右输入),当检测到该序列时,输入Out=1;没有检测到该序列时,输入Out=0。要求不考虑序列重叠,如010101的序列中只包含一个0101序列。的更多相关文章

  1. java实现将包含多个<REC>的文件拆成若干只包含一个<REC>的文件

    遍历文件夹里的文件,将包含多个<REC>的文件拆成若干只包含一个<REC>的文件 package com.prepub; import java.io.BufferedRead ...

  2. FPGA 状态机-序列检测器verilog

    实现功能:检测出串行输入数据4位Data二进制序列0101,当检测到该序列的时候,out=1,否则out=0 (1)给出状态编码,画出状态图 (2)门电路实现 (3)verilog实现 首先规定Q3Q ...

  3. 每天进步一点点------基础实验_12_有限状态机 :Moore型序列检测器

    /********************************************************************************* * Company : * Eng ...

  4. 痞子衡嵌入式:揭秘i.MXRT1060,1010上串行NOR Flash冗余程序启动设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1060,1010上串行NOR Flash冗余程序启动设计. 工业产品设计里经常会有冗余程序/备份程序设计的需求,因为在工业 ...

  5. C# JabLib系列之如何保证只运行一个应用程序的实现

    保证只运行一个应用程序的C#实现: using System;using System.Collections.Generic;using System.Linq;using System.Windo ...

  6. Android开发笔记——以Volley图片加载、缓存、请求及展示为例理解Volley架构设计

    Volley是由Google开源的.用于Android平台上的网络通信库.Volley通过优化Android的网络请求流程,形成了以Request-RequestQueue-Response为主线的网 ...

  7. Verilog学习笔记简单功能实现(七)...............接口设计(并行输入串行输出)

    利用状态机实现比较复杂的接口设计: 这是一个将并行数据转换为串行输出的变换器,利用双向总线输出.这是由EEPROM读写器的缩减得到的,首先对I2C总线特征介绍: I2C总线(inter integra ...

  8. QDataStream类参考(串行化数据,可设置低位高位,以及版本号),还有一个例子

    QDataStream类提供了二进制数据到QIODevice的串行化. #include 所 有成员函数的列表. 公有成员 QDataStream () QDataStream ( QIODevice ...

  9. UE4笔记:利用Widget设计一个切换材质功能

    UE4引擎中的Widget蓝图是一个重要的工具,可用于场景中的页面叠加,镜头绑定,场景切换等多处地方,在这里笔者介绍一种利用控件蓝图和场景中物体进行信息交互的方法,直观的体现就是进行物体的材质切换. ...

  10. HBase--DependentColumnFilter(参考例过滤器 )详解

    DependentColumnFilter是一种允许用户指定一个参考列或引用列来过滤其他列的过滤器,过滤的原则是基于参考列的时间戳来进行筛选 . 官方说明: 大意:此过滤器提供两个参数--列族和列限定 ...

随机推荐

  1. MySQL中如何定位阻塞语句

    数据库中阻塞语句的查询和分析 前言 MySQL 1.使用 show processlist 查询正在运行的进程 2.使用 INNODB_TRX 查询当前运行的事务 3.使用 INNODB_LOCKS ...

  2. 2023icpc大学生程序设计竞赛-zzh

    这次比赛是第一次去外地打比赛,感觉挺好的.洛阳师范绿化感觉比我们学校好很多,校园看起来也挺大的.群里说牛肉汤是洛阳特色,比赛当天上午特地跑了两个餐厅,找到了一家牛肉汤,吃起来挺一般的,不过这家的酱香饼 ...

  3. 学习lspci:总线

    00:00.0 Host bridge 总线地址 00:00.0 是指PCI总线上的第一个设备,也称为根复杂性总线.在PCI架构中,每个设备都有唯一的总线地址,由域号.总线号.设备号和功能号组成.其中 ...

  4. 如何编写难以维护的React代码?耦合组件

    如何编写难以维护的React代码?耦合组件 在许多项目中,我们经常会遇到一些难以维护的React代码.其中一种常见的情况是:子组件直接操作父组件方法,从而导致父子组件深度耦合.这样的实现让子组件过于依 ...

  5. upload-libs通关攻略

    pass01 第一关是一个前端验证,只要把Javascript禁止再上传就可以绕过了. 上传成功,到上传的地址查看结果如下: pass-02 这是一个MIME绕过,用bp抓包后修改文件类型即可将下面这 ...

  6. Chrome 报错: Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.

    经检查,是由浏览器中的插件导致的报错. 解决方案: 将该插件移除或关闭

  7. centos打开防火墙的TCP80端口

    用管理员权限运行iptables -I INPUT -p tcp --dport 80 -j ACCEPT

  8. Druid未授权访问漏洞小记

    某一次在对某网站做渗透测试时,无意中发现了这个漏洞,在此做个记录 Druid未授权访问漏洞: Druid是阿里巴巴数据库出品的,为监控而生的数据库连接池,并且Druid提供的监控功能,监控SQL的执行 ...

  9. 【技术积累】Linux中的命令行【理论篇】【七】

    atrm命令 命令介绍 atrm命令是Linux系统中的一个命令行工具,用于取消或删除已经安排的at命令.at命令是一种用于在指定时间执行一次性任务的工具. 命令说明 atrm命令的语法如下: atr ...

  10. 【pytorch】目标检测:新手也能彻底搞懂的YOLOv5详解

    YOLOv5是Glenn Jocher等人研发,它是Ultralytics公司的开源项目.YOLOv5根据参数量分为了n.s.m.l.x五种类型,其参数量依次上升,当然了其效果也是越来越好.从2020 ...