牛客网Verilog刷题——VL27

news2024/11/26 10:22:39

牛客网Verilog刷题——VL27

  • 题目
  • 答案

题目

  请编写一个序列检测模块,检测输入信号(a)是否满足011100序列, 要求以每六个输入为一组,不检测重复序列,例如第一位数据不符合,则不考虑后五位。一直到第七位数据即下一组信号的第一位开始检测。当信号满足该序列,给出指示信号match。当不满足时给出指示信号not_match。
  模块的接口信号图如下:

在这里插入图片描述
  模块的时序图如下:

在这里插入图片描述

  请使用Verilog HDL实现以上功能,要求使用状态机实现,画出状态转化图。

信号类型输入/输出位宽描述
clkwireIntput1系统时钟信号
rst_nwireIntput1异步复位信号,低电平有效
awireIntput1单比特信号,待检测的数据
matchregOutput1当输入信号a满足目标序列,该信号为1,其余时刻该信号为0
not_matchregOutput1当输入信号a不满足目标序列,该信号为1,其余时刻该信号为0

答案

  题目中要求使用状态机实现,可以画出其状态转换图。

  根据状态转换图,编写Verilog代码,如下。

`timescale 1ns/1ns
module sequence_detect(
	input clk,
	input rst_n,
	input data,
	output reg match,
	output reg not_match
	);

//状态机实现
reg [2:0] curr_state;
reg [2:0] next_state;
reg [5:0] r_data;

always @(posedge clk or negedge rst_n)
  if(!rst_n)
    curr_state <= 3'd0;
  else
    curr_state <= next_state;

always @(*) begin
  next_state = 3'd0;
  case(curr_state)
    3'd0: next_state = 3'd1;
	3'd1: next_state = 3'd2;
	3'd2: next_state = 3'd3;
	3'd3: next_state = 3'd4;
	3'd4: next_state = 3'd5;
	3'd5: next_state = 3'd0;
	default: next_state = 3'd0;
  endcase
end
  
always @(posedge clk or negedge rst_n)
  if(!rst_n) begin
	r_data <= 6'd0;
    match <= 1'b0;
	not_match <= 1'b0;
  end
  else 
    case(curr_state)
      3'd0,3'd1,3'd2,3'd3,3'd4: 
	    begin 
		  r_data[curr_state] <= data;
		  match <= 1'b0;
		  not_match <= 1'b0;
		end

	  3'd5:
	    begin
		  r_data[curr_state] <= data;
		  if(r_data[4:0] == 5'b01110 && data == 1'b0)
		    match <= 1'b1;
		  else
		    match <= 1'b0;

		  if(r_data[4:0] != 5'b01110 && data != 1'b0)
		    not_match <= 1'b1;
		  else
		    not_match <= 1'b0;			

		end

	  default: 
	    begin
          r_data <= 6'd0;
		  match <= 1'b0;
		  not_match <= 1'b0;
		end
	endcase
    
endmodule

  另外,我们还可以用计数器+移位寄存器的方式进行实现,如下。

`timescale 1ns/1ns
module sequence_detect(
	input clk,
	input rst_n,
	input data,
	output reg match,
	output reg not_match
	);
	
//采用移位寄存器+计数器实现
reg [2:0] r_cnt;
reg [5:0] r_data;

always @(posedge clk or negedge rst_n)
  if(!rst_n)
    r_cnt <= 3'd0;
  else if(r_cnt == 3'd5)
    r_cnt <= 3'd0;
  else
    r_cnt <= r_cnt + 1'b1;

always @(posedge clk or negedge rst_n)
  if(!rst_n)
    r_data <= 6'd0;
  else
    r_data <= {r_data,data};

always @(posedge clk or negedge rst_n)
  if(!rst_n) begin
    match <= 1'b0;
	not_match <= 1'b0;
  end
  else if(r_cnt == 3'd5)
    if(data == 1'b0 && r_data[4:0] == 4'b01110) begin
	  match <= 1'b1;
	  not_match <= 1'b0;
	end
	else begin
      match <= 1'b0;
	  not_match <= 1'b1;
	end
  else begin
    match <= 1'b0;
	not_match <= 1'b0;
  end
  
endmodule

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

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

相关文章

【C++】反向迭代器的设计

前言 STL中不少的容器需要有迭代器这样的设计&#xff0c;特别是正向迭代器&#xff0c;几乎每个容器都有自己的特定实现方式&#xff0c;有了正向迭代器之后&#xff0c;我们还要提供反向迭代器以供一些特殊的需求&#xff0c;但是许多容器的正向迭代器实现的方式不一样&#…

华东师范大学副校长周傲英:未来,中国需要什么样的数据库?

本文为华东师范大学副校长&#xff0c;CCF 会士周傲英教授在第一届 OceanBase 开发者大会带来的分享。欢迎访问 OceanBase 官网获取更多信息&#xff1a;https://www.oceanbase.com/ 3 月 25 日&#xff0c;第一届 OceanBase 开发者大会在北京举行&#xff0c;华东师范大学副校…

AI智能智能课程第四讲 -数据库领域专家

使用chatGPT让你成为数据库领域专家 作业 现在要测试电商的下单功能&#xff1a;测试员张三在公司的电商平台上下了几个单&#xff0c;现在需要验证&#xff1a;张三这个客户下单的所有订单信息&#xff0c;包含订单编号&#xff0c;商品名称&#xff0c;商品价格&#xff0c;…

什么是gpt4-如何用上gpt-4

gpt4主要强化了哪些功能 OpenAI尚未公布GPT-4的详细信息&#xff0c;不过可以根据OpenAI前CEO Sam Altman在2020年所发表的一篇博客中提到的&#xff0c;GPT-4可能会具有更强大和智能的能力&#xff0c;包括更准确的理解和表达自然语言、更高效的记忆和推理、更全面的知识和视…

thinkphp:数值(保留小数点后N位,四舍五入,左侧补零,格式化货币,取整,生成随机数,数字与字母进行转换)

一、保留小数点后N位/类似四舍五入&#xff08;以保留小数点后三位为准&#xff09; number_format()函数&#xff1a;第一个参数为要格式化的数字&#xff0c;第二个参数为保留的小数位数 方法一&#xff1a; public function test() {$num 12.56789; // 待格式化的数字$r…

Maven配置阿里云仓库

Maven简介&#xff1a; Maven项目对象模型(POM)&#xff0c;可以通过一小段描述信息来管理项目的构建&#xff0c;报告和文档的项目管理工具软件。 Maven 除了以程序构建能力为特色之外&#xff0c;还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性&#x…

QMS-云质说质量 - 11 我和我的客户投诉(3) - 明枪易躲 暗箭难防

云质QMS原创 转载请注明来源 作者&#xff1a;王洪石 君子思义 小人贪利 金庸老先生在《笑傲江湖》中写道&#xff0c;“只要有人的地方就有恩怨&#xff0c;有恩怨就会有江湖&#xff0c;人就是江湖。”这句话映射到现实社会中&#xff0c;就是“社会险恶&#xff0c;人心叵测…

链表(JS实现、LeetCode例题)

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;数据结构与算法 &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;道阻且长&#xff0c;行则将至&#x1f497; 文章目录 链表链表的分类创建链表LinkedList类的骨架 实现链表的方法push尾部添加元…

『网络基础 一 』

目录 网络发展 认识 “协议” 网络协议初始 协议分层 OSI七层模型 TCP/IP五层&#xff08;或四层&#xff09;模型 网络传输基本流程 ​编辑 协议报头 数据包封装和分用 网络中的地址管理 认识IP地址 认识MAC地址 网络发展 独立设计&#xff1a;计算机之间的相互独立…

Flink系列-10、Flink DataStream的Transformation

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 大数据系列文章目录 官方网址&#xff1a;https://flink.apache.org/ 学习资料&#xff1a;https://flink-learning.org.cn/ 目录 官网所有的…

探析Android中的四类性能优化

作者&#xff1a;Yj家的孺子牛 流畅性优化 主线程模型 了解 Android 的流畅性优化之前&#xff0c;我们需要先了解Android的线程结构。在 Android 中&#xff0c;有一个主线程模型&#xff0c;其中所有的绘制以及交互都是在主线程中进行的&#xff0c;所以&#xff0c;当我们…

【LaTex】Elsevier投稿系统到底何时整顿?‘expl3.sty‘ aborted!

前言 两年前&#xff0c;我在投稿Elsevier旗下的Knoeldeg-based systems时就被这个投稿系统整得是头昏脑胀&#xff0c;直接肝爆。首先&#xff0c;第一次提交手稿时可以接受PDF&#xff0c;很方便。然而&#xff0c;后面大修时提交可编辑的源文件时给我狠狠的打脸了。记得当时…

快速入门量化交易

本文首发自「慕课网」&#xff0c;想了解更多IT干货内容&#xff0c;程序员圈内热闻&#xff0c;欢迎关注"慕课网"&#xff01; 原作者&#xff1a;袁霄|慕课网讲师 近来“量化交易”这个词听得越来越频繁&#xff0c;多数人对量化交易的第一印象是“高大上的技术”…

堆的原理解析

看这篇文章需要对比较器有一定的了解&#xff0c;可以看我的这篇文章&#xff1a; 认识比较器_鱼跃鹰飞的博客-CSDN博客 堆的实际存储方式是数组&#xff0c;但是脑海中应该把他想象成一种树的结构 依次加入下标0-8的9个数&#xff08;添加过程中会不断的和父节点大小进行比…

舰船交流电网绝缘监测及故障定位的研究及产品选型

摘要&#xff1a;交流电网和电气设备的绝缘状况直接影响舰船电力系统安全&#xff0c;其绝缘电阻的下降是一个不可避免的过程&#xff0c;成为了电网安全的严重隐患。电气设备绝缘材料的劣化过程是不可逆的&#xff0c;对舰船交流电网进行绝缘在线监测及快速定位绝缘故障支路&a…

浅谈:JVM垃圾回收

一、四种类加载器(双亲委托/全盘委托机制) 1.启动类加载器: 加载 Java 核心类库,无法被 Java 程序直接引用。 2.扩展类加载器: 加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。 3.系统类加载器: 它根据 Java 应用的类…

seleniumUI自动化登录失败案例重新尝试WhileTrue

一个用户每次登录失败&#xff0c;失败N次&#xff0c;无法进入下一url时&#xff0c;怎样会重新尝试N次重新登录呢 &#xff1f; 我们可以使用wihile true判断&#xff0c;并使用currenturl判断&#xff0c;下面就介绍以下个人的方法 currenturlEGTconfigFile.driver.curren…

Opencv识别车牌

Opencv识别车牌 #encoding:utf8 import cv2 import numpy as np Min_Area 50 #定位车牌 def color_position(img,output_path): colors [#([26,43,46], [34,255,255]), # 黄色 ([100,43,46], [124,255,255]), # 蓝色 ([35, 43, 46], [77, 255, 255]) # 绿色 ] hsv cv2.cvtCo…

推荐 7 个超牛的 Spring Cloud 实战项目

个 把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务&#xff0c;这就是微服务架构的架构概念&#xff0c;通过将功能分解到各个离散的服务中以实现对解决方案的解耦。 关于微服务相关的学习资料不多&#xff0c;而 GitHub 上的开源项目可以作为你微服务之旅…

STM32平衡小车 mpu6050学习

MPU6050简介 MPU6050是一款性价比很高的陀螺仪,可以读取X Y Z 三轴角度,X Y Z 三轴加速度,还有内置的温度传感器,在姿态解析方面应用非常广泛。 二、硬件连接 由于采用IIC通信,最基本的只需要采用四根线就可以了。分别VCC,GND,SCL,SDA连接到单片机 SCL-----PB6 SDA---…