Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Моделирование УКВ канала
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Ivan55
Здравствуйте!

Необходимо сделать модель канала УКВ. Кто подскажет с чего лучше начать? Что почитать?

Заранее Спасибо!
Ivan55
CODE
clear all; close all; clc;

% Коэффициент ослабления лучей
r = [0.057662, 0.176809, 0.407163, 0.303585, 0.258782, ...
0.061831, 0.150340, 0.051534, 0.185074, 0.400967, ...
0.295723, 0.350825, 0.262909, 0.225894, 0.170996, ...
0.149723, 0.240140, 0.116587, 0.221155, 0.259730;];

% Задержка лучей
tau = [1.003019, 5.422091, 0.518650, 2.751772, 0.602895, ...
1.016585, 0.143556, 0.153832, 3.324866, 1.935570, ...
0.429948, 3.228872, 0.848831, 0.073883, 0.203952, ...
0.194207, 0.924450, 1.381320, 0.640512, 1.368671;] * 1e-6;


SNR = 20; % Отношение сигнал шум в дБ
NumBlock = 100; % Колличество символов прошедших через канал
SamplesRate = (2.5e6/3)*8/5; % Частота передискретизированного сигнала
NumCarriers = 533; % Колличество несущих
FFTLength = 3000; % Колличество отсчетов полезной части сигнала
GuardLength = 375; % Колличество отсчетов защитной части сигнала


% Расчет Доплеровского смещения
FreqCarrier = 108e6; % Несущая сигнала
Speed = 200e3/3600; % Скорость движения приемника относительно передатчика
c = 300e6; % Скорость света
DopplerShift = FreqCarrier*Speed/c; % Максимальный доплеровский сдвиг

SampleTime = 1/SamplesRate; % Период дискретизации сигнала
DelayVector = tau;
GainVector = 10*log10®; % Коэффициент ослабления лучей в дБ
scale = 1./sqrt(sum(r.^2));

ChanObj = rayleighchan(SampleTime,DopplerShift,DelayVector,GainVector);
ChanObj.ResetBeforeFiltering = 1;
ChanObj.NormalizePathGains = 1;
ChanObj.StorePathGains = 0;
ChanObj.DopplerSpectrum = doppler.gaussian(DopplerShift/2);
ChanObj.StoreHistory = 1;

M=4;
k=log2(M);
H_QAM4=modem.qammod('M',M,'PhaseOffset', 0, 'SymbolOrder',...
'binary', 'InputType', 'bit');
hDeMod = modem.qamdemod(H_QAM4);

data = [];
for n = 1:NumBlock
Input_Data = randint(k*NumCarriers,1,2);
QAM_tx = modulate(H_QAM4,Input_Data);

Symbol = ifft([QAM_tx(ceil(NumCarriers/2)+1:NumCarriers);complex(zeros(FFTLength-NumCarriers,1),zeros(FFTLength-NumCarriers,1));...
QAM_tx(1:ceil(NumCarriers/2))]);

SymbolCP = [Symbol(FFTLength-GuardLength+1:FFTLength);Symbol];

OutputBlock = filter(ChanObj, SymbolCP);
OutputBlock = awgn(OutputBlock, SNR+10*log10(k)-10*log10(1),'measured');

Symbol = fft(OutputBlock(GuardLength+1:FFTLength+GuardLength));
QAM_rx(1,1:ceil(NumCarriers/2)) = Symbol(FFTLength - ceil(NumCarriers/2)+1:FFTLength);
QAM_rx(1,ceil(NumCarriers/2):NumCarriers) = Symbol(1:ceil(NumCarriers/2));

end

plot(linspace(0,SamplesRate,3375), 20*log10(abs(fft(SymbolCP)))); grid on;
%plot(ChanObj);


Все ли я правильно сделал? SampleTime это период дискретизации сигнала или что то другое? как проверить правильность модели? Есть ли в матлабе какиенить теоретические расчеты ПХ канала?
Kluwert
Цитата(Ivan55 @ Mar 3 2013, 20:57) *
Все ли я правильно сделал?

Нет. Надо просто в Симулинке открыть подходящую модель и злобно её заюзать. Всё уже придумали до нас, причём по нескольку раз.
Ivan55
Цитата(Kluwert @ Mar 5 2013, 14:58) *
Надо просто в Симулинке открыть подходящую модель и злобно её заюзать.


Например?
Kluwert
Цитата(Ivan55 @ Mar 6 2013, 07:59) *
Например?


