Отговори на тема  [ 128 мнения ]  Отиди на страница Предишна  1 ... 4, 5, 6, 7, 8, 9  Следваща
DDS генератор 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 06, 2007 8:44 pm
Мнения: 3175
Местоположение: Пловдив
Мнение Re: DDS генератор
741 написа:
ДедоБоре написа:
емо пита именно за патерн генератор, какви фуриета ви бръмчат из главите?
името на темата е подвеждащо (DDS).

Емо доуточнява концепцията в движение. Някъде по-напред беше писал това:
emilvtc написа:
Така е, но интереса ми не е толкова към синусоидата и вариантите и за модулация, колкото до плейването на периодични сигнали с произволен патърн.

Днес пък се оказа, че не говори за периодични сигнали.


Всъщност продължавам да се интересувам от периодични сигнали. Като "зацикля" плейването на въпросния патрърн не се ли получава периодичен сигнал?

Разните вибрации например по един автомобилен двигател са добър пример за периодичен нехармоничен сигнал.


Пон Апр 07, 2014 7:47 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение Re: DDS генератор
bobihot написа:
Не разбрах защо е двоен буфер? Нали ще се генерира циклично повтарящ се образец. При положение, че данните ще се изкарват на близка до максималната за процесора скорост и ще товарят шината, не виждам как процесора ще смята новата част, та дори и да е на асемблер?

DDS генератора е съставен от две части: фазов генератор и конвертор на фазата към физическия сигнал. Модела на периодическия сигнал се пази в таблица и конвертора на фазата взема изчислената от фазовия генератор стойност като индекс, за да адресира модела от таблицата. Тъй като тази операция се повтаря непрекъсното, то може да се направи така, че с изчислените от CPU-то фази ( т.е. фазовия генератор ) да се адресира таблицата и резултата да се запазва в RAM памет за общо два периода напред на повторение на таблицата, а DMA канала да се използва само да зарежда вече изчислените стойности от CPU-то в изходния DAC. Генерациите ще тръгнат с два периода на повторение на таблицата по-късно, но оттук натам всичко ще равномерно. По този начин, когато CPU-то генерира фазите на първия/втория буфер, DMA ще зарежда в изходния DAC стойносттите на втория/първия буфер, т.е. CPU ще е винаги един напред в изчисленията спрямо DMA канала, а като резултат ще имаш по-висок Fclk, а оттам и по висока Fdds_out.

emilvtc написа:
Всъщност продължавам да се интересувам от периодични сигнали. Като "зацикля" плейването на въпросния патрърн не се ли получава периодичен сигнал?

Разните вибрации например по един автомобилен двигател са добър пример за периодичен нехармоничен сигнал.

Взе ми думите от устата :D , точно поради периодичността на сигнала продължавам да мисля, че DDS ще ти свърши перфектна работа, с равномерна стъпка на промяна на честотата в целия обхват. Недостатък е това което bateAz обясни, че ще имаш jitter:
Цитат:
... the output of the direct digital
synthesizer can occur only
at a clock edge. If the output
frequency is not a direct submultiple
of the clock, a phase
error between the ideal output
and the actual output slowly
increases (or decreases) until it
reaches one clock period, at
which time the error returns to
zero and starts to increase (or
decrease) again

Тази грешка обаче можеш спокойно да я пренебрегнеш, примерно при Fclk=25MHz ще имаш грешка от 40ns.

Друг пример за нехармоничен периодичен сигнал е електрокардиограмата. Тя също много добре се синтезира със DDS.

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Пон Апр 07, 2014 9:02 pm
Профил WWW
Online
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение Re: DDS генератор
можеш ли набързо на нахвърляш в някой симулатор спектър (FFT) на следните перидочно (на 1сек) повтарящи се сигнали:
1 - правоъгълник с коефициент на запълване 50%
2 - правоъгълник, с пик от 1мс
3 - правоъгълник с пик от 700мс
4 - един пик от 1мс на условната фаза 0 и един пик от 89мс на 635мс след него
5 - 50 пика с различна продължителност и на произволно избрани места.

направи го за идеални праоъгълници, с идеален АЦП и ЦАП, при честота на дискетизация 2Hz и произволна разрядност.

след това направи обратно фурие и покажи регенерираните сигнали.


Пон Апр 07, 2014 9:13 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11265
Местоположение: Добрич
Мнение Re: DDS генератор
IvoDimitroff написа:
Разбира се, че няма нищо общо.
Общото е с каква точност се извършва преобразованието.
Ако честотата на преобразуване е 0 ще има постоянен сигнал, с увеличаването и ще има сигнал с огромни изкривявания, когато честотата стане x2 над тази на първия хармоник щe e с точност до първата хармонична честота..... когато стане х2 на най-високата ще има преобразуване БЕЗ ЗАГУБИ. При това без значение дали AD или DA.


Има значение дали е AD или DA.
Пак ще дам примера с правоъгълен синал и неговия безкраен спектър. Няма нужда да имаме 2х безкрайно висока честота на преобразуване. Тук ще направя уточнението, че Найкуист-Котелников не разглеждат несъвършенствата на преобразователя, демек това което казват важи и за идеално АЦП. В случая с ЦАП също е ясно че няма идеален, но се абстрахираме от качествата на самия преобразувател. При това условие за да постигнем преобразуване "без загуби, ни трябва честотата на преобразуване да е 2*N пъти по честотата на самия сигнал (където N e цяло число). Не е нужно да е 2 пъти най-високата съставна, която както вече уточнихме за правоъгълен импулс е безкрайност.
За сравнение при AD преобразуване, няма значение какъв е сигнала и неговия период, винаги ни трябва 2х най-високата му съставка (ако е безкрайност духаме супата).
Другата съществена разлика е, че при AD важи правилото на Мечо пух, колкото повече, толкова повече...
Докато при DA посредством DDS не важи това правило. Примерно 2343243.324342 по-висока честота може да е по-зле отколкото "само" 2.00000(0) пъти по-висока.


Пон Апр 07, 2014 9:21 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Дек 16, 2005 3:50 pm
Мнения: 1260
Местоположение: София
Мнение Re: DDS генератор
miro_atc написа:
Има значение дали е AD или DA.

Не Миро, няма никакво значение.


Вто Апр 08, 2014 7:54 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11265
Местоположение: Добрич
Мнение Re: DDS генератор
Ицо написа:
miro_atc написа:
Има значение дали е AD или DA.

Не Миро, няма никакво значение.


Ако ще пишем глупости, нищо няма значение...

Няколко пъти обясних, че при дискретизация има СТРОГО изискване за честотата на семплиране. Няма, и според Котелников и Найкуист, не може да съществува АЦП, което да мери сигнали с по-висока честотата от 1/2 семпъл рейта му.
Но теоремата на Котелников важи САМО за дискретизация. При DA преобразуване няма такива строги правила. На практика ВСЕКИ ЦАП не само че може ами и шуми доста над честотата на семплиране. Така че в зхода на един ЦАП може да има по-високи или по-ниски, изобщо всякакви честоти и единствената връзка с честотата на семплиране е да има "някаква" такава.

Много моля отворете си учебниците и си преговорете нещата за Котелников, Найкуист, Шанон и т.н. И ако някъде прочетете нещо да са написали на тема DA елате и пишете тук.


Вто Апр 08, 2014 9:09 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Сеп 15, 2009 10:44 am
Мнения: 1034
Мнение Re: DDS генератор
Мисля, че почвам да се ориентирам в тезата на Миро. При синтезирането на произволен сигнал има едно подмножество частни случаи със стръмни фронтове, които удобно съвпадат с наличните клокове в системата. За тези частни случаи страничните продукти на дискретизацията не пречат, а помагат за довъзстановяване на оригиналната форма на сигнала и в тези случаи филтриране в таблицата или в изхода на цап-а ще влоши нещата. Оттук стига до извода, че филтрирането пречи и не трябва да се прави. Пък че има друго доста по-голямо подмножество сигнали, при които страничните продукти доомазват допълнително изхода и отдалечават полученото от оригинала - това не го коментира.

