Страница 16 из 16 Первая ... 6141516
Показано с 301 по 320 из 320

Тема: DF2 - Вторая версия DIY ЦФ

  1. #1 Показать/скрыть первое сообщение.
    Завсегдатай
    Автор темы
    Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,651

    По умолчанию DF2 - Вторая версия DIY ЦФ

    Итак, обещанный проект нового ЦФ.
    Опыт прошлой ветки показал, что вопросы построения ЦФ сводятся к конкретному проекту. Поэтому решил создать отдельную.

    Исходная ветка с обсуждением различных реализаций ЦФ здесь.
    Ветка про ЦФ DF1 здесь.

    С момента публикации прошлой версии ЦФ прокачал скилл по верилогу, поэтому новый ЦФ выполнен проще, и с более сложной арифметикой. В частности добавлены опции шейпера и дополнительного апсемплера, что позволяет выводить данные в том числе на малоразрядные ЦАП, типа AK4499EX.
    Получив определенный опыт понял о чем писал Сергей Агеев (на счет реализации умножителей и многовходовых сумматоров на FPGA). Если правильно выбирать длину конвейера, то нет смысла изобретать оригинальную схему умножителя. Компилятор синтезирует лучше.
    То же самое касается описания сумматоров: использование многовходовых сумматоров оптимизируется лучше, чем ручная разбивка на двух-входовые.

    В отличие от предыдущего проекта, новый делался как заготовка для самостоятельного применения и доработки под свои задачи. Поэтому все режимы досконально не тестировались, и проект выкладывается "как есть" в версии альфа.
    В исходниках есть только пара примеров: для FPGA cyclone и lcmxo2.
    Описание содержит краткое перечисление основных параметров, а так же инструкцию по самостоятельной сборке проекта и генерации собственных коэф-тов в MatLab.
    Картинок много, текста мало. Все как мы любим.
    Утилита и ее исходник для автоматизированной конверсии коэф-тов в формат верилога прилагается.
    Так же прилагаются матлабовские модели всех каскадов фильтра, архив со сгенерированными коэф-тами фильтров, примененных в проекте и симулинк-модель. Для запуска симулинк-модели нужен матлаб версии r2018b.

    - 25.09.2023 - Добавил MatLab модель шейпера в симулинке. На этот раз версии r2013b. В 2018-ом матлабе че-то намудрили со спектроанализатором, и в нем амплитуда сигнала получается зависима от порядка шейпера, или от кратности оверсемплинга.

    - 27.09.2023 - Правка шейпера 3-го порядка

    Шейпер 3-го порядка в проекте выполнен по схеме:
    Нажмите на изображение для увеличения. 

Название:	изображение_2023-09-27_132616551.png 
Просмотров:	251 
Размер:	17.0 Кб 
ID:	441606
    NTF шейпера на 1кГц сигнале:
    Нажмите на изображение для увеличения. 

Название:	изображение_2023-09-27_132509846.png 
Просмотров:	243 
Размер:	29.1 Кб 
ID:	441605
    Данный шейпер оптимизирован для работы на невысокой частоте семплирования (х16..х32) и с разрядностью данных не менее 7..8 бит.
    На работы на более высоких ЧД при меньшей разрядности данных можно упростить коэф-т шейпера, улучшив SNR и сэкономив на логике. Для этого исключается слагаемое Gain3 (по схеме симулинка):
    Нажмите на изображение для увеличения. 

Название:	изображение_2023-09-27_132931529.png 
Просмотров:	201 
Размер:	17.0 Кб 
ID:	441607
    В проекте это слагаемое находится в файле DATA_READ.v:
    Нажмите на изображение для увеличения. 

Название:	изображение_2023-09-27_133349302.png 
Просмотров:	226 
Размер:	20.6 Кб 
ID:	441609
    Данное слагаемое отклоняет значение коэф-та от 3-х, создавая дополнительный полюс на NTF. После упрощения коэф-та NTF шейпера принимает вид классического модулятора 3-го порядка.
    Нажмите на изображение для увеличения. 

