www.pudn.com > x86.rar > ConvertSPTo64Int.v, change:2007-12-05,size:5518b


//  Module to Convert Single Precision Value into 64-bit Integer 
 
 
 
 
module ConvertSPTo64Int(Int64Out, SPIn); 
 
output [63:0] Int64Out; 
input  [31:0] SPIn; 
 
reg  [63:0] Int64; 
wire [31:0] SPIn; 
reg  [7:0]  index; 
wire [63:0] complementOut; 
wire [63:0] complementIn; 
 
assign Int64Out = SPIn[31] ? complementOut : Int64; 
assign complementIn = SPIn[31] ? Int64 :64'bz; 
 
twosComp64 TC64(complementOut, complementIn); 
 
always @( SPIn or complementOut ) 
 
begin 
 
	index=	 SPIn[30:23]; 
	index[7]=~index[7] ; 
	index= 	(~index[0] ? ( {index [7:1], ~index[0]}): 
		(~index[1] ? ( {index [7:2], ~index[1:0]}): 
		(~index[2] ? ( {index [7:3], ~index[2:0]}): 
		(~index[3] ? ( {index [7:4], ~index[3:0]}): 
		(~index[4] ? ( {index [7:5], ~index[4:0]}): 
		(~index[5] ? ( {index [7:6], ~index[5:0]}): 
		({index[7], ~index[6:0]}) )))))); 
 
 
	begin 
 
		case (index) 
 
		6'd62: 
			  Int64  = { 1'b0, 1'b1 , SPIn[22:0], {39{1'b0}} }; 
		6'd61: 
			  Int64  = { 1'b0, 1'b0, 1'b1 , SPIn[22:0], {38{1'b0}} }; 
		6'd60: 
			  Int64  = { 1'b0, {2{1'b0}}, 1'b1, SPIn[22:0], {37{1'b0}} }; 
		6'd59: 
			  Int64  = { 1'b0, {3{1'b0}}, 1'b1, SPIn[22:0], {36{1'b0}} }; 
		6'd58: 
			  Int64  = { 1'b0, {4{1'b0}}, 1'b1, SPIn[22:0], {35{1'b0}} }; 
		6'd57: 
			  Int64  = { 1'b0, {5{1'b0}}, 1'b1, SPIn[22:0], {34{1'b0}} }; 
		6'd56: 
			  Int64  = { 1'b0, {6{1'b0}}, 1'b1, SPIn[22:0], {33{1'b0}} }; 
		6'd55: 
			  Int64  = { 1'b0, {7{1'b0}}, 1'b1, SPIn[22:0], {32{1'b0}} }; 
		6'd54: 
			  Int64  = { 1'b0, {8{1'b0}}, 1'b1, SPIn[22:0], {31{1'b0}} }; 
		6'd53: 
			  Int64  = { 1'b0, {9{1'b0}}, 1'b1, SPIn[22:0], {30{1'b0}} }; 
		6'd52: 
			  Int64  = { 1'b0, {10{1'b0}}, 1'b1, SPIn[22:0], {29{1'b0}} }; 
		6'd51: 
			  Int64  = { 1'b0, {11{1'b0}}, 1'b1 , SPIn[22:0], {28{1'b0}} }; 
		6'd50: 
			  Int64  = { 1'b0, {12{1'b0}}, 1'b1 , SPIn[22:0], {27{1'b0}} }; 
		6'd49: 
			  Int64  = { 1'b0, {13{1'b0}}, 1'b1 , SPIn[22:0], {26{1'b0}} }; 
		6'd48: 
			  Int64  = { 1'b0, {14{1'b0}}, 1'b1 , SPIn[22:0], {25{1'b0}} }; 
		6'd47: 
			  Int64  = { 1'b0, {15{1'b0}}, 1'b1 , SPIn[22:0], {24{1'b0}} }; 
		6'd46: 
			  Int64  = { 1'b0, {16{1'b0}}, 1'b1 , SPIn[22:0], {23{1'b0}} }; 
		6'd45: 
			  Int64  = { 1'b0, {17{1'b0}}, 1'b1 , SPIn[22:0], {22{1'b0}} }; 
		6'd44: 
			  Int64  = { 1'b0, {18{1'b0}}, 1'b1 , SPIn[22:0], {21{1'b0}} }; 
		6'd43: 
			  Int64  = { 1'b0, {19{1'b0}}, 1'b1 , SPIn[22:0], {20{1'b0}} }; 
		6'd42: 
			  Int64  = { 1'b0, {20{1'b0}}, 1'b1 , SPIn[22:0], {19{1'b0}} }; 
		6'd41: 
			  Int64  = { 1'b0, {21{1'b0}}, 1'b1 , SPIn[22:0], {18{1'b0}} }; 
		6'd40: 
			  Int64  = { 1'b0, {22{1'b0}}, 1'b1 , SPIn[22:0], {17{1'b0}} }; 
		6'd39: 
			  Int64  = { 1'b0, {23{1'b0}}, 1'b1 , SPIn[22:0], {16{1'b0}} }; 
		6'd38: 
			  Int64  = { 1'b0, {24{1'b0}}, 1'b1 , SPIn[22:0], {15{1'b0}} }; 
		6'd37: 
			  Int64  = { 1'b0, {25{1'b0}}, 1'b1 , SPIn[22:0], {14{1'b0}} }; 
		6'd36: 
			  Int64  = { 1'b0, {26{1'b0}}, 1'b1 , SPIn[22:0], {13{1'b0}} }; 
		6'd35: 
			  Int64  = { 1'b0, {27{1'b0}}, 1'b1 , SPIn[22:0], {12{1'b0}} }; 
		6'd34: 
			  Int64  = { 1'b0, {28{1'b0}}, 1'b1 , SPIn[22:0], {11{1'b0}} }; 
		6'd33: 
			  Int64  = { 1'b0, {29{1'b0}}, 1'b1 , SPIn[22:0], {10{1'b0}} }; 
		6'd32: 
			  Int64  = { 1'b0, {30{1'b0}}, 1'b1 , SPIn[22:0], {9{1'b0}} }; 
		6'd31: 
			  Int64  = { 1'b0, {31{1'b0}}, 1'b1, SPIn[22:0], {8{1'b0}} }; 
 
		6'd30: 
			  Int64  = { 1'b0, {32{1'b0}}, 1'b1 , SPIn[22:0], {7{1'b0}} }; 
		6'd29: 
			  Int64  = { 1'b0, {33{1'b0}}, 1'b1 ,  SPIn[22:0], {6{1'b0}} }; 
		6'd28: 
			  Int64  = { 1'b0, {34{1'b0}}, 1'b1 , SPIn[22:0], {5{1'b0}} }; 
		6'd27: 
			  Int64  = { 1'b0, {35{1'b0}}, 1'b1 , SPIn[22:0], {4{1'b0}} }; 
		6'd26: 
			  Int64  = { 1'b0, {36{1'b0}}, 1'b1 , SPIn[22:0], {3{1'b0}} }; 
		6'd25: 
			  Int64  = { 1'b0, {37{1'b0}}, 1'b1 , SPIn[22:0], {2{1'b0}} }; 
		6'd24: 
			  Int64  = { 1'b0, {38{1'b0}}, 1'b1 , SPIn[22:0], 1'b0 }; 
		6'd23: 
			  Int64  = { 1'b0, {39{1'b0}}, 1'b1 , SPIn[22:0] }; 
		6'd22: 
			  Int64  = { 1'b0, {40{1'b0}}, 1'b1 , SPIn[22:1] }; 
		6'd21: 
			  Int64  = { 1'b0, {41{1'b0}}, 1'b1 , SPIn[22:2] }; 
		6'd20: 
			  Int64  = { 1'b0, {42{1'b0}}, 1'b1 , SPIn[22:3] }; 
		6'd19: 
			  Int64  = { 1'b0, {43{1'b0}}, 1'b1 , SPIn[22:4] }; 
		6'd18: 
			  Int64  = { 1'b0, {44{1'b0}}, 1'b1 , SPIn[22:5] }; 
		6'd17: 
			  Int64  = { 1'b0, {45{1'b0}}, 1'b1 , SPIn[22:6] }; 
		6'd16: 
			  Int64  = { 1'b0, {46{1'b0}}, 1'b1 , SPIn[22:7] }; 
		6'd15: 
			  Int64  = { 1'b0, {47{1'b0}}, 1'b1 , SPIn[22:8] }; 
		6'd14: 
			  Int64  = { 1'b0, {48{1'b0}}, 1'b1 , SPIn[22:9] }; 
		6'd13: 
			  Int64  = { 1'b0, {49{1'b0}}, 1'b1 , SPIn[22:10] }; 
		6'd12: 
			  Int64  = { 1'b0, {50{1'b0}}, 1'b1 , SPIn[22:11] }; 
		6'd11: 
			  Int64  = { 1'b0, {51{1'b0}}, 1'b1 , SPIn[22:12] }; 
		6'd10: 
			  Int64  = { 1'b0, {52{1'b0}}, 1'b1 , SPIn[22:13] }; 
		6'd9: 
			  Int64  = { 1'b0, {53{1'b0}}, 1'b1 , SPIn[22:14] }; 
		6'd8: 
			  Int64  = { 1'b0, {54{1'b0}}, 1'b1 , SPIn[22:15] }; 
		6'd7: 
			  Int64  = { 1'b0, {55{1'b0}}, 1'b1 , SPIn[22:16] }; 
		6'd6: 
			  Int64  = { 1'b0, {56{1'b0}}, 1'b1 , SPIn[22:17] }; 
		6'd5: 
			  Int64  = { 1'b0, {57{1'b0}}, 1'b1 , SPIn[22:18] }; 
		6'd4: 
			  Int64  = { 1'b0, {58{1'b0}}, 1'b1 , SPIn[22:19] }; 
		6'd3: 
			  Int64  = { 1'b0, {59{1'b0}}, 1'b1 , SPIn[22:20] }; 
		6'd2: 
			  Int64  = { 1'b0, {60{1'b0}}, 1'b1 , SPIn[22:21] }; 
		6'd1: 
			  Int64  = { 1'b0, {61{1'b0}}, 1'b1 , SPIn[22] }; 
		6'd0: 
			  Int64  = { 1'b0, {62{1'b0}}, 1'b1 }; 
		default:  Int64  = 64'b0; 
		endcase 
	end 
 
end 
endmodule