verilog任务和函数.ppt
《verilog任务和函数.ppt》由会员分享,可在线阅读,更多相关《verilog任务和函数.ppt(27页珍藏版)》请在三一办公上搜索。
1、任务和函数,Verilog的任务及函数区别和联系,区别任务(task)通常用于调试,或对硬件进行行为描述可以包含时序控制(#延迟,,wait)可以有 input,output,和inout参数可以调用其他任务或函数,函数(function)通常用于计算,或描述组合逻辑不能包含任何延迟;函数仿真时间为0只含有input参数并由函数名返回一个结果可以调用其他函数,但不能调用任务,共同点任务和函数必须在module内调用在任务和函数中不能声明wire所有输入/输出都是局部寄存器任务/函数执行完成后才返回结果。例如,若任务/函数中有forever语句,则永远不会返回结果,Verilog task任务(
2、task)”类似于其它编程语言中的“过程”。任务的使用包括任务定义和任务调用。任务既可表示组合逻辑又可表达时序逻辑,定义的形式如下task;begin.endendtask任务可以没有或有一个或多个参数。值通过参数传入和传出任务。除输入参数外(参数从任务中接收值),任务还能带有输出参数(从任务中返回值)和输入输出参数。任务的定义在模块说明部分中编写。,“局部变量说明”用来对任务内用到的局部变量进行宽度和类型说明,这个说明语句的语法与进行模块定义时的相应说明语句语法是一致的。由“begin”和“end”关键词界定的一组行为语句指明了任务被调用时需要进行的操作。在任务被调用时,这些行为语句将按串行
3、方式得到执行。任务定义与“过程块”、“连续赋值语句”及“函数定义”这三种成份以并列方式存在于行为描述模块中,它们在层次级别上是相同的。任务定义结构不能出现在任何一个过程块的内部。,任务的定义。task read_mem;/任务定义结构的开头,指定任务名为“read_mem”input 15:0 address;/输入端口说明output 31:0 data;/输出端口说明reg 3:0 counter;/局部变量说明reg7:0 temp 1:4;/局部变量说明begin/语句块,指明任务被调用时需要进行的操作for(counter=1;counter=4;counter=counter+1)
4、tempcounter=memaddress+counter-1;data=temp1,temp2,temp3,temp4;endendtask/任务定义结构的结尾,上例定义了一个名为“read_mem”的任务,该任务有一个16位的输入端口“address”、一个32位的输出端口“data”、一个4位的局部变量“counter”和一个8位的存储器“temp”。当上例所定义的任务被调用时,begin和end中间的语句得到执行,它们用来执行对存储器“mem”进行的四次读操作,将其结果合并后输出到端口“data”。在定义任务时必须注意如下几点:(1)在第一行“task”语句中不能列出端口名列表。(2
5、)在任务定义结构中的“行为语句”部分可以有延时语句、敏感事件控制语句等时间控制语句出现。(3)一个任务可以没有输入、输出和双向端口,也可以有一个或多个输入、输出和双向端口。(4)一个任务可以没有返回值,也可以通过输出端口或双向端口返回一个或多个返回值。(5)在一个任务中可以调用其它的任务或函数,也可以调用该任务本身。(6)在任务定义结构内不允许出现过程块(initial 或always过程块)。(7)在任务定义结构内可以出现“disable中止语句”,这条语句的执行将中断正在执行的任务。当任务被中断后,程序流程将返回到调用任务的地方继续向下执行。,任务的调用任务的调用是通过“任务调用语句”来实
6、现的。任务调用语句的语法如下:(端口1,端口2,端口n);其中,“(端口1,端口2,端口n)”组成了一个端口名列表。在调用任务时必须注意:(1)任务调用语句只能出现在过程块内。(2)任务调用语句就像一条普通的行为语句那样得到处理。(3)当被调用的任务具有输入或输出端口时,任务调用语句必须包含端口名列表,这个列表内各个端口名出现的顺序和类型必须与任务定义结构中端口说明部分的端口顺序和类型相一致,注意只有寄存器类的变量才能与任务的输出端口相对应。,对任务进行调用module demo_task_invo;reg7:0 mem 128:0;reg15:0 a;reg31:0 b;initialbeg
7、ina=0;read_mem(a,b);/第一次调用#10;a=64;read_mem(a,b);/第二次调用end endmodule,在上面的模块中,任务“read_mem”得到了两次调用,由于这个任务在定义时说明了输入端口和输出端口,所以任务调用语句内必须包含端口名列表“(a,b)”,其中变量a与任务的输入端口“address”相对应,变量b与任务的输出端口“data”相对应,并且这两个变量在宽度上也是与对应的端口相一致的。这样,在任务被调用执行时,变量a的值通过输入端口传给了address;在任务调用完成后,输出信号data又通过对应的端口传给了变量b。,交通灯控制模块module t
8、raffic_lights;reg clock,red,amber,green;parameter on=1,off=0,red_tics=350,amber_tics=30,green_tics=200;/交通灯初始化 initialred=off;initialamber=off;initialgreen=off;/交通灯控制时序always begin red=on;/开红灯 light(red,red_tics);/调用等待任务 green=on;/开绿灯 light(green,green_tics);/等待 amber=on;/开黄灯 light(amber,amber_tics)
9、;/等待end,交通灯开启时间的任务task light;output color;input31:0 tics;begin repeat(tics)(posedge clock);/等待tics个时钟的上升沿 color=off;/关灯 end endtask/产生时钟脉冲的always块always begin#100 clock=0;#100 clock=1;endendmodule,task总结1.任务的定义与引用都在一个module模块内部2.任务的定义与module的定义有些类似,同样 需要进行端口说明与数据类型说明。另外,任 务定义的内部没有过程块,但在块语句中可以 包含定时控制
10、部分。3.当任务被引用时,任务被激活。4.一个任务可以调用别的任务或函数。,Verilog function 函数(function)类似于其它编程语言中的函数概念。与任务一样,Verilog HDL语言中的函数使用包括了函数的定义和函数的调用。1.函数的定义函数定义的语法如下:function;beginendendfunction,返回值类型可以有三种形式:(1)“msb:lsb”:这种形式说明函数名所代表的返回数据变量是一个多位的寄存器变量,它的位数由msb:lsb指定,比如如下函数定义语句:function 7:0 adder;就定义了一个函数“adder”,它的函数名“adder”还
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- verilog 任务 函数

链接地址:https://www.31ppt.com/p-5452057.html