Verilog零基础入门(边看边练与测试仿真)-时序逻辑-笔记(4-6讲)

news2024/11/26 9:48:57

文章目录

  • 第四讲
  • 第五讲
  • 第六讲

第四讲

1、计数器
在这里插入图片描述
代码:

//计数器
`timescale 1ns/10ps
module counter(
								clk,
								res,
								y
								);
input           clk;
input           res;
output[7:0]     y;

reg[7:0]        y;
wire[7:0]        sum;//+1运算的结果(1)
assign           sum=y+1;//组合逻辑部分(2)

always@(posedge clk or negedge res)
if(~res) begin
	y<=0;
end
else begin
	y<=sum;             //可省略上面(1)(2)语句,y<=y+1;
end
endmodule


//--------testbench of counter------
module counter_tb;
reg             clk,res;
wire[7:0]       y;

counter counter(
								.clk(clk),
								.res(res),
								.y(y)
								);
								
initial begin
								clk<=0;res<=0;
				#17     res<=1;
			  #6000   $stop;
end

always #5 clk<=~clk;

endmodule

仿真结果:
在这里插入图片描述
2、4级伪随机码发生器
在这里插入图片描述
在这里插入图片描述

代码:

//四级伪随机码发生器
`timescale 1ns/10ps
module m_gen(
											clk,
											res,
											y
											);
input                 clk;
input                 res;
output                y;

reg[3:0]              d;
assign                y=d[0];

always@(posedge clk or negedge res)
if(~res)begin
	d<=4'b1111;
end
else begin
	d[2:0]<=d[3:1];      //右移一位
	d[3]<=d[3]+d[0];     //模二加
end

endmodule

//-------testbench of m_gen-------
module m_gen_tb;
reg                    clk,res;
wire                   y;
m_gen m_gen(
											.clk(clk),
											.res(res),
											.y(y)
											);
											
initial begin
						clk=0;res=0;
		#17     res=1;
		#600   $stop;
end
always #5 clk=~clk;

endmodule

仿真波形图:
在这里插入图片描述
在这里插入图片描述
小结:
在这里插入图片描述

第五讲

1、秒计数器(s_counter, 0-9秒循环计数)

在这里插入图片描述
代码:

//2023-09-07,time
//秒计数器,0-9循环;
`timescale 1ns/10ps
module s_counter(
										clk,
										res,
										s_num
										);
input               clk;
input               res;
output[3:0]         s_num;

parameter           frequency_clk=24;//24MHz

reg[24:0]             con_t;     //秒脉冲分频计数器;
reg                  s_pulse;   //秒脉冲尖;
reg[3:0]       			 s_num;
always@(posedge clk or negedge res)
if(~res)begin
	 con_t<=0;s_pulse<=0;s_num<=0;
	
end
else begin
	//if( con_t==frequency_clk*1000000-1)begin
	if( con_t==frequency_clk*1000-1)begin//为了仿真方便观察,数值改小了
		 con_t<=0;
	end
	else begin
	   con_t<= con_t+1;
	end
	
	if( con_t==0)begin
		s_pulse<=1;
	end
	else begin
		s_pulse<=0;
	end
	if(s_pulse)begin
		if(s_num==9)begin
			s_num<=0;
		end
		else begin
		  s_num<=s_num+1;
	  end
	end
end
endmodule

//-------testbench of s_counter------
module s_counter_tb;
reg           clk,res;
wire[3:0]     s_num;
s_counter s_counter(
										.clk(clk),
										.res(res),
										.s_num(s_num)
										);
										
initial begin
	            clk<=0;res<=0;
	      #17   res<=1;
	      #300000 $stop;
end

always#5 clk=~clk;

endmodule

仿真图:
在这里插入图片描述2、秒计数器加数码管显示

在这里插入图片描述
3、0-59秒显示
在这里插入图片描述
小结:
在这里插入图片描述

第六讲

1、相邻点累加
在这里插入图片描述
构想:
在这里插入图片描述
代码:

//2023-09-11,time
//相邻16点相加;
`timescale 1ns/10ps
module sigma_16p(
												clk,
												res,
												data_in,
												syn_in,
												data_out,
												syn_out
											 	);
input                   clk;
input        						res;
input[7:0]              data_in;//采样信号
input                   syn_in;//采样时钟
output[11:0]            data_out;//累加结果输出
output                  syn_out;//累加结果同步脉冲

reg                     syn_in_n1;//syn_in的反向延时;
wire                    syn_pulse;//采样时钟上升沿识别脉冲;
assign									syn_pulse=syn_in&syn_in_n1;
reg[3:0]                con_syn;//采样时钟循环计数器

wire[7:0]               comp_8;//补码
wire[11:0]              d_12;//升位结果
assign                  comp_8=data_in[7]?{data_in[7],~data_in[6:0]+1}:data_in;//补码运算;
assign                  d_12={comp_8[7],comp_8[7],comp_8[7],comp_8[7],comp_8};
reg[11:0]               sigma;//累加计算;
reg[11:0]								data_out;
reg                     syn_out;