Название:	изображение_2023-09-27_133125636.png 
Просмотров:	238 
Размер:	26.8 Кб 
ID:	441608
    Можно также это слагаемое не удалять, а менять его величину (увеличивать сдвиг), двигая тем самым полюс NTF.
    [свернуть]

    - 28.09.2023 - Отрефакторил модули DATA_READ и SAI_OUTPUT. Поправил описание.
    - 05.10.2023 - Поправил DF_CONTROL. Поправил описание.
    Вложения Вложения
    Последний раз редактировалось dortonyan; 05.10.2023 в 22:16.

  2. #301
    Новичок Аватар для aleev
    Регистрация
    14.02.2020
    Сообщений
    22

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    Готовый рабочий проект для gowin tang nano 9k с выходом i2s. Играет TDA1541, разумеется, так же как и циклон и прочая. Платка маленькая, это плюс.
    Спасибо, Михаил!

  3. #302
    Завсегдатай
    Автор темы
    Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,651

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Попробовал сделать DSD to PCM преобразователь.
    По идее, в таком случае для отсутствия "зеркал" достаточно сделать ослабление на частоте Найквиста для ЧД 176,4кГц: т.е. на частоте 88,2кГц.
    Замоделил в матлабе фильтр с переходной полосой 20..88,2кГц и проверил фильтрацию выхода соневского модулятора в режиме х64. Вроде все нормально.
    Нажмите на изображение для увеличения. 

Название:	dsd64topcm176_matlab.png 
Просмотров:	24 
Размер:	59.6 Кб 
ID:	466082
    Написал на FPGA фильтр дециматор 16:1. Если на входе DSD64, то на выходе получаем PCM176 с переходной полосой 20..88,2кГц.
    Но при выводе DSD потока из фубара получаю зеркала относительно 22,05кГц (как на ЧД 44,1кГц).
    Нажмите на изображение для увеличения. 

Название:	dsd64topcm176_foobar.png 
Просмотров:	30 
Размер:	104.9 Кб 
ID:	466083
    Что-то не пойму почему так получается. Это в фубаре для модуляторов хреновый фильтр-апсемплер, или я что-то делаю не так?
    Как вообще правильно фильтровать DSD файлы, для любой частоты семплирования резать всегда на 22,05кГц?

  4. #303
    Завсегдатай Аватар для Оллема
    Регистрация
    11.09.2005
    Сообщений
    3,824

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Чем существующий в фубаре не устраивает?

  5. #304
    Завсегдатай
    Автор темы
    Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,651

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Всем устраивает, чисто познавательный интерес.

  6. #305
    Завсегдатай Аватар для tomtit
    Регистрация
    23.06.2009
    Адрес
    пгт.Торонтовка
    Возраст
    66
    Сообщений
    1,011

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Попробовал сделать DSD to PCM преобразователь.
    По идее, в таком случае для отсутствия "зеркал" достаточно сделать ослабление на частоте Найквиста для ЧД 176,4кГц: т.е. на частоте 88,2кГц.
    Замоделил в матлабе фильтр с переходной полосой 20..88,2кГц и проверил фильтрацию выхода соневского модулятора в режиме х64. Вроде все нормально.
    Нажмите на изображение для увеличения. 

Название:	dsd64topcm176_matlab.png 
Просмотров:	24 
Размер:	59.6 Кб 
ID:	466082
    Написал на FPGA фильтр дециматор 16:1. Если на входе DSD64, то на выходе получаем PCM176 с переходной полосой 20..88,2кГц.
    Но при выводе DSD потока из фубара получаю зеркала относительно 22,05кГц (как на ЧД 44,1кГц).
    Нажмите на изображение для увеличения. 

Название:	dsd64topcm176_foobar.png 
Просмотров:	30 
Размер:	104.9 Кб 
ID:	466083
    Что-то не пойму почему так получается. Это в фубаре для модуляторов хреновый фильтр-апсемплер, или я что-то делаю не так?
    Как вообще правильно фильтровать DSD файлы, для любой частоты семплирования резать всегда на 22,05кГц?
    По-моему надо резать с 20-30кгц. Обычно шум DSD64 растёт очень круто прямо от 18-20кгц. Там скорость нарастания даже выше порядка модулятора из-за смещённых нулей NTF. А алиасинги случаются только от недостаточной фильтрации в апсемплере. Скорее всего там каскадированные полуполосники, как обычно, или даже сплайн.
    Вообще, программистам доверять обработку сигналов рискованно, сильно любят готовые классы и библиотеки использовать без проверки ограничений и применимости.

  7. #306
    Завсегдатай
    Автор темы
    Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,651

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Цитата Сообщение от tomtit Посмотреть сообщение
    Вообще, программистам доверять обработку сигналов рискованно, сильно любят готовые классы и библиотеки использовать без проверки ограничений и применимости.
    Похоже на то.
    Глянул, что будет если подать битстрим прямо на AFIR ЦАП, а там тот же алиясинг:
    Нажмите на изображение для увеличения. 

