Последний раз редактировалось tomtit; 29.05.2013 в 02:03.
Надо ещё вспомнить, что влияние неидеальности ключей и высокочастотный шум, да и вообще, многие проблемы примерно пропорциональны частоте переключения однобитного выхода. Поэтому, я пришёл к выводу, что наилучшее решение - сделать модулятор с максимально возможной тактовой частотой, а потом уменьшить частоту выхода раз в 8, перейдя к ШИМ модуляции. A AFIR как раз имеет нули точно на максимальных пиках шума и снижает чувствительность к джиттеру клока примерно в 3 раза. Такой модулятор даёт ещё в среднем вдвое меньшую транспортную задержку по сравнению с обычным однобитным с той же выходной частотой.
Последний раз редактировалось tomtit; 24.08.2022 в 01:17.
Зато однобитник проще. Возвращаясь к заглавному посту: плисина + несколько триггеров реклока = high-end ЦАП.
Задержки и чувствительность к джиттеру для аудо-применений по моему - вообще ни о чем. Даже если джиттер большой, но не коррелирован с сигналом, то это просто шум. Ну будет полка на пару дБ выше - кого это волнует?
Кстати, Сергей ранее писал, что ШИМ из-за фильтрации аналоговым ФНЧ (который не является интегратором) может искажать. По идее, если весь период ШИМ-а помещается в АКИХ, то эта проблема решена?
Ну так по сравнению с современными FPGA это много. ice40 с dc-dc на ядре будет потреблять примерно на порядок (если не больше) меньше, но это конечно очень грубо, т.к. tomtit не описывал, что она там задумал. Ну и на таких малых токах на потребление уже влияет кол-во и частота используемых выходных портов (тупо на перезаряд емкостей).
Ну во-первых, iCE40UP5К для звуковых целей годятся ограниченно, придётся сильно париться с оптимизацией. А вот для малоразрядных поделок типа ККМ очень даже хороши, если удастся заставить их работать, как надо, из-за некоторых плохо документированных особенностей.
По поводу проектирования модуляторов, скажу, что неминимально-фазовая задержка внутри петли ОС имеет значение, поэтому предпочитаю использовать максимально возможную тактовую частоту для петлевого фильтра. Пока что, проблема снижения выходной частоты и подавления ИСИ проще всего решается при использовании ШИМ с коэффициентом заполнения < 1.
Искажениями ШИМ можно пренебречь, если ШИМ генерируется внутри петли ОС.
Причём, при одинаковых исходных ресурсах, различные подходы дадут примерно одинаковый результат, так что, всё это дело вкуса, каким путём идти.
Например, результат работы патентованного модулятора имени Путзейса можно отличить от сермяжно-лапотного, только под микроскопом.
Он придумал более линейный модулятор с односторонним ШИМ, а у меня ШИМ двусторонний и это дало +6дБ луп гейна и улучшило стабильность.
В итоге - результат идентичен. И таких примеров множество.
Обычно сложность и проблемы плавно перемещаются из одного узла в другой и можно здраво оценить результат, только когда соберёшь и кропотливо промеряешь.
З.Ы.
Спектр на выходе модуляторов с 8-битным АФИР, клоком 49.152МГц и выходом 128х.
(Это самая плохая пораженная точка, где видны гармоники модулятора)
Вот отгадайте где кто:
Последний раз редактировалось tomtit; 24.08.2022 в 17:39.
Не, так речь же шла про ККМ.
Мой опубликованный ЦФ даже в 2к помещается (ICE5LP2K), пускай и с урезанным функционалом (как раз используются все выделенные умножители). А для 5к даже сильно оптимизировать не придется.
А вы что-нибудь из самописанных SDM пробовали реализовывать?
Так и есть. Единственное что, в интегральном исполнении AFIR получается намного шустрее, чем на россыпи, и в этом случае начинает выигрывать хорошо (численно) оптимизированный однобитник. Есть также вариант параллельной работы нескольких некореллированных по шуму квантования однобитников.
Попробовал на 8..14 бит ЦАПе увеличивать шум до +/- 8..16 LSB (т.е. во много раз больше диф. нединейностей), без увеличения петлевого, т.к. шум дизера и так ниже полки. Что-то по DNL особо не видно разницы. Попробовал с треугольным распределением (до этого у меня был с равномерным) - то же самое.
В общем ровнять DNL дизерингом - так себе решение. Походу надо либо делать нормальный линейный квантователь, либо использовать однобитный выход.
То что работает понятно, а что с линейностью получается? Удается ли на лог. триггерах на выходе получить хорошую линейность?
Я тоже нарвался с TDA1541. Шанс есть только с субтрактивным дизерингом очень большой амплитуды.
Типа два канала, где сигнал противофазный а дизеринг синфазный и вычитать в аналоге.
Там где использовал СДМ по работе, линейность не была в фаворе, нужно было попроще да подешевле.
Тут на Вегалабе, Wired сделал однобитник на старом Циррозе с выходом на триггерах, как в статье Бруно. Вроде всё нормально, судя по графикам.
Причем, учитывая сегментную структуру большинства мультибитных ЦАП, размах субтрактивного RPDF дитеринга желательно выбирать сравнимым с размерами сегмента, чтобы эффективно "размазать" стыки сегментов. Ну и надо помнить, что эффект снижения DNL пропорционален лишь корню (а не первой степени) размаха дитеринга и коэффициента передискретизации. Законы статистики-с.
В промышленном аудио субтрактивный дитеринг большой амплитуды применялся, в частности, в ЦАП пульта Sony Oxford.
Последний раз редактировалось sia_2; 25.08.2022 в 08:00.
Есть ещё один интересный вопрос, на который я пока не нашел ответа в литературе.
NTF модулятора можно ведь спроектировать и не так, как написано в учебниках.
Можно ограничить добротность нулей, не располагать их на мнимой оси,
добротность полюсов сделать вообще <1, обойтись минимумом комплексно-сопряжённых пар.
В результате получить очень гладкую фЧX, возможно более высокого порядка, чем минимально необходимая.
Я проделал один раз этот нелёгкий труд, проектируя самоосциллирующий модулятор.
Результат получен весьма неплохой, но гораздо сложнее в реализации и проектировании.
В каком случае это оправдано?
Последний раз редактировалось tomtit; 25.08.2022 в 15:56.
Навскидку, давить добротности имеет смысл, когда нужна минимизация "хвостов" автокорреляционной функции модулятора.
Первое, что приходит на ум - автокорелляционная функция выхода модулятора. Насколько она быстро затухает до уровней -80...-120 дБ.
Лучше бы не синус, а белый шум с ограниченной гауссовским фильтром полосой. Плохая - та, у которой долго тянется заметный отклик, и норовит осциллировать. Попросту, вопрос переходной характеристики модулятора и ее стабильности как функции сигнала и его предыстории. Долгий и нестабильный остаток от предыдущих сигналов здорово портит работу всяких алгоритмов обратного восстановления картинки из проекций. Ессно, в аудио на все эти нюансы можно не обращать внимание - отклик помещения и переходные процессы в АС на порядки значительнее.
То есть, если я правильно понял, это проверка «динамической линейности» в некотором роде?
Запустил таки этот модулятор. Сначала попробовал задать точные округления - не помогло. Потом перерисовал схему модулятора в точности по вашему верилоговскому файлу, и все заработало с гейном 2 на выходе квантователя.
Спектр сигнала 1к, 20bit, оверсемплинг x16:
Вся разница, что в моем изначальном варианте сигналы брались с выходов триггеров (как на картинке), а в вашем варианте суммируются сигналы со входов триггеров. Хотя теоретически разницы быть не должно, но она почему-то есть. То ли ошибки округления при суммировании накапливаются по разному, то ли что-то еще.
Социальные закладки