基于verilog实现序列相关检测

news2024/9/29 5:26:49

题目来源牛客网,完整工程源码:https://github.com/ningbo99128/verilog


目录

1、VL25 输入序列连续的序列检测

题目介绍

思路分析

代码实现

仿真文件

2、VL26 含有无关项的序列检测

题目介绍

思路分析

代码实现

仿真文件

3、VL27 不重叠序列检测

题目介绍

思路分析

代码实现

仿真文件

4、VL28 输入序列不连续的序列检测

题目介绍

思路分析

代码实现

仿真文件


1、VL25 输入序列连续的序列检测

题目介绍

        请编写一个序列检测模块,检测输入信号a是否满足01110001序列,当信号满足该序列,给出指示信号match。模块的接口信号图如下:

 模块的时序图如下:

        请使用Verilog HDL实现以上功能,并编写testbench验证模块的功能

输入描述:

        clk:系统时钟信号

        rst_n:异步复位信号,低电平有效

        a:单比特信号,待检测的数据

输出描述:

        match:当输入信号a满足目标序列,该信号为1,其余时刻该信号为0

思路分析

        由状态图可以看出,在s5、s6状态为1时,其状态分别为011101、0111001,不满足序列条件,从而跳转到s2状态继续执行检测;其余状态均为跳转到s2状态;最后在s8状态时,满足序列01110001条件,输出信号match为1。

代码实现

//第一段 状态转移
always @(posedge clk or negedge rst_n)begin
	if(!rst_n)
		curr_state <= s0;
	else
		curr_state <= next_state;
	end

//第二段 转移状况
always @(*)begin
	case(curr_state)
		s0:	begin
				if(a==0) 	next_state = s1;
				else 		next_state = s0;	
			end
		s1:	begin
				if(a==1) 	next_state = s2;
				else 		next_state = s0;	
			end
		s2:	begin
				if(a==1) 	next_state = s3;
				else 		next_state = s0;	
			end
		s3:	begin
				if(a==1) 	next_state = s4;
				else 		next_state = s0;	
			end
		s4:	begin
				if(a==0) 	next_state = s5;
				else 		next_state = s0;	
			end
		s5:	begin
				if(a==0) 	next_state = s6;
				else 		next_state = s2;	
			end
		s6:	begin
				if(a==0) 	next_state = s7;
				else 		next_state = s2;	
			end
		s7:	begin
				if(a==1) 	next_state = s8;
				else 		next_state = s0;	
			end
		s8:	begin next_state = s0; end			
		default: begin next_state = s0;end
	endcase	   
end
	
/********* 第三段 状态输出 moore FSM ************/

//标志信号
always @(posedge clk or negedge rst_n)begin 
	if(!rst_n)
		match <= 1'b0;	
	else if(curr_state == s8)    //注意此处是curr_state 
		match <= 1'b1;					
	else
		match <= 1'b0;	
end  

仿真实现

        注意match的变化,是在a序列结束后的1个时钟周期,而不是在a序列最后一位刚开始就产生变化。

2、VL26 含有无关项的序列检测

题目介绍

请编写一个序列检测模块,检测输入信号a是否满足011XXX110序列(长度为9位数据,前三位是011,后三位是110,中间三位不做要求),当信号满足该序列,给出指示信号match。

程序的接口信号图如下:

时序图如下:

请使用Verilog HDL实现以上功能,并编写testbench验证模块的功能。 要求代码简洁,功能完整。

输入描述:

clk:系统时钟信号

rst_n:异步复位信号,低电平有效

a:单比特信号,待检测的数据

输出描述:

match:当输入信号a满足目标序列,该信号为1,其余时刻该信号为0

思路分析

状态转移图如下:

        有一个疑惑是,在s6状态时,011xxx后面有2个状态分别为011xxx0、011xxx1;如果是011xxx1那没问题,继续跳转下一个状态,那如果是011xxx0,应该返回哪个状态呢?要不要识别一下x的值,如果前3个x恰好是011,那应该返回到s3状态,而不是s0状态。这样好像把题目想的太复杂了。最后按照最简单的思路来,就好了。

代码实现

//第二段 转移状况
always @(*)begin
	case(curr_state)
		s0:	begin
				if(a==0) 	next_state = s1;
				else 		next_state = s0;	
			end
		s1:	begin
				if(a==1) 	next_state = s2;
				else 		next_state = s0;	
			end
		s2:	begin
				if(a==1) 	next_state = s3;
				else 		next_state = s0;	
			end
		s3:	begin next_state = s4; end
		s4:	begin next_state = s5; end
		s5:	begin next_state = s6; end
		s6:	begin
				if(a==1) 	next_state = s7;
				else 		next_state = s0;	
			end
		s7:	begin
				if(a==1) 	next_state = s8;
				else 		next_state = s0;	
			end
		s8:	begin
				if(a==0) 	next_state = s9;
				else 		next_state = s0;	
			end		
		s9:	begin next_state = s0; end			
		default: begin next_state = s0;end
	endcase	   
