首页 > 其他 > 详细

function与计算有符号数绝对值

时间:2020-05-13 13:50:10      阅读:54      评论:0      收藏:0      [点我收藏+]

先放代码:


wire [width-1:0]din;
wire [width-1:0]dout;

function
[width-1:0]DWF_absval; input [width-1:0]A; begin DWF_absval = ((^(A^A)) != 1b0) ? {width{1bx}} : ( A[width-1]==0) ? A : (-A) ); end endfunction
assign dout = DWF_absval(din); %调用函数

这里涉及两个语法点

1)function标准写法:

function <返回值位宽>函数名;
    <端口说明语句>
    <变量类型说明语句>
begin 
    语句 
    ……
    函数名 = zzzz ;
end
endfunction

【注】0.函数在调用时:函数名(端口名);

           1.函数定义中不能出现任何时间控制语句:#、@、wait

           2.函数不能启动任务task

           3.如果function是要综合的,那么必须所有分支按照组合逻辑写,且都要赋值

2)缩减运算符

    out = ^din  :  是将din按位异或,缩减成一位的结果;

((^(A^A)) != 1b0) ? {width{1bx}} :意思是 判断A是否存在不定态或高阻态,若A中某1bit出现了,则(A^A)不等于0,则缩减输出为4‘bxxxx; 

 

function与计算有符号数绝对值

原文:https://www.cnblogs.com/gmh1996/p/12880945.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!