task说明语句
如果传给任务的变量和任务完成后接受任务的变量已定义,就可以用一条语句启动任务,任务完成以后控制传回启动的过程。
1.1任务的定义
定义任务的语法如下:

task<任务名><端口及数据类型声明语句><语句1><语句2>...<语句3>
endtask

1.2任务的调用及变量的传递
任务调用:

<任务名>(端口名1,端口名1,...端口名n);

1.3例子
用两种不同的方法设计一个功能相同的模块,完成一个四个8位2进制输入数据冒泡排序。一种方法是组合逻辑实现,另一种是时钟触发任务实现,每个时钟周期完成一次数据交换。
第一种方法:
设计代码:

module compare(a,b,c,d,ra,rb,rc,rd
);input [7:0] a,b,c,d;output reg [7:0] ra,rb,rc,rd;reg [7:0]va,vb,vc,vd;always @(*) begin{va,vb,vc,vd}={a,b,c,d};change(va,vb);change(vb,vc);change(vc,vd);change(va,vb);change(vb,vc);change(va,vb);{ra,rb,rc,rd}={va,vb,vc,vd};endtask change;inout [7:0]x,y;reg [7:0] temp;if(x>y) begintemp=y;y=x;x=temp;endendtaskendmodule

testbench:

`timescale 1ns/1ns
module compare_tb;reg clk,clk1;reg [7:0] a,b,c,d;wire[7:0]ra,rb,rc,rd;initial beginclk=0;clk1=0;a=0;b=0;c=0;d=0;endalways #20 clk=~clk;always #50 clk1=~clk1;always@(posedge clk1) begina={$random}%255;b={$random}%255;c={$random}%255;d={$random}%255;endcompare u(a,b,c,d,ra,rb,rc,rd);
endmodule

仿真波形:

第二种方法:
设计代码:

module compare_2(clk,rst,a,b,c,d,ra,rb,rc,rd
);output reg[7:0] ra,rb,rc,rd;input[7:0] a,b,c,d;input clk,rst;reg[7:0] va=0;reg[7:0]vb=0;reg[7:0]vc=0;reg[7:0]vd=0;reg[2:0]state;parameter IDLE=0 ,s0=1,s1=2,s2=3,s3=4,s4=5,s5=6,s6=7;always @ (posedge clk)beginif(!rst)beginva<=0;vb<=0;vc<=0;vd<=0;state<=IDLE;endelse begincase(state)IDLE:begin va<=a;vb<=b;vc<=c;vd<=d;state<=s0;ends0:begin change(va,vb);state<=s1 ; ends1:begin change(vb,vc);state<=s2 ;ends2:begin change(vc,vd);state<=s3;ends3:begin change(va,vb);state<=s4; ends4:begin change(vb,vc);state<=s5;ends5:begin change(va,vb);state<=s6; ends6:begin ra<=va;rb<=vb;rc<=vc;rd<=vd;state<=IDLE;enddefault: state<=IDLE;endcaseendendtask change;   inout[7:0] x,y;  reg[7:0] tmp;if(x>y)begintmp = y  ;y = x   ;x = tmp ;endendtaskendmodule

testbench:

`timescale 1ns/1ns
module compare_tb;reg clk,clk1;reg rst;reg [7:0] a,b,c,d;wire[7:0]ra,rb,rc,rd;initial beginclk=0;clk1=0;a=0;b=0;c=0;d=0;rst=1;#10 rst=0;#20 rst=1;endalways #20 clk=~clk;always #50 clk1=~clk1;always@(posedge clk1) begina={$random}%255;b={$random}%255;c={$random}%255;d={$random}%255;endcompare_2 m1(.clk(clk),.rst(rst),.a(a),.b(b),.c(c),.d(d),.ra(ra),.rb(rb),.rc(rc),.rd(rd));
endmodule

仿真波形:

