Jump to content

    
Sign in to follow this  
soldat_shveyk

Получение импульсной характеристики канала связи с QPSK

Recommended Posts

Доброго дня! 

Пытаюсь получить импульсную характеристику канала связи с QPSK модуляцией. Хочу получить картину многолучевости и исправить ее. 
Для простоты считаю, что переданные данные мне известны.  На приеме добавляю второй луч, задержанный на X отсчетов. 
Делаю ifft( fft(Rx) / fft(Tx) ) - четко вижу импульсную характеристику канала. 
Но если присутствует уход частоты, то я получаю уже комплексные коэффициенты импульсной характеристики, которые повернуты по фазе. И на этом застрял, не понимаю куда двигать дальше.
Убирать уход частоты из принятого сигнала, а потом удалять импульсную характеристику канала? Или же есть способ компенсировать многолучевость без предварительного удаления сдвига частоты? 
Модель приложил. 

P.S. Пока еще только въезжаю в тему многолучевости, с эквалайзерами дела не имел. Просьба с ходу в гугл не отправлять. Пытаюсь сразу что-то делать, так интереснее :)       
 

h_estimate_with_shift.m

Share this post


Link to post
Share on other sites

могу ошибаться, но мне всегда казалось что многолучевой канал, комплексный априори. разность хода лучей дает задержку по времени и разность фаз, а разность амплитуд получается из разных условий распространения.

Share this post


Link to post
Share on other sites

Это так, но я пока что в рамках более-менее примитивной модели хочу разобраться. 
Если добавляю в сигнал его копию, задержанную на 10 отсчетов, и умноженную на 0.5, то это эквивалентно тому, что я пропустил сигнал через фильтр с импульсной характеристикой [1 0 0 0 0 0 0 0 0 0.5].
При отсутствии ухода частоты, после ifft( fft(Rx) / fft(Tx) ) я получаю точно коэффициенты  [1 0 0 0 0 0 0 0 0 0.5]. 
Если в добавить уход частоты, то уже получается импульсная характеристика, повернутая по фазе типа [0.8-j0.3 0 0 0 0 0 0 0 0 0 0.4+j0.2]. 

Как при наличии ухода частоты получить реальную характеристику канала [1 0 0 0 0 0 0 0 0 0.5]?
Или же надо продолжать работать с теми комплексными коэффициентами которые получились из-за сдвига частоты?
Моя цель - максимально достоверно оценивать ИХ канала и компенсировать ее в принимаемом сигнале. 
Что дельного можно почитать на эту тему? Желательно, максимально приближенное к практике. 

Share this post


Link to post
Share on other sites

Из свойств передаваемого сигнала, которые априори известны приемной стороне.

Например из пилот-сигналов или синхрогрупп.

8 hours ago, soldat_shveyk said:

Как при наличии ухода частоты получить реальную характеристику канала [1 0 0 0 0 0 0 0 0 0.5]?

Share this post


Link to post
Share on other sites
18 hours ago, soldat_shveyk said:

Или же надо продолжать работать с теми комплексными коэффициентами которые получились из-за сдвига частоты?

выполняете коррекцию CFO/CPO/STO, потом оцениваете, литературу не знаю, ее много, вам наверное что-то из литературы по синхронизации офдм подойдет

Share this post


Link to post
Share on other sites

Спасибо! С этим разобрался. Довернул полученную импульсную характеристику на уход частоты и фазы, и получаю исходную и.х канала, которую и задавал в модели.
Если известна импульсная характеристика канала, как ее компенсировать перед декодированием? 
Найти обратную импульсную характеристику и свернуть принимаемый сигнал с ней? 


 

Share this post


Link to post
Share on other sites

soldat_shveyk

Найти обратную импульсную характеристику и свернуть принимаемый сигнал с ней?

Усиливать шум - плохо. Из относительно простых известных способов - DFE, COFDM, но они так себе. Простых и хороших не существует.

Share this post


Link to post
Share on other sites
13 hours ago, soldat_shveyk said:

Если известна импульсная характеристика канала, как ее компенсировать перед декодированием? 
Найти обратную импульсную характеристику и свернуть принимаемый сигнал с ней?

у вас же все есть для этого,

Z = S_rx./S_ref;

а дальше фурье эквалайзер, самое простое. Правда есть немного тонкостей, но это мелочи. За ними в базовые книги по эквалайзированию

11 hours ago, petrov said:

Усиливать шум - плохо. Из относительно простых известных способов - DFE, COFDM, но они так себе. Простых и хороших не существует.

FDE +DFE относительно простой по вычислительной мощности и довольно неплохой по результатам.

Share this post


Link to post
Share on other sites
19 hours ago, petrov said:

Усиливать шум - плохо.

Не очень понимаю:  каким образом произойдет усиление шума?

 

 

7 hours ago, des00 said:

FDE +DFE относительно простой по вычислительной мощности и довольно неплохой по результатам.

То есть получив импульсную характеристику канала можно сделать коррекцию АЧХ через FDE. А после добавить DFE, опираясь результаты декодирования. 
А одним махом это не реализовать, если ИХ канала уже известна?
 

 

8 hours ago, des00 said:

За ними в базовые книги по эквалайзированию

Можете что-то конкретное рекомендовать? 

Share this post


Link to post
Share on other sites
14 hours ago, soldat_shveyk said:

Не очень понимаю:  каким образом произойдет усиление шума?

Многолучевка это частотно-селективное замирание, выглядит как спектральный ноль. Когда вы будете выравнивать это искажение, вы будете вытягивать этот спектральный ноль, разгоняя шум. Иными словами, положим у вас есть система работащая при сигнал шуме 0. При замирании 20дб, если у вас нет в канале сигнал шума 20, система работать не будет. Естественно речь про одну несущую.

Quote

То есть получив импульсную характеристику канала можно сделать коррекцию АЧХ через FDE. А после добавить DFE, опираясь результаты декодирования. 
А одним махом это не реализовать, если ИХ канала уже известна?

Ну DFE сложно добавить после декодера, т.к. большая задержка на декодирование. Хороший код блочный, накопили, декодировали, скорректировали, снова декодировали. Как-то сложновато ИМХО. ЧХ канала у вас же уже есть, умножаете на инверсную и все. Но, как показывает практика, этого недостаточно. Почему, мне мозгов не хватает сформулировать, но чувствую что авторы правы)

Quote

Можете что-то конкретное рекомендовать? 

Книги по адаптивной обработке, но они об общем, но у Сайеда есть тонкости и детали. 

adaptive_filter_theory__3ed__-_haykin

adaptive_filtering_-_algorithms_and_practical_implementation_-_diniz

adaptive_filters_-_ali_h_sayed

Хотя наверное они уже устарели.

ЗЫ. В самом матлабе хорошая подборка по эквалайзированию кстати

ЗЗЫ. Еще интересная тема турбоэквалайзеры, но я в ней как свинья в апельсинах, знаю только на пальцах

PPPPS. еще учтите что для FDE нужно выполнение условий линейной свертки, либо делать overlap-add/save либо ставить циклический префикс

Share this post


Link to post
Share on other sites

soldat_shveyk

То есть получив импульсную характеристику канала можно сделать коррекцию АЧХ через FDE. А после добавить DFE, опираясь результаты декодирования. 
А одним махом это не реализовать, если ИХ канала уже известна?

Самый простой вариант - совместно настраивать линейный эквалайзер и DFE по критерию MMSE по хорошей известной последовательности. ИХ канала знать не надо.

А именно хороший эквалайзер работает с использованием известной ИХ грубо так: пропускаем через ИХ все возможные последовательности данных, сравниваем какая ближе к принятой, см. эквалайзер Витерби.

Share this post


Link to post
Share on other sites
On 9/30/2020 at 5:57 AM, des00 said:

Многолучевка это частотно-селективное замирание, выглядит как спектральный ноль.

Получается, что если лучи сложились в противофазе, и в данный момент времени на данной частоте получился ноль сигнала на выходе антенны, вытащить сигнал обратно методами ЦОС не получится. Что вполне логично :) Чтобы это исправить, надо ставить вторую антенну рядом. 
 

