Страница 6 из 12 Первая ... 45678 ... Последняя
Показано с 101 по 120 из 237

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

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

    По умолчанию 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 
Просмотров:	105 
Размер:	17.0 Кб 
ID:	441606
    NTF шейпера на 1кГц сигнале:
    Нажмите на изображение для увеличения. 

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

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

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

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

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

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

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

    Тоесть 88\96к все же удваиваются? Хватит и этого. Абсолютное большинство музыки переписано в 44\16, в самых топовых сд на 1541а был в основном х4. От этих цап большего нельзя ожидать.

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

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

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    Тоесть 88\96к все же удваиваются?
    Конечно. Если есть хотя бы х2 разница, то ЦФ работает. На 192к будет байпасс.
    Единственное, что может возникнуть проблема, если входная ЧД превысит заданную на выход (режима децимации нету). Не помню, тестировал ли я такой кейс вообще. )
    Но записи в 384к это конечно редкость редкостная.

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

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

    Понятно. В режиме :

    root@orangepi3-lts:~# cat /proc/asound/card*/pcm*p/sub*/hw_params
    closed
    access: MMAP_INTERLEAVED
    format: S32_LE
    subformat: STD
    channels: 2
    rate: 384000 (384000/1)
    period_size: 1024
    buffer_size: 2048
    Тишина . Ну так и должно быть для 1541 в режиме i2s.

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

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

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    Тишина после ДФ2. Ну так и должно быть для 1541.
    Ага, это хорошо. Наверное сработало распознавание некорректной частоты семплирования. В таком случае на выходе индикации ЧД "oINOVS" должны быть три единицы (7 - error).

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

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

    Я ресемплер включал soxr. Твой ДФ1,2 переигрывает его безаговорочно. Поэтому аманерки, хмос только источники i2s.

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

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

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    Я ресемплер включал soxr. Твой ДФ1,2 переигрывает его безаговорочно.
    Странно. Я думал что софтовый ресемплер должен быть как минимум не хуже.
    Единственное, что там скорее всего спад будет крутой (как в моем шапре), и фильтр однопроходной (с более длинной ИХ). Но это такое...
    А разрядность данных на выходе soxr можно задать 16 бит? Может там просто выход из ресемплера 24 бита, и где-то округление в 16 происходит некорректно...

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

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

    Если включать ресемплер и выводить по i2s от аманеры , то звук у тда1541 становится более резким, цифровым что ли. Разрядность аманеры 16 бит. Ресемплер 32.
    Последний раз редактировалось Михаил45; 20.11.2023 в 10:44.

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

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

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    Разрядность аманеры 16 бит. Ресемплер 32.
    Вот возможно в этом и проблема, что ресемплер выдает 32 бита, которые просто "обрезаются" до 16 бит без округления.
    Поэтому для корректного сравнения нужно задать разрядность аманеры 24 или 32 бит, и пропускать через ЦФ в режиме "байпас" (чтобы работало округление).

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

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

    Ясно. Но тут уж высматривается пока определенное использование ДФ2 - 2х1541а по i2s и конвейер в режиме х8 каждая.

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

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

    А у меня проект с участием DF2 опять закапризничал (играл нормально несколько дней назад, хотя я ничего не менял). Опять скользящий каждые 2...3 сек идёт шумовой кусок.
    Кстати, мне ЦФ из DF1 тоже показался более приятным на слух. Поэтому я бы тоже хотел его перетащить в DF2 как один из ЦФ для выбора. Но это всё на уровне нюансов.

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

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

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Опять скользящий каждые 2...3 сек идёт шумовой кусок.
    В DF1 работа фильтра синхронизирована по входу. А в DF2 - по выходу. Может из-за этого разница.
    Но в любом случае в синхронном тракте проблем быть не должно, где-то что-то несинхронно.

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Кстати, мне ЦФ из DF1 тоже показался более приятным на слух.
    А разрядности разрядность шины данных одинаковые?
    В DF1 по умолчанию 31 бит, а в DF2 - 27 бит. Но можно и там и там задать любую другую.

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

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    В DF1 работа фильтра синхронизирована по входу. А в DF2 - по выходу. Может из-за этого разница.
    Но в любом случае в синхронном тракте проблем быть не должно, где-то что-то несинхронно.
    Ищу проблему.
    Цитата Сообщение от dortonyan Посмотреть сообщение
    А разрядности разрядность шины данных одинаковые?
    В DF1 по умолчанию 31 бит, а в DF2 - 27 бит. Но можно и там и там задать любую другую.
    Да, у меня всё было по умолчанию. Попробую переделать DF2 тоже на 31 бит и сравнить, как только смогу победить шумовые вспышки.

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

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

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    А у меня проект с участием DF2 опять закапризничал (играл нормально несколько дней назад, хотя я ничего не менял). Опять скользящий каждые 2...3 сек идёт шумовой кусок.
    Кстати, мне ЦФ из DF1 тоже показался более приятным на слух. Поэтому я бы тоже хотел его перетащить в DF2 как один из ЦФ для выбора. Но это всё на уровне нюансов.
    Володя, по i2s ДФ2 играет намного мягче, музыкальнее что ли. Я его оставил.

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

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


    Offтопик:
    Я ортодокс. У меня тда1541 на 16х только. Но с дизером и нойзшейпингом.
    Стол с компом и измериловкой освободил. Надеюсь скоро обмерю свой вариант цапа на тдашках.

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

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

    От скользящего шума на 88 и 96 кГц удаётся избавиться только при инвертировании сигнала iLRC на входе модуля df2_fir_core. Уже всю голову сломал отчего у меня так. Завтра буду проверять соответствие времени смены сигналов данных и lrck из своего модуля фифо.

    ---------- Сообщение добавлено 02:05 ---------- Предыдущее сообщение было 00:52 ----------

    Вывел с фифо сигналы и увидел проблему. Исправил и всё стало нормально на любой частоте. На параллельной шине данных сигналы пришлось дополнительно пропустить через регистры, чтобы убрать тамошнюю жизнь при чтении озу.

    ---------- Сообщение добавлено 02:07 ---------- Предыдущее сообщение было 02:05 ----------

    В DF1 с фифо брал не с параллельной шины, а с последовательной. На ней было всё нормально. Поэтому и не было проблем.

    ---------- Сообщение добавлено 02:13 ---------- Предыдущее сообщение было 02:07 ----------

    Параллельная шина оказалась с последовательно-параллельными данными чтения из озу.

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

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

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Вывел с фифо сигналы и увидел проблему. Исправил и всё стало нормально на любой частоте.
    С победой!

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    В DF1 с фифо брал не с параллельной шины, а с последовательной. На ней было всё нормально. Поэтому и не было проблем.
    Не ну городить последовательную шину внутри чипа это конечно некрасиво. Надо работать с параллельными данными.

    А я вот вчера подключил свой параллельный ЦАП с DF2 и попробовал услышать разницу между шарпом и полуполосником. И действительно, что-то слышно. Перетыкал джампером на ходу и показалось, что шарп "светлее".
    Долго тестировать и сравнивать не стал. Нарастил разрядность шины с 27 до 31 бита, и разрядность аккумулятора с 34 до 40. Теперь разницу уловить не удается.
    Возможно на шарпе из-за большей длины фильтра набегает больше погрешность округления.
    Или нужна больше разрядность аккумулятора, вариант с повышением разрядности только аккумулятора не пробовал.

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

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

    Спасибо, Алексей.
    Следующей задачей вижу сделать конвертор DSD2PCM.
    Алексей, как бы ты предложил решать её с максимальным использованием DF2?
    Фильтры есть уже. Надо бы ещё в тракт добавить усиление +5...6 дБ для сигнала DSD.

    ---------- Сообщение добавлено 13:41 ---------- Предыдущее сообщение было 13:36 ----------

    Сейчас конвертирую налету в Фубаре (частично заранее сконвертировал в пцм 88кГц или 176), но хочется этого избежать.

    ---------- Сообщение добавлено 14:19 ---------- Предыдущее сообщение было 13:41 ----------

    Интересное наблюдение у меня в тракте.
    Увеличение уровня нойзшейпинга с 1 до 2 делает сибилянты шепелявыми немного. Так что этим увлекаться точно нельзя. Точнее надо это делать с осторожностью.

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

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

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Следующей задачей вижу сделать конвертор DSD2PCM.
    Алексей, как бы ты предложил решать её с максимальным использованием DF2?
    Фильтры-интерполяторы для этой цели не годятся. Нужен дециматор.
    Т.к. входные данные единицы и нули, то соот-но напрашивается однопроходной FIR фильтр без умножений (ранее уже обсуждался).

    Пробовал моделить в матлабе, там ЕМНИП порядка 1к отводов требуется. Но дальше моделирования дело не пошло, т.к. не вижу практической надобности.
    DSD - формат специфический, требующий специального плеера, со специальными плагинами. А если так, то ни что не мешает подключить и плагин конверсии "DSD to PCM". Собирать такое на плисине..., ну чиста побаловаться.
    Вот сделать обратную конверсию: из PCM в битстрим (однобитный модулятор) смысл есть, ради построения однобитного ЦАПа.

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Сейчас конвертирую налету в Фубаре (частично заранее сконвертировал в пцм 88кГц или 176), но хочется этого избежать.
    Вот и смысл избегать? Откуда еще воспроизводить DSD, если не с фубара или какого AP плеера?

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Увеличение уровня нойзшейпинга с 1 до 2 делает сибилянты шепелявыми немного.
    Надо контролировать измериловкой, что меняется на выходе. Не должно быть такого. По крайней мере на разрядностях от 16 бит и больше внеполосные шумы небольшие и слышимых артефактов создавать не должны.
    Может где-то в шейпере переполнение проскакивает, я все режимы не тестировал.
    Кстати, на небольшой ЧД (x4) порядок шейпера наоборот лучше побольше.
    Последний раз редактировалось dortonyan; 22.11.2023 в 15:44.

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

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

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Спасибо, Алексей.
    Увеличение уровня нойзшейпинга с 1 до 2 делает сибилянты шепелявыми немного. Так что этим увлекаться точно нельзя. Точнее надо это делать с осторожностью.
    Согласен. Увеличение разрядности тоже не смягчает звук.

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

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

    Ну почему? Я тоже увеличил разрядность данных до 31 и аккумулятора до 40. Вроде очень даже норм. Из фильтров пока предпочитаю 11 и 10. Это slow и short?
    Normal 00 я бы заменил на фильтр sharp из DF1.

Страница 6 из 12 Первая ... 45678 ... Последняя

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

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

Ваши права

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