реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Цифровая модуляция - динамика, битность, округление, fixed point
akorud
сообщение Aug 9 2011, 12:13
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 12-11-10
Из: Poland
Пользователь №: 60 842



Приветствую, такой вот вопрос.
Делаю модулятор QPSK на FPGA, "по книжному", без ухищрений и оптимизаций. Все вроде работает в железе, но не знаю как правильно решить такую проблему:
На входе IQ 2-х битные (+-1). Первый фильтр (интерполяция x7) FIR с 16-битными коэффициентами дает 17 бит (1 знак). Дальше фильтр CIC (интерполяция x8) с усечением до 18 бит на выходе (с 23). Для самой модуляции I*sin(wt) + Q*cos(wt) используется блок DSP48A с множителем 18х18. Синус и косинус генерируются DDS с разрешением 18 бит (со знаком).
Если правильно понимаю после умножения и суммирования получается 35 бит (1 знак + 34). А дальше ЦАП у меня 12-битный. И как тут поступить? Пока просто отбрасываю младшие биты, но может есть способ лучше?
В литературе нашел упоминания что дополнительный вход С блока DSP48A (P = A*B + C) можно использовать для реализации округления, но не могу понять каким образом.
Может подскажете как тут лучше сделать?
И еще - есть ли глубой смысл использовать fixed point в такой задаче? Ведь двоичное представление остается неизменное, а для ЦАП это вообще абстрактное кодовое слово умножаемое на Vref.

Сообщение отредактировал akorud - Aug 9 2011, 13:46
Go to the top of the page
 
+Quote Post
thermit
сообщение Aug 9 2011, 13:49
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Вообще-то взятия старших 12-и разрядов должно хватить. Но можно сделать округление.
На вход с подается константа. В Вашем случае 0x7FFFFF. Затем берутся старшие 12 бит результата.
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Aug 10 2011, 08:36
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Если не сделаете округление до 12-и разрядов перед ЦАП, то появится постоянная составляющая, равная 0.5 младшего разряда.
В большинстве случаев, это нисколько не мешает.
Go to the top of the page
 
+Quote Post
thermit
сообщение Aug 11 2011, 18:07
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
thermit:
Вообще-то взятия старших 12-и разрядов должно хватить. Но можно сделать округление.
На вход с подается константа. В Вашем случае 0x7FFFFF. Затем берутся старшие 12 бит результата.


Я вообще-то тут фигню написал. Константа 0x400000. Половина младшего разряда округляемого числа должна быть...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 11:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.02566 секунд с 7
ELECTRONIX ©2004-2016