谁能给个用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写的关于浮点数运算的例子啊
能给个实例吗,急需
浮点加减运算可以,乘除好像很难
我也学习一下
有浮点数除法的吗?要源码
