当前位置: 首页 > news >正文

「Verilog学习笔记」不重叠序列检测

专栏前言

本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网

        题目要求检测a的序列,a为单bit输入,每个时刻可能具有不同的值, 当连续的六个输入值符合目标序列表示序列匹配,当六个输入值的一个或多个不符合则表示序列不匹配。

        值得注意的是:题目要求以六位数据为一组,不同于常见的序列检测,要求检测重复序列,在画状态转移图时要注意,例如第一位不匹配,不应该返回到初始状态去进行第一位的判断,因为此时的输入是第二位数值,题目要求不对该数值做判断,而需要等到六个时钟周期之后,即第七位数据(第二组数值的第一位)再判断是否匹配目标序列的第一位。

`timescale 1ns/1ns
module sequence_detect(input clk,input rst_n,input data,output reg match,output reg not_match);// 011100reg [3:0] pstate, nstate ; // 当前状态、下一状态parameter idle = 4'b0,s1 = 4'd1,s2 = 4'd2,s3 = 4'd3,s4 = 4'd4,s5 = 4'd5,s6 = 4'd6,sf1 = 4'd7, sf2 = 4'd8,sf3 = 4'd9, sf4 = 4'd10,sf5 = 4'd11, sf6 = 4'd12 ;always @ (posedge clk or negedge rst_n) begin if (~rst_n) pstate <= idle ; else pstate <= nstate ; endalways @ (pstate or data) begin // 对应状态转移图case (pstate) idle : if (data == 0) nstate = s1 ; //0else nstate = sf1 ; s1 : nstate = data ? s2 : sf2 ; //1s2 : nstate = data ? s3 : sf3 ; //1s3 : nstate = data ? s4 : sf4 ; //1s4 : nstate = data ? sf5 : s5 ; //0s5 : nstate = data ? sf6 : s6 ; //0s6 : nstate = data ? sf1 : s1 ; sf1 : nstate = sf2 ;sf2 : nstate = sf3 ;sf3 : nstate = sf4 ;sf4 : nstate = sf5 ;sf5 : nstate = sf6 ;sf6 : nstate = data ? sf1 : s1 ;default :nstate = idle ; endcaseendalways @ (pstate or data or rst_n) begin  // 输出if (!rst_n) begin match <= 1'b0 ; not_match <= 1'b0 ; endelse if (pstate == s6) begin match <= 1'b1 ;not_match <= 1'b0 ; endelse if (pstate == sf6) begin match <= 1'b0 ; not_match <= 1'b1 ; endelse begin match <= 1'b0 ; not_match <= 1'b0 ; endendendmodule

相关文章:

  • 【Python 训练营】N_6 求素数
  • 二次开发问题汇总【C#】
  • 【Promise】某个异步方法执行结束后 在执行下面方法
  • 华清远见嵌入式学习——网络编程——小项目
  • 虚拟机系列:(VMware Workstation Pro)Centos7下搭建Android开发环境及Android真机调试
  • 怎样自动把网页截图发到微信群里
  • TypeScript 项目 Airbnb 语法风格 ESLint 配置
  • python之TCP的网络应用程序开发
  • 455.分发饼干
  • OpenCV快速入门:特征点检测与匹配
  • nginx 代理接口报404 问题排查
  • HarmonyOS开发:ArkTs常见数据类型
  • 流程图是什么,用什么软件做?
  • [开源]Web端的P2P文件传输工具,简单安全高效的P2P文件传输服务
  • centos7 docker开启认证的远程端口2376配置
  • [笔记] php常见简单功能及函数
  • angular2 简述
  • Java应用性能调优
  • Service Worker
  • sessionStorage和localStorage
  • vue-cli3搭建项目
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 全栈开发——Linux
  • 实战|智能家居行业移动应用性能分析
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • nb
  • 通过调用文摘列表API获取文摘
  • ​人工智能书单(数学基础篇)
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • $refs 、$nextTic、动态组件、name的使用
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (k8s中)docker netty OOM问题记录
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二十四)Flask之flask-session组件
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (力扣题库)跳跃游戏II(c++)
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (正则)提取页面里的img标签
  • (转载)(官方)UE4--图像编程----着色器开发
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .libPaths()设置包加载目录
  • .NET Core 2.1路线图
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • [Angular] 笔记 7:模块
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [c++进阶(九)] STL之deque深度剖析
  • [CF407E]k-d-sequence