Сорри, чего-то я вчера злой слишком был. А по моделям - пожалуйста: открываете Communication Systems/channels. Там вам пожалуйста, и просто AWGN и многолучёвый с замираниями и т.д. Готовые системы уже вместе с каналом есть, например, DVB целиком расписана (вроде ваш диапазон). Я вам советую, всё-таки, моделировать системы связи, ибо там важны вопросы синхронизации в симулинке: удобно и наглядно. Но дело ваше.
Ivan55
Цитата(Kluwert @ Mar 6 2013, 11:18) *
Сорри, чего-то я вчера злой слишком был.


Ниче такого не заметил))

Цитата(Kluwert @ Mar 6 2013, 11:18) *
...DVB целиком расписана (вроде ваш диапазон). Я вам советую, всё-таки, моделировать системы связи, ибо там важны вопросы синхронизации в симулинке: удобно и наглядно. Но дело ваше.


Да это DVB-T. Спасибо за подсказку, буду смотреть разбираться)
Ivan55
Цитата(Kluwert @ Mar 6 2013, 11:18) *
Готовые системы уже вместе с каналом есть, например, DVB целиком расписана


А где можно взять эту модельку с каналом, о которой вы говорите, у вас есть ссылка на нее, или подскажите где ее можно найти?
Kluwert
Цитата(Ivan55 @ Mar 11 2013, 08:01) *
А где можно взять эту модельку с каналом, о которой вы говорите, у вас есть ссылка на нее, или подскажите где ее можно найти?

Так в демосах к communication toolbox. Если он у вас стоит (и Симулинк, есстественно, тоже) просто наберите в командном окне матлаба commdvbc и сразу в модель нужную попадёте.

Ой, сорри, commdvbt, вам же terrestrial вроде нужен.
Ivan55
Цитата(Kluwert @ Mar 11 2013, 12:17) *
Так в демосах к communication toolbox. Если он у вас стоит (и Симулинк, есстественно, тоже) просто наберите в командном окне матлаба commdvbc и сразу в модель нужную попадёте.

Ой, сорри, commdvbt, вам же terrestrial вроде нужен.


Так то да)) я ее и нашел) но там модель с AWGN, а я думал вы мне говорите про модель DVB c каналами Райса и Релея) Но все равно спасибо) вот только встроенные функции матлаба релея и райса не подойдут для моделирования, так как DVB стандарт оговаривает требования на канал с 20 лучами и 20 фиксированными фазами лучей, а встроенные матлабовские Райса и Релея эти фазы сами крутят, и стационарными их не задают)) Так что писать придется модель кканала ручками. Вопрос: "Как можно сделать задержку луча на дробное колл-во отсчетов?"

Кто нить делал модель канала DVB-T? подскажите хотябы)
ser_aleksey_p
Цитата(Ivan55 @ Mar 11 2013, 14:09) *
Кто нить делал модель канала DVB-T? подскажите хотябы)


Попробуйте посмотреть в ADS и SV.
Ivan55
Цитата(ser_aleksey_p @ Mar 11 2013, 21:13) *
Попробуйте посмотреть в ADS и SV.


Что за ADS и SV?
STAR_IK
Цитата(Ivan55 @ Mar 11 2013, 16:09) *
Вопрос: "Как можно сделать задержку луча на дробное колл-во отсчетов?"

Дробная задержку можно сделать с помощью фильтра Фэрроу (Farrow), только надо смотреть чтоб ширина спектра сигнала не сильно искажалась фильтром, который имеет завал на ВЧ и максимален при задержке 0.5 периода дискретизации. Т.е. надо что бы частота дискретизации была с запасом в несколько раз, а не в притык по Котельникову. АЧХ фильтра Фэрроу можно глянуть у Незами, ну или я могу выложить если нужно. Если реализация в Simulink то посмотрите модели по ссылке. Там реализуется дробная задержка в петле символьной синхронизации. Если вы работаете только с m-файлами, то смотрите в help матлаба, там есть какой-то Farrow filter.
Ivan55
Цитата(STAR_IK @ Mar 12 2013, 09:47) *
Дробная задержку можно сделать с помощью фильтра Фэрроу (Farrow), только надо смотреть чтоб ширина спектра сигнала не сильно искажалась фильтром, который имеет завал на ВЧ и максимален при задержке 0.5 периода дискретизации. Т.е. надо что бы частота дискретизации была с запасом в несколько раз, а не в притык по Котельникову. АЧХ фильтра Фэрроу можно глянуть у Незами, ну или я могу выложить если нужно. Если реализация в Simulink то посмотрите модели по ссылке. Там реализуется дробная задержка в петле символьной синхронизации. Если вы работаете только с m-файлами, то смотрите в help матлаба, там есть какой-то Farrow filter.


