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

 
 
> Как реализовать генератор квадратуры, Надо генерировать cos/sin одинаковой чатоты в DSP
Russky
сообщение Dec 10 2014, 15:43
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 17-11-11
Пользователь №: 68 371



Всем привет!
Вот есть задача - генерировать квадратурный сигнал для DDC. DDC сам реализован внутри DSP, поэтому надо алгоритм чтобы его можно было-бы реализвать потом на аасемблере.
Используется плавующая точка.
В идеальном случае ф-я должна выглядеть так:
result = GenSinCos(float freq); где result это структура содержащая Cos и Sin, т.е. сигналы сдвинуты на 90 градусов.
freq - 0...1.
Ф-я вызывается для каждого отсчета. Начальная фаза в общем не очень важна. Главное чтобы 90 градусов было. По идее это даже не ф-я а макрос.
Как-то так.
Может кто уже встречал подобное? Или может уже есть готовые решения?

Особенность в том, что наверняка есть решение которое не вызывает ф-ю sin и cos каждый раз. sm.gif

Спасибо!

PS. Табличный метод не предлагать! sm.gif


Сообщение отредактировал Russky - Dec 10 2014, 15:56
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
amaora
сообщение Dec 16 2014, 10:58
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778



Если элементы матрицы поворота посчитать как настоящие sin/cos без приближения, то погрешности будут не намного больше чем в лобовом способе с вызовом sin/cos на каждом такте. Ничего не расползется, нормирование для этого есть.

Если же считать sin(x) ~ x, то будет погрешность задания частоты и как следствие уход фазы. Чем крупнее шаг, тем больше погрешность. По амплитуде погрешность постоянная и небольшая, и тоже зависит от шага.

Да и sin/cos всегда согласованы по фазе в отличии от методов раздельной их генерации.
Go to the top of the page
 
+Quote Post
_pv
сообщение Dec 16 2014, 11:05
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(amaora @ Dec 16 2014, 16:58) *
Если элементы матрицы поворота посчитать как настоящие sin/cos без приближения, то погрешности будут не намного больше чем в лобовом способе с вызовом sin/cos на каждом такте. Ничего не расползется, нормирование для этого есть.
Если же считать sin(x) ~ x, то будет погрешность задания частоты и как следствие уход фазы. Чем крупнее шаг, тем больше погрешность. По амплитуде погрешность постоянная и небольшая, и тоже зависит от шага.
Да и sin/cos всегда согласованы по фазе в отличии от методов раздельной их генерации.

расползётся причем синус от косинуса по фазе тоже, так как ошибка будет копиться на каждом шаге.
при раздельной генерации косинус можно получить просто как производную от синуса.
Go to the top of the page
 
+Quote Post
amaora
сообщение Dec 16 2014, 11:33
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778



Цитата(_pv @ Dec 16 2014, 14:05) *
расползётся причем синус от косинуса по фазе тоже, так как ошибка будет копиться на каждом шаге.
при раздельной генерации косинус можно получить просто как производную от синуса.

Компоненты вектора на единичной окружности дают всегда согласованные sin/cos, как они могут расползтись по фазе между собой? Удержание на единичной окружности обеспечивает нормирование. Итого дрейф может быть только по общей фазе/частоте, ну и амплитуда может стабилизироваться с небольшим смещением нормы от единицы.

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

У меня не звенит на бесконечном времени. Да и частоту тоже перестраивать пробовал в реальном времени.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Russky   Как реализовать генератор квадратуры   Dec 10 2014, 15:43
- - Lmx2315   QUOTE (Russky @ Dec 10 2014, 18:43) Особе...   Dec 10 2014, 17:00
- - des00   Цитата(Russky @ Dec 10 2014, 22:43) Особе...   Dec 10 2014, 17:43
|- - Fat Robot   Это прекрасно!! хороший синус. будет всегд...   Dec 10 2014, 17:54
|- - des00   Цитата(Fat Robot @ Dec 11 2014, 01:54) Эт...   Dec 10 2014, 18:53
|- - andyp   Цитата(Fat Robot @ Dec 10 2014, 20:54) Чт...   Dec 11 2014, 14:06
- - thermit   c(n)=cos(2*pi*f0/sf*n) s(n)=k*c(n)+c(n-1)-k*s(n-1...   Dec 10 2014, 18:17
- - blackfin   Цитата(Fat Robot @ Dec 10 2014, 21:54) Эт...   Dec 10 2014, 18:29
- - ViKo   Ну, конечно, CORDIC. Какие могут быть сомнения?...   Dec 10 2014, 19:33
|- - Fat Robot   На вычислительных платформах, на которых цена унож...   Dec 10 2014, 20:35
- - Russky   Поясню. Есть методы генерирования синусоидально си...   Dec 11 2014, 11:53
|- - blackfin   Цитата(Russky @ Dec 11 2014, 14:53) Но в ...   Dec 11 2014, 12:48
|- - Russky   Цитата(blackfin @ Dec 11 2014, 16:48) Шко...   Dec 11 2014, 18:34
|- - thermit   Цитата(Russky @ Dec 11 2014, 21:34) Спаси...   Dec 11 2014, 20:59
|- - blackfin   Цитата(thermit @ Dec 11 2014, 23:59) кто/...   Dec 12 2014, 02:22
||- - thermit   Цитата(blackfin @ Dec 12 2014, 05:22) А в...   Dec 12 2014, 06:32
|- - Fat Robot   Как вы оцениваете, при таком подходе через сколько...   Dec 12 2014, 10:35
|- - thermit   Цитата(Fat Robot @ Dec 12 2014, 14:35) Ка...   Dec 12 2014, 11:11
|- - andyp   Цитата(thermit @ Dec 12 2014, 14:11) А дл...   Dec 12 2014, 11:39
|- - Russky   Цитата(thermit @ Dec 12 2014, 15:11) Ника...   Dec 15 2014, 14:07
|- - Fat Robot   грустный смайлик.. Цитата(Russky @ Dec 15 20...   Dec 15 2014, 14:51
|- - thermit   Цитата(Russky @ Dec 15 2014, 18:07) Тогда...   Dec 15 2014, 14:59
|- - blackfin   Цитата(Russky @ Dec 15 2014, 18:07) Т.е. ...   Dec 15 2014, 15:12
|- - Russky   Цитата(blackfin @ Dec 15 2014, 19:12) И н...   Dec 15 2014, 16:31
- - stealth-coder   Цитата(Fat Robot @ Dec 11 2014, 00:35) На...   Dec 11 2014, 20:30
|- - Fat Robot   Тут всё на веру, конечно. Не ставя под сомнение кв...   Dec 11 2014, 20:53
- - stealth-coder   Цитата(Fat Robot @ Dec 12 2014, 00:53) Ту...   Dec 11 2014, 21:09
- - amaora   Умножать на матрицу поворота и нормировать на кажд...   Dec 15 2014, 16:42
|- - _pv   Цитата(amaora @ Dec 15 2014, 22:42) Умнож...   Dec 15 2014, 17:57
|- - thermit   Цитата(_pv @ Dec 15 2014, 20:57) так ошиб...   Dec 15 2014, 21:45
|- - _pv   Цитата(thermit @ Dec 16 2014, 03:45) гы, ...   Dec 15 2014, 22:31
|- - thermit   Цитата(_pv @ Dec 16 2014, 01:31) чукча - ...   Dec 15 2014, 22:50
|- - Fat Robot   Вы сами себе противоречите: Чтобы генератор был ...   Dec 15 2014, 22:53
|- - thermit   Цитата(Fat Robot @ Dec 16 2014, 01:53) Вы...   Dec 15 2014, 23:46
||- - Fat Robot   Я посчитал. Устойчивость действительного генератор...   Dec 16 2014, 08:31
||- - _pv   Цитата(Fat Robot @ Dec 16 2014, 14:31) Хо...   Dec 16 2014, 08:56
||- - Fat Robot   .   Dec 16 2014, 09:30
||- - _pv   Цитата(Fat Robot @ Dec 16 2014, 15:30) Ва...   Dec 16 2014, 09:49
||- - Fat Robot   Конечно. Даже в вашем простом примере в диапазоне ...   Dec 16 2014, 11:55
||- - _pv   Цитата(Fat Robot @ Dec 16 2014, 17:55) Ко...   Dec 16 2014, 12:13
|- - _pv   Цитата(Fat Robot @ Dec 16 2014, 04:53) Вы...   Dec 16 2014, 08:11
|- - thermit   Цитата(_pv @ Dec 16 2014, 12:11) с целочи...   Dec 16 2014, 11:36
|- - _pv   Цитата(thermit @ Dec 16 2014, 17:36) а он...   Dec 16 2014, 11:55
|- - thermit   Цитата(_pv @ Dec 16 2014, 15:55) а что же...   Dec 16 2014, 13:05
|- - _pv   Цитата(thermit @ Dec 16 2014, 19:05) Да. ...   Dec 16 2014, 13:20
- - Russky   Что-то мы скатились на обсуждение ерунды. Ситуаци...   Dec 16 2014, 11:08
|- - _pv   Цитата(Russky @ Dec 16 2014, 17:08) В общ...   Dec 16 2014, 11:25
|- - Russky   Цитата(_pv @ Dec 16 2014, 15:25) генерато...   Dec 16 2014, 12:22
|- - andyp   Цитата(Russky @ Dec 16 2014, 15:22) Нет. ...   Dec 16 2014, 16:12
- - mihalevski   Цитата(Russky @ Dec 10 2014, 22:43) Всем ...   Jan 6 2015, 14:18


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

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 16:34
Рейтинг@Mail.ru


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