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编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

Idea调用WebService的关键步骤和注意事项

《Idea调用WebService的关键步骤和注意事项》:本文主要介绍如何在Idea中调用WebService,包括理解WebService的基本概念、获取WSDL文件、阅读和理解WSDL文件、选... 目录前言一、理解WebService的基本概念二、获取WSDL文件三、阅读和理解WSDL文件四、选择对接

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

使用PyQt5编写一个简单的取色器

《使用PyQt5编写一个简单的取色器》:本文主要介绍PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16进制颜色编码,一款跟随鼠标刷新图像的RGB和16... 目录取色器1取色器2PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit