|
|
  |
Выравнивание канала для QAM16 |
|
|
|
Dec 26 2011, 12:09
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата(des00 @ Dec 26 2011, 14:34)  боюсь вас увести не в ту область, т.к. вплотную занимался сим вопросом года полтора назад. поищите документы на тему Transfom Domain Equalizers, сейчас глянул свою библиотеку, по диагонали не нашел нужную доку. Насчет Frequency Domain неплохо у хайкина написано.
Например дискретное преобразование Адамара. На этом форуме есть тема, где уважаемый petrov выкладывал модель такого эквалайзера. Делал эквалайзер с адамаром, сходится быстрее чем классический. Пощупаю по данным ключевым словам. Но позвольте еще один вопрос задать. Чуть выше Вы приводили связку SMMA и DD. Но в y_re*(y_re^2 - a_re^c*R_re) + j*y_im*(y_im^2 - a_im^c*cR_im), где а - это оценки по квадратурам текущего символа. Разве это не есть по сути единение MMA и DD, какой смысл еще раз DD на выходе включать? Далее, если у меня в начале квадрат стоит с неким наклоном, то применение оценок сигнала можно применять или надо правдами неправдами квадрат в начале выравнивать? Ну и -с- из каких соображений выбирается?
|
|
|
|
|
Dec 26 2011, 12:23
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(tim_s80 @ Dec 26 2011, 06:09)  Но позвольте еще один вопрос задать. Чуть выше Вы приводили связку SMMA и DD. Но в y_re*(y_re^2 - a_re^c*R_re) + j*y_im*(y_im^2 - a_im^c*cR_im), где а - это оценки по квадратурам текущего символа. Разве это не есть по сути единение MMA и DD, какой смысл еще раз DD на выходе включать? Вы правы, я делал для ПЛИС и дело было в ресурсе, при ограниченной разрядности вычислений, в установившемся режиме DD дает лучший результат чем SMMA (думаю что это очевидно %)). Цитата Далее, если у меня в начале квадрат стоит с неким наклоном, то применение оценок сигнала можно применять или надо правдами неправдами квадрат в начале выравнивать? про наклон ничего не понял. вы имеете в виду перекос спектра ? Короткие линейные эквалайзеры ИМХО плохо его компенсируют (а TSE тем более). Цитата Ну и -с- из каких соображений выбирается? хмм, поднял свои наработки, я использовал c = 0.5. Если мне память не изменяет выбирал ее исходя из ошибки в установившемся режиме/скорости схождения.
--------------------
|
|
|
|
|
Dec 26 2011, 12:41
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата(des00 @ Dec 26 2011, 15:23)  про наклон ничего не понял. вы имеете в виду перекос спектра ? Не совсем точно выразился. Речь идет о квадрате созвездия, который на начальном этапе повернут, т.е. стороны квадрата созвездия не параллельны сторонам опорного созвездия.
|
|
|
|
|
Dec 26 2011, 13:03
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(tim_s80 @ Dec 26 2011, 06:41)  Не совсем точно выразился. Речь идет о квадрате созвездия, который на начальном этапе повернут, т.е. стороны квадрата созвездия не параллельны сторонам опорного созвездия. т.е., как я понимаю, у вас есть нескомпенсированный фазовый сдвиг созвездия. Для настройки эквалайзера это не принципиально(особенно для слепых методов основанных на статистиках высоких порядков). Даже скажу больше, чисто в экспирементальных целях делал демодулятор на хороших генераторах, без отдельной петли по несушке. Петлей был TSE эквалайзер, его быстродействия хватало что бы держать созвездие (восстановление тактовой не зависело от фазового сдвига) %) И экспиремента ради делал FSE эквалайзер, который работал интерплятором Фэрроу в петле по тактовой %)
--------------------
|
|
|
|
|
Dec 28 2011, 06:40
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
При рассмотрении варианта DD-LMS встретился такой подход ... if (abs(e(k)) < 0.5) w(k+1,  = w(k,  + 2*mu * abs(e(k))^2 * e(k)' * X(k,  ; else w(k+1,  = w(k,  + 2*mu * e(k)' * X(k,  ; end ... т.е. в зависимости от величины текущей ошибки используется либо abs(e(k))^2 * e(k)' либо просто e(k)' Прояснмие кто могкт в чем суть данного явления?
|
|
|
|
|
Dec 28 2011, 08:03
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(tim_s80 @ Dec 28 2011, 00:40)  Прояснмие кто могкт в чем суть данного явления? Динамически изменяемый mu. Быстрый вход в захват и маленькая СКО в стационарном режиме. ИМХО в данном случае что-то вида шаманства, лучше тогда уж лучше NLMS реализовать. ЗЫ. Вы если что интересное, по этой теме, нароете выкладывайте сюда. Если вам не затруднит конечно. ЗЗЫ. для FPGA не самый хороший вариант, т.к. 1. раздувается разрядность квадрата, так что выхлоп в mu от нее маленький будет. 2. для mu требуется умножитель, что при паралельном обновлении даст увеличение кол-ва умножителей на два порядка фильтра.
--------------------
|
|
|
|
|
Jan 2 2012, 21:10
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Всех с наступившим!
Появились следующие вопросы.
1. Предположим на неком фрагменте сигнала был прогнан СМА. На выходе сформировался фильтр W, через который прогнав исходный сигнал получаем некое созвездие, но не совсем идеальное. Насколько я понял из источников, для QAM СМА поверхность является мултимодальной и в этом случае на конечный результат очень большую роль может играть начальная установка эквалайзера. Насколько имеет смысл с точки зрения улучшения качества выхода те же данные еще раз прогнать через СМА, но с начальной установкой эквалайзера коэффициентами, полученными на первой иттерации?
2. Есть рекомендации применения связки СМА-DDLMS. Первый подвопрос. Если СМА реализован при Т/2, то DDLMS тоже должен быть Т/2 или имеет смысл перейти на Т? Второй подвопрос. При включении DDLMS имеет смысл начально фильтр устанавливать в выходное состояние СМА или опять ...00100...?
3. После применения Т/2 СМА (мультимодуль) выходное созвездие получается так, что внешние точки сведены хуже чем внутренние. И исли по внутренним точкам вроде бы допустимо включать DDLMS, то по внешним точкам опасно. Что может быть причиной, сущность СМА или по тем или иным причинам (времени не хватило на схождение, шаг неправильно выбран, ...) алгоритм не в полную силу отработал?
4. Встретил такое понятие "tap-leakage". Это реально полезная штука или что то из серии высокой теории, которая на практике редко нужна?
|
|
|
|
|
Jan 2 2012, 21:24
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(tim_s80 @ Jan 2 2012, 16:10)  Насколько имеет смысл с точки зрения улучшения качества выхода те же данные еще раз прогнать через СМА, но с начальной установкой эквалайзера коэффициентами, полученными на первой иттерации? если вы работаете в офлайне, то почему бы нет. Цитата Первый подвопрос. Если СМА реализован при Т/2, то DDLMS тоже должен быть Т/2 или имеет смысл перейти на Т? на лету будете местоположение фильтра изменять ?  FSE/TSE эквалайзеры описывают частотный домен работы фильтра, а не то, откуда беруться отчеты для адаптации. Отчеты нужно брать после решающей функции (восстановления тактовой частоты) иначе будет бред. Цитата Второй подвопрос. При включении DDLMS имеет смысл начально фильтр устанавливать в выходное состояние СМА или опять ...00100...? если устанавливать в исходное тогда смысл CMA? Цитата 3. После применения Т/2 СМА (мультимодуль) выходное созвездие получается так, что внешние точки сведены хуже чем внутренние. хмм, как я понимаю речь о КАМ16. не встречал такого. модельку в матлабе можете привезти ? Цитата 4. Встретил такое понятие "tap-leakage". Это реально полезная штука или что то из серии высокой теории, которая на практике редко нужна? это великое, но иногда полезное шаманство в LMS алгоритмах. В FSE эквалайзерах я такое использовал, в TSE не приходилось. Фактически это добавление шума к сигналу, для адаптации. Помогает избежать гуляния эквалайзера по траектории равной СКО и предотвратить уход в разнос, при работе с сигналом с разряженой корреляционной матрицей.
--------------------
|
|
|
|
|
Jan 2 2012, 21:47
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата на лету будете местоположение фильтра изменять ?  FSE/TSE эквалайзеры описывают частотный домен работы фильтра, а не то, откуда беруться отчеты для адаптации. Отчеты нужно брать после решающей функции (восстановления тактовой частоты) иначе будет бред. Т.е. фильтр один, Т/2, а корректируется он с разных алгоритмов? Цитата если устанавливать в исходное тогда смысл CMA?  С учетом того,что я сейчас работаю чисто в оффлайне, возможно и вопросы специфические. Подразумевается, что на вход DDLMS не исходный сигнал подается, а после предварительного исправления СМА. Цитата хмм, как я понимаю речь о КАМ16. не встречал такого. модельку в матлабе можете привезти ? Это я заметил не по модели, а потем данным, которые я давалл ссылки в первых постах темы http://electronix.ru/forum/index.php?act=a...st&id=64055Цитата гуляния эквалайзера по траектории равной СКО. Что означает траектория СКО?
Сообщение отредактировал tim_s80 - Jan 2 2012, 21:49
|
|
|
|
|
Jan 2 2012, 22:08
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(tim_s80 @ Jan 2 2012, 16:47)  Т.е. фильтр один, Т/2, а корректируется он с разных алгоритмов? если TSE эквалайзер то T/2 T, если FSE то в другом домене фильтр стоит %) Цитата Это я заметил не по модели, а потем данным, которые я давалл ссылки в первых постах темы смотреть надо, может быть эквалайзер построен не правильно или настроен не верно. мне сырые данные ни о чем не говорят по сути вопроса. Цитата Что означает траектория СКО? в книгах вы же видели поверхности СКО, которыми оперируют при обсуждении сходимости эквалайзеров? там есть линии, двигаясь по которым коэффициенты фильтра будут изменяться, а значение СКО нет.
--------------------
|
|
|
|
|
Jan 2 2012, 22:20
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата(des00 @ Jan 3 2012, 01:08)  если TSE эквалайзер то T/2, если FSE то в другом домене фильтр стоит %) Мож наоборот?
|
|
|
|
|
Jan 2 2012, 23:12
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
При SNR=15 и M=16 вроде бы работает. При SNR=35 и М=64 (и при 256) уходит в разнос. В чем причина может быть? Код clear; SNR = 15; M = 16; % %---Формирование опорного созвездия---------------- k = log2(M); alphaRe = [-(2*sqrt(M)/2-1):2:-1 1:2:2*sqrt(M)/2-1]; alphaIm = [-(2*sqrt(M)/2-1):2:-1 1:2:2*sqrt(M)/2-1]; % ip = [0:M-1]; ipBin = dec2bin(ip.'); % ipDecRe = bin2dec(ipBin(:,[1:k/2])); ipGrayDecRe = bitxor(ipDecRe,floor(ipDecRe/2)); % ipDecIm = bin2dec(ipBin(:,[k/2+1:k])); ipGrayDecIm = bitxor(ipDecIm,floor(ipDecIm/2)); % modRe = alphaRe(ipGrayDecRe+1); modIm = alphaIm(ipGrayDecIm+1); % опорное созвездие QAMmod = modRe + j*modIm; %-------------------------------------------------- L = 9; % Длина эквалайзера u_cma = 1e-4; u_lms = 2e-3;
W = 3.2;% Свойства канала
N = 10000; %размер сигнала
% Радиус для СМА qaml=(abs(QAMmod)).^4; qam2=(abs(QAMmod)).^2; R2=qaml/qam2;
a = zeros(N,1); % Исходна последовательность x = zeros(N,1); % Последовательность после канала y = zeros(N-(L-1),1); y1 = zeros(N-(L-1),1);
% ------Формирование потока данных-------
Ind_d=randsrc(1,N,1:M); a=QAMmod(Ind_d);
%------------------------------------------------------- h = zeros(1,3); % ИХ канала for n =1:3, h(n) = 0.5*(1 + cos(2*pi*(n-2)/W)); end
x=filter(h,1,a); %прохождение через канал x = awgn(x,SNR); %-------------------------------------------------------
%------Обработка данных-------------------- for k=1:N-L+1, X(k,:) = x(k:k+L-1); % Преобразование входного потока в матричное представление относительно тапов эквалайзера end
w(1,1:L) = 0; % Подготовка эквалайзера w(1,(L+1)/2) = 1; % Начальная установка эквалайзера
for k = 1:N-(L-1), y(k) = X(k,:) * w(k,:)'; e(k) = y(k)*(R2 - abs(y(k))^2); w(k+1,:) = w(k,:) + u_cma * e(k)' * X(k,:); % Формирование новой оценки эквалайзера % Нахождение ближайшей опорной точки для дальнейшего применения DD-LMS raz=QAMmod-y(k); min_raz=find(raz==min(raz)); y1(k)=QAMmod(min_raz(1));
%------------------------------------------------------------ %DD-LMS if (abs(y1(k) - y(k)) < 0.75) % Запуск DD-LMS при определенном пороге e(k) = y1(k) - y(k); if (abs(e(k)) < 0.5) w(k+1,:) = w(k,:) + 2*u_lms * abs(e(k))^2 * e(k)' * X(k,:); else w(k+1,:) = w(k,:) + 2*u_lms * e(k)' * X(k,:); end end end
%--Вспомогательные операции-------------------------------------
figure(1); subplot(2,2,1),plot(x(fix(N/2):N-(L-1)),'*'); subplot(2,2,2),plot(y(fix(N/2):N-(L-1)),'*');
elog = 10*log(abs(e).*abs(e))/log(10); subplot(2,2,3:4),plot(elog);
Сообщение отредактировал tim_s80 - Jan 3 2012, 11:52
|
|
|
|
|
Jan 3 2012, 09:37
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(tim_s80 @ Jan 2 2012, 18:12)  В чем причина может быть? код посмотрю. Начал запускать скрипт, смотрю цифры очень странные. У вас пороги по годдарду неправильно посчитанны %) считать пороги надо так Код qaml=sum((abs(QAMmod)).^4); qam2=sum((abs(QAMmod)).^2); R2=qaml/qam2; Дальше пока не смотрел. ЗЫ. свой код в теги оформите или модератора раздела попросите. UPD. SNR в каких то странных у вас попугаях. сам виноват, забыл что скрипт не пересчитвается при запуске по частям %) UPD2 нормировал созвездие, отключил обновление коэффициенов эквалайзера, убрал искажения, убрал шум. добавил расчет СКО mse(k) = abs(y(k) - y1(k)).^2; результат в приложении. Очень странно что по мере расчета, ошибка по точке становится не нулевой. как это возможно, если коэффициенты эквалайзера не изменяются, не понятно. Ошибки в реализации фира у вас точно нет ?
Эскизы прикрепленных изображений
--------------------
|
|
|
|
|
Jan 3 2012, 11:46
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
По поводу R2 разница между "моим" подходом и вашим вроде бы не существенная и я пока не заметил ее влияния на качество обработки. После коррекции кода типа u_cma=1/(1000*L*mean(abs(QAMmod).^2)); u_lms=u_cma*50;
Получилось SNR=15 M=16
SNR=35 M=64
но для М=256 даже и близко не получается (ни при увеличении SNR, ни при увеличении числа итераций N). О какой потенциальной ошибке реализации фира идет речь, вроде бы просто матричное умножение, где там намудрить можно?
В общем получилось, но не более чем методом научного тыка. И не совсем понятна зависимость - u_lms почему то должно быть больше чем u_cma, хотя логичнее предположить, что в конце для уменьшения остаточной ошибки шаг адаптации должен быть меньше.
Сообщение отредактировал tim_s80 - Jan 3 2012, 18:30
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|