On 9/30/2020 at 5:57 AM, des00 said:

Хороший код блочный, накопили, декодировали, скорректировали, снова декодировали. Как-то сложновато ИМХО. ЧХ канала у вас же уже есть, умножаете на инверсную и все

У меня как раз достаточно короткий блочный код. А как получить инверсную АЧХ? Если известна ИХ канала, то можно от нее получить обратную? 
 

On 9/30/2020 at 5:57 AM, des00 said:

Книги по адаптивной обработке, но они об общем, но у Сайеда есть тонкости и детали.

Спасибо! Даже если они устарели, мне как начинающему в этой области, будет полезно с ними ознакомиться. 

 

 

On 9/30/2020 at 10:35 AM, petrov said:

Самый простой вариант - совместно настраивать линейный эквалайзер и DFE по критерию MMSE по хорошей известной последовательности. ИХ канала знать не надо.

А именно хороший эквалайзер работает с использованием известной ИХ грубо так: пропускаем через ИХ все возможные последовательности данных, сравниваем какая ближе к принятой, см. эквалайзер Витерби.

Спасибо! Попробую разобраться с этим. Кстати, а даст ли выигрыш эквалайзер при приеме блочного кода по максимальному правдоподобию? И если даст, то что можно ожидать примерно?

Share this post


Link to post
Share on other sites
33 minutes ago, soldat_shveyk said:

Получается, что если лучи сложились в противофазе, и в данный момент времени на данной частоте получился ноль сигнала на выходе антенны, вытащить сигнал обратно методами ЦОС не получится. Что вполне логично :) Чтобы это исправить, надо ставить вторую антенну рядом. 

Как говорил знакомый гуру: "если в приемной антене нет мощности, то хоть какую обработку делай, ничего не поможет"

33 minutes ago, soldat_shveyk said:

У меня как раз достаточно короткий блочный код. А как получить инверсную АЧХ? Если известна ИХ канала, то можно от нее получить обратную? 

Вы же уже ее получаете, вот ваш же код

Z = S_rx./S_ref;

только надо инвертировать для коррекции. Этот метод используется для начальной установки FDE эквалайзера перед адаптацией.

Share this post


Link to post
Share on other sites

soldat_shveyk

надо ставить вторую антенну рядом.

Это очень хороший вариант, если можно сделать несколько приёмных каналов, и обеспечиваются некоррелированные замирания в антеннах, можно обойтись линейным MRC эквалайзером. Еще лучше если и предача разнесённая Alamouti STBC.

Кстати, а даст ли выигрыш эквалайзер при приеме блочного кода по максимальному правдоподобию? И если даст, то что можно ожидать примерно?

Без решения проблемы многолучевого распространения может вообще не работать, даже при хорошем отношении сигнал/шум, никакие коды не помогут.

 

Share this post


Link to post
Share on other sites

Доброго дня! 

Подниму старую тему по многолучевке. Так и не довел до конца в прошлом году, теперь уже точно надо добить :
В общем, идея следующая: по известной последовательности получаю импульсную характеристику канала, но чтобы не размножать шумы не делаю умножение сигнала на инверсную имп. характеристику. 
У меня сейчас довольно короткий блочный код, который я просто перебираю в MLE декодере. Соответственно,  оценив h канала, я могу пропускать через нее все возможные варианты кода и сравнивать с принятым из канала пакетом. У кого меньше метрика - значит тот и передавался.    

Импульсная характеристика канала, которую я получил по известной последовательности, начинает устаревать, пока передаются данные а не training. Надо бы ее корректировать по результатам декодирования пакетов. Если у меня есть избыток вычислительной мощности, то я могу декодировать пакет не один раз, подстраивая коэффициенты ИХ канала, чтобы SNR улучшалось. То есть фактически делать эквалайзер. 

Получается не то что бы  классическое решение.   Вот не понятно: как подстраивать коэффициенты ИХ канала при каждой итерации декодирования?   Допустим, мне не лень хоть 10 раз декодировать. 
Может я и велосипед изобретаю, но пробежался по выше перечисленным книгам по эквалайзированию, там ничего похожего не нашел. 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this