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

news2024/9/20 8:48:33
专栏前言

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

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

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

`timescale 1ns/1ns
module sequence_detect(
	input clk,
	input rst_n,
	input data,
	output reg match,
	output reg not_match
	);
	// 011100
	reg [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 ; 
	end
	
	always @ (pstate or data) begin // 对应状态转移图
		case (pstate) 
			idle : 
				if (data == 0) nstate = s1 ; //0
				else nstate = sf1 ; 
			s1 : 
				nstate = data ? s2 : sf2 ; //1
			s2 : 
				nstate = data ? s3 : sf3 ; //1
			s3 : 
				nstate = data ? s4 : sf4 ; //1
			s4 : 
				nstate = data ? sf5 : s5 ; //0
			s5 : 
				nstate = data ? sf6 : s6 ; //0
			s6 : 
				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 ; 
		endcase
	end

	always @ (pstate or data or rst_n) begin  // 输出
		if (!rst_n) begin 
			match <= 1'b0 ; 
			not_match <= 1'b0 ; 
		end
		else if (pstate == s6) begin 
			match <= 1'b1 ;
			not_match <= 1'b0 ; 
		end
		else if (pstate == sf6) begin 
			match <= 1'b0 ; 
			not_match <= 1'b1 ; 
		end
		else begin 
			match <= 1'b0 ; 
			not_match <= 1'b0 ; 
		end
	end

endmodule

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

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

相关文章

VINS-MONO代码解读----vins_estimator(重点部分)

1. 代码目录如下&#xff0c;重点和难点是factor部分&#xff0c;是关于IMU部分的&#xff0c;有较多关于IMU预积分公式的推导。 1. 条件变量con.wait读取测量值&#xff1a;getMeasurements() 读取buf中IMU和IMG的数据&#xff0c;并进行align&#xff0c;最后的结果是这样…

文章解读与仿真程序复现思路——电网技术 EI\CSCD\北大核心《考虑5G基站储能可调度容量的有源配电网协同优化调度方法》

这篇文章的标题涉及到以下关键概念&#xff1a; 5G基站&#xff1a; 提到了5G基站&#xff0c;这表明文章的焦点可能是与第五代移动通信技术相关的内容。5G技术对于提高通信速度、降低延迟以及支持大规模连接等方面有显著的改进&#xff0c;因此对于基站的电力需求和供应可能存…

创新指南|消费品牌2024重塑增长最值得关注的10个DTC零售策略

2023年对消费零售行业来说同样是挑战的一年&#xff0c;经济逆风和消费低迷迫在眉睫&#xff0c;而品牌零售商如何从库存积压中跳出来&#xff0c;努力应对增加的支出&#xff0c;实现可盈利的增长会是让每位CEO战略执行的第一优先级。2023年用什么策略于DTC&#xff1f;与全球…

[黑马程序员SpringBoot2]——开发实用篇3

目录&#xff1a; jetcache远程缓存方案jetcache本地缓存方案jetcache方法缓存j2cache基本操作springboot整合quartz​​​​​​​springboot整合task发送简单邮件发送多部件邮件消息简介购物订单案例-发送短信ActiveMQ安装springboot整合ActiveMQRabbitMQ安装springboot整合…

Navicat 技术指引 | GaussDB服务器对象的创建/设计(编辑)

Navicat Premium&#xff08;16.2.8 Windows版或以上&#xff09; 已支持对GaussDB 主备版的管理和开发功能。它不仅具备轻松、便捷的可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结构同步、协同合作、数据迁移等&#xff09;&#xff0c;这…

LangChain 8 模型Model I/O:输入提示、调用模型、解析输出

LangChain系列文章 LangChain 实现给动物取名字&#xff0c;LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储&#xff0c;读取YouTube的视频文本搜索I…

YB4051系列设备是高度集成的 Li-lon 和 Li-Pol 线性充电器,针对便携式应用的小容量电池。

YB4051H 300mA 单电池锂离子电池充电器0.1 mA 终端&#xff0c;45nA 电池漏电流 概述&#xff1a; YB4051系列设备是高度集成的 Li-lon 和 Li-Pol 线性充电器&#xff0c;针对便携式应用的小容量电池。它是一个完整的恒流/恒压线性充电器。不需要外部感应电阻&#xff0c;由于…

Linux常用命令——blkid命令

在线Linux命令查询工具 blkid 查看块设备的文件系统类型、LABEL、UUID等信息 补充说明 在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备&#xff08;包括交换分区&#xff09;所使用的文件系统类型、LABEL、UUID等信息进行…

React基础入门

文章目录 创建项目组件和事件更新状态导出组件jsx react是目前最流行的前端框架&#xff0c;几乎也不同太介绍了。 创建项目 首先下载node.js&#xff0c;安装成功后&#xff0c;最好换成国内的源 npm config set registry https://registry.npm.taobao.org然后就可以使用脚…

NVM得介绍和详细使用教程

NVM​​​​​​​&#xff08;Node Version Manager&#xff09;是一个用于管理多个Node.js版本的工具。它允许您在同一台计算机上轻松地切换和管理不同的Node.js版本。以下是NVM的介绍和详细使用教程&#xff1a; 安装NVM&#xff1a; 首先&#xff0c;您需要在计算机上安装N…

Echarts仪表盘3.0

代码&#xff1a; <html> <head><title>图表绘制</title><style type"text/css">#dashboard {width: 402px;height: 293px;margin: 50px auto;}</style> </head> <body><!-- 为ECharts准备一个具备大小&#xf…

ssm 服务器运维管理的论坛系统-98166(免费领取源码)计算机毕业设计选题开题+程序定制+论文书写+答辩ppt书写 包售后 全流程

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;服务器运维管理的论坛系统当然也不能排除在外。服务器运维管理的论坛系统是以实际运用为开发背景&#xff0c;运用软件工…

c语言-数组长度的计算(结构体数组,字符串数组)

数组的长度我们可以直接根据函数声明得到数组的长度&#xff0c;或者可以通过计算的方法如下&#xff1a; 数组长度sizeof(数组名)/sizeof(数组类型) 测试代码如下&#xff1a;测试int整形数组&#xff0c;char字符数组&#xff0c;字符串数组&#xff0c;结构体数组。 #includ…

办公技巧:Word中插入图片、形状、文本框排版技巧

目录 一、插入图片排版技巧 二、添加形状排版技巧 三、插入“文本框”排版技巧 我们平常在制作word时候经常会遇到插入选项卡下的图片、形状和文本框这三种情况下&#xff0c;那么如何使得Word文档当中添加这三个元素的同时&#xff0c;又能保证样式美观呢&#xff0c;今天小…

Nginx环境搭建:安装与卸载

目录 一、卸载 二、安装 注&#xff1a;如果直接使用yum安装nginx&#xff0c;则默认安装路径为&#xff1a;/usr/share/nginx/ 下面这种方式我们是指定了安装目录 一、卸载 因为我之前的虚拟机上面已经有了nginx服务&#xff0c;所以这里可以先介绍一下nginx的卸载方法&a…

vulnhub4

靶机地址: https://download.vulnhub.com/admx/AdmX_new.7z 信息收集 fscan 扫一下 ┌──(kali㉿kali)-[~/Desktop/Tools/fscan] └─$ ./fscan_amd64 -h 192.168.120.138 ___ _ / _ \ ___ ___ _ __ __ _ ___| | __ / /_\/____/ __|/ …

joplin笔记同步 到腾讯云S3

创建存储桶 打开腾讯云的存储桶列表&#xff0c;点击“创建存储桶”&#xff0c;输入名称&#xff0c;选择地域&#xff08;建议选择离自己较近的地域以降低访问时延&#xff09;和访问权限&#xff08;建议选择“私有读写”&#xff09;。 s3 存储桶&#xff1a; 存储桶的名称…

AI 视频 | Stable Video Diffusion 来了!(附体验地址)

1. 介绍 11 月 21 日&#xff0c;Stability AI 推出了 Stable Video Diffusion&#xff0c;这是 Stability AI 的第一个基于图像模型 Stable Diffusion 的生成式视频基础模型。 目前 Stability AI 已经在 GitHub 上开源了 Stable Video Diffusion 的代码&#xff0c;在 Huggin…

geemap学习笔记013:为遥感动态GIF图添加图名

前言 遥感动态GIF图可以展示地理区域随时间的变化&#xff0c;这对于监测自然灾害、湿地变化、城市扩展、农田变化等方面非常有用&#xff0c;并且可以反复观察图像&#xff0c;以更深入地了解地表的动态变化。本节主要是对遥感动态GIF图添加图名&#xff0c;以便于更好地理解…