|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 2:27 pm
| Автор |
Съобщение |
|
emilvtc
Ранг: Форумен бог
Регистриран на: Вто Фев 06, 2007 8:44 pm Мнения: 3175 Местоположение: Пловдив
|
 Re: DDS генератор
Всъщност продължавам да се интересувам от периодични сигнали. Като "зацикля" плейването на въпросния патрърн не се ли получава периодичен сигнал? Разните вибрации например по един автомобилен двигател са добър пример за периодичен нехармоничен сигнал.
|
| Пон Апр 07, 2014 7:47 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
 Re: DDS генератор
DDS генератора е съставен от две части: фазов генератор и конвертор на фазата към физическия сигнал. Модела на периодическия сигнал се пази в таблица и конвертора на фазата взема изчислената от фазовия генератор стойност като индекс, за да адресира модела от таблицата. Тъй като тази операция се повтаря непрекъсното, то може да се направи така, че с изчислените от CPU-то фази ( т.е. фазовия генератор ) да се адресира таблицата и резултата да се запазва в RAM памет за общо два периода напред на повторение на таблицата, а DMA канала да се използва само да зарежда вече изчислените стойности от CPU-то в изходния DAC. Генерациите ще тръгнат с два периода на повторение на таблицата по-късно, но оттук натам всичко ще равномерно. По този начин, когато CPU-то генерира фазите на първия/втория буфер, DMA ще зарежда в изходния DAC стойносттите на втория/първия буфер, т.е. CPU ще е винаги един напред в изчисленията спрямо DMA канала, а като резултат ще имаш по-висок Fclk, а оттам и по висока Fdds_out. Взе ми думите от устата  , точно поради периодичността на сигнала продължавам да мисля, че DDS ще ти свърши перфектна работа, с равномерна стъпка на промяна на честотата в целия обхват. Недостатък е това което bateAz обясни, че ще имаш jitter: Тази грешка обаче можеш спокойно да я пренебрегнеш, примерно при Fclk=25MHz ще имаш грешка от 40ns. Друг пример за нехармоничен периодичен сигнал е електрокардиограмата. Тя също много добре се синтезира със DDS.
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Пон Апр 07, 2014 9:02 pm |
|
 |
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 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 |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
 Re: DDS генератор
Има значение дали е 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 генератор
Не Миро, няма никакво значение.
|
| Вто Апр 08, 2014 7:54 am |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
 Re: DDS генератор
Ако ще пишем глупости, нищо няма значение... Няколко пъти обясних, че при дискретизация има СТРОГО изискване за честотата на семплиране. Няма, и според Котелников и Найкуист, не може да съществува АЦП, което да мери сигнали с по-висока честотата от 1/2 семпъл рейта му. Но теоремата на Котелников важи САМО за дискретизация. При DA преобразуване няма такива строги правила. На практика ВСЕКИ ЦАП не само че може ами и шуми доста над честотата на семплиране. Така че в зхода на един ЦАП може да има по-високи или по-ниски, изобщо всякакви честоти и единствената връзка с честотата на семплиране е да има "някаква" такава. Много моля отворете си учебниците и си преговорете нещата за Котелников, Найкуист, Шанон и т.н. И ако някъде прочетете нещо да са написали на тема DA елате и пишете тук.
|
| Вто Апр 08, 2014 9:09 am |
|
 |
|
741
Ранг: Форумен бог
Регистриран на: Вто Сеп 15, 2009 10:44 am Мнения: 1034
|
 Re: DDS генератор
Мисля, че почвам да се ориентирам в тезата на Миро. При синтезирането на произволен сигнал има едно подмножество частни случаи със стръмни фронтове, които удобно съвпадат с наличните клокове в системата. За тези частни случаи страничните продукти на дискретизацията не пречат, а помагат за довъзстановяване на оригиналната форма на сигнала и в тези случаи филтриране в таблицата или в изхода на цап-а ще влоши нещата. Оттук стига до извода, че филтрирането пречи и не трябва да се прави. Пък че има друго доста по-голямо подмножество сигнали, при които страничните продукти доомазват допълнително изхода и отдалечават полученото от оригинала - това не го коментира.
Миро, ако друго си имал предвид, вземи го напиши в няколко ясни изречения, щото до момента чета как нещо си нямало да стане и разни декларации като тази, че ддс-то примерно ще се издъни при сигнал с безкраен спектър. Не че твърдението за безкрайния спектър е грешно, ама важи за всяка реална система, не само за ддс.
Колкото за разликите в преобразуването при цап и ацп - абсолютно никакво значение няма дали произволния сигнал ще го дискретизираш с ацп, дали ще му синтезираш апроксимация със софтуер или ще му нарисуваш формата на милиметрова харития и ще му вкараш точките в таблица на ръка. Ако не спазваш правилото да му изрежеш спектъра до Fs/2 преди дискретизацията и да отфилтрираш продуктите от дискретизацията след обратното преобразуване - и в трите случая ще получиш една и съща боза в изхода на цап-а, освен в частните случаи, дето ги споменах по-горе. Пък да проектираш система за произволни сигнали и да я омажеш, за да работи добре за частни случаи и да се дъни в общия случай - това трудно може да мине за добро решение.
|
| Вто Апр 08, 2014 9:16 am |
|
 |
|
IvoDimitroff
Ранг: Минаващ
Регистриран на: Пет Апр 20, 2012 2:28 pm Мнения: 24
|
 Re: DDS генератор
До един момент имаше забавно невежество и неразбиране, вече се замислям сериозно, и ми става тъжно, и малко плашещо.
|
| Вто Апр 08, 2014 9:47 am |
|
 |
|
emilvtc
Ранг: Форумен бог
Регистриран на: Вто Фев 06, 2007 8:44 pm Мнения: 3175 Местоположение: Пловдив
|
 Re: DDS генератор
Добре де, замислете се над примерите дадени от ДедоБоре и Миро. В крайна сметка искам като дискретизирам един сигнал с АЦП с даден семпъл рейт и после го плейна с ДАК със същия семпъл рейт примерно - на изхода да получа ако не същия, то много близък до формата на истинския сигнал. Всякакви филтри и др. подобни ЩЕ изкривят линейно изходния сигнал. За да се компенсира въздействието им ще трябва да направя математическа корекция на семплираните от АЦП данни преди да ги плейна да дак-а, като тази корекция трябва да отстрани линейните изкривявания на филтрите в изхода на ДАК-а (под линейни разбирам амплитудни и фазови).
В случая говорим за семплиране МНОГО по-голямо от 2 пъти периода на входния сигнал. (то при честота на семплиране САМО 2 пъти по-голяма от тази на сигнала - за каква форма на нехармоничен сигнал въобще може да се говори ?!?)
¶, можеш ли да дадеш повече инфо как може примерно да се възстанови EKG сигнал (ако правилно съм те разбрал) по същия начин с ДДС, както примерно се възстановява синосуидата в хардуерните ДДС-и? Вместо таблицата с точки на синусоидата ще се използва таблицата с патърна на нехармоничния сигнал ли ? Явно пропускам и ми се губи нещо съществено, защото не мога да си представя как би станало това ...
|
| Вто Апр 08, 2014 10:11 am |
|
 |
|
Pif
Ранг: Форумен бог
Регистриран на: Чет Сеп 26, 2013 2:24 pm Мнения: 1765
|
 Re: DDS генератор
Цялата тема не се различава много от седянката пред блока и как бабите коментират поредния епизод за турската сапунка. Много прост експеримент: Процесор - генерира от 100 херца до 100 килохерца. Потенциометър на изхода. Изхода на потенциометъра във входа на звуковата карта на компютъра. Софтуер - препоръчвам куул едит про. Той показва реално точките и ги свързва с кривата с която ще ги свърже изходния филтър на ЦАП-а. След това осцилоскоп. Честотата на семплиране се знае. Сигнала от процесора е "доста" правоъгълен. Напоследък процесорите гонят някакви малко наносекундни фронтове. Модерните звукови карти нямат много аналогови филтри така, че експеримента ще бъде достоверен.
|
| Вто Апр 08, 2014 10:54 am |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
 Re: DDS генератор
Точно така! Има сигнали при които филтрирането помага и такива, при които пречи. И тъй като тази тема от самото начало е за "произволни" сигнали не се знае какъв ще е резултататът от филтрирането. Освен ако както казваш по-долу не си отфилтрирате цифровия сигнал, само че това ви го обясних ще е друго осиране, защото ще паднете на супер ниски честоти. При което зациклихме, щото батето и още няколко човека почнахте да обяснявате как няма нужда от големи разлики в честотите, филтърът щял да оправи нещата. И така се въртим в кръг... Не знам как да го кажа простичко... Значи първо зависи какъв е цифровият сигнал. Тук е другият спор с колегите на Котелников, които си мислят че цифровия сигнал задължително трябва да е сигнал с краен спектър. Не. Не е задължително. Изобщо няма никакви ограничения дали и какво ще представлява един цифров сигнал, дали ще е с компресия, дали без, дали ще е с едно или друго кодиране (честота, амплитуда, миризма или каквото се сетите). И не е речено, че ако не спазва тия или ония условия не може да се преобразува до аналогов.. Все едно да кажеш на един музикант, че трябва да си филтрира нотите, щото иначе няма да излезе звук. Все пак ако използвате ДДС като преобразовател, то или трябва спектърът да е краен, за да можете да филтрирате, или ако не филтрирате трябва да се ограничите само в определени стойности на стъпката, щото иначе ДДС-то ви вкарва шум. С две думи искам да ви кажа, че ДДС хич, ама хич не е най-добрия метод за преобразуване, когато говорим за произволен цифров сигнал. Един патерн генератор с PLL спестява всичките тия главоболия.
|
| Вто Апр 08, 2014 10:57 am |
|
 |
|
741
Ранг: Форумен бог
Регистриран на: Вто Сеп 15, 2009 10:44 am Мнения: 1034
|
 Re: DDS генератор
Аз не видях някъде да се търси решение само за цифрови сигнали. И като казвам, че ддс-то е добро решение за периодичен сигнал, то не е защото познавам всички възможни решения, а защото това вади близко до максималното според теорията. Като става въпрос за произволен сигнал, аз не бих си губил времето да се надлъгвам с Котелников  Значи, каквато и методика да се избере, при положение, че става въпрос за общия случай, а не за Мировите частни случаи, спектърът на сигнала априори трябва да е ограничен до Fs/2. При положение, че смъкваш сигнала с АЦП, при теб това ограничение ще се случи автоматично още при семплирането. Ако ще се плейва със същата скорост, ддс не ти трябва. Просто изкарваш буфера към цап-а със същата честота. Силата на ддс-то е във възможността да изкараш формата на периодичен сигнал с практически всякаква честота, естествено като остава ограничението за спектъра до Fs/2. За да го направиш, след като имаш определен брой точки от формата на един период на сигнала, по тях трябва да попълниш таблицата с 30к или колкото там решиш. Дали ще го правиш като вземеш няколко хиляди периода на сигнала и от тях ще сглобиш един, дали ще е с апроксимация или по друг начин, това не е съществено за ддс. Ако ще плейваш със същата скорост или по-ниска, допълнителна обработка по таблицата не ти трябва. Ако искаш и по-висока скорост, трябва да отфилтрираш числата в таблицата така, че при най-високата скорост на плейване спектърът да остане под Fs/2. Това ограничение се избягва елементарно, като просто семплираш с ацп-то на максималната скорост, с която ще плейваш. Като има таблицата, остава да си организираш фазовия акумулатор с каквато дължина прецениш (колкото по-дълъг, толкова по-фино ще можеш да мениш честотата), да го ъпдейтваш на всеки клок на Fs с каквато стъпка се получи за желаната честота, и да изкарваш към цап-а каквото има в таблицата за съответната фаза. Полученият семпъл ще е с фазова грешка не повече от 1/N спрямо кривата в таблицата (N са броят точки в таблицата), което при 10000 елемента примерно е нищо. Грешката в амплитудата ти зависи от разрядността и точността на цап-а и евентуално ацп-то. Изходът на цап-а естествено се филтрира с добър нч филтър от висок ред на Fs/2, за да се изчистят допълнителните продукти от цифрово-аналоговото преобразуване. Тъй като сме взели мерки в таблицата да няма компоненти над тази честота, филтърът не пречи на полезния сигнал. В най-общи линии, това е.
|
| Вто Апр 08, 2014 12:50 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
 Re: DDS генератор
Няма никаква теория тука. Просто ддс е решение, когато нямаш точен клок да го замениш с някакъв, а разликата да разпръснеш под формата на фазови грешки. И тези грешки са в спектъра доста под Fs/2 така че не намесвай стандартното филтриране...
|
| Вто Апр 08, 2014 1:54 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
 Re: DDS генератор
|
| Вто Апр 08, 2014 2:05 pm |
|
 |
|
741
Ранг: Форумен бог
Регистриран на: Вто Сеп 15, 2009 10:44 am Мнения: 1034
|
 Re: DDS генератор
Хайде пак същото. Как така ще очакваш да имаш точен клок за произволен сигнал? И да, има фазова грешка, горе я писах колко е. В таблица с 10000 елемента за произволна фаза имаш таблична стойност с не повече от 0.005% фазова грешка, най-много на такова отстояние ти е най-близката известна точка от кривата. Или мислиш, че като попълваш твоята таблица няма да вкарваш фазова грешка? Грешката се мери спрямо това, което са ти дали на синтезираш, а не спрямо това, което вече си набутал в таблицата или буфера. Иначе най-лесно е да декларираш, че каквото е на твоя изход, това е трябвало да бъде синтезирано и тогава никакви други методи няма да бият твоя.
|
| Вто Апр 08, 2014 2:09 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 7 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|