end

仿真文件

        直接运行成功了,就没用vivado仿真。

3、VL27 不重叠序列检测

题目介绍

思路分析

代码实现

仿真文件

4、VL28 输入序列不连续的序列检测

题目介绍

思路分析

代码实现

仿真文件


VL29 信号发生器

VL30 数据串转并电路

VL31 数据累加输出

VL32 非整数倍数据位宽转换24to128

VL33 非整数倍数据位宽转换8to12

VL34 整数倍数据位宽转换8to16

VL35 状态机-非重叠的序列检测

VL36 状态机-重叠的序列检测

VL37 时钟分频(偶数)

VL40 占空比50%的奇数分频

VL41 任意小数分频

VL42 无占空比要去的奇数分频

VL43 根据状态转移写状态机-三段式

VL44 根据状态转移写状态机-二段式

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

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

相关文章

Sleuth+Zipkin架构

为什么要链路追踪 小结&#xff1a; nacos 【name server】&#xff1a;注册中心&#xff0c;解决服务的注册与发现 nacos【config】&#xff1a;配置中心&#xff0c;微服务配置文件的中心化管理&#xff0c;同时配置信息的动态刷新 Ribbon&#xff1a;客户端负载均衡器&#…

《设计模式》享元模式

《设计模式》享元模式《设计模式》设计模式的基本原则 《设计模式》单例模式 《设计模式》工厂模式 《设计模式》原型模式 《设计模式》建造者模式 《设计模式》适配器模式 《设计模式》桥接模式 《设计模式》装饰者模式 《设计模式》组合模式 《设计模式》外观模式 《设计模式…

数据结构课设:迷宫问题

文章目录前言一、概要设计1、基本信息2、功能模块图3、功能描述4、调用关系图5、结果演示① 创建迷宫② 求解③ 清除多余路径二、完整代码前言 最近刚好在写自己的课设&#xff0c;匆匆忙忙写出来的课设系统&#xff0c;仍有不足&#xff0c;拿出来和大家分享一下&#xff0c;…

C. p-binary(二进制位)

Problem - 1225C - Codeforces Vasya会看中任何数字&#xff0c;只要它是2的整数次方。另一方面&#xff0c;Petya非常保守&#xff0c;只喜欢单一的整数p&#xff08;可以是正数、负数或零&#xff09;。为了结合他们的口味&#xff0c;他们发明了2xp形式的p-二进制数&#xf…

jmeter接口测试之导入测试用例/get请求中Url存在参数(工作日记2)

导入接口用例进行接口测试 以运营中心测试计划中的企业菜单管理为例 【前提条件】 1、有接口数据 2、有接口用例 我们需要把接口测试用例转换为CSV格式步骤如下&#xff1a; 右键选择打开方式为Notepad 需要将文件设置一下编码 文件留着备用 【步骤】 1、新建一个企业…

前端基础之PS和相关基础知识总结

PS安装&#xff1a; 淘宝 PS简介 面板简介&#xff08;菜单栏、工具栏、辅助面板&#xff09; 图片格式&#xff1a; jpgjpeg&#xff08;色彩丰富的图片&#xff09;png&#xff08;半透明图片&#xff09;gif&#xff08;网页动态图&#xff09;psd&#xff08;ps设计源文…

android java udp广播 用于局域网搜索扫描设备。

DatagramSocket socket new DatagramSocket();//设置接收等待时长socket.setSoTimeout(LanCommConfig.RECEIVE_TIME_OUT);byte[] sendData new byte[1024];//使用广播形式&#xff08;目标地址设为255.255.255.255&#xff09;的udp数据包DatagramPacket sendPacket new Dat…

STC15单片机+DS18B20+LCD1602+PCF8574转IIC接口温度显示

STC15单片机+DS18B20+LCD1602+PCF8574转IIC接口温度显示 📺显示效果 LCD1602 IIC接口 ✨本示例基于自制的STC开发板,主控采用的:IAP15W4K61S4相关篇《【PCB开源分享】STC/IAP15W4K61S4开发板》《【开源分享】自制STC15W408AS开发板》🌼接线说明 🌿CD1602+PCF8574转IIC接…

stlink下载调试器使用说明(STM32采用stlink下载程序)

stlink能干什么&#xff1f; 最基本的功能&#xff1a;下载程序。 一般STM32支持ISP串口下载&#xff0c;也支持stlink、jlink等下载器下载 。 使用stlink、jlink下载要比串口方便很多&#xff0c;在keil里直接点击下载就行了&#xff0c;不需要去选择hex文件&#xff0c;速度…

你可能还不知道 golang 的高效编码细节

xdm&#xff0c;我们都知道 golang 是天生的高并发&#xff0c;高效的编译型语言 可我们也都可知道&#xff0c;工具再好&#xff0c;用法不对&#xff0c;全都白费&#xff0c;我们来举 2 个常用路径来感受一下 struct 和 map 用谁呢&#xff1f; 计算量很小的时候&#xf…

特斯拉第10000桩落成,百度地图送10000名充电免单!

「导语」 为庆祝特斯拉在中国大陆落成第10000个超级充电桩&#xff0c;百度地图推出特斯拉车主专属权益。车主们通过百度地图APP&#xff0c;即可实时获取超级充电桩空闲信息、一键规划专属充电路线。12.28-1.2期间&#xff0c;更有10000份充电免单福利限时放送。 在汽车电动…

Linux环境开机自启java应用

Linux环境设置开机自启java应用&#xff08;Linux定时任务&#xff09; crontab是Unix和Linux用于设置需要周期性被执行的指令&#xff0c;是Linux服务器很常用的技术&#xff0c;很多任务都会设置在crontab循环执行。 crontab &#xff1a; 提供给用户控制任务计划的命令&…

WebDAV之葫芦儿·派盘+File Manager

File Manager 支持WebDAV方式连接葫芦儿派盘。 手机文件太多,空间不足、隐藏文件多、文件清理不干净?推荐您一个功能强大的文件管理器,可以让你对手机中的各类文件进行管理,支持快速移动、复制粘贴、压缩解压等等。同时还能对已经安装的程序进行卸载,自动识别手机中的AP…

啥牌子的蓝牙耳机音质好?2023公认音质最好的蓝牙耳机

音乐是有魔力的&#xff0c;繁杂的工作和琐碎的生活&#xff0c;使得大多数人焦虑不安&#xff0c;音乐可以令人放松&#xff0c;蓝牙耳机越多越多&#xff0c;真不知道怎么挑好&#xff0c;品牌成百上千&#xff0c;款式就更不用说了&#xff0c;下面笔者专门整理了一期音质表…

【小西】优化生日品同步网易严选功能,使其支持多SPU对多SKU关系

目录前言思路代码实现实体ThemeActivityGift&#xff1a;spuId由 String类型变为JSONArrayThemeActivityGiftServiceImpl改造handleYxGiftByOperation&#xff1a;保存的是严选的生日品checkSpuIds&#xff1a;校验SPU有效性checkSpuIdExist&#xff1a;校验单个spuId是否存在c…

C语言函数栈帧的创建和销毁

前期学习的时候&#xff0c;我们可能有很多困惑&#xff0c;比如&#xff1a; 局部变量是怎么创建的&#xff1f; 为什么局部变量的值是随机值&#xff1f; 函数是怎么传参的&#xff1f;传参的顺序是怎样的&#xff1f; 形参和实参是什么关系&#xff1f; 函数调用是怎么…

分享丨品牌零售行业三大实践解读,全面搭建并落地数字化运营体系

以下内容来自神策数据创始人 & CEO 桑文锋关于数据驱动零售品牌业务增长的相关分享。点击文末“阅读原文”&#xff0c;了解神策品牌零售行业完整版解决方案。神策从 2020 年深入品牌零售领域&#xff0c;一路走来跌跌撞撞&#xff0c;不过思路越来越清晰&#xff0c;对该领…

Echarts:饼图默认高亮和选中(突出并高亮)/添加单击事件/X轴字符标签换行处理

饼图默认高亮: // 我这里实现的是饼图// 获取 this.sysfbChart this.$echarts.init(document.getElementById(sysfb))// 默认高亮第一个 // highlight:突出 this.sysfbChart.dispatchAction({type: highlight,seriesIndex: 0,dataIndex: 0}); 效果图: 饼图选中(突出并高亮):…

为什么自学 Python 看不进去?

如果刚开始学习python&#xff0c;没看懂&#xff0c;那就多看几次就会了。看不进去很正常&#xff0c;这个过程会很乏味&#xff0c;但是对于你建立牢固的编程思维是必须的。会有看不进去的这个阶段 python学习的秘诀在于对技术了解的广度和对数据结构研究的深度&#xff0c;不…

2022“易观之星”奖项公布,聚焦数字经济,助力数智创新

12月29日&#xff0c;“易观之星”颁奖典礼线上举办&#xff0c;重磅颁出2022“易观之星”奖项。 2022“易观之星”设置数字产品、数字企业2个系列共7大奖项&#xff0c;覆盖金融、品牌零售、汽车出行、文化消费等领域&#xff0c;挖掘和表彰各领域表现卓越的数字产品、数字企业…