【systemverilog】对小数的处理

在sv/verilog中,我们常用的是整数(int, longint),小数可以用(real),对小数的处理大致分为三种:

1. 四舍五入

2. 向上取整

3. 向下取整

这三种如何实现呢?

1.四舍五入

       如果除数和被除数均为整数,可以通过乘以1.0来实现

         i.e.  164*8*1.0/28 =47

2. 向上取整

    通过系统函数$ceil即可实现

     $ceil(164*8/28) = 47

3. 向下取整

    通过系统函数$floor实现

    $floor(164*8/28) = 46

    164*8/28 = 46(默认条件下,即向下取整)

 

特別說明:

  • $ceil和$floor只參數接受int 和real類型,不接受bit類型或int unsigned;
  • 對於int 類型,它代表有符號整數,其取值範圍是-32'h7fffffff ~ 32'h7ffffffe,不是0~ffffffff;
data type desrciption
bit 雙狀態,單比特
int unsigned 雙狀態,32比特無符號整數
int 雙狀態,32比特有符號整數
byte 雙狀態,8比特有符號整數
shortint 雙狀態,16比特有符號整數
longint 雙狀態,64比特有符號整數
integer 四狀態,32比特有符號整數
time 四狀態,64比特無符號整數
real 雙狀態,雙精度浮點數
byte unsigned 雙狀態,8比特無符號整數

 

你可能感兴趣的:(SV)