?? float_built_bus26.v
字號(hào):
/* ------------------------------------------------------------// MODULE: Float_Built_Bus26 (no clock)// Edition: one// Matlab Code: None// C Code: None// Architecture Diagram: add_sub_floating.ppt// Date: 2008/01/30// Update: 2008/01/30// 2008/02/12 debug for zero// ------------------------------------------------------------ */module Float_Built_Bus26(data_sgnfc_in,data_exp_in,data_out);/* ------------------------------------------------------------// Parameters definition// ------------------------------------------------------------ *//* ------------------------------------------------------------// Unmodified arameters definition// ------------------------------------------------------------ */parameter in_sgnfc_lng=26,//data_in significant part length out_sgnfc_lng=25,//data_out significant part length exp_lng=7,//data_in(out) exponent part length out_data_lng=32;//data_out total length /* ------------------------------------------------------------// I/O declaration// ------------------------------------------------------------ */input [in_sgnfc_lng-1:0]data_sgnfc_in; //data_sgnfc_ininput [exp_lng-1:0]data_exp_in; //data_exp_inoutput [out_data_lng-1:0]data_out; // data_out/* ------------------------------------------------------------// Connection wire declaration// ------------------------------------------------------------ */wire [in_sgnfc_lng-2:0]compl_data_sgnfc; //inv data_sgnfc_inwire [in_sgnfc_lng-2:0]decoder_in; //input for decoderreg [5:0]exp_shift_number; //shifter number for exp //must modified by handreg [4:0]shift_number; //shifter number for exp //must modified by handwire [in_sgnfc_lng-2:0]shifted_data;wire [exp_lng:0]exp_out;wire [out_sgnfc_lng-1:0]sgnfc_out;wire min_overflow;//only detect too small value for debug in total systemwire [exp_lng-1:0] exp_out_real;/* ------------------------------------------------------------// Module instance// ------------------------------------------------------------ *///assign compl_data_sgnfc=~data_sgnfc_in[in_sgnfc_lng-2:0];assign decoder_in=data_sgnfc_in[in_sgnfc_lng-2:0];//decoder for shift numberalways @(decoder_in)begin if (decoder_in[in_sgnfc_lng-2])//copy until "in_sgnfc_lng-X=0" begin exp_shift_number<=6'b00_0001;//in_sgnfc_lng-out_sgnfc_lng=1//change here shift_number<=5'd0;//dont touch end else if (decoder_in[in_sgnfc_lng-3]) begin exp_shift_number<=6'b00_0000;//0//change here shift_number<=5'd1;//dont touch end else if (decoder_in[in_sgnfc_lng-4]) begin exp_shift_number<=6'b11_1111;//-1//change here shift_number<=5'd2;//dont touch end else if (decoder_in[in_sgnfc_lng-5]) begin exp_shift_number<=6'b11_1110;//-2//change here shift_number<=5'd3;//dont touch end else if (decoder_in[in_sgnfc_lng-6]) begin exp_shift_number<=6'b11_1101;//-3//change here shift_number<=5'd4;//dont touch end else if (decoder_in[in_sgnfc_lng-7]) begin exp_shift_number<=6'b11_1100;//-4//change here shift_number<=5'd5;//dont touch end else if (decoder_in[in_sgnfc_lng-8]) begin exp_shift_number<=6'b11_1011;//-5//change here shift_number<=5'd6;//dont touch end else if (decoder_in[in_sgnfc_lng-9]) begin exp_shift_number<=6'b11_1010;//-6//change here shift_number<=5'd7;//dont touch end else if (decoder_in[in_sgnfc_lng-10]) begin exp_shift_number<=6'b11_1001;//-7//change here shift_number<=5'd8;//dont touch end else if (decoder_in[in_sgnfc_lng-11]) begin exp_shift_number<=6'b11_1000;//-8//change here shift_number<=5'd9;//dont touch end else if (decoder_in[in_sgnfc_lng-12]) begin exp_shift_number<=6'b11_0111;//-9//change here shift_number<=5'd10;//dont touch end else if (decoder_in[in_sgnfc_lng-13]) begin exp_shift_number<=6'b11_0110;//-10//change here shift_number<=5'd11;//dont touch end else if (decoder_in[in_sgnfc_lng-14]) begin exp_shift_number<=6'b11_0101;//-11//change here shift_number<=5'd12;//dont touch end else if (decoder_in[in_sgnfc_lng-15]) begin exp_shift_number<=6'b11_0100;//-12//change here shift_number<=5'd13;//dont touch end else if (decoder_in[in_sgnfc_lng-16]) begin exp_shift_number<=6'b11_0011;//-13//change here shift_number<=5'd14;//dont touch end else if (decoder_in[in_sgnfc_lng-17]) begin exp_shift_number<=6'b11_0010;//-14//change here shift_number<=5'd15;//dont touch end else if (decoder_in[in_sgnfc_lng-18]) begin exp_shift_number<=6'b11_0001;//-15//change here shift_number<=5'd16;//dont touch end else if (decoder_in[in_sgnfc_lng-19]) begin exp_shift_number<=6'b11_0000;//-16//change here shift_number<=5'd17;//dont touch end else if (decoder_in[in_sgnfc_lng-20]) begin exp_shift_number<=6'b10_1111;//-17//change here shift_number<=5'd18;//dont touch end else if (decoder_in[in_sgnfc_lng-21]) begin exp_shift_number<=6'b10_1110;//-18//change here shift_number<=5'd19;//dont touch end else if (decoder_in[in_sgnfc_lng-22]) begin exp_shift_number<=6'b10_1101;//-19//change here shift_number<=5'd20;//dont touch end else if (decoder_in[in_sgnfc_lng-23]) begin exp_shift_number<=6'b10_1100;//-20//change here shift_number<=5'd21;//dont touch end else if (decoder_in[in_sgnfc_lng-24]) begin exp_shift_number<=6'b10_1011;//-21//change here shift_number<=5'd22;//dont touch end else if (decoder_in[in_sgnfc_lng-25]) begin exp_shift_number<=6'b10_1010;//-22//change here shift_number<=5'd23;//dont touch end else if (decoder_in[in_sgnfc_lng-26]) begin exp_shift_number<=6'b10_1001;//-23//change here shift_number<=5'd24;//dont touch end else //mean this number is zero begin exp_shift_number<=6'b0;//0//dont touch shift_number<=in_sgnfc_lng;//dont touch end end//exp assign exp_out={{2{exp_shift_number[5]}},exp_shift_number}+{data_exp_in[6],data_exp_in};assign min_overflow=(exp_out[exp_lng]&~exp_out[exp_lng-1]); //1:0 for min overfloe//0:1 for max overflow//XOR for min and max overflow//shiftassign shifted_data=data_sgnfc_in[in_sgnfc_lng-2:0]<<shift_number;assign sgnfc_out=min_overflow?{out_sgnfc_lng{1'b0}}:{data_sgnfc_in[in_sgnfc_lng-1],shifted_data[in_sgnfc_lng-2:in_sgnfc_lng-out_sgnfc_lng]};//output resultsassign exp_out_real = ((min_overflow)||(~sgnfc_out[out_sgnfc_lng-2])) ? 7'b100_0000 : exp_out[exp_lng-1:0];assign data_out={sgnfc_out,exp_out_real};endmodule
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -