首页 > 其他分享 >1.参考例5.2.1,设计一个序列检测器。功能是检测出串行输入数据Sin中的4位二进制序列0101(自左至右输入),当检测到该序列时,输入Out=1;没有检测到该序列时,输入Out=0。要求不考虑序列

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

时间:2023-10-22 19:22:39浏览次数:43  
标签:0101 Next state b0 10Sin 序列 Sin 输入 Out

设计块:

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修改代码做出解释,所以应该是和第一种编写方式一样才对。

修改后,编译通过。

标签:0101,Next,state,b0,10Sin,序列,Sin,输入,Out
From: https://www.cnblogs.com/zx-xi/p/17780879.html

相关文章

  • 序列化
    ###Serializer#models.pyfromdjango.dbimportmodelsclassRole(models.Model):title=models.CharField(verbose_name="标题",max_length=32)order=models.IntegerField(verbose_name="顺序")#views.pyfromdjango.dbimportmode......
  • Go笔记(3)-3种go语言的键盘输入详解
    go语言的键盘输入详解go语言中有三种输入函数,分别是:fmt.Scanf()可以按照指定的格式进行输入fmt.Scanln()通过指针将值赋值给变量fmt.Scan()(1)fmt.ScanScan从标准输入扫描文本,读取空白符分隔的值保存到传递给本函数的参数中,将换行符视为空白符使用......
  • 【HTML】第四讲:有序列表和无序列表
    今天你进步了吗!@放纵lili一、有序列表。1、以数字和字母等可以表示顺序的符号为项目符号来排列列表项的列表为有序列表。2、形式:共有以下五种。3、基本语法:#记忆起来也很容易的:ol就是orderlist有序列表li就是列表。4、<li>标签里可以任意嵌套,但是<ol>标签,就只能嵌套<li>标签。5、t......
  • WSL2 中文输入法配置(Fcitx)
    1吐槽终端的WSL一开始是不支持GUI的,但是目前微软对WSL终端进行了update,所以开始支持GUI了。下面有两种解决办法1.1WSL更新参考微软官方教程但是我使用了这个方法,发现刚update完的wsl不能启动了,需要在powershell中,用netshwinsockreset命令重置网络环境。这个方法目前没有......
  • 浏览器输入url到网页展示过程
    总图:1.解析URL​ 浏览器的第一步工作是解析url,从而生成发送给web服务器的请求信息。​ URL组成如图:如果上图中表示数据的源的路径名为空呢?这时浏览器会默认访问根目录下的/index.html或者/default.html文件,当对URL解析完成后,浏览器就会开始构造HTTP请求消息2.DNS查询​ ......
  • Vue进阶(幺玖玖):vue 输入框中按enter键实现搜索或表单提交
    在前端项目开发过程中,为优化用户体验,可考虑在用户输入查询条件后按回车键实现搜索效果。实现方法如下:el-input监听键盘按下状态得用@keyup.enter.native,如果是非el-input组件,可以直接用@keyup.enter。<[email protected]="search"v-model='form.searchAttr'></el......
  • 8.1 C++ 标准输入输出流
    C/C++语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。C/C++语言具有很高的效率和控制能力,但也需要开发人员自行管理内存......
  • 8.1 C++ 标准输入输出流
    C/C++语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。C/C++语言具有很高的效率和控制能力,但也需要开发人员自行管理内存......
  • json序列化数据超出最大值(maxJsonLength)
    https://www.cnblogs.com/ellafive/p/13704301.html 1、序列化:以下代码在对象过大时会报错:进行序列化或反序列化时出错。字符串的长度超过了为maxJsonLength属性设置的值。//jsonObj比较大的时候会报错varserializer=newJavaScriptSerializer();returnserializer.Ser......
  • [BJWC2018] 序列合并
    朴素的\(O(n^4)\)是容易的,考虑如何优化,通过一些观察可以发现\(\texttt{dp}\)不具有凸性和决策单调性,所以只能用普通的矩阵乘法来优化,我们令\(\texttt{dp}\)数组构成的矩阵为\(A\),那么\(dp_{l,r}\)则可以从所有\(L\leqslantx\leqslantR\)的\(A^x\)转移而来,我们采用......