Verilog HDL系统任务说明语句task相关推荐

  1. (21)Verilog HDL结构:task语句

    (21)Verilog HDL结构:task语句 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL结构:task语句 5)结语 1.2 FPGA简介 ...

  2. 【 Verilog HDL 】函数(function)与任务(task)简单介绍

    背景 关于函数和任务,是我这几天一直想写的内容,原因在于我上篇博文:Verilog HDL 使用规范(一),最后提到的问题,关于代码书写的规范中,要求:用一个函数(function)来代替表达式的多次 ...

  3. (137)FPGA面试题-Verilog HDL中function和task的区别(一)

    1.1 FPGA面试题-Verilog HDL中function和task的区别(一) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog H ...

  4. (138)FPGA面试题-Verilog HDL中function和task的区别(二)

    1.1 FPGA面试题-Verilog HDL中function和task的区别(二) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog H ...

  5. Verilog HDL中使用系统任务 $readmemh遇到问题及解决方法

    在Verilog HDL程序中有两个系统任务$readmemb和$readmemh,用来从文件中读取数据到存贮器中.这两个系统任务可以在仿真的任何时刻被执行使用,其使用格式共有以下六种: 1) $re ...

  6. Verilog HDL 基础

    Verilog HDL 基础 一.Verilog 的基本概念 1. 硬件描述语言HDL 1.1 特点: 描述电路的连接.描述电路的功能.在不同抽象级上描述电路. 描述电路的时序.表达具有并行性 1.2 ...

  7. Verilog HDL语法提纲

    转载博客 1.模块的端口定义 module 模块名(口1,口2,口3,口4, ---);   2.(数据类型及其常量.变量) 数字 整数: <位宽><进制><数字> ...

  8. 一周掌握FPGA Verilog HDL语法 day 4

    今天给大侠带来的是一周掌握FPGA Verilog HDL 语法,今天开启第四天. 一周掌握FPGA Verilog HDL语法 day 3 被平台综合了,如果想要看详细介绍的话,可以到公众号内部&q ...

  9. 爆肝4万字❤️零基础掌握Verilog HDL

    文章目录 0.前言 1.Verilog HDL简介 1.1 什么是Verilog HDL 1.2 verilog发展历史ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ 1.3 为什么要使用verilog ...

最新文章

  1. placeholder文字颜色与是否显示兼容性
  2. shell训练营Day18
  3. Recurrent Neural Network系列2--利用Python,Theano实现RNN
  4. JEECG Framework 3.3.1 beta版本发布第一天战报(文档下载量破1300、...
  5. C++中引用传递与指针传递区别(进一步整理)
  6. 数据洪流时代,开发者这样硬核突围!
  7. Linux命令(4):开挂机重启
  8. DAY3 scp,rsync,chmod,chown,setfacl
  9. 枚举学习文摘 — 框架设计(第2版) CLR Via C#
  10. L2-007 家庭房产 (25 分)
  11. java 常量池技术
  12. 如何优雅的快速下载谷歌云盘的大文件 (一)
  13. 如何写一个简单的Web Service
  14. 【每天一个 Linux 命令】ssh 命令
  15. 为什么要分库分表?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?...
  16. ModHOMM3 使用说明
  17. 修真院七种教学工具之学习日报
  18. cpu 占用过高排查
  19. 怎样提问?(上)-Leo读提问的智慧(2)
  20. AT1219 [JOI2013]歴史の研究

热门文章

  1. c语言的一颗会变色的圣诞树
  2. 10.敏捷估计与规划——Financial Prioritization笔记
  3. MATLAB上用十一行代码实现深度学习…
  4. 常见的管道命令:sort、uniq、tr、cut
  5. 【NLP】中文文本分类数据增强方法:EDA 与代码实现
  6. 电视root工具_TapTap | 无需Root,成功移植 IOS14,拿下!!!
  7. 哈佛的计算机视觉医学方向排名,搜狐科学 | 美国医学院十强排名出炉 哈佛大学再次排名榜首...
  8. VB.NET读取Excel数据在CAD上展图
  9. SASAdvance认证考试要点
  10. 英语钻石法则(六)-----学习地道、实用的材料