数字IC必修之Verilog知识点——Task和Function,System Task(系统函数), System Function, Verilog-2001

  1. task和function
    task 和 function 的声明在module内部,且不需要先于调用之前。
    task:只能在procedural 内部调用,task的调用方式是statement本身,而不是表达式。
    function:可以在module的任何地方调用,是作为一种operands来使用。

  2. task

在这里插入图片描述

task
(1)可以有0个或者多个任何类型的输入输出端口。
(2)任务中可以有延时语句、敏感事件控制语句等事件控制语句。(repeat(5) @posedge(clk) 等待5个上升沿时钟)
(3)任务可以没有返回值,也可以通过输出端口或者双端输出端口有1个或多个返回值。
(4)任务可以调用任务和函数也能调用任务本身。
(5)任务中不能出现always和initial块。
(6)任务中允许出现disable中断任务,程序会回到引用任务的地方继续下去。

使用时的典型例子: read_reg(input [31:0] add, output [31:0] data);
往memory中写数据的方式

  1. function在这里插入图片描述
    function有比较多的约束条件:
    (1)函数能调用函数但是不能调用任务。
    (2)函数只能返回一个值,不能有任意类型的output和inout类型端口。
    (3)不能使用任何延时,即任何用#、@、或wait来标识的语句。
    (4)至少有一个输入变量,可以有多个输出变量。
    (5)函数一定不能包含任何延迟、事件或者时序控制声明语句。
    function声明返回值时,如果不定义返回值类型或范围则默认是1位寄存器。
    function和task内部的局部变量是放在寄存器中是静态变量,即多次调用不改变的。

至于task和funciton能不能综合的问题

在这里插入图片描述

  1. System Task

常用的几种:
$display,$write,$strobe
$monitor
$readmemh and $readmemb
$stop
$finish

在这里插入图片描述

  1. System Function
    $time ($stime)
    $random
    $bitstoreal
    $display ($time, “now the value of x is %h”, x)

Conversion Function
在这里插入图片描述

  1. XMR
    Cross-module references, or hierarchical references
    在这里插入图片描述

  2. verilog 2001 的new feature
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    二维数组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
原来可能是一个32位数来存,现在可以指定位宽减少容量

在这里插入图片描述

例化的时候能知道具体的信息

localparam 不能被defparam 和 in_line parameter redefinition 修改

  1. Generate 可以综合
    用于循环产生例化、模块等等

    在这里插入图片描述
    在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值