verilog 浮点数转定点数_定点数转浮点数verilog

本文目的是记录学习《数字信号处理的FPGA实现》过程中,用verilog语言实现简单的定点数到浮点数转换的经历。

若以f[31:0]表示一个单精度32位浮点数,f[31]是符号位,其为‘0’表示正数、为‘1’表示负数;f[30:23]这8位为指数位,为了能表示负指数,将在实际指数的基础上加上127得到的结果存入f[30:23];f[22:0]表示小数位(尾数),类似科学计数法,不过采用了省略整数位(2进制的科学计数法整数位必定是1)1,将小数位从高到低依次存入f[22:0]的从高到低的位数,不足23位则在末尾补0,例如小数位只有“10011001”则f[22:0]="10011001000000000000000",这样就可以用23位存储空间表示24位的数据,变相增加了精度。另外还有一些特殊编码,如无穷大、0、NAN和非正规数,这里没有考虑,待以后用到再细究吧。

我用verilog语言写的定点数转浮点数模块,实现25位有符号定点整数转化成32位单精度浮点数,并不完全符合标准(例如未考虑特殊编码等),第一步实现补码到原码的转换,第二步计算指数和尾数。

代码如下:

module fix2float(clk,rst_n,ifix,ofloat);

input clk,rst_n;

input  [24:0] ifix;

//reg [24:0] ifix;

output [31:0] ofloat;

reg [24:0] ifix_r;

reg [31:0] ofloat_r;

reg [23:0] ustd_tail;

reg [22:0] std_tail;</

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值