练习八-利用有限状态机进行时序逻辑的设计

利用有限状态机进行时序逻辑的设计

      • 1,任务目的:
      • 2,RTL代码,及原理框图
      • 3,测试代码,输出波形

1,任务目的:

(1)掌握利用有限状态机实现一般时序逻辑分析的方法;
(2)掌握用Verilog编写可综合的有限状态机的模板;
(3)掌握用Verilog编写状态机模板的测试文件的一般方法。

案例:重复检测序列,实现检测功能是:5进制“10010。考虑到序列重叠的可能,有限状态机共提供8个状态(包括初始状态IDLE)。”

2,RTL代码,及原理框图

module	seqdet(
input				clk,
input				x,
input				rst,
output				z,
output	reg	[2:0]	state
);
//	独热码来做参数
parameter		IDLE = 3'd0;
parameter		A	 = 3'd1;
parameter		B	 = 3'd2;
parameter		C	 = 3'd3;parameter		D	 = 3'd4;
parameter		E	 = 3'd5;
parameter		F	 = 3'd6;
parameter		G	 = 3'd7;//  `define			IDLE	0
//  `define			A		1
//  `define			B		2
//  `define			C		3
//  `define			D		4
//  `define			E		5
//  `define			F		6
//  `define			G		7assign	z = ((state == E) && (x==0)) ? 1 : 0;
//	当x序列 10010 最后一个 0刚到时刻,时钟沿立刻将状态变为E,此时z应该变为高always@(posedge clk)	if(!rst)	state	<= IDLE;else casex(state)IDLE: if(x == 1)	// 第一个码位对,记状态Astate	<= A;A:	if(x == 0)		// 记状态Bstate	<= B;B:	if(x == 0)		//	Cstate	<= C;elsestate	<= F;	// 前功尽弃,到 FC:	if(x == 1)state	<= D;elsestate	<= G;	// 前功尽弃,到 GD:	if(x == 0)state	<= E;	// 全对,此时有输出elsestate	<= A;
// 第五个码位不对时,前功尽弃,只有刚进入的1位有用,回到第一个码位对状态,记状态AE:	if(x == 0)state	<= C;elsestate	<= A;	// 前功尽弃,只有刚输入的1码位对,记状态AF:	if(x == 1)state	<= A;else	state	<= B;	//	又有一个码对,记状态BG:	if(x == 1)state	<= F;	// 只有刚输入的1码位对,记状态Adefault:state	<= IDLE;	// 默认初始状态endcase//  `undef			IDLE
//  `undef			A
//  `undef			B
//  `undef			C
//  `undef			D
//  `undef			E
//  `undef			F
//  `undef			Gendmodule

在这里插入图片描述

3,测试代码,输出波形

//	测试模块
module	seqdet_top;
reg		clk,	rst;
reg		[23:0]	data;wire	[2:0]	state;wire	z, x;
assign	x = data[23];
always 	#10		clk = ~clk;always@(posedge clk)data = {data[22:0], data[23]};	// 形成数据向左移环形流,最高位与x连接initial	beginclk = 0;	rst = 1;
#2;		rst	= 0;	
#30;	rst = 1;data	= 24'b0000_1100_1001_0000_1001_0100;
#500;	$stop;
endseqdet	u_seqdet(
.clk		(clk	),
.rst		(rst	),
.x			(x		),
.z			(z		),
.state		(state	)
);endmodule

在这里插入图片描述

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

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

相关文章

淘宝商品详情接口,商品属性接口,商品信息查询,商品详细信息接口,h5详情,淘宝APP详情

淘宝商品详情API接口可以使用淘宝开放平台提供的SDK或API来获取。这些接口可以用于获取商品的详细信息&#xff0c;如标题、价格、描述、图片等。 以下是使用淘宝开放平台API获取商品详情的步骤&#xff1a; 注册淘宝开放平台账号&#xff0c;并创建应用&#xff0c;获取应用…

重装系统后如何恢复以前的文件?详细教程大揭秘!

在日常生活中&#xff0c;我们可能会遇到各种计算机问题&#xff0c;其中最严重的问题之一就是需要重装系统。在重装系统之前&#xff0c;我们通常需要考虑一个问题&#xff1a;重装系统后还能恢复以前的文件吗&#xff1f; 首先&#xff0c;我们需要明确一点&#xff0c;重装…

7-tcp 三次握手和四次挥手、osi七层协议,哪七层,每层有哪些?tcp和udp的区别?udp用在哪里了?

1 tcp 三次握手和四次挥手 2 osi七层协议&#xff0c;哪七层&#xff0c;每层有哪些 3 tcp和udp的区别&#xff1f;udp用在哪里了&#xff1f; 1 tcp 三次握手和四次挥手 # tcp协议---》处于osi7层协议的传输层&#xff0c;可靠连接&#xff0c;使用三次握手&#xff0c;四次挥…

PLC通过Modbus转profinet网关读取并控制恒压供水系统中的变频器频率

PLC通过Modbus转profinet网关读取并控制恒压供水系统中的变频器频率 PLC通过Modbus转Profinet网关(XD-MDPN100)在恒压供水系统中读取变频器的频率。该系统实时监控逆变器的频率&#xff0c;以确保水的供应能够保持恒定的压力。PLC通过Modbus与变频器通信&#xff0c;将读取的频…

Redis高可用之持久化

Redis的高可用 在集群当中有一个非常重要的指标&#xff0c;提供正常服务的时间的百分比(365),99.9%后面的小数点越多说明越可靠。Redis 的高可用含义更加宽泛&#xff0c;正常服务是指标之一&#xff0c;数据容量的扩展&#xff0c;数据的安全性。 redis中高可用技术种类 1…

Altium Designer学习笔记3

原理图生成PCB&#xff1a; 然后是手动布局&#xff1a; 可以看到先没有交叉。 最终再走线。 另外&#xff0c;了解下这个封装的一些概念。

线程的面试八股

Callable接口 Callable是一个interface,相当于给线程封装了一个返回值,方便程序猿借助多线程的方式计算结果. 代码示例: 使用 Callable 版本,创建线程计算 1 2 3 ... 1000, 1. 创建一个匿名内部类, 实现 Callable 接口. Callable 带有泛型参数. 泛型参数表示返回值的类型…

110. 平衡二叉树

110. 平衡二叉树 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;递归法&#xff1a;迭代法 错误经验吸取 原题链接&#xff1a; 110. 平衡二叉树 https://leetcode.cn/problems/balanced-binary-tree/description/ 完成情况&#xff1…

智慧工地网络广播系统

智慧工地网络广播系统 智慧工地网络广播&#xff0c;是智慧公司不可缺少的一环&#xff0c;对于工地广播来说&#xff0c;音质和传输稳定性都是非常重要的要素。尤其是在高楼大厦密集的地方&#xff0c;可能会存在信号干扰和传输受阻的情况&#xff0c;这时候可以考虑使用网络…

VueH5公众号分享到微信朋友圈或好友

场景需求&#xff1a; 一般分享场景是在当前页面分享当前页面&#xff0c;但是业务需求是&#xff0c;在当前页面分享好几个其他页面的链接到朋友圈和好友。 PS&#xff1a;微信自带的分享面板是无法第三方唤起的&#xff0c;只能点三个点。 其次在微信公众号页也不支持自定义…

redis---非关系型数据库

关系数据库与非关系型数据库 redis非关系型数据库&#xff0c;又名缓存型数据库。数据库类型&#xff1a;关系型数据库和非关系型数据库关系型数据库是一 个机构化的数据库,行和列。 列&#xff1a;声明对象。 行&#xff1a;记录对象属性。 表与表之间的的关联。 sql语句&…

Linux fork和vfork函数用法

fork和vfork是用于创建新进程的函数&#xff0c;在Linux的C语言编程中非常常见。 fork函数 fork函数是用于创建一个新的进程&#xff0c;新进程是调用进程的副本。新进程将包含调用进程的地址空间、文件描述符、栈和数据。在fork之后&#xff0c;父进程和子进程将并发执行。 …

【giszz笔记】产品设计标准流程【5】

&#xff08;续上回&#xff09; 目录 五、原型设计 1.写在前面的话 2.原型是什么 3.画原型的工具 4.产品经理的复合能力 5.关于原型图 PS&#xff1a;这个系列&#xff0c;主要讨论的是产品设计的一般标准流程。这个流程也许每天都发生在我们的身边&#xff0c;我们也常…

MatrixOne完成与麒麟信安、欧拉的兼容互认

近日&#xff0c;超融合异构云原生数据库MatrixOne企业版软件V1.0完成了与欧拉开源操作系统&#xff08;openEuler简称“欧拉”&#xff09;、麒麟信安操作系统系列产品和虚拟化平台的相互兼容认证&#xff0c;通过了欧拉兼容性测评&#xff0c;获得了《openEuler技术测评证书》…

Pycharm run 输出界面控制一行能够输出的元素个数

Pycharm run 输出界面控制一行能够输出的元素个数 今天遇到了一个问题&#xff0c;当我们在 Pycharm 中打印输出数组时&#xff0c;如果数组一行的元素个数过多&#xff0c;那么我们在打印时就会出现以下问题。 代码如下&#xff1a; import numpy as npx np.array([[0., 0.7…

webstorm配置console.log打印

一、设置面板 打开设置面板(windows 快捷键&#xff1a; ctrl alt s) &#xff0c;找到 编辑器 -> 实时模板 -> JavaScript -> log&#xff0c;点击log会出现对应的配置 二、模板文本 将下面这些模板文本粘贴进去 console.info("&#x1f680; ~ file:$file…

Gensim库——文本处理和主题建模的强大工具

在信息时代&#xff0c;海量的文本数据不断地涌现。如何从这如山如海的文本中提取有意义的信息&#xff0c;成为了一项关键任务。Python语言提供了许多优秀的库和工具来处理文本数据&#xff0c;其中一款备受推崇的工具就是Gensim库。Gensim是一个开源的Python库&#xff0c;它…

洗衣行业在线预约小程序源码系统 附带完整的搭建教程

目前&#xff0c;人们对生活品质的追求不断提高&#xff0c;但生活节奏却也不断加快。对品质的追求遇到了忙碌的生活节奏&#xff0c;人们更渴望以最简单、便捷的方式达到追求品质的目的。同时&#xff0c;由于线上支付的普及&#xff0c;大家更希望足不出户就可以解决自己生活…

“三面一体”的业务调度方案在运营商订单运营的实践

在当前信息化时代&#xff0c;运营商的业务流程复杂度和多样性持续增长&#xff0c;多个系统、部门以及相关事务需要进行高效准确的调度。如何在这样的背景下&#xff0c;保证业务流程的顺畅&#xff0c;业务信息的实时传递以及业务决策的准确性&#xff0c;是业务运营面临的重…