微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 谁能给个用vhdl或者verilog写的关于浮点数运算的例子啊

谁能给个用vhdl或者verilog写的关于浮点数运算的例子啊

时间:10-02 整理:3721RD 点击:
谁能给个用vhdl或者verilog写的关于浮点数运算的例子啊


顶一下

浮点数?没接触过

有人知道噻?
再顶下。

期待中

正在研究探讨中

顶。

顶,哪位高手大哥回复一下.......

浮点数乘法
module floatmul(clk,reset,oz,ost);
   //input[31:0]  ix,iy;
   input        clk,reset;
   output[31:0] oz;
   output       ost;
         
   reg[31:0]    oz;
   reg[24:0]    xm, ym, zm;
   reg[22:0]    zm1;  
   reg[7:0]     xe, ye, ze;
   reg          p;
   reg[31:0]    ix,iy;
   reg[2:0]     state;   
   parameter    start   =   3'b000;  
   parameter    mulm    =   3'b011;               
   parameter    infifl  =   3'b101;
   parameter    over    =   3'b110;
               
   assign ost = (state == over) ? 1 : 0;
   
   always@(posedge[/email] clk)
      begin
         if(!reset)  
                 begin
                 state<= start;
                 ix=32'b01000000001101000111100110010110;
                 iy=32'b10111111000111110101001110110010;
                 oz=0;
                 end
   else
  case(state)
start: begin
   xe   <= ix[30:23];
   xm   <= {1'b0,1'b1,ix[22:0]};
   ye   <= iy[30:23];
   ym   <= {1'b0,1'b1,iy[22:0]};
   state<= mulm;
   end
      mulm: begin
            p=ix[31]^iy[31];
            ze=xe+ye-8'b01111111;
            {zm,zm1}=xm*ym;
            state <= infifl;     
      end
  
  infifl:begin
         if(zm[24])
                  begin
                  ze=ze+1;
                  oz={p,ze,zm[23:1]};
                  state <= over;
                  end
          else
                  begin
                  oz={p,ze,zm[22:0]};
                  state <= over;
                  end               
   end   
   over:  state <= over;
   default: state <= start;   
endcase
end
endmodule
32位浮点数分为三部分:
31 符号位      30~23 阶码   22~0   尾数

ix,iy为32位浮点数输入

ix,iy为输入浮点数,即乘数和被乘数。

貌似比较粗糙啊。

可以到有的网站上去看,那里有浮点运算器的核,我记不得是opencore 还是 fpga.com.cn了

其实如果你只是自己要在设计中实现一个简单的浮点运算,以实现较大的动态范围,还是比较简单的。

用2的幂次来做尾数

做加减的时候,先把尾数定标成相同,(底数作移位操作)

定标完成后底数正常加减

做乘除时,底数正常乘除,尾数加减

不好意思,赚点下载钱,一句话掰成几句话说了。
兄弟们见谅哈。

哪位大哥回答,Verilog 语言怎样 得到浮点那种格式的, 是不是从外部 寄存器读过来的

谢谢LZ

谁是强大的高速手

浮点输入法要详细讲下啊

我做过two-path的浮点加单元
挺复杂的
主要文献参考的Flynn的高效浮点加法设计。

当然,离不开IEEE754标准

谁能给个用vhdl或者verilog写的关于浮点数运算的例子啊



    能给个实例吗,急需

浮点加减运算可以,乘除好像很难

我也学习一下

有浮点数除法的吗?要源码

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top