Последний раз редактировалось tomtit; 29.05.2013 в 02:03.
Так можно сделать на плис конвертер или есть готовые в аплеере, фубаре и тп.
С компьютером проблем нет, но если надо подключать не только его, то тут без железного конвертера ни как. А что там есть на ПЛИС из уже готовых проектов?
"Замполит, чайку?"(с)"Охота за Красным Октябрем".
"Да мне-то что, меняйтесь!"(с)анек.
<-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.
Вспомнил, был ресемплер подобный по функционалу 4137 от ComTrue, но в свободной продаже я его не видел. Может Иван IVX знает про состояние этой штуки.
У ComTrue есть CT7302, только связываться с этой левой конторой не очень есть желание.
"Замполит, чайку?"(с)"Охота за Красным Октябрем".
"Да мне-то что, меняйтесь!"(с)анек.
<-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.
https://forum.vegalab.ru/showthread....=1#post2996283 и дальше. Там все на блюдечке - берем ЦФ, конфигурим в 16х или 32х, и на выход к нему - сигмадельта модулятор. Тот, что там я привел - он уже на 64х обеспечивает более чем достаточный на практике динамический диапазон и не требует апсэмплинга вплоть до "битовой" частоты (есть запас устойчивости на "ступеньки"). В обратную сторону - из DSD в PCM - есть несколько готовых вариантов, самый доступный - ADAU7112.
Последний раз редактировалось sia_2; 26.01.2022 в 19:26.
Воспользовался небольшим просветом между проектами на работе и сдвинул с мертвой точки разработку самоосциллирующего модулятора. Сделал всё по науке, создал аналоговую модель и перевёл ее в дискретную.
И ура! Модель заработала. Пока это просто цифровая модель похожая на усилитель класса Д.
Тактовая пока 50мгц, глубина ОС - 80дБ. Частота ШИМ на выходе 530кгц.
Максимальный коэффициент модуляции около 85%, выше появляются искажения < 0.1%. Оказалось, что в большинстве случаев, для звеньев 1-го порядка можно обойтись без умножения, только сдвигами вправо-влево.
Однако всего лишь один биквад, ответственный за комплексно-сопряженную пару полюсов потребовал 22битных коэффициентов и умножения. При меньшей точности всё сразу разваливается. Передаточная функция имеет 7-ой порядок. Осталось повысить глубину ОС и частоту осцилляции. Вижу приличный резерв.
Последний раз редактировалось tomtit; 17.02.2022 в 20:57.
Кстати, аналогичная грабля есть при реализации комплексно-сопряженных полюсов в цифровых сигма-дельтах, просто оно не так заметно. Вылезает аномалиями на автокорелляционной функции при малых уровнях сигнала - когда разрядность полезного сигнала мала, а после умножения на маленький коэффициент обратной связи вообще превращается в кракозябру.
Проект получается сильно сложнее простого сигма-дельта, может надо вовремя остановиться. До этого никогда не занимался серьёзно переводом из S->Z^-1. Получилась сборная солянка из билинейного и «сырмяжного» (не знаю официального термина) преобразований. Для ответственных биквадов - билинейное, для остального - прямая замена интегратора 1/s на z/(1-z). Структура получилась замысловатая, с двумя петлями ОС и параллельным каналом, неочевидно, как произвести оптимальное масштабирование аккумуляторов. Но зато шум дискретизации кластеризуется около частоты осцилляции и несильно влияет на устойчивость при больших амплитудах.
Поведение при клипе и перегрузке - просто блеск.
---------- Сообщение добавлено 14:44 ---------- Предыдущее сообщение было 08:32 ----------
Для обычного однобитника я использую архитектуру LeapFrog или ещё её называют LDI. Там всё масштабируется гораздо лучше даже при чисто однобитных коэффициентах. По крайней нигде нет более 10 сдвигов вправо.
Последний раз редактировалось tomtit; 19.02.2022 в 16:47.
А как ни извращайся, резонатор с частотой в сотни раз меньше тактовой - так или иначе включает в себя ослабление в сотни раз. А теперь представим, что входной сигнал, скажем, с размахом 5 LSB - такой резонатор на нем без специальных мер корректно работать не будет.
Я обращал на это внимание, но по наивности, считал, что все эти кракозябры просто утонут в усиленном шуме дискретизации, циркулирующем в петле обратной связи ДС. Ну и дизеринг в 0.5 от входного сигнала должен бы сделать своё дело. То есть, даже без сигнала, на входе имеется шум в половину шкалы, а это уже превышает разрядность коэффициентов, при условии одинаковой рабочей разрядности всех аккумуляторов. Ещё я применял известный трюк,
запуская через модулятор только сигнал ошибки, который имеет шумовой характер, а полезный сигнал в обход, прямо на выход.
Последний раз редактировалось tomtit; 20.02.2022 в 03:14.
Да, эти все костыли более-менее спасают ситуацию, почему в промышленных цифровых модуляторах для ЦАП на все эти нюансы и забивают болт - на рекламные цифры не влияет, и обнаруживается только всякими извращенными тестами. Туда же использование минимального петлевого усиления в модуляторах ЦАП и АЦП, заметно меньше 60 дБ, чтобы тестовый сигнал -60 дБ приходился на область, где он напрямую до квантователя не доходит, и давал красивую картинку спектра, без травы и прочего.
Вот еще об этом - https://forum.vegalab.ru/showthread....=1#post3009107
Измерительный - AD7722, "аудио" - PCM1804/PCM4202
Последний раз редактировалось sia_2; 21.02.2022 в 00:54.
Да, 60дб усиления это уже криминал. Неужели это действительно так?
Хотя, на работе я и сам такой. Как только выполнено ТУ с минимальным запасом - всё, шабаш, откинулся и смотрю, как другие пашут.
Ещё свежие впечатления от перевода аналога в цифру - стараюсь использовать каноническую форму реализации ПФ с двумя линиями задержки. Получается лучше точность и больше гибкости.
Реально 40-55 в звуковой полосе, в многоуровневых бывает еще меньше. Дело в том, что этого достаточно для получения формальных цифр - сигма-дельта модулятор сохраняет работоспособность и когда сигнал по сути не доходит до номинального уровня квантователя, дитерингом служит предельный цикл, параметры которого продолжают зависеть от сигнала (явного дитеринга модулятора часто просто нет вообще - типа, шум во входном сигнале сделает все что надо сам). Как отражение этой ситуации, модуляторы все чаще используются не выше 3-4 порядка, да и те оптимизируются по дубовости и простоте, а не по параметрам. Поэтому если детально снять хотя бы реальную характеристику "SNR vs signal level", не говоря об анализе выхода дециматора в реальном времени, то можно увидеть много интересного. Темеш со Шрейером в одной из своих библий об этом довольно прозрачно намекнули, но в последующих изданиях скорее замяли эти вопросы, дабы не смущать неокрепшие умы излишними сложностями
Самые "выдающиеся" примеры "кроилова с честным лицом", которые я разбирал детально - это PCM1717 и PCM4222. А самые честные - AD1879, CS5397 (хотя там своих загогулин хватает) и AK5394. На полноту списка не претендую.
С другой стороны, из хорошо оптимизированного третьего порядка даже на одном бите можно выжать 96-97 дБ SNQR при OSR64, и 115-117 дБ при OSR128 - этого достаточно в более чем 90% случаев. А при многих уровнях - цифры SNR будут еще красивее.
Просмотрел критические места, чтобы практически исключить потери точности.
Получилось, что нужны всего 2 очень длинных аккумулятора 45 и 56 бит, остальное мелочи с однобитными операциями. Частоту выборки можно снизить раза в 4, но это опять много муторной оптимизации по искоренению умножений, пусть живёт, как есть. 50мгц - частота, на которой можно ещё не заморачиваться с конвейерами, всё работает без мучений с time closure даже с длинными операндами.
В биквадах введён локальный noise shaping 1-го порядка, оказалось очень просто - уменьшаешь на единицу
один из коэффициентов знаменателя и заменяешь инициализацию на суммирование. Вроде бы даже можно сэкономить на дизеринге и округлении результата при такой высокой частоте выборки. Есть ещё возможность разделить модулятор на быструю и медленную части с разной частотой выборки. Сейчас намеренно наставлена куча неминимально фазовых задержек чтобы, если потребуется, облегчить конвейеризацию вычислений.
Последний раз редактировалось tomtit; 23.02.2022 в 18:50.
А вот кстати, интересно, зачем, кроме чистого искусства, вообще потребовалось делать цифровой аналог самоосциллирующего PWM? Как ЦАП в нем мало смысла из-за близости мощной несущей, причем с плавающей частотой, как open-loop класс D с цифровым входом - нет смысла гнаться за сверхнизкими искажениями, ключи и дроссель все резко ухудшат, соответственно, в этом применении достаточно гораздо более простых решений.
Социальные закладки