Миро, ако друго си имал предвид, вземи го напиши в няколко ясни изречения, щото до момента чета как нещо си нямало да стане и разни декларации като тази, че ддс-то примерно ще се издъни при сигнал с безкраен спектър. Не че твърдението за безкрайния спектър е грешно, ама важи за всяка реална система, не само за ддс.

Колкото за разликите в преобразуването при цап и ацп - абсолютно никакво значение няма дали произволния сигнал ще го дискретизираш с ацп, дали ще му синтезираш апроксимация със софтуер или ще му нарисуваш формата на милиметрова харития и ще му вкараш точките в таблица на ръка. Ако не спазваш правилото да му изрежеш спектъра до Fs/2 преди дискретизацията и да отфилтрираш продуктите от дискретизацията след обратното преобразуване - и в трите случая ще получиш една и съща боза в изхода на цап-а, освен в частните случаи, дето ги споменах по-горе. Пък да проектираш система за произволни сигнали и да я омажеш, за да работи добре за частни случаи и да се дъни в общия случай - това трудно може да мине за добро решение.


Вто Апр 08, 2014 9:16 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Апр 20, 2012 2:28 pm
Мнения: 24
Мнение Re: DDS генератор
До един момент имаше забавно невежество и неразбиране, вече се замислям сериозно, и ми става тъжно, и малко плашещо.


Вто Апр 08, 2014 9:47 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 06, 2007 8:44 pm
Мнения: 3175
Местоположение: Пловдив
Мнение Re: DDS генератор
Добре де, замислете се над примерите дадени от ДедоБоре и Миро. В крайна сметка искам като дискретизирам един сигнал с АЦП с даден семпъл рейт и после го плейна с ДАК със същия семпъл рейт примерно - на изхода да получа ако не същия, то много близък до формата на истинския сигнал.
Всякакви филтри и др. подобни ЩЕ изкривят линейно изходния сигнал. За да се компенсира въздействието им ще трябва да направя математическа корекция на семплираните от АЦП данни преди да ги плейна да дак-а, като тази корекция трябва да отстрани линейните изкривявания на филтрите в изхода на ДАК-а (под линейни разбирам амплитудни и фазови).

В случая говорим за семплиране МНОГО по-голямо от 2 пъти периода на входния сигнал. (то при честота на семплиране САМО 2 пъти по-голяма от тази на сигнала - за каква форма на нехармоничен сигнал въобще може да се говори ?!?)

¶, можеш ли да дадеш повече инфо как може примерно да се възстанови EKG сигнал (ако правилно съм те разбрал) по същия начин с ДДС, както примерно се възстановява синосуидата в хардуерните ДДС-и? Вместо таблицата с точки на синусоидата ще се използва таблицата с патърна на нехармоничния сигнал ли ? Явно пропускам и ми се губи нещо съществено, защото не мога да си представя как би станало това ...


Вто Апр 08, 2014 10:11 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Сеп 26, 2013 2:24 pm
Мнения: 1765
Мнение Re: DDS генератор
Цялата тема не се различава много от седянката пред блока и как бабите коментират поредния епизод за турската сапунка.
Много прост експеримент:
Процесор - генерира от 100 херца до 100 килохерца. Потенциометър на изхода. Изхода на потенциометъра във входа на звуковата карта на компютъра. Софтуер - препоръчвам куул едит про. Той показва реално точките и ги свързва с кривата с която ще ги свърже изходния филтър на ЦАП-а. След това осцилоскоп.
Честотата на семплиране се знае. Сигнала от процесора е "доста" правоъгълен. Напоследък процесорите гонят някакви малко наносекундни фронтове.
Модерните звукови карти нямат много аналогови филтри така, че експеримента ще бъде достоверен.


Вто Апр 08, 2014 10:54 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11265
Местоположение: Добрич
Мнение Re: DDS генератор
741 написа:
Мисля, че почвам да се ориентирам в тезата на Миро. При синтезирането на произволен сигнал има едно подмножество частни случаи със стръмни фронтове, които удобно съвпадат с наличните клокове в системата. За тези частни случаи страничните продукти на дискретизацията не пречат, а помагат за довъзстановяване на оригиналната форма на сигнала и в тези случаи филтриране в таблицата или в изхода на цап-а ще влоши нещата. Оттук стига до извода, че филтрирането пречи и не трябва да се прави. Пък че има друго доста по-голямо подмножество сигнали, при които страничните продукти доомазват допълнително изхода и отдалечават полученото от оригинала - това не го коментира.


Точно така!
Има сигнали при които филтрирането помага и такива, при които пречи. И тъй като тази тема от самото начало е за "произволни" сигнали не се знае какъв ще е резултататът от филтрирането. Освен ако както казваш по-долу не си отфилтрирате цифровия сигнал, само че това ви го обясних ще е друго осиране, защото ще паднете на супер ниски честоти. При което зациклихме, щото батето и още няколко човека почнахте да обяснявате как няма нужда от големи разлики в честотите, филтърът щял да оправи нещата. И така се въртим в кръг...

Не знам как да го кажа простичко...
Значи първо зависи какъв е цифровият сигнал. Тук е другият спор с колегите на Котелников, които си мислят че цифровия сигнал задължително трябва да е сигнал с краен спектър. Не. Не е задължително. Изобщо няма никакви ограничения дали и какво ще представлява един цифров сигнал, дали ще е с компресия, дали без, дали ще е с едно или друго кодиране (честота, амплитуда, миризма или каквото се сетите). И не е речено, че ако не спазва тия или ония условия не може да се преобразува до аналогов.. Все едно да кажеш на един музикант, че трябва да си филтрира нотите, щото иначе няма да излезе звук.

Все пак ако използвате ДДС като преобразовател, то или трябва спектърът да е краен, за да можете да филтрирате, или ако не филтрирате трябва да се ограничите само в определени стойности на стъпката, щото иначе ДДС-то ви вкарва шум. С две думи искам да ви кажа, че ДДС хич, ама хич не е най-добрия метод за преобразуване, когато говорим за произволен цифров сигнал. Един патерн генератор с PLL спестява всичките тия главоболия.


Вто Апр 08, 2014 10:57 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Сеп 15, 2009 10:44 am
Мнения: 1034
Мнение Re: DDS генератор
miro_atc написа:
С две думи искам да ви кажа, че ДДС хич, ама хич не е най-добрия метод за преобразуване, когато говорим за произволен цифров сигнал. Един патерн генератор с PLL спестява всичките тия главоболия.

Аз не видях някъде да се търси решение само за цифрови сигнали. И като казвам, че ддс-то е добро решение за периодичен сигнал, то не е защото познавам всички възможни решения, а защото това вади близко до максималното според теорията. Като става въпрос за произволен сигнал, аз не бих си губил времето да се надлъгвам с Котелников :)
emilvtc написа:
¶, можеш ли да дадеш повече инфо как може примерно да се възстанови EKG сигнал (ако правилно съм те разбрал) по същия начин с ДДС, както примерно се възстановява синосуидата в хардуерните ДДС-и? Вместо таблицата с точки на синусоидата ще се използва таблицата с патърна на нехармоничния сигнал ли ? Явно пропускам и ми се губи нещо съществено, защото не мога да си представя как би станало това ...

Значи, каквато и методика да се избере, при положение, че става въпрос за общия случай, а не за Мировите частни случаи, спектърът на сигнала априори трябва да е ограничен до Fs/2. При положение, че смъкваш сигнала с АЦП, при теб това ограничение ще се случи автоматично още при семплирането. Ако ще се плейва със същата скорост, ддс не ти трябва. Просто изкарваш буфера към цап-а със същата честота. Силата на ддс-то е във възможността да изкараш формата на периодичен сигнал с практически всякаква честота, естествено като остава ограничението за спектъра до Fs/2. За да го направиш, след като имаш определен брой точки от формата на един период на сигнала, по тях трябва да попълниш таблицата с 30к или колкото там решиш. Дали ще го правиш като вземеш няколко хиляди периода на сигнала и от тях ще сглобиш един, дали ще е с апроксимация или по друг начин, това не е съществено за ддс. Ако ще плейваш със същата скорост или по-ниска, допълнителна обработка по таблицата не ти трябва. Ако искаш и по-висока скорост, трябва да отфилтрираш числата в таблицата така, че при най-високата скорост на плейване спектърът да остане под Fs/2. Това ограничение се избягва елементарно, като просто семплираш с ацп-то на максималната скорост, с която ще плейваш. Като има таблицата, остава да си организираш фазовия акумулатор с каквато дължина прецениш (колкото по-дълъг, толкова по-фино ще можеш да мениш честотата), да го ъпдейтваш на всеки клок на Fs с каквато стъпка се получи за желаната честота, и да изкарваш към цап-а каквото има в таблицата за съответната фаза. Полученият семпъл ще е с фазова грешка не повече от 1/N спрямо кривата в таблицата (N са броят точки в таблицата), което при 10000 елемента примерно е нищо. Грешката в амплитудата ти зависи от разрядността и точността на цап-а и евентуално ацп-то.
Изходът на цап-а естествено се филтрира с добър нч филтър от висок ред на Fs/2, за да се изчистят допълнителните продукти от цифрово-аналоговото преобразуване. Тъй като сме взели мерки в таблицата да няма компоненти над тази честота, филтърът не пречи на полезния сигнал.
В най-общи линии, това е.


Вто Апр 08, 2014 12:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11265
Местоположение: Добрич
Мнение Re: DDS генератор
741 написа:
И като казвам, че ддс-то е добро решение за периодичен сигнал, то не е защото познавам всички възможни решения, а защото това вади близко до максималното според теорията.


Няма никаква теория тука. Просто ддс е решение, когато нямаш точен клок да го замениш с някакъв, а разликата да разпръснеш под формата на фазови грешки. И тези грешки са в спектъра доста под Fs/2 така че не намесвай стандартното филтриране...


Вто Апр 08, 2014 1:54 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение Re: DDS генератор
miro_atc написа:
741 написа:
И като казвам, че ддс-то е добро решение за периодичен сигнал, то не е защото познавам всички възможни решения, а защото това вади близко до максималното според теорията.


Няма никаква теория тука. Просто ддс е решение, когато нямаш точен клок да го замениш с някакъв, а разликата да разпръснеш под формата на фазови грешки. И тези грешки са в спектъра доста под Fs/2 така че не намесвай стандартното филтриране...


Читать надо ...


Вто Апр 08, 2014 2:05 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Сеп 15, 2009 10:44 am
Мнения: 1034
Мнение Re: DDS генератор
miro_atc написа:
Хайде пак същото.
Как така ще очакваш да имаш точен клок за произволен сигнал? И да, има фазова грешка, горе я писах колко е. В таблица с 10000 елемента за произволна фаза имаш таблична стойност с не повече от 0.005% фазова грешка, най-много на такова отстояние ти е най-близката известна точка от кривата. Или мислиш, че като попълваш твоята таблица няма да вкарваш фазова грешка? Грешката се мери спрямо това, което са ти дали на синтезираш, а не спрямо това, което вече си набутал в таблицата или буфера.
Иначе най-лесно е да декларираш, че каквото е на твоя изход, това е трябвало да бъде синтезирано и тогава никакви други методи няма да бият твоя.


Вто Апр 08, 2014 2:09 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 128 мнения ]  Отиди на страница Предишна  1 ... 4, 5, 6, 7, 8, 9  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 8 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни