Verilog Function函数语法说明

1.function的写法如下:

function <返回值的类型或范围>(函数名)或<端口说明语句>;
    <端口说明语句>  // input XXX(如果上面已定义可忽略)
    <变量类型说明语句>  // reg YYY
    ......
begin
    <语句>
    ......
    函数名 = ZZZ;   // 函数名就相当于输出变量;
end
endfunction
————————————————

其中:
1)<返回值的类型或范围>:可以不定义,如果不定义则表示一位寄存器类型的数据;
2)函数名:该函数名即是该函数的返回值,是语句内部的一个与函数名同名的寄存器;
3)端口说明语句:定义函数时至少需要一个输入参量;
例如:

function[63:0] alu (input[63:0] a, b, input [7:0] opcode);
//alu是函数名,该函数返回的是64bit的寄存器类型变量,输入时a和opcode

4)函数名==zzz;在函数的定义中必须有一条赋值语句给函数名具备相同名字的变量赋值;

2.function函数使用规则:
1)函数的调用:
通过将函数作为表达式的操作数来实现,例如:

assign word=control ? {getbyte(msbyte),getbyte(lsbyte)} : 0;

2)函数的定义不能包含任何的时间控制语句,即任何用#,@或wait来标识的语句;
3)函数不能启动任务,定义函数至少一个输入参量;
4)函数的定义中必须有一条赋值语句给函数中的一个内部变量赋以函数的值,该内部变量具有和函数名一样的名字。

3.function本身表述的时组合电路,但可以赋值给某个触发器。

4.function函数电路的复杂程度,需要考虑单周期内的电路延迟嘛?
(该问题是转其人文章)
https://blog.csdn.net/sinat_31206523/article/details/106505878

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值