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

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

参考文献:
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)		begin
	if(!i_rst)	begin
		out			<= 2'd0;
		cnt			<= 2'd0;
		end
	else	begin		//	adder.
		out			<= a + b;
		cnt			<= cnt + 1'd1;
		end

end

//	output results.
always@(cnt)		begin
	if(cnt == 2'd3)
		rest(cnt, d);
	else 
		stop_work(cnt, d);
end

task	rest;
input	[1:0] cnt1;		//	 task 从 mod 模块 中 输入.
output	[7:0]	d1;			
		d1	= 8'd100;
endtask

task	stop_work;
input	cnt2;
output	[7:0]	d2;
	d2	= 8'b0;
endtask

endmodule

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;
end

initial		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;
//	end

end

mod_use_task	u1_mod_use_task(
.i_clk			(i_clk			),
.i_rst			(i_rst			),
.a				(a				),
.b				(b				),

.out			(out			)
);

endmodule

2.3,sim仿真输出

在这里插入图片描述

相关推荐

  1. Task03:模型架构篇&新模型架构篇

    2024-02-08 15:22:02       22 阅读
  2. Flutter编译Running Gradle task ‘assembleDebug

    2024-02-08 15:22:02       20 阅读
  3. Linux内核--进程管理(七)进程核心—task_truct

    2024-02-08 15:22:02       30 阅读
  4. C#中Task:异步编程瑞士军刀

    2024-02-08 15:22:02       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-08 15:22:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-08 15:22:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-08 15:22:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-08 15:22:02       18 阅读

热门阅读

  1. 前端bug手册

    2024-02-08 15:22:02       32 阅读
  2. react中的diff算法

    2024-02-08 15:22:02       32 阅读
  3. 线程和进程的区别及基础线程创建

    2024-02-08 15:22:02       32 阅读
  4. pandas dataframe写入excel的多个sheet页面

    2024-02-08 15:22:02       34 阅读
  5. Debian系统中挂载一个数据盘

    2024-02-08 15:22:02       32 阅读
  6. 有道论文翻译接口,python版和lua版

    2024-02-08 15:22:02       37 阅读
  7. [Android] Client->NuPlayer

    2024-02-08 15:22:02       31 阅读
  8. work day7

    2024-02-08 15:22:02       31 阅读
  9. 【mybatis自动治愈插件】

    2024-02-08 15:22:02       31 阅读
  10. LeetCode 二叉树/n叉树的解题思路

    2024-02-08 15:22:02       37 阅读
  11. Mockito测试框架中的方法详解

    2024-02-08 15:22:02       32 阅读
  12. C语言中大小写字母转换详解

    2024-02-08 15:22:02       34 阅读
  13. 【六】CocosCreator-CCObject.js源码分析

    2024-02-08 15:22:02       30 阅读
  14. 最全软件系统架构演变!

    2024-02-08 15:22:02       35 阅读