task2:Verilog编写的设计模块在模块内部直接调用task

2024-02-04 18:12

本文主要是介绍task2:Verilog编写的设计模块在模块内部直接调用task,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Verilog编写的设计模块在模块内部直接调用task

  • 1,概念
  • 2,模块设计
    • 2.1,RTL设计
    • 2.2,tb测试代码
    • 2.3,sim仿真输出

参考文献:
1,练习七-在Verilog中使用任务task

1,概念

在模块设计中,直接在内部模块使用调用task任务,然后通过task任务中的变量(包括:输入和输出)来调用task任务的工作。

2,模块设计

2.1,RTL设计

//
//	针对一个 task 来写一个模块调用
module	mod_use_task(	//	加法器
input				i_rst,
input				i_clk,
input	[1:0]		a,
input	[1:0]		b,output	reg [2:0]		out
);reg	[1:0]			cnt;
reg	[7:0]			d;always@(posedge i_clk or negedge i_rst)		beginif(!i_rst)	beginout			<= 2'd0;cnt			<= 2'd0;endelse	begin		//	adder.out			<= a + b;cnt			<= cnt + 1'd1;endend//	output results.
always@(cnt)		beginif(cnt == 2'd3)rest(cnt, d);else stop_work(cnt, d);
endtask	rest;
input	[1:0] cnt1;		//	 task 从 mod 模块 中 输入.
output	[7:0]	d1;			d1	= 8'd100;
endtasktask	stop_work;
input	cnt2;
output	[7:0]	d2;d2	= 8'b0;
endtaskendmodule

2.2,tb测试代码

//		测试信号
module	tb_mod_use_task;
reg				i_rst;
reg				i_clk;
reg		[1:0]	a;
reg		[1:0]	b;wire	[2:0]	out;always #10	i_clk = ~i_clk;		//	T = 20.initial		begin
i_clk	= 1'b1;
i_rst	= 1'b0;#40;
i_rst	= 1'b1;
endinitial		begin
a		= 2'd0;
b		= 2'd0;#20
a 		= 2'd1;
b		= 2'd2;#10
a		= 2'd2;
b		= 2'd3;#40
a		= 2'd3;
b		= 2'd3;//	repeat(10)	begin
//	a 		= {$random}%2;
//	b		= {$random}%2;
//	endendmod_use_task	u1_mod_use_task(
.i_clk			(i_clk			),
.i_rst			(i_rst			),
.a				(a				),
.b				(b				),.out			(out			)
);endmodule

2.3,sim仿真输出

在这里插入图片描述

这篇关于task2:Verilog编写的设计模块在模块内部直接调用task的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/678383

相关文章

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Java调用Python脚本实现HelloWorld的示例详解

《Java调用Python脚本实现HelloWorld的示例详解》作为程序员,我们经常会遇到需要在Java项目中调用Python脚本的场景,下面我们来看看如何从基础到进阶,一步步实现Java与Pyth... 目录一、环境准备二、基础调用:使用 Runtime.exec()2.1 实现步骤2.2 代码解析三、

Nginx添加内置模块过程

《Nginx添加内置模块过程》文章指导如何检查并添加Nginx的with-http_gzip_static模块:确认该模块未默认安装后,需下载同版本源码重新编译,备份替换原有二进制文件,最后重启服务验... 目录1、查看Nginx已编辑的模块2、Nginx官网查看内置模块3、停止Nginx服务4、Nginx

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

Python如何调用另一个类的方法和属性

《Python如何调用另一个类的方法和属性》在Python面向对象编程中,类与类之间的交互是非常常见的场景,本文将详细介绍在Python中一个类如何调用另一个类的方法和属性,大家可以根据需要进行选择... 目录一、前言二、基本调用方式通过实例化调用通过类继承调用三、高级调用方式通过组合方式调用通过类方法/静

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

python urllib模块使用操作方法

《pythonurllib模块使用操作方法》Python提供了多个库用于处理URL,常用的有urllib、requests和urlparse(Python3中为urllib.parse),下面是这些... 目录URL 处理库urllib 模块requests 库urlparse 和 urljoin编码和解码

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录