always@(posedge clk or negedge res)
if(~res)begin
	syn_in_n1<=0;con_syn<=0;sigma<=0;data_out<=0;
	syn_out<=0;
end
else begin
	syn_in_n1<=~syn_in;
	if(syn_pulse)begin
		con_syn<=con_syn+1;
	end
	
	if(syn_pulse)begin
		if(con_syn==15)begin
			sigma<=d_12;
			data_out<=sigma;
			syn_out<=1;
		end
		else begin
			sigma<=sigma+d_12;
	  end
	 end
	 else begin
			syn_out<=0;
	 end
end

endmodule

//---------testbench of sigma_16p_tb-------
module sigma_16p_tb;
reg                     clk,res;
reg[7:0]                data_in;
reg                     syn_in;
wire[11:0]              data_out;
wire                    syn_out;
sigma_16p sigma_16p(
												.clk(clk),
												.res(res),
												.data_in(data_in),
												.syn_in(syn_in),
												.data_out(data_out),
												.syn_out(syn_out)
											 	);

initial begin
	                   clk<=0;res<=0;data_in=1;syn_in<=0;
	           #17     res<=1;
	           #25000  $stop;
end

always #5 clk<=~clk;

always #100 syn_in<=~syn_in;

endmodule

仿真结果:
data_in=1:
在这里插入图片描述
data_in=8’b1000_0001 //data_in=-1在这里插入图片描述

小结:
在这里插入图片描述

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

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

相关文章

平安大视野解读宏观经济:看好中国经济长期潜力,资产配置价值凸显

“资产配置多元化是投资中唯一的免费午餐。” 1990年&#xff0c;哈里马科维茨因为他提出的“资产组合选择理论”获得了诺贝尔经济学奖。 如何看待当前国内外宏观经济&#xff0c;如何通过资产配置提升家庭财富健康度&#xff1f;9月4日&#xff0c;平安银行联合《21世纪经济报…

Revit SDK 介绍:CurtainWallGrid 幕墙网格

前言 这个例子介绍如何创建幕墙&#xff0c;以及如何通过 API 编辑幕墙。 内容 运行效果&#xff1a; 创建幕墙 幕墙在 Revit 体系里面属于墙的一种&#xff0c;因此&#xff0c;它对应的 API 类型仍然为 Wall&#xff0c;只是类型有差异。 // WallGeometry::CreateCurt…

机器学习笔记 - 从数学表示的角度看待监督学习

一、概述 监督学习的目标是根据数据进行预测。比如电子邮件垃圾邮件过滤,需要将电子邮件(数据实例)分类为垃圾邮件或非垃圾邮件。 按照传统计算机科学的方法,需要编写一个精心设计的程序,遵循一些规则来确定电子邮件是否是垃圾邮件。尽管这样的程序可能在一段时间内运行得…

Apache解析漏洞实验

实验目的 了解Apache解析漏洞原理掌握Apache漏洞的利用方法 实验工具 火狐&#xff1a;Mozilla Firefox&#xff0c;中文俗称“火狐”&#xff08;正式缩写为Fx或fx&#xff0c;非正式缩写为FF&#xff09;&#xff0c;是一个自由及开放源代码网页浏览器&#xff0c;使用Gec…

RPC项目解析(1)

分布式通信框架&#xff1a;让远程方法调用和调用进程内方法一样简单 RPC通信原理 rpc&#xff1a;远程过程调用&#xff08;远程能够调用其他模块的方法&#xff09; 在rpc中需要发送时候&#xff0c;对发送的信息进行序列化&#xff0c;在服务端对接收到的信息进行反序列化…

【C++11新特性】function包装器

文章目录 1. function包装器1.1 function包装器介绍1.2 function包装器对类型的统一1.3 function包装器的意义 1. function包装器 1.1 function包装器介绍 function包装器是一种函数包装器&#xff0c;也叫做适配器。它可以对可调用对象进行包装&#xff0c;C中的function本质…

C++【C++学习笔记_Wang】

时间进度C是什么&#xff1f;多态什么是多态&#xff1f;生活中的多态C中的多态 赋值兼容赋值兼容规则实现安全转换 时间进度 Day101 ok Day804 ok Day805 ok C是什么&#xff1f; C大部分包含C语言。 C完全兼容C语言。 C在C语言的基础上添加&#xff1a;封装、继承、多态…

【SpringMVC】JSR 303与interceptor拦截器快速入门

目录 一、JSR303 1、什么是JSR 303&#xff1f; 2、为什么要使用JSR 303&#xff1f; 3、JSR 303常用注解 3.1、常用的JSR 303注解 3.2、Validated与Valid区别 3.2.1、Validated 3.2.2、Valid 3.2.3、区别 4、使用案例 4.1、导入依赖 4.2、配置校验规则 4.3、编写…

