【systemverilog】对小数的处理

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

1. 四舍五入

2. 向上取整

3. 向下取整

这三种如何实现呢?

1.四舍五入

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

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

bit[7:0] a = 10;
bit[7:0] b1,b2;

initial begin

  b1 = a/6;
  b2 = a*1.0/6;

  $display("b1 = %0d,b2= %0d",b1,b2);
end


result : b1 = 1,b2 = 2

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 typedesrciption
bit雙狀態,單比特
int unsigned雙狀態,32比特無符號整數
int雙狀態,32比特有符號整數
byte雙狀態,8比特有符號整數
shortint雙狀態,16比特有符號整數
longint雙狀態,64比特有符號整數
integer四狀態,32比特有符號整數
time四狀態,64比特無符號整數
real雙狀態,雙精度浮點數
byte unsigned雙狀態,8比特無符號整數

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值