noise power
This commit is contained in:
@@ -6,10 +6,10 @@ channelmod = {
|
|||||||
modellist="modellist_rfsimu_1";
|
modellist="modellist_rfsimu_1";
|
||||||
modellist_rfsimu_1 = (
|
modellist_rfsimu_1 = (
|
||||||
{
|
{
|
||||||
model_name = "rfsimu_channel_ue0"
|
model_name = "rfsimu_channel_enB0"
|
||||||
type = "AWGN";
|
type = "AWGN";
|
||||||
ploss_dB = 0;
|
ploss_dB = 0;
|
||||||
noise_power_dB = 0;
|
noise_power_dB = -10;
|
||||||
forgetfact = 0;
|
forgetfact = 0;
|
||||||
offset = 0;
|
offset = 0;
|
||||||
ds_tdl = 0;
|
ds_tdl = 0;
|
||||||
|
|||||||
@@ -269,7 +269,7 @@ typedef enum {
|
|||||||
{CHANNELMOD_MODEL_NAME_PNAME, "name of the model\n", 0, strptr:NULL , defstrval:"", TYPE_STRING, 0 },\
|
{CHANNELMOD_MODEL_NAME_PNAME, "name of the model\n", 0, strptr:NULL , defstrval:"", TYPE_STRING, 0 },\
|
||||||
{CHANNELMOD_MODEL_TYPE_PNAME, "name of the model type\n", 0, strptr:NULL , defstrval:"AWGN", TYPE_STRING, 0 },\
|
{CHANNELMOD_MODEL_TYPE_PNAME, "name of the model type\n", 0, strptr:NULL , defstrval:"AWGN", TYPE_STRING, 0 },\
|
||||||
{CHANNELMOD_MODEL_PL_PNAME, "channel path loss in dB\n", 0, dblptr:NULL, defdblval:0, TYPE_DOUBLE, 0 },\
|
{CHANNELMOD_MODEL_PL_PNAME, "channel path loss in dB\n", 0, dblptr:NULL, defdblval:0, TYPE_DOUBLE, 0 },\
|
||||||
{CHANNELMOD_MODEL_NP_PNAME, "channel noise in dB\n", 0, dblptr:NULL, defdblval:0, TYPE_DOUBLE, 0 },\
|
{CHANNELMOD_MODEL_NP_PNAME, "channel noise in dB\n", 0, dblptr:NULL, defdblval:-50, TYPE_DOUBLE, 0 },\
|
||||||
{CHANNELMOD_MODEL_FF_PNAME, "channel forget factor ((0 to 1)\n", 0, dblptr:NULL, defdblval:0, TYPE_DOUBLE, 0 },\
|
{CHANNELMOD_MODEL_FF_PNAME, "channel forget factor ((0 to 1)\n", 0, dblptr:NULL, defdblval:0, TYPE_DOUBLE, 0 },\
|
||||||
{CHANNELMOD_MODEL_CO_PNAME, "channel offset in samps\n", 0, iptr:NULL, defintval:0, TYPE_INT, 0 },\
|
{CHANNELMOD_MODEL_CO_PNAME, "channel offset in samps\n", 0, iptr:NULL, defintval:0, TYPE_INT, 0 },\
|
||||||
{CHANNELMOD_MODEL_DT_PNAME, "delay spread for TDL models\n", 0, dblptr:NULL, defdblval:0, TYPE_DOUBLE, 0 }\
|
{CHANNELMOD_MODEL_DT_PNAME, "delay spread for TDL models\n", 0, dblptr:NULL, defdblval:0, TYPE_DOUBLE, 0 }\
|
||||||
|
|||||||
@@ -65,17 +65,8 @@ void rxAddInput( struct complex16 *input_sig, struct complex16 *after_channel_si
|
|||||||
// Fixme: not sure when it is "volts" so dB is 20*log10(...) or "power", so dB is 10*log10(...)
|
// Fixme: not sure when it is "volts" so dB is 20*log10(...) or "power", so dB is 10*log10(...)
|
||||||
const double pathLossLinear = pow(10,channelDesc->path_loss_dB/20.0);
|
const double pathLossLinear = pow(10,channelDesc->path_loss_dB/20.0);
|
||||||
// Energy in one sample to calibrate input noise
|
// Energy in one sample to calibrate input noise
|
||||||
//Fixme: modified the N0W computation, not understand the origin value
|
// the normalized OAI value seems to be 256 as average amplitude (numerical amplification = 1)
|
||||||
const double KT=1.38e-23*290; //Boltzman*temperature
|
const double noise_per_sample = pow(10,channelDesc->noise_power_dB/10.0) * 256;
|
||||||
// sampling rate is linked to acquisition band (the input pass band filter)
|
|
||||||
const double noise_figure_watt = KT*channelDesc->sampling_rate;
|
|
||||||
// Fixme: how to convert a noise in Watt into a 12 bits value out of the RF ADC ?
|
|
||||||
// the parameter "-s" is declared as SNR, but the input power is not well defined
|
|
||||||
// −132.24 dBm is a LTE subcarrier noise, that was used in origin code (15KHz BW thermal noise)
|
|
||||||
const double rxGain= 132.24 - channelDesc->noise_power_dB;
|
|
||||||
// sqrt(4*noise_figure_watt) is the thermal noise factor (volts)
|
|
||||||
// fixme: the last constant is pure trial results to make decent noise
|
|
||||||
const double noise_per_sample = sqrt(4*noise_figure_watt) * pow(10,rxGain/20) *10;
|
|
||||||
// Fixme: we don't fill the offset length samples at begining ?
|
// Fixme: we don't fill the offset length samples at begining ?
|
||||||
// anyway, in today code, channel_offset=0
|
// anyway, in today code, channel_offset=0
|
||||||
const int dd = abs(channelDesc->channel_offset);
|
const int dd = abs(channelDesc->channel_offset);
|
||||||
|
|||||||
Reference in New Issue
Block a user