vue基础知识九:动态给vue的data添加一个新的属性时会发生什么?怎样解决?

一、直接添加属性的问题 我们从一个例子开始 定义一个p标签&#xff0c;通过v-for指令进行遍历 然后给botton标签绑定点击事件&#xff0c;我们预期点击按钮时&#xff0c;数据新增一个属性&#xff0c;界面也 新增一行 <p v-for"(value,key) in item" :key&q…

QQ 逻辑漏洞可执行文件 漏洞复现

本文由掌控安全学院- wax 投稿 首先拿到QQ的版本&#xff0c;目前可测试版本包括QQ最新版本&#xff0c;TIM最新版本 新创建一个bat文件&#xff08;这个可以随意&#xff0c;上马的也可以&#xff0c;exe也可以&#xff09; &#xff0c;本次测试内容如下首先向你的手机端发一…

一文告诉你什么是 TCP 数据粘包,该如何解决!

粘包问题概述 描述背景 采用TCP协议进行网络数据传送的软件设计中&#xff0c;普遍存在粘包问题。这主要是由于现代操作系统的网络传输机制所产生的。 我们知道&#xff0c;网络通信采用的套接字(socket)技术&#xff0c;其实现实际是由系统内核提供一片连续缓存&#xff08…

如何实现高效客户服务自助?

随着科技的不断发展&#xff0c;越来越多的企业开始意识到提供良好的客户服务对于企业的重要性。而在满足客户需求的同时&#xff0c;高效实现客户服务自助也成为了许多企业关注的焦点。客户服务自助可以帮助企业降低成本、提高效率&#xff0c;同时也能给客户带来更好的体验。…

[每周一更]-(第60期):15种MySQL索引失效场景

背景 工作中都会踩到Mysql数据库不走索引的坑。常见的现象就是&#xff1a;明明在字段上添加了索引&#xff0c;但却并未生效。 另外&#xff0c;无论是面试或是日常&#xff0c;Mysql索引失效的通常情况都应该了解和学习。 为了方便学习和记忆&#xff0c;这篇文件将常见的15种…

人大女王金融硕士项目——当你觉得迷茫的时候,就去学习来充实自己

不要总以为自己的努力会付之东流&#xff0c;不要因为现在的生活或工作还是依旧没有起色&#xff0c;而想太多。继续努力就好&#xff0c;哪怕明天没有惊喜&#xff0c;但最终的你&#xff0c;却在慢慢的变好。对于从业多年的在职人员来说&#xff0c;职业瓶颈期是非常普遍的。…

JDK多版本切换

为什么切换 因为可能不同项目要求JDK的版本不同&#xff0c;比如你上次装的jdk1.8&#xff0c;现在的项目要求JDK9&#xff0c;这时候卸载8再换9有点费劲&#xff0c;而且操作不当可能遇到非常离奇的bug&#xff0c;影响开发进度。如果我们能灵活切换各种jdk版本&#xff0c;将…

揭秘策划行业就业前景怎么样?

策划这个行业总的来说就是&#xff1a;门槛低&#xff0c;上限高&#xff01;&#xff01; 咱们一般说的策划也分很多类型&#xff0c;这里选取身边朋友做的最多的4种类型简单说说。 1、前端品牌策划&#xff0c;转型容易出路广 品牌策划以品牌思维为核心去分析公司的经营发…

蓝桥杯官网练习题(五星填数)

类似题目&#xff1a;https://blog.csdn.net/s44Sc21/article/details/132758982?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132758982%22%2C%22source%22%3A%22s44Sc21%22%7Dhttps://blog.csdn.net/s44Sc21/article/detail…

【python】代码学习过程问题总结

目录 1. 使用 conda 创建并进入虚拟环境 2. pycharm 选择 interpreter 的时候&#xff0c;在虚拟环境中找不到 python.exe 3.&#xff08;py & python&#xff09;ModuleNotFoundError: No module named XXX 4. AttributeError: module ‘tensorflow‘ has no attribu…

【2023最新B站评论爬虫】用python爬取上千条哔哩哔哩评论

文章目录 一、爬取目标二、展示爬取结果三、爬虫代码四、同步视频五、附完整源码 您好&#xff0c;我是 马哥python说&#xff0c;一枚10年程序猿。 一、爬取目标 之前&#xff0c;我分享过一些B站的爬虫&#xff1a; 【Python爬虫案例】用Python爬取李子柒B站视频数据 【Pyt…

使用TortoiseGit拉取GitLab代码仓库中某一项目的某一分支的代码

使用TortoiseGit拉取GitLab代码仓库中某一项目的某一分支的代码 写在前面&#xff0c;需要补充一点&#xff1a;方式一&#xff1a;使用TortoiseGit图像界面工具&#xff0c;进行直接操作方式二&#xff1a;使用git命令进行操作 写在前面&#xff0c;需要补充一点&#xff1a; …