Да спасибо) я уже нашел, но там fracdelay который как раз и использует Farrow filter
ser_aleksey_p
Цитата(Ivan55 @ Mar 12 2013, 09:57) *
Что за ADS и SV?





Ivan55
Цитата(ser_aleksey_p @ Mar 12 2013, 18:35) *




Спасибо) стало на много ясней
Ivan55
Написал модель канала не на встроенных функциях MATLAB релея и райса. Возник вопрос, как построить АЧХ канала, что подавать на вход какие есть варианты?
Gyga
Можно пробежаться синусом, можно дельта функцию и от этого БПФ
Ivan55
Цитата(Gyga @ Mar 15 2013, 14:27) *
Можно пробежаться синусом, можно дельта функцию и от этого БПФ


Да, я так и делал) только результат че то разный получал) вот и решил спросить, попробую еще поковыряться в коде
Виктор39
подскажите, пожалуйста, где(ссылка, книга, справочник) можно взять стандарты(значения замирания, доплеровского расширения, отношения мощностей в лучах и т.д.) каналов для УКВ?!
KalashKS
Цитата(Виктор39 @ Mar 27 2013, 12:12) *
подскажите, пожалуйста, где(ссылка, книга, справочник) можно взять стандарты(значения замирания, доплеровского расширения, отношения мощностей в лучах и т.д.) каналов для УКВ?!

Многие стандарты связи указывают модели каналов, на которых рекомендуется обкатывать приемник.
Например:
DRM http://www.etsi.org/deliver/etsi_es/201900...980v030201p.pdf - приложение В
DVB-T http://www.etsi.org/deliver/etsi_en/300700...744v010601p.pdf - приложение В (здесь, правда, канал статический).
В LTE тоже такое есть, но я не помню точно в котором из стандартов.
Ivan55
Цитата(KalashKS @ Mar 27 2013, 16:02) *
Многие стандарты связи указывают модели каналов, на которых рекомендуется обкатывать приемник.
Например:
DRM http://www.etsi.org/deliver/etsi_es/201900...980v030201p.pdf - приложение В
DVB-T http://www.etsi.org/deliver/etsi_en/300700...744v010601p.pdf - приложение В (здесь, правда, канал статический).
В LTE тоже такое есть, но я не помню точно в котором из стандартов.


да, я тоже их использовал) кроме LTE
"(здесь, правда, канал статический)" это не страшно, но встроенные функции матлаба канала Релея и Райса тут уже не помогут
Виктор39
Цитата
Многие стандарты связи указывают модели каналов, на которых рекомендуется обкатывать приемник.
Например:
DRM http://www.etsi.org/deliver/etsi_es/201900...980v030201p.pdf - приложение В
DVB-T http://www.etsi.org/deliver/etsi_en/300700...744v010601p.pdf - приложение В (здесь, правда, канал статический).
В LTE тоже такое есть, но я не помню точно в котором из стандартов.


спасибо за предоставленные ссылки.

совсем запутался. допустим из стандарта DRM выбираю канал 6
имею на входе 4 луча.

Код
Delay  = [0, 2, 4, 6];
Path_gain = [0.5, 1, 0.25, 0.0625];
Doppler_shift = [0, 1.2, 2.4, 3.6];
Doppler_spread = [0.1, 2.4, 4.8, 7.2];

tau = Delay;
pdb = 10*log10(1/Path_gain); % перевожу в децибелы
fd - ???

ts = 1/Fs;
y = rayleighchan(ts, fd, tau, pdb);
SigOut = filter(y,SigIn);


вопросы:
- для каждого луча имеется разное доплеровское расширение. если я в функцию rayleighchan подаю вектор fd = [0.1, 2.4, 4.8, 7.2], выдается ошибка "MaxDopplerShift must be a non-negative real finite scalar".
что подавать на fd?
- для каждого луча дано разное доплеровское смещение. как я могу это сделать для каждого луча по отдельности????

доплеровское смещение думаю делать следующим образом:
t = [0:length(SigIn)-1]/Fs;
SigOut = SigIn.*exp(-1i*2*pi*(Doppler_spread)*t);
KalashKS
Цитата(Виктор39 @ Mar 28 2013, 11:23) *
спасибо за предоставленные ссылки.

совсем запутался. допустим из стандарта DRM выбираю канал 6
имею на входе 4 луча.

Код
Delay  = [0, 2, 4, 6];
Path_gain = [0.5, 1, 0.25, 0.0625];
Doppler_shift = [0, 1.2, 2.4, 3.6];
Doppler_spread = [0.1, 2.4, 4.8, 7.2];

tau = Delay;
pdb = 10*log10(1/Path_gain); % перевожу в децибелы
fd - ???

ts = 1/Fs;
y = rayleighchan(ts, fd, tau, pdb);
SigOut = filter(y,SigIn);


вопросы:
- для каждого луча имеется разное доплеровское расширение. если я в функцию rayleighchan подаю вектор fd = [0.1, 2.4, 4.8, 7.2], выдается ошибка "MaxDopplerShift must be a non-negative real finite scalar".
что подавать на fd?
- для каждого луча дано разное доплеровское смещение. как я могу это сделать для каждого луча по отдельности????

доплеровское смещение думаю делать следующим образом:
t = [0:length(SigIn)-1]/Fs;
SigOut = SigIn.*exp(-1i*2*pi*(Doppler_spread)*t);


На fd надо подавать число. То есть функция rayleighchan моделит лучи с одинаковым допплеровским спектром. Вижу решение только в написании собственной функции. Сам, пытаясь добиться более точного моледирования КФ канала, поступил именно так.
Виктор39
можно ли делать следующим образом: используя функцию rayleighchan, пропускать каждый луч по отдельности, внося при этом требуемую задержку, доплеровское расширение и подавление. а затем для каждого луча по отдельности вносить доплеровский сдвиг. + SNR . и затем просуммировать все лучи?!
я просто так и не понял, функция rayleighchan предназначена только если на входе имеется несколько лучей, и она сама их суммирует. либо она может работать с каждым луче по отдельности...
KalashKS
Цитата(Виктор39 @ Mar 29 2013, 14:15) *
можно ли делать следующим образом: используя функцию rayleighchan, пропускать каждый луч по отдельности, внося при этом требуемую задержку, доплеровское расширение и подавление. а затем для каждого луча по отдельности вносить доплеровский сдвиг. + SNR . и затем просуммировать все лучи?!
я просто так и не понял, функция rayleighchan предназначена только если на входе имеется несколько лучей, и она сама их суммирует. либо она может работать с каждым луче по отдельности...

Попробуйте, должно получиться.
Виктор39
в таблице стандартов (DRM http://www.etsi.org/deliver/etsi_es/201900...980v030201p.pdf - приложение В), усиление луча (Path gain, rms (ρk)) дано как среднеквадратичное значение (rms). как мне среднеквадратичное значение перевести в децибелы? например, если Path gain, rms (ρk) = 0.5, значит ли это подавление по напряжению 3 децибела?
KalashKS
Цитата(Виктор39 @ Apr 1 2013, 10:22) *
в таблице стандартов (DRM http://www.etsi.org/deliver/etsi_es/201900...980v030201p.pdf - приложение В), усиление луча (Path gain, rms (ρk)) дано как среднеквадратичное значение (rms). как мне среднеквадратичное значение перевести в децибелы? например, если Path gain, rms (ρk) = 0.5, значит ли это подавление по напряжению 3 децибела?


Да.
Виктор39
простите, что задаю вопрос в чужой теме. просто он смежный с тем, о чем шла речь здесь.

мне нужно сымитировать модель НЕ стационарного канала с широкополосной передачей на частоте 2.4 ГГц.
не подскажете какой-нибудь стандартик, где описывалась бы модель канала для заданных условий?
Виктор39
не могу найти никак стандарт, описывающий модель канала для 2.4ГГц.
нахожу только стандарты, где указан параметр Path Loss Exponent для различных условий(не понимаю что за он).
неужели в этом диапазоне частот искажения моделируются не так, как на более низких частотах(с помощью модели Ваттерсона)? Ведь здесь присутствуют все те же искажения связанные с многолучевостью и доплеровским смещением
andyp
Цитата(Виктор39 @ Mar 5 2015, 08:54) *
не могу найти никак стандарт, описывающий модель канала для 2.4ГГц.
нахожу только стандарты, где указан параметр Path Loss Exponent для различных условий(не понимаю что за он).


Погугли SUI propagation model или WiMax propagation model. Для indoor там своя песня.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.