modulefloat_fixnumber(floatnum,fixnum);parameterinsize=15;parameteroutsize=18;parameterdotnum=7;parameterexpbitn=5;parameterweishubit=9;parameterfixzhengshubit=10;input[i...
module float_fixnumber(floatnum,fixnum);
parameter insize=15;
parameter outsize=18;
parameter dotnum=7;
parameter expbitn=5;
parameter weishubit=9;
parameter fixzhengshubit=10;
input [insize-1:0] floatnum;
output[outsize-1:0] fixnum;
reg [outsize-1:0] fixnum;
reg [outsize+1:0] zhengexp,shiftzhengexp;
reg [expbitn-1:0] expbit;
reg [weishubit:0] fenshubit,fenshu;
reg signbit;
integer i,k,j,shiftno;
initial
begin
i=0;
k=0;
j=0;
shiftno=0;
end
always
begin
signbit<=floatnum[insize-1];
expbit<=floatnum[insize-2:insize-expbitn-1];
fenshubit<={1'b1,floatnum[weishubit-1:0]};
if(signbit==1)
if(expbit[expbitn-1]==1)
begin
shiftno<=expbit[expbitn-2:0];
fenshu<=(fenshubit>>shiftno);
fixnum<={signbit,10'b0,fenshu[weishubit-1:weishubit-7]};
end
else
begin
shiftno<=expbit[expbitn-2:0];
zhengexp[weishubit:0]<=fenshubit;
shiftzhengexp<=zhengexp<
fixnum[17]<=signbit;
fixnum[16:0]<=shiftzhengexp[outsize:outsize-16];
end
else
begin
if(expbit[expbitn-1]==1)
begin
shiftno<=expbit[expbitn-2:0];
fenshu<=(fenshubit>>shiftno);
fixnum<={signbit,10'b0,fenshu[weishubit-1:weishubit-7]};
end
else
begin
shiftno<=expbit[expbitn-2:0];
zhengexp[weishubit:0]<=fenshubit;
shiftzhengexp<=zhengexp<
fixnum[17]<=signbit;
fixnum[16:0]<=shiftzhengexp[outsize:outsize-16];
end
end
signbit<=floatnum[insize-1];
expbit<=floatnum[insize-2:insize-expbitn-1];
fenshubit<={1'b1,floatnum[weishubit-1:0]};
end
endmodule
展开