Название:	foobar_DSD_aliasing.png 
Просмотров:	26 
Размер:	105.0 Кб 
ID:	466106
    Оказывается говонокод в плагинах фубара.
    Причем даже стандартный полуполосник с переходной полосой 4,1кГц на 20кГц алиасов не имеет. Что там за апсемплер - можно только догадываться.
    Наверное тупо нарушили условие неналожения спектров: сделали частоту среза выше частоты Найквиста.
    Последний раз редактировалось dortonyan; 09.01.2025 в 19:12.

  8. #307
    Завсегдатай Аватар для Turbo_man
    Регистрация
    06.04.2010
    Адрес
    Moscow
    Сообщений
    5,662

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Цитата Сообщение от dortonyan Посмотреть сообщение
    для ЧД 176,4кГц
    Интересно, модуль конвертора выложишь? Может в 352.8 будет лучше? Для DSD128 и DSD256 надо тоже делать.

    ---------- Сообщение добавлено 21:03 ---------- Предыдущее сообщение было 21:00 ----------

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Оказывается говонокод в плагинах фубара.
    Какие плагины ты использовал?
    Последний раз редактировалось Turbo_man; 09.01.2025 в 22:01.

  9. #308
    Завсегдатай
    Автор темы
    Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,651

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Интересно, модуль конвертора выложишь?
    Позже выложу новый ЦФ, туда заодно и всякое такое докину: модулятор с RZ кодированием (для однобитного ЦАП прямо в выхода плисины) и DSD-to-PCM конвертор.

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Может в 352.4 будет лучше? Для DSD128 и DSD256 надо тоже делать.
    Данный конвертор - это дециматор с фиксированным соотношением 16:1. Поэтому 176,4кГц это для DSD64. Для DSD128 соот-но будет уже 352,8.
    Данные с дециматора подаются на вход обычного фильтра-апсемплера, поэтому какая ЧД на выходе DSD дециматора - не важно. Кратность децимации выбиралась исключительно с целью более-менее эффективного ослабления внеполосного шума модулятора при минимальных ресурсах.
    Поддержку 256 не делал, фильтр сварганил на скорую руку. Точнее 256 тоже запустить можно, если поднять вдвое тактовую частоту, и на выходе будет уже 705,6кГц.
    DSD256 - это уже 9Гб данных на 1 час музыки. Т.е. это чисто для побаловаться, на вряд ли кто-то хранит такую фонотеку.

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Какие плагины ты использовал?
    foo_input_sacd-1.5.1
    И плагины вывода ASIO (для транспорта болеро) и WASAPI (push) (для своего транспорта на пике).

  10. #309
    Завсегдатай Аватар для Михаил45
    Регистрация
    09.03.2007
    Адрес
    Санкт-Петербург
    Возраст
    63
    Сообщений
    2,146

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Алексей, будет DF3? Новый или ревизия второго? Интересно!

  11. #310
    Завсегдатай
    Автор темы
    Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,651

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Почти угадали, DF3E. )
    По принципу похож на DF2 (аналогичный MAC с умножением за 2 такта), но проще и лучше оптимизирован.
    На этот раз будет максимально экономичная реализация, которая позволяет почти вдвое (относительно DF2) сократить ресурсы на ЦФ при той же (условно) производительности.
    На 1-ом циклоне (без выделенных умножителей) такой ЦФ расходует порядка 1,1..1,2к ячеек. Вместе с соневскими модуляторами 2,2к (из 2,9к).
    А для параллельного ЦАП ЦФ помещается в LCMXO2-1200 со встроенным флешем в QFN32 корпусе 5х5мм.

  12. #311
    Завсегдатай Аватар для Михаил45
    Регистрация
    09.03.2007
    Адрес
    Санкт-Петербург
    Возраст
    63
    Сообщений
    2,146

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    ДФ2 вполне хорош! Тебе виднее... ждем, протестируем.

  13. #312
    Зарегистрировался Аватар для Zibulon
    Регистрация
    22.12.2024
    Сообщений
    2

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    Готовый рабочий проект для gowin tang nano 9k с выходом i2s. Играет TDA1541, разумеется, так же как и циклон и прочая. Платка маленькая, это плюс.
    И вам благодарность за переделку под tango9, запустил, играет 🔥🔥🔥

  14. #313
    Завсегдатай Аватар для Михаил45
    Регистрация
    09.03.2007
    Адрес
    Санкт-Петербург
    Возраст
    63
    Сообщений
    2,146

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Не за что, это все Алексей из Белоруссии, ему спасибо огромное и уважение сообщества за открытый проект .

  15. #314
    Зарегистрировался Аватар для Zibulon
    Регистрация
    22.12.2024
    Сообщений
    2

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Огромнейший респект, и огромное спасибо Алексею за столь замечательный и интересный проект! Спасибо огромное ��

  16. #315
    iN GOD We TRUSt Аватар для EDDiE
    Регистрация
    13.02.2006
    Сообщений
    13,565

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ


    Offтопик:
    Цитата Сообщение от dortonyan Посмотреть сообщение
    foo_input_sacd-1.5.1
    И плагины вывода ASIO (для транспорта болеро) и WASAPI (push) (для своего транспорта на пике).
    DSD to PCM Converter (есть английская версия)
    https://cf345325.cloudfree.jp
    плагины для ффубара от автора Peter
    https://www.foobar2000.org/components/author/Peter
    Последний раз редактировалось EDDiE; 11.01.2025 в 15:17.

  17. #316
    Завсегдатай
    Автор темы
    Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,651

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    EDDiE, кто автор не знаю, брал отсюда.
    Похоже на то, что автор плагина либо не в курсе про алиясинг, либо делал апсемплер из расчета на цифрую фильтрацию бриквол-фильтром.
    Но весь смысл DSD - это воспроизведение "как есть", с минимальной фильтрацией пологими фильтрами.
    Поэтому данный плагин для качественного воспроизведения не годится. Может есть другие.... не искал.

  18. #317
    Частый гость Аватар для Кокон
    Регистрация
    12.06.2006
    Адрес
    Минск
    Сообщений
    487

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    dortonyan, сониевские модуляторы по примеру с темы про цифровой звук на этом форуме?

  19. #318
    Завсегдатай
    Автор темы
    Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,651

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Кокон, скорее всего, я других не видел.
    Добротная оптимизированная схема, для которой не обязательно наращивать оверсемплинг до частоты модулятора. ЦФ с х32 оверсемплингом как раз хватает.

  20. #319
    Лишен права ответа (до 01.02.2025) Аватар для stratov
    Регистрация
    16.06.2020
    Адрес
    г. Сальск
    Сообщений
    522

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Кокон, скорее всего, я других не видел.
    Добротная оптимизированная схема, для которой не обязательно наращивать оверсемплинг до частоты модулятора. ЦФ с х32 оверсемплингом как раз хватает.
    Дартаньян, к вам вопросик, скажите верно ли я понимаю: например берем цф sm5813, он после 20с чем то кгц режет -110дб, до 8fs, по даташиту видно что частоты выше 8fs, по уровню так же 0 дб как и основной сигнал, т е это уровень помех дискретизации так же под 0 дб выше частоты 8fs? , цап ad1862 к примеру, на выходе цап просто резистор 100 Ом, ( про линейность речь сейчас не идет), то при вых токе 1мА, на резистлре будет 100мВ, синуса скажем 1кгц, а на частоте выше работы цф, 400кгц, что будет и с каким уровнем? ( ни каких конденсаторов если на выходе). Я б и сам глянул осциллографом, но сейчас цап разобран

  21. #320
    Завсегдатай
    Автор темы
    Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,651

    По умолчанию Re: DF2 - Вторая версия DIY ЦФ

    Частота сигнала на выходе ЦФ не может быть больше частоты Найквиста (Fs/2). Чтобы увидеть спектр выше этой частоты необходимо выполнить дополнительный х2 апсемплинг данных с выхода ЦФ (т.е. до х16).
    Формально, для графиков как в ДШ, такой апсемплинг выполняют добавлением нулевых семплов между исходными. В результате на частоте Fs получаем ступеньки высотой до амплитуды сигнала, что и видно на спектре.
    Но на выходе ЦАП такого прореживания нету, поэтому максимальный уровень сигнала на частоте Fs будет равен максимальной высоте "ступеньки" в сигнале на выходе ЦФ. Для 20кГц сигнала это примерно 1/8 от амплитуды.
    Проще говоря, ВЧ алиясинг - это "ступеньки" сигнала, которые вы наблюдаете осциллографом непосредственно с выхода ЦАП.

Страница 16 из 16 Первая ... 6141516

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •