Конструирую тут потихоньку опенсорцовый DDS-синтезатор околозвуковых частот.
Не "ололо, посмотрите, я прикрутил к ардуине матрицу R-2R", а более серьёзное устройство, с возможностью синтеза сигнала произвольной формы и автоматического построения АЧХ.
Общая идея - МК1 (управляющий) -> МК2 (аккумулятор фазы + сумматор) -> статическое ОЗУ -> ЦАП.
И нужна помощь по ЦАП.
Что посоветуешь, радиач? Нужно: - только зарубежная (бо опенсорс); - только параллельная (чтобы можно было используя жёсткую логику передавать на неё отсчёты с ОЗУ); - миллиона два отсчётов в секунду; - 8 или 10 бит (если будет 16-будет вообще зашибись, поставлю две ОЗУшки); - такая, чтобы можно было в рознице (хотя-бы на заказ) достать; - корпус - предпочтителен SMD (печатаю платы фотолитографией), выводной - допустим, BGA - не предлагать.
есть контролер DRAM DAC может забирать семплы из DRAM с помощью DMA, если на время работы DMA DAC потушить всю остальную перефирию и усыпить ядро MCU то DAC будет работать без задержек практически на частоте шины (~50Mhz) можно с делителем
нахуя ты хочешь нагородить всё на рассыпухе когда есть такие ардуины? махарайщих дохуя?
>>191508 Ты наглухо отбитый? Какие синусы? Какие, нахуй, >миллиона два отсчётов в секунду ? Тебе для околозвука 44 кГц частоты дискретизации за глаза хватит. Ну, если сильно надо, можешь до 192 кГц поднять, если овердохуя точность требутся. Но выше уже смысла не имеет. Перечитай еще раз теорему Котельникова. Она относится к максимальной частоте в спектре сигнала. Спектре, Карл! По Фурье. Там по определению разложение сложного сигнала в ряд гармонических функций! Синусы у него, блять, ну охуеть.
>максимальной частоте в спектре >Карл! По Фурье >сложного сигнала в ряд гармонических функций
диваный теоретик?
берём пилу на частоте 10kHz оцифровываем её на частоте 20kHz в лучшем случае если применим апроксимацию будем наблюдать ибаную синусоиду на частоте 10kHz если без апроксимации будем наблюдать просто хуету
уважамый теоретик проведите эксперимент и объяните результат
>>191733 Уважаемый практик, я в проведении подобных идиотских экспериментов не нуждаюсь. А вот вы, видимо, лекции по данной теме таки просрали. Надеюсь, ты понимаешь, что спектр твоей десятикилогерцовой пилы бесконечно широк (либо ограничен по одному из общеизвестных критериев, но все равно весьма широк), и что при дискретизации на такой частоте и последующем восстановлении в спектре результирующего сигнала останется лишь одна гармоника — 10 кГц, ибо только она удовлетворяет требованиям теоремы? Все остальные, высшие составляющие в лучшем случае будут отфильтрованы ФНЧ, в худшем — размазаны муаровым узором по всему спектру.
И снова советую, перечитай еще раз определение теоремы Котельникова. Теорема Котельникова гласит, что частота дискретизации для данного сигнала должна быть в два раза больше, чем максимальная частота в спектре этого сигнала. Там про сигнал любой формы речь идет. Где ты там синусы увидел, болезный? И про десятикратный запас по частоте — пиздеж. Его нужно определять для каждого сигнала отдельно, хотя бы в соответствии с критериями ограничения спектра.
Я тебе и предлагаю выбирать частоту дискретизации с запасом. От 44 до 192 кГц вполне хватит для твоих игр с пилой (и большинством других сигналов). Но нахуя такой ебический-то, на целых два, а то и три порядка? Микропроцессор больше нечем нагружать?
>>191733 Ебать дебил! Ты - ОП? Тогда все вообще печально, ты же, блядь, основ не знаешь, а собрался сделать какой-то синтезатор, да еще и в опенсорц им насрать. Страшная тайна - переломы в твоей ебучей пиле, как и переломы в ебучем меандре, в идеальных условиях имеют бесконечное количество гармонических составляющих с бесконечным спектром и на практике, в принципе, не реализуемы, всегда есть лишь какой-то уровень приближения.
>>191759 >угадал чертяка Очень плохо. >воот именно поэтому чем больше частота дискретизации тем лучше и нет предела совершенству Есть предел совершенству. И этот предел определяется энергетическим критерием. Фактически, можно ограничить спектр твоей пилы примерно в области пятой-седьмой гармоники, при этом сохранится примерно 95% энергии сигнала. Частота дискретизации в таком случае, по Котельникову, для десятикилогерцовой пилы должна быть не менее 100-140 кГц. Вот и возьми 192 кГц, как раз с запасом. Этого достаточно для подавляющего большинства практических применений. Вот и не стоит добавлять себе работу (а конечному продукту — стоимость), и искать какое-то мифическое совершенство. А то найдешь ведь... >нет, небуду, сам читай это математическое говно Ты и матан на первом курсе не учил? Тебе же хуже. Так и помрешь непрошибаемым дураком, будешь бредить о каких-то там синусах, не зная основ того, с чем работаешь. >нет нужно больше Приведи доказательства. Только не надо опять хуиты пороть, докажи с точки зрения математической теории. >нечем Так возьми более дешевый процессор, или ардуинщик дохуя?
Вот, смотри прикрепленный пик. Спектр пилообразного импульса (считай, один период твоей десятикилогерцовой пилы) ограничен сверху частотой 96 кГц. Смотри, какая охуенная пила выходит после обратного преобразования! 96,8% энергии исходного сигнала сохранилось, и форма почти идеальная! Но нет, блджад! Тебе зачем-то нужен запас по частоте на два порядка! Нахуя?
У тебя органы слуха, в одной из популярных моделей, это набор ПФ, с очень плохим АЧХ, и не совсем линейным ФЧХ. Так, что ты там и не такие риплы слушаешь, и больше 22 кГц не воспринимаешь.
Теорема Котельникова (их вообще 4, кто не читал, просто принято объединять в одну) работает хорошо, для полосовых сигналов.
Если твой сигнал не полосовой - тебе нужно ограничить его по полосе НЧ фильтром. А далее, тебе верно сказали, 95% мощности, должно попадать в полосу пропускания, для восстановления сигнала.
>>192080 Чувак, анон >>191796 троллирует жи. А по поводу моделей органов слуха, не доставишь ли линк на инфу по ним? Хочу узнать поподробнее. >>192109 90-95% — общепризнанный энергетический критерий для эффективной ширины спектра сигнала.
алдошина и. "основы психоакустики", классический трактат на данное время. ЦИТАТА: можно считать, что периферическая слуховая система содержит банк полосовых фильтров ("слуховых фильтров") с нерекрывающимися полосами (Рис. 8). Их ширина свыше 1кГц составляет примерно 10-17% от центральной частоты (например, на частоте 1000 Гц ширина полосы составляет 160 Гц). С шириной слуховых фильтров связано известное понятие "критической полосы" - внутри этой полосы звуковая информация интегрируется слухом; при выходе за пределы этой полосы происходит скачкообразное изменение слуховых ощущений, и это подтверждается экспериментами по маскировке, громкости, фазовой чувствительности и др.
Вообще, советую читать литературу, профильную, очень помогает.
В литературе так пишут. например Журавлев В.И. Методы модуляции-демодуляции радиосигналов в системах передачи цифровых сообщений/В. И. Журавлев, Н. П. Трусевич. - 2005, хотя такую книгу трудно скачать.
Спектры они, к сожалению, обычно бесконечны. (тут вообще надо это строго доказать, и сказать что это не периодические и пр. пр.) Опытным путем, очень давно выяснили, что обычно 95 % энергии сигнала группируется в одной области, а остальные 5 % в бесконечности.
НУ, если ты прочитаешь алдошину, то поймешь, что слух это куча фильтров, причем после фильтров нелинейная система(грубо говоря модулятор), которому на частоты больше 22 кГц глубоко положить.
околозвуковые частоты это ещё незначит что их ктото собирается вообще слушать ушами, это может быть просто условное обозначение диапазона частот и для описание меандра даже в этом диапазоне, чем больше частота дискретизации тем лучше, ограничение только экономические соображения, такто акустикодрочеры
>>192320 не понял о чем ты, если честно. Чем она дальше, тем порядок фильтра будет больше, если цифровой фильтр (КИХ), а аналоговому всё равно как ты понимаешь. Проще и надежнее вообще не термины ЦОС.
Есть подозрение, что ЦАП в МК будет прилично так шуметь.
Ну и опять-же, контроллер ради DMA? Я хочу либо на рассыпухе, либо на плисине собрать схему загрузки/выгрузки в статическое ОЗУ + аккумулятор фазы.
Общая идея такова: 1) Есть SRAM 32K x 8, быстрые как понос; 2) Есть схема загрузки/выгрузки в/из ОЗУ; 3) На компе аппроксимируемый нужный сигнал отсчётами, получаем 32К отсчётов, загружаем в ОЗУ; 4) Есть 4-байтный аккумулятор фазы, есть 4-байтный регистр инкремента фазы. 5) По импульсам опорного генератора аккумулятор складывается с регистром инкремента. 6) Старшие 15 бит используются как адрес для ОЗУ, на выход ОЗУ непосредственно подключены входы ЦАП. 7) Вуаля, синтез сигнала нужной формы (если что - не аудиофил, хочу приборчик общего назначения). Высокочастотный DDS у меня есть (AD8950), шумит кстати, скотина.
>>192464 Оп, ты все усложняешь. 1.Отсчеты синуса в ПЗУ не нужно каждый раз синтезировать, или загружать. Массив прописывается ручками в коде. 2. ты пишешь 32 к отсчетов. каждый по 8 бит, но ты используешь 16 битный ЦАП, зачем? Шумы от твоего генератора будут выше, чем шумы дискретизации. Нужно и отсчеты хранить 16 битные.
Плис ради такого примитивного DDS - из пушки по воробьям. Cortex m3 хватит. Особенно, если разберешься какой длины тебе нужна таблица
>>192606 Так я до сих пор не вижу фильтра, которому пофиг на разницу между частотой дискретизации и частотой среза.
Ты что-то говоришь, сам не понимая ничего. >>Он же частоту дискретизации должен срезать. что эта фраза означает? СРЕЗАТЬ ЧАСТОТУ ДИКРЕТИЗАЦИИ... Что ты сказал? зачем её нужно "срезать?" >>не вижу фильтра, которому пофиг на разницу между частотой дискретизации и частотой среза. что значит пофиг? о чем ты?
>>191733 >в лучшем случае если применим апроксимацию будем наблюдать ибаную синусоиду на частоте 10kHz Так как высшие гармоники находятся выше частоты 20 кГц, т.е. в ультразвуке, ты не отличишь звучание ебаной синусоиды на частоте 10 кГц от пилы на той же частоте. Поэтому довольно похуй, что ты будешь наблюдать. >>192618 Здесь момент простой. Мы должны отфильтровать все, что выше половины частоты дискретизации (по теореме Котельникова, чтобы избежать алиасинга). Если бы у нас был бы в распоряжении идеальный фильтр с полосой пропускания в виде прямоугольника, то проблем бы не было. Но на самом деле таких фильтров нет, и вообще, чем меньше порядок у фильтра, тем менее он уродует звук. Поэтому лучше всего иметь завышенную частоту дискретизации (намного выше того, что реально требуется), а частоту среза фильтра установить намного ниже этой завышенной частоты.
>>192608 я предлагаю тебе расписать задачу, конкретнее, какие сигналы ты хочешь формировать? квадратурные сигналы полосовые формируются одной таблицей с синусом. Управляя напрямую фазовым аккумуляторм, ты можешь задать любой вид модуляции, что дает тебе большое разнообразие типовых сигналов. Конечно нужно учитывать, какой тебе нужен шаг перестройки, и какой уровень внеполосных изулучений ты готов терпеть.
>>192619 >>Мы должны отфильтровать все, что выше половины частоты дискретизации (по теореме Котельникова, чтобы избежать алиасинга). Если бы у нас был бы в распоряжении идеальный фильтр с полосой пропускания в виде прямоугольника, то проблем бы не было. Но на самом деле таких фильтров нет, и вообще, чем меньше порядок у фильтра, тем менее он уродует звук. Поэтому лучше всего иметь завышенную частоту дискретизации (намного выше того, что реально требуется), а частоту среза фильтра установить намного ниже этой завышенной частоты.
Ты немного путаешься. НЧ фильтр, которым ты борешься с наложением частот. стоит перед АЦП, и он как ты понимаешь аналоговый.
>>Но на самом деле таких фильтров нет, и вообще, чем меньше порядок у фильтра, тем менее он уродует звук.
Опять фантазии
>>Поэтому лучше всего иметь завышенную частоту дискретизации (намного выше того, что реально требуется), а частоту среза фильтра установить намного ниже этой завышенной частоты.
Полоса между полосой пропускания и задержки называется полоса расфильтровки. Частота дискретизации обычно берется с её учетом. Но, вот "намного выше" это уже фантазии. У телефонистов полоса расфильтровки у речевого канала - 600 Гц, при том, что спектр речевого сигнала 0,3-3,4 кГц, частота дискретизации - 8 кГц. И все хорошо, поверь.
Вот что там имеет ввиду под >>Так ведь выходной фильтр. Он же частоту дискретизации должен срезать. Чем она дальше от частоты среза, тем проще и надёжнее фильтрация.
Я подумал, и догадался о чем ты, ублюдок. Дело в том, что аналоговой частью после ЦАП никогда не занимался, и редко про неё думал. Но, ты прав, ему придется исходить из того, какой фильтр он купили, или соберет. В литературе пишут, что подавить достаточно на 40 дБ, не более, думаю, такой можно всегда сколхозить
>>192620 Произвольной формы (если что - в цифровой обработке сигналов не силён, потому поправь, если я где-нибудь хуйню напишу).
Например - вырабатывать не синусоиду, а лесенку. Или какой-нибудь сигнал злойиффучей формы, а-ля ПТЦС (полный телевизионный цветовой сигнал).
Я что предполагаю - рисуем, скажем, этот сигнал на компе в виде непрерывной функции от времени. Квантуем время на 32К квантов. Аппроксимацией находим значение отсчёта АЦП для каждого из этих квантов. Грузим получившуюся lookup table в ОЗУ. И начинаем синтезировать сигнал.
Понятно, что если сигнал сложный, а в регистре инкремента фазы большое число, то лажово будет, но этот случай я просто отметаю.
На деле - мне хватит синуса, нескольких пил, ступенек и меандра.
Но - раз уж лукап-таблица получается перезагружаемой, то почему-бы не дать возможность произвольной её сделать.
Да, вариант с перезагрузкой регистра инкремента фазы на каждом такте не рассматриваю.
Выше я слышал мнения, что мол Cortex-M хватит.
Есть у меня демоплата с ST32F407 (Cortex-M4, 192МГц тактовой). Что ты думаешь о варианте с кортексами?
>>192746 >>Например - вырабатывать не синусоиду, а лесенку. Или какой-нибудь сигнал злойиффучей формы, а-ля ПТЦС (полный телевизионный цветовой сигнал).
Я под произвольной формы понимаю сигнал с любой модуляцией (фазовой, частотной, амплитудной), который описывается каким-то выражением. Типичная задача - формирование квадратурных модулированных сигналов на ПЧ для передатчика.,
Есть одна ПЗУ, длина которой рассчитывается из требований к чистоте спектра, и возможностей системы. В ней отсчеты сигуса, на частоте f=fd/2^n, где n- разрядность регистра фазы. Задавая код частоты (число которое будет прибавлятся к содержимому регистра) ты можешь делать что угодно - менять частоту на ходу, или фазу. Например 100 тактов подаешь одно число, 100 тактов другое, сигнал получается цифровой ЧМ (FSK с разрывом фазы), и .т. д
Что бы сделать пилу - можно просто подавать на АЦП сигнал который будет вырабатывать твой процессор(переполнение использовать регистра по 8, 16, 32 разрядам), это проще всего, на мой взгляд. Хотя можно тоже подобрать коды частоты и их последовательность, что бы выдавать пилу.
ну, и как я говорил, да Cortex m3 хватит, если он только будет управлять регистром фазы и ПЗУ.
>>192771 Я вот глядя на такие фото дропнул паять махарайки. Все-равно по хар-кам получится кал. Сделать не кал слишком сложно, долго и затратно, детали оригинал - дорого, платы придется заказывать в Китае, а корпус - отдельная песня. Нынче только ремонтирую всякую всячину. В общем, спасибо за антипример.
>>192789 Всегда нужна цель. Махарайки "для себя" в крутых корпусах делать немножко сомнительно, тут есть разумный предел сложности прибора. А вот если на продажу - стоит задуматься об организации цеха, в котором корпусными работами занимается один человек, ручной пайкой еще человек, электротесты делает третий, а проектировочными работами занимаются вообще другие люди (делая безумные утюжные платы для проверки работоспособности прибора после расчетов в SPICE). Так всегда и работали люди в дремучие аналоговые времена, да и до сих пор некоторые работают так. Вопрос лишь в качестве исполнения - а это уже другой разговор.
>>192789 Получился, кстати, не кал. На мой слух (не аудиофильский) звучит ОК, а USB-управления я просто нигде на рынке не видел.
Кал - в усилителе для наушников. TDA7050 самовозбуждалась, поставил пару LM386, они шумят, резисторами по выходу шум убрал. Но конструкция модульная, модуль можно заменить.
>>192873 ну, если быть проще то минимальное значение 0, максимальное 2^n -1, где n- разрядность.
Описал ты верно, но тогда почему ты удивляешься тому, что таблица прописывается единожды?
Если ты не будешь изменять значения регистра инкремента постоянно, а например задашь только одно какое-то, то будешь получать только один синус. А для сигналов имеющих модуляцию тебе нужно его менять, причем периодически.
>>192894 Да, всё верно. Я хочу не модуляцию, а сигнал произвольной формы. Для этого в лукап-таблице будет не синус. А регистр инкремента перезагружать не хочу.
Скажем - если в половине таблицы будут нули, а во второй 0xFFFF то я получу меандр.
>>192897 Для того что бы получить меандр не нужен DDS. Как и что бы получить пилу. Для этого не нужна ПЗУ с отсчетами сигнала. ИХ можно генерировать на ходу, в отличии от ВЧ сигналов.
>>192897 а вообще лол. Неужели не приходит в голову, что ,например, ты можешь управлять значением фазового аккумулятора, а не только регистра инкремента. И задавать его так : T/2 тактов значение по адресу которого нуль, T/2 тактов - значение по адресу которого 2^n -1 ?
>>192916 Какой может быть гемор с перезагрузкой регистра, который расположен в памяти контроллера? Это одна ассемблерная команда. Из этого я и делаю вывод что ты не понимаешь, что такое DDS. Ты верно назвал структуру, но не более. Тебе не в домёк, что DDS сделан за тем, что бы получать любые сигналы из одной таблицы с синусом. Из изменять из форму через аккумулятор. Из нее ты модешь сделать меандр, пилу, модуляцию, и прочее(так устроены векторные генераторы сигналов, которым не нужно ничего получать от компьютера(он конечно может, но это если богатые настройки внутреннего ПО не дают тебе того, что ты хочешь, а это редкость).
По поводу ЦАП- какие требования у тебя? сколь чистый сигнал (SFDR), какой динамический диапазон, и пр пр.
>>192626 >Ты немного путаешься. НЧ фильтр, которым ты борешься с наложением частот. стоит перед АЦП, и он как ты понимаешь аналоговый.
Оставь этот менторский тон, это я тебя учить должен.
Oversampling can make it easier to realize analog anti-aliasing filters.[1] Without oversampling, it is very difficult to implement filters with the sharp cutoff necessary to maximize use of the available bandwidth without exceeding the Nyquist limit. By increasing the bandwidth of the sampled signal, design constraints for the anti-aliasing filter may be relaxed.[2] Once sampled, the signal can be digitally filtered and downsampled to the desired sampling frequency. In modern integrated circuit technology, digital filters are easier to implement than comparable analog filters.
Т.е. ты ставишь простой аналоговый фильтр с плавным срезом, затем цифруешь с передискретизацией, потом фильтруешь в цифре уже как надо, и далее даунсэмплишь сигнал уже с нужной тебе частотой.
Иначе же тебе придется ставить аналоговый фильтр высокого порядка, который, помимо усложнения, еще и крутит фазу (цифровой sinc-фильтр фазу не трогает).
Но на самом деле последние два этапа (цифровая фильтрация + даунсэмплинг) нужны только, чтобы сэкономить память. Так как уши ультразвук не слышат, можно оставить дешевый аналоговый фильтр, оцифровать на 192 кГц и все. С синтезом все еще лучше - если не веришь, синтезируй пилу наивным методом на 44100 и 192 кГц и сравни звучание. Во втором случае алиасинга будет намного меньше - и это при тупом наивном алгоритме. Поэтому если АЦП/ЦАП позволяет работать в 192 кГц и хватает мощей, лучше работать в 192 кГц.
>>192942 >>Оставь этот менторский тон, это я тебя учить должен.
Что бы чему-то учить нужно в чем-то разбираться. Твою квалификацию судить не могу, не на комиссии. Потому оставь этот тон.
Если ты что-то цитируешь, давай ссылки, хотя бы библиографические. Так можно кидать любые откровения из интернета, и выдавать за научную истину.
>>Иначе же тебе придется ставить аналоговый фильтр высокого порядка, который, помимо усложнения, еще и крутит фазу (цифровой sinc-фильтр фазу не трогает).
Скажу честно, не имел дела с аналоговыми фильтрами. Ты прав, найти нужный фильтр на нужный диапазон это проблема.
Всё остальное мне известно, я рад что ты тоже понимаешь, что в цифре проще делать фильтрацию, и достаточно чаще всего лишь иметь грубые преселекторный фильтр аналоговый.
>>С синтезом все еще лучше - если не веришь, синтезируй пилу наивным методом на 44100 и 192 кГц и сравни звучание. Во втором случае алиасинга будет намного меньше - и это при тупом наивном алгоритме. Что ты имел ввиду под "наивным методом"? Поясни пожалста.
>>192925 Потому ты и не понимаешь что такое DDS, и зачем он нужен (только не обижайся). DDS нужен всем для того, что бы формировать сигналы, чаще всего модулироdанные(на НЧ, для связистов) легко, просто, и без ГУН c его проблемами. Причем формировать так, что бы не нужно было ничего загружать из компа, никуда, потому что чаще всего людям нужны типовые сигналы, отличающееся парой параметров, и они не хотят их формировать сами на компе, им нужно что бы это сделал векторный генератор, в котором находится микросхема с DDS. Конечно, векторный генератор может "проигрывать сигналы", если умеет, но это как раз неуправляемый DDS, где инкремент фазы = 1 всегда, и ты ничем не управляешь(я работаю с Agilent e4438c, потому знаю о чем говорю).
Сам метод DDS хорош тем, что имея ОДНУ (в который раз говорю) таблицу с синусом, получать кучу сигналов, без предварительной их записи в память. И при этом, сигналы могут изменятся как угодно во время работы. Сигнал в цифровом виде формируется генератором, который состоит из аккумулятора фазы, и таблички. Есть еще регистр инкремента, да, в него задается т.н "код частоты". Так,вот если ты делаешь что-то для себя и тебе нужно делать много сигналов - то самый логичный ход, это всю цифровую часть сделать на контроллере, или на плис. Но, плис для твоих задач (тактовые частоты порядка 1 МГц, если найдешь фильтр нужный как сказали тут недавно) это избыточно. Почему на контроллере - для него можно написать программу на Си в 20 строчек, которая будет выдавать амплитуду из таблицы. Размер таблицы подбирается из твоих требований к чистоте спектра. Чем она меньше, тем больше будет у тебя шумов в выходном сигнале. КАкие профиты от того, что аккумулятор и регистр инкремента будут в памяти МК - ты можешь управлять DDS так как хочешь ты, и тебе не нужно будет ничего загружать с компа, если после меандра ты захотел синус, или пилу. Ты тыкаешь кнопку на плате, и генератор переключается в другой режим работы. Ты крутишь ручку- частота меняется выходного сигнала. Вот это опенсорс, тебе никто не указывает какие параметры сигнала, и он может меняться динамически, тебе не нужно сидеть на компе его генерить, все алгоритмы уже есть в формирователе.
>>192943 >Что ты имел ввиду под "наивным методом"? Поясни пожалста. Любая генерация пилы типа i = (i + 1) % T. Возрастаем, обнуляем. У такой генерации бесконечный спектр и это создает алиасинг. На пикрелейтед его видно - у пилы спектр в виде 1/(2k+1), где k - номер гармоники, как только частота гармоники доходит до f_s/2, она "отражается" и идет до 0, потом отражается опять и идет до f_s/2. Как видно, энергетика у шума алиасинга немаленькая - ведь спектр-то бесконечный. Если же генерить на 192 кГц и фильтровать, шум будет в несколько раз меньше, потому что наиболее энергичный мусор ты отфильтруешь.
Поэтому, если есть вычислительная мощь генерировать сигнал с многократным оверсэмплингом, генерируй, то же касается работы АЦП и ЦАП.
>>192956 если сгенерировать цифровой сигнал(а потом сделать БПФ с ним, на компе) алиасинга не будет(прикрепил картинку). Или ты о чем о другом?
При оцифровке- опять же, из практических соображений, тебе в пиле нужен только период, он определяется первой гармоникой(если ты пилы не слушаешь на ухо), а речь и музыка сигналы полосовые, которые оцифровываются сам знаешь какими частотами. И от того, что ты оцифруешь на 192 кГц вместо 44,1 лучше не станет.
>>192962 Я картинку тоже прикрепил, если ты не умеешь читать график и читать мое объяснение, я не виноват. Разговаривать с говном которое несет при этом "от того, что ты оцифруешь на 192 кГц вместо 44,1 лучше не станет" мне надоело.
>>192968 Полосовой сигнал занимает полосу 0-22 кГц. Его дискретизировать можно любыми частотами больше 22 кГц. РАЗНИЦЫ НЕ БУДЕТ. Проблемы подбора аналогового фильтра - это проблемы наличия их на рынке. К самой дискретизации они не имеют отношения.
Откуда ты высрал этот график я не знаю. Что он показывает? БПФ сигнала после оцифровки сигнала с выхода ЦАП без фильтра? или что? телепаты в отпуске. . Я тебе пруфпик приложил(сам сделал), можешь повторить на матлабе. ТВой графиг говно и выдумка, если ты не можешь пояснить.
>>192969 У тебя период ровно 4 сэмпла. Это значит, первая гармоника имеет частоту fs/4. У прямоугольника гармоники идут как sin(x)+sin(3x)/3+sin(5x)/5 и т. п. Вторая гармоника имеет частоту 3fs/4. Это выше частоты Найквиста, возникнет алиас с какой частотой? Я выше объяснял, он симметрично отразится от fs/2. 3fs/4-fs/2 - т.е. fs/4 Ты подобрал ровно такой период, чтобы весь алиасинг совпадал с оригинальной волной. Если же взять любой другой период - появятся алиасы. Пикрелейтед. Мне это очевидно, тебе - нет, однако ты заявляешь "И от того, что ты оцифруешь на 192 кГц вместо 44,1 лучше не станет.".
Хочешь матлаб? Вот, бери http://pastebin.com/qeqcB45H И попробуй только скажи, что ты совсем не слышишь разницы - между чистой пилой и засранной кучей паразитных гармоник. И это - fs/20. И к задаче ОПа это имеет прямое отношение - синтез сигналов по табличке имеет те же самые проблемы с алиасингом, которые в самом простом случае решаются синтезом с более высокой частотой дискретизации. Если хочешь нормально синтезировать, нужно закладывать запас значительно выше того, что говорит Котельников.
>>192974 Построил спектры, с твоими сигналами, которые на 44100 и на 176400. Я так понимаю, они специально подобраны что бы возникал алиансинг? Где же он в спектре???? Может я не вижу? укажи, пожалуйста.
Про прослушивание пилы на слух - это твоё субъективное восприятие, читай психоакустику.
>>192978 Я понятия не имею, что у тебя на картинке, но это точно не пила с частотой 2000 Гц. Алиасинг у меня показан синеньким. Я, в отличие от тебя, код даю, можешь искать ошибки. Что ты делаешь, мне неизвестно http://pastebin.com/hHPbQ0Jb >Про прослушивание пилы на слух - это твоё субъективное восприятие, читай психоакустику. Ты нахватался какого говна по верхам, психоакустика тут не при чем. Алиасинг проявляет себя как гармоники, не кратные основной, это прекрасно слышно там, где это видно на спектре.
>>192983 >>Я понятия не имею, что у тебя на картинке, но это точно не пила с частотой 2000 Гц.
это твои два сигнала, закинутые в утилиту sptool из матлаба.
>>Ты нахватался какого говна по верхам, психоакустика тут не при чем. Алиасинг проявляет себя как гармоники, не кратные основной, это прекрасно слышно там, где это видно на спектре.
Опять фантазии про чужую квалификацию(это уже навязчиво). Психоакустика дает там модель уха. Результирующие фильтры полосовые у уха - они не очень. Ну, и старая тема - что хочешь, то и услышышь.
А теперь РАЗБОР КОДА. На твоем графике показан результат работы функции fft (x). Цитата из хелпа : "Y = fft(X) returns the discrete Fourier transform (DFT) of vector X, computed with a fast Fourier transform (FFT) algorithm."
И то что ты наблюдаешь синеньким - это утечка ДПФ, не более не менее.
>>192992 >Опять фантазии про чужую квалификацию(это уже навязчиво). Так я это вижу. Кто в этом виноват, я что ли? Я спектр пилы на 2000 Гц с чистотой 22050 с закрытыми глазами нарисовать могу, это это будет около 10 тоненьких полосок-гармоник, убывающих по гиперболе. Это очевидно любому, кто представляет, что делает fft. Ты вместо этого приносишь какую-то йобу, у которой сотни гармоник, и гиперболой там и не пахнет. И при этом даже не задумываешься, что ты принес - где у твоего графика максимум, почему он сплошной. Мне, батьке, нужно сидеть и рассматривать твой гуй, увидеть там welch's method и обозвать тебя каким-нибудь обидным словом. Хотя я тебе даже скрипт и вавки принес, просто возьми и послушай. Если ты такой солипсист и не веришь ушам, может тебе и глазам не верить? Ну и хули, все - оптический обман. Вообще все. Ложки нет. Нет, чтобы спиздануть где-то о психоакустике, нужно в психоакустике разбираться. Для тебя же это просто ПРЕДПОЛОЖЕНИЕ основанное на твоем дилетантском говноедстве. >это твои два сигнала, закинутые в утилиту sptool из матлаба. У тебя там Welch. Это - метод для усреднения спектра стохастических процессов. У меня сигнал - стабильнее некуда и этот метод показывает хуй знает что. Я не буду запускать sptool и подтирать за тобой твои сопли. >И то что ты наблюдаешь синеньким - это утечка ДПФ, не более не менее. http://pastebin.com/dj1Dwh2B Как видишь, ничего не изменилось. Сигнал - периодический, поэтому все, чем тебе помешает отсутствие окна - это щелчок при переходе из конца буфера в ноль. Но на спектре длиной в размер буфера ты этот щелчок не увидишь, у него энергетика примерно в длину_буфера раз меньше, чем у твоего сигнала. То, что ты там видишь - это алиасинг. Который ты же и слышишь. Если ты не слышишь разницы между http://rghost.ru/7lCWr2Wnf и http://rghost.ru/8zR8rJhXH , то интересно, до каких еще доньев ты опустишься, чтобы доказать свою правоту.
>>193010 Воу Воу, вот это мощный поток НЛП ты вылил.
>>Я спектр пилы на 2000 Гц с чистотой 22050 с закрытыми глазами нарисовать могу, это это будет около 10 тоненьких полосок-гармоник, убывающих по гиперболе. Это очевидно любому, кто представляет, что делает fft.
Около 10... их бесконечно много. Ну, я понимаю, ты спец.
>>Убывающих по гиперболе
Гоноровский И. С. Радиотехнические цепи и сигналы: Учебник для вузов.— 4-е изд., перераб. и доп. — М.: Радио и связь, 1986. — 512 с.
СТРАНИЦА 25 , раздел "2 Пилобразное колебание" " .. как мы видим убывают по закону 1/n"
Ну ТЫ ТО СПЕЦИАЛИСТ...
Утечка ДПФ будет всегда, когда частота гармоник не кратна частоте дискретизации. 2000 не кратно 40100. Читай литературу.
>>Нет, чтобы спиздануть где-то о психоакустике, нужно в психоакустике разбираться. Для тебя же это просто ПРЕДПОЛОЖЕНИЕ основанное на твоем дилетантском говноедстве.
У тебя предположения основанные на твоем ЧСВ. Голословные заявления и прочее. Субъективность восприятия звука - это факт, его не отменят твои заявления.
>>У тебя там Welch. Это - метод для усреднения спектра стохастических процессов. У меня сигнал - стабильнее некуда и этот метод показывает хуй знает что. Я не буду запускать sptool и подтирать за тобой твои сопли.
Хуй знает что... Ну, ясно ты не знаешь как он работает. И сказать тебе нечего. Как обычно.
Опять утечка. Ну, верно, в литературе говорят её можно только уменьшить, не избавишься. (Автор: Лайонс Ричард Переводчик: Бритов А. А. Издательство: Бином, 2011 г. Подробнее: http://www.labirint.ru/books/273134/ , страница 90)
>>193019 Я говорю - дальше не читал, думаешь, я соврал что ли? Разговор с тобой - это как анекдот про мальчика и море. Тебе говорят, вот он алиасинг, а ты - ды-ды-ды, мне влом признать неправоту, пойду дальше цепляться к словам и опечаткам. У меня нет никакого ЧСВ, я вообще человек мягкий в плане доставления новых знаний, но только когда меня слушают, а не занимаются воинствующим невежеством.
>как мы видим убывают по закону 1/n" Именно. А теперь найди 1/n на твоем "спектре" (>>192978). Ветвь гиперболы, напоминаю, точек перегиба не имеет, а у твоей функции она есть. Это, если ты забыл, как выглядит функция 1/n, может тебе ее нарисовать?
>Хуй знает что... Ну, ясно ты не знаешь как он работает Понятия не имею. Первый пикрелейтед я знаю, как получить. И там алиасинг видно. А где ты там накосячил в sptool мне неведомо, у тебя нет нужных гармоник (f, 2f, 3f, 4f и т. д.), зато куча какого-то говна. Т.е. что-то ты получил и это что-то, наверное, имеет какое-то объяснение, но это не спектр сигналов из моего скрипта.
>Утечка ДПФ будет всегда, когда частота гармоник не кратна частоте дискретизации. Только почему-то у ideal твоей "утечки" нет, а у "naive" - есть. Какое совпадение! Пик 2. Ты можешь это хоть горшком обозвать, только ученые договорились называть это алиасингом.
Если бы разул глаза, то увидел бы, как гармоники отражаются от f_s/2 и идут в противоположном направлении, потом отражаются опять, уже от 0, и так далее. Я тут об этом писал >>192974 Вот простой скрипт, который рисует это - http://pastebin.com/C0maGbXs . Мальчик, это море, понимаешь?
>Субъективность восприятия звука - это факт, его не отменят твои заявления. При чем тут субъективность восприятия звука, Ты заявляешь, что разница в звучании naive.wav и naive_oversampled.wav, которую видно на спектре - это психоакустика. Оок, я понял, что ты за человек, готов любые рандомные слова использовать как аргумент в споре.
>>193023 >>Я говорю - дальше не читал, думаешь, я соврал что ли? Разговор с тобой - это как анекдот про мальчика и море.
Очень удобная позиция - я умный меня не понимают. Позволяет добывать новые знания.
>>А где ты там накосячил в sptool мне неведомо, у тебя нет нужных гармоник (f, 2f, 3f, 4f и т. д.), зато куча какого-то говна. Т.е. что-то ты получил и это что-то, наверное, имеет какое-то объяснение, но это не спектр сигналов из моего скрипта.
Там невозможно накосячить. Другой вопрос, что ты видишь как раз утечку, из-за размазывания энергии по соседним дискретам частоты на оси. Проверь на спектроанализаторе с сигналом ЧМ - увидешь там нет ПАЛОК.
>>Только почему-то у ideal твоей "утечки" нет, а у "naive" - есть. Какое совпадение! Пик 2. Ты можешь это хоть горшком обозвать, только ученые договорились называть это алиасингом.
Вот тут, извини, ты не понимаешь. Правда, ты не понимаешь. ideal - руками рисуешь нужное тебе число синусов, с нужными амлитудами. Ага , такой спектр у какого сигнала ? смотри картинку. Да, для НЕПРЕРЫВНОГО ПЕРИОДИЧЕСКОГО он линейчатый. Для других дискретного, ограниченного по времени (он уже у тебя ограничен) - спектр дискретный, непрерывный(1 картинка из книги). Тебе это Уэлч и показывает.
И так как частоты гармоник не кратны частоте дискретизации там тебе будет утечка. У ДПФ утечка есть всегда, когда частоты не кратны. (вторая картинка, идеальные синусы на некратной частоте почем-то не один дискрет занимают.)
>>Если бы разул глаза, то увидел бы, как гармоники отражаются от f_s/2 и идут в противоположном направлении, потом отражаются опять, уже от 0, и так далее.
Статьи прогляжу(ты кинул ссылку постом выше?, спасибо ), в них кстати, говорится исключительно про пилу. Интересно, никогда не сталкивался, я работаю только с полосовыми сигналами, и DDS использую только для них.
naive method , я так понимаю перевести лучше как "простейший метод", , так же как не звучит "коварный метода". (Hard Sync Without Aliasing. Eli Brandt).
>>При чем тут субъективность восприятия звука, Ты заявляешь, что разница в звучании naive.wav и naive_oversampled.wav, которую видно на спектре - это психоакустика. Оок, я понял, что ты за человек, готов любые рандомные слова использовать как аргумент в споре.
Я не слушаю пилы. Что ты там понял, это твои проблемы . ТВоя аппеляция на уровне- я отличаю MP3 320 кбс, от FLAC на слух без ошибок. Ну,я рад за твой слух.
>>193026 >>таблицу для популярных сигналов можно в набортную флешку
Когда прочтешь, увидишь что нужна только одна таблица, которую можно разыграть по разному.
Если частота сигнала(синуса) будет изментся, тебе придется для каждого иметь на флешке свою копию одного периода. А так ты из одного получишь все вплоть по предела котельникова.
>ТВоя аппеляция на уровне- я отличаю MP3 320 кбс, от FLAC на слух без ошибок. Ну,я рад за твой слух. Ты сам прекрасно слышишь разницу. Потому что это никакая не "утечка БВФ", а алиасящие синусоиды.
>>193034 Потому что у тебя plot(abs(fft(ideal.*wnd))). Сделаешь plot(abs(fft(ideal))) - будет палка. Чему эквивалентно перемножение во временной области в частотной напоминать нужно? Свертка с пикрелейтед (там децибелы, на самом деле этот хвост внизу не виден). Дельта-функция превращается в твой "треугольник". plot(abs(fft(ideal))) - делать правильнее, потому что сигнал периодический и период намного меньше длины буфера. Совсем правильно будет plot(abs(fft(ideal(1:88179)))), чтобы щелчок между началом и концом буфера был незаметен. Но он и так будет незаметен, потому что размер буфера намного больше. Я домножил на окно, чтобы дать тебе понять, что это алиасинг, что БПФ тут не при чем, это свойство самого сигнала. Но тебе нужно разжевывать. Ты говоришь, у меня ЧСВ, а я ведь априори считаю тебя умнее, чем ты есть на самом деле. Дал скрипт без лишних комментариев, который заключает ответы на все твои вопросы. С каждым комментом и сеансом разжевывания ты тупеешь в моих глазах.
Да, забыл еще одну хуиту: > Для других дискретного, ограниченного по времени (он уже у тебя ограничен) Преобразование Фурье работает только с бесконечными периодическими сигналами. Синус и косинус, знаешь, это бесконечные периодические функции, других не завезли. Если ты делаешь DFT от конечного буфера, буфер мысленно бесконечно продолжается от минус бесконечности до плюс бесконечности, постоянно себя копируя. Из непонимания этого, собственно, идут все твои проблемы. Ты же уверен, что сигнал конечный, а он бесконечно-размноженный.
Если ты хочешь узнать, как будет выглядеть утечка в случае конечного сигнала, делай так:
Тогда, при очень большом зуме, ты увидишь, что каждая из палок превратилась в фурье-образ rect-функции. То же самое правило, что перемножение во временной области эквивалентно свертке в частотной. Но вид этой штуки ничего общего с алиасингом не имеет. И кратность тут тоже не причем
>>193037 Об этом я и толкую уже полтреда, ебанат. Хотя процессы прохожие. Утечка - это f(x)rect(x) и есть специфический результат подготовки конечного сигнала к БПФ, которое работает только с бесконечными сигналами, а алиасинг - это f(x)comb(x), и есть результат дискретизации непрерывной функции, и это часть цифрового сигнала, которая к БПФ никакого отношения не имеет.
>>193040 >Об этом я и кукарекаю уже полтреда Да я и вижу, что тут пара петухов собралась. Кукарекают один одно, другой другое и никак понять друг друга не могут.
>>Ты говоришь, у меня ЧСВ, а я ведь априори считаю тебя умнее, чем ты есть на самом деле. Дал скрипт без лишних комментариев, который заключает ответы на все твои вопросы. С каждым комментом и сеансом разжевывания ты тупеешь в моих глазах.
О, да у тебя нет ЧСВ, просто ты любишь всех называть тупыми. Ну, да, скромность так и прёт. Но, это твои личные проблемы.
>>если ты делаешь DFT от конечного буфера, буфер мысленно бесконечно продолжается от минус бесконечности до плюс бесконечности, постоянно себя копируя. Из непонимания этого, собственно, идут все твои проблемы. Ты же уверен, что сигнал конечный, а он бесконечно-размноженный.
Спасибо, капитан. Еще скажи что ты знаешь откуда нижняя боковая берется и я тебя зачет поставлю.
Кратность не причем- см пикрелейтед. ОПять скажешь это не утечка?
>>193046 >О, да у тебя нет ЧСВ, просто ты любишь всех называть тупыми. Не люблю. Это просто факт. При этом это не значит, что ты генетически туп, просто уперся в неправильном мнении, хули, я ж аноним, анонима можно не слушать. >Кратность не причем- см пикрелейтед. А, ты об этом. Я тебе выше писал, что чем больше у тебя отношение длина_буфера/период, тем тот эффект, о котором твой пикрелейтед, ниже. Если хочешь увидеть этот эффект из книжки, утечку твою долгожданную, просто сравни plot(abs(fft(ideal(1:400)))) и plot(abs(fft(ideal(1:441)))). Во втором случае утечка будет меньше, потому что 44100/2000*20=441. Об этом ты говоришь. Но с буфером размером в 100000 отсчетов этот эффект никакой роли не играет. Можешь проверить, сделай plot(abs(fft(ideal(1:4000)))), plot(abs(fft(ideal(1:40000)))) , plot(abs(fft(ideal(1:40)))) и т. п. И ты увидишь, что при стремлении размера буфера к бесконечности, кратность уже никакой роли не играет.
Конструирую тут потихоньку опенсорцовый DDS-синтезатор околозвуковых частот.
Не "ололо, посмотрите, я прикрутил к ардуине матрицу R-2R", а более серьёзное устройство, с возможностью синтеза сигнала произвольной формы и автоматического построения АЧХ.
Общая идея - МК1 (управляющий) -> МК2 (аккумулятор фазы + сумматор) -> статическое ОЗУ -> ЦАП.
И нужна помощь по ЦАП.
Что посоветуешь, радиач?
Нужно:
- только зарубежная (бо опенсорс);
- только параллельная (чтобы можно было используя жёсткую логику передавать на неё отсчёты с ОЗУ);
- миллиона два отсчётов в секунду;
- 8 или 10 бит (если будет 16-будет вообще зашибись, поставлю две ОЗУшки);
- такая, чтобы можно было в рознице (хотя-бы на заказ) достать;
- корпус - предпочтителен SMD (печатаю платы фотолитографией), выводной - допустим, BGA - не предлагать.
С меня - К570ПА1 :3