返回介绍

10.3.1 返回值与void函数

发布于 2020-09-09 22:55:48 字数 791 浏览 1104 评论 0 收藏 0

在Verilog中,函数必须具有返回值。返回值是通过为函数的名字赋值来完成的。

function [15:0] myfunc1 (input [7:0] x,y);
    myfunc1 = x * y - 1; // 返回值赋值给函数名字
endfunction

SystemVerilog允许将函数声明成void类型,它没有一个返回值。对于非void函数,像verilog一样,可以通过为函数名字赋值来返回一个值,或者使用带有一个值的return语句实现。return语句应该过载赋给函数名字的任何值。当使用return语句的时候,非void函数必须使用return指定一个表达式。

function [15:0] myfunc2 (input [7:0] x,y);
    return x * y - 1;    // 使用return语句指定返回值
endfunction

在SystemVerilog中,函数可以返回一个结构体或联合体。在这种情况下,函数内部可以使用一个层次化的名字,以层次化名字起始的函数名字被解释成返回值的一个成员。如果函数名字在函数外使用,这个名字指示整个函数的作用范围。如果函数名字使用在一个层次化的名字当中,它也指示整个函数的作用范围。

void类型的函数作为语句调用,除此之外的函数作为表达式调用:

a = b + myfunc1(c, d);  // 将myfunc1(在上面定义)作为一个表达式调用

myprint(a);             // 将myprint(在下面定义)作为一条语句调用

function void myprint (int a);
    ...
endfunction

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文