⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mul_float.v

📁 IEEE754 floating point mul
💻 V
字号:
/* ------------------------------------------------------------// MODULE: MUL_Float (no clock , two floating inputs alignment, SM-Floating point)// Edition: one// Matlab Code:  None// C Code: None// Architecture Diagram: MUL_Floating.ppt// Date: 2008/01/30// Update: 2008/01/30//         2008/02/12 debug for zero	   // ------------------------------------------------------------ */`include "MUL_Fix2.v" module MUL_Float(In_x,In_y,Out);/* ------------------------------------------------------------// Parameters definition// ------------------------------------------------------------ */parameter data_lng=-10,	//data_in length	  exp_lng=-10,	//data_in exponent part length	  sgnfc_lng=-10;	//data_in significant part length /* ------------------------------------------------------------// I/O declaration// ------------------------------------------------------------ */input [data_lng-1:0]In_x,In_y; //include sgnfc and exp partoutput [data_lng-1:0]Out; 		   // data_out//output min_overflow,max_overflow;  // control line for overflow minimal and maximal/* ------------------------------------------------------------// Connection wire declaration// ------------------------------------------------------------ */wire [sgnfc_lng-1:0]data_1_sgnfc_for_op,data_2_sgnfc_for_op,data_out_sgnfc_from_op_temp;wire [sgnfc_lng-1:0] data_out_sgnfc_from_op;wire [exp_lng:0] ext_data_exp_for_op;wire [exp_lng-1:0]data_1_exp_for_op,data_2_exp_for_op;wire [exp_lng:0]ext_data_1_exp_for_op,ext_data_2_exp_for_op,data_sum_exp;wire min_overflow; // control line for overflow minimal//wire max_overflow; // control line for overflow maximalwire [data_lng-1:0]Out,data_1_for_op,data_2_for_op;/* ------------------------------------------------------------// Module instance// ------------------------------------------------------------ */assign data_1_for_op=In_x;assign data_2_for_op=In_y;assign data_1_sgnfc_for_op=data_1_for_op[data_lng-1:exp_lng];assign data_2_sgnfc_for_op=data_2_for_op[data_lng-1:exp_lng];assign data_1_exp_for_op=data_1_for_op[exp_lng-1:0];assign data_2_exp_for_op=data_2_for_op[exp_lng-1:0];//assign data_out_from_op=data_1_sgnfc_for_op*data_2_sgnfc_for_op;MUL_Fix2 #(sgnfc_lng-1) s0(.In_x(data_1_sgnfc_for_op[sgnfc_lng-2:0]),.In_y(data_2_sgnfc_for_op[sgnfc_lng-2:0]),.Out(data_out_sgnfc_from_op));assign ext_data_1_exp_for_op={data_1_exp_for_op[exp_lng-1],data_1_exp_for_op};assign ext_data_2_exp_for_op={data_2_exp_for_op[exp_lng-1],data_2_exp_for_op};assign data_out_sgnfc_from_op_temp[sgnfc_lng-1]=In_x[data_lng-1]^In_y[data_lng-1];assign ext_data_exp_for_op=ext_data_1_exp_for_op+ext_data_2_exp_for_op;assign data_sum_exp=data_out_sgnfc_from_op[sgnfc_lng-1] ? ext_data_exp_for_op+1'b1 : ext_data_exp_for_op;assign min_overflow=(data_sum_exp[exp_lng])&(~data_sum_exp[exp_lng-1]); 	//overflow for minimal//assign max_overflow=(~data_sum_exp[exp_lng])&(data_sum_exp[exp_lng-1]); 	//overflow for maximalassign data_out_sgnfc_from_op_temp[sgnfc_lng-2:0]= data_out_sgnfc_from_op[sgnfc_lng-1] ? data_out_sgnfc_from_op[sgnfc_lng-1:1] : data_out_sgnfc_from_op[sgnfc_lng-2:0] ;assign Out[data_lng-1:exp_lng]=(min_overflow)?{sgnfc_lng{1'b0}}:data_out_sgnfc_from_op_temp;assign Out[exp_lng-1:0]= ((min_overflow)||(~Out[data_lng-2])) ? 7'b100_0000 : data_sum_exp[exp_lng-1:0];endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -