Страница 9 из 10 Первая ... 78910 Последняя
Показано с 161 по 180 из 192

Тема: Экономичная реализация арифметики ЦОС в аудио

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

    По умолчанию Экономичная реализация арифметики ЦОС в аудио

    Просто FIR интерполятор - вещь достаточно банальная, а вот оптимизация ресурсов - задача более интересная.
    Поэтому новая ветка про оптимизацию. Предлагаю пообсуждать решения по оптимизации арифметики на FPGA и MCU для аудио ЦОС.
    Предыдущий проект со ссылками на другие ветки здесь.

    С появлением недорогих FPGA GoWin оптимизация вроде как особо и не нужна. Но в наших (отечественных) реалиях ассортимент и стоимость микросхем могут быть не самые лучшие.
    Ну а кроме того, у меня уже давно были мысли уместить ЦФ в LCMXO2-1200, т.к. это недорогая FPGA со встроенной флешью и в компактном исполнении: QFN-32 5x5mm. Что так же послужило поводом для нового проекта и стало целевой задачей при разработке.
    Несколько лет назад я прикидывал, что туда поместится только что-то совсем простое, вроде SM5842. Однако с опытом работы в верилоге получилось ужать арифметику настолько, что даже в такой скромный чип помещается нормальный полноценный апсемплер с шейпером.

    Кое что из стандартных приемов оптимизации уже описывал в проекте DF1.
    Теперь дополнил подробнее (документ во вложении ниже).
    Изначально мысль ужать ресурсы возникла из того обстоятельства, что в DF2 для первой ступени х2 интерполятора использовались каскады с максимально широкой полосой пропускания (максимально узкой переходной полосой). Сделал я это по аналогии со старыми микросхемами ЦФ, типа SM5847.
    Но потом подумал - а собственно нафига?
    В интегральных ЦФ первая ступень для любой входной частоты семплирования сделана максимально широкополосной чисто из соображений экономии: тупо используется одна и та же логика, просто на разной частоте.
    А на FPGA ситуация обратная: максимальная частота тактирования лимитирована, а добавить несколько наборов коэффициентов для разной входной частоты семплирования - не проблема.
    Частоты выше 20кГц все равно не слышно, поэтому переходную полосу можно сделать более пологой (сделать полосу пропускания для всех входных частот семплирования в районе 20кГц).
    Это не только укорачивает импульсную хар-ку фильтра, сохраняя преимущества Hi-Res контента, но и потенциально упрощает фильтрацию в аналоге: чем шире полоса пропускания, тем шире и ее отражение на частоте семплирования.
    А если так, то кол-во тактов, необходимых для обсчета фильтра резко уменьшается. На столько, что при тактировании частотой 1024Fs можно успеть обсчитать оба канала по очереди, что и стало основным нововведением в проекте DF3E. Т.е. в данном ЦФ блок многоступенчатого FIR апсемплера запускается вдвое чаще, чем в DF2.

    Правда одного сужения полосы первой ступени интерполятора оказалось недостаточно для поочередной обработки каналов.
    Поэтому для DF3E проекта были так же оптимизированы полуполосные каскады интерполяторов (сокращены до минимума). Из-за этого боковые лепестки в полосе задержания получились повыше, чем в DF2 проекте, но только на частотах кратных 705кГц, где они легко дофильтровываются аналоговым ФНЧ.
    Еще немного тактов удалось сэкономить оптимизацией алгоритма умножения центрального отвода полуполосных каскадов. В DF2 это умножение, как и остальные, выполнялось за два такта, а в DF3E - за один.

    Для упрощения модуля приема пакетов SPI обработка выполняется сразу по приему данных одного канала: приняли левый - запустили обработку, приняли правый - запустили обработку.
    Данное обстоятельство накладывает ограничение на входной I2S фрейм, в котором сигнал LRCK обязан иметь скважность 50%. Но я еще не сталкивался со случаями, когда данное условие не выполняется.
    Кроме того, обработка в остальных блоках так же выполнена последовательной, что позволило серьезно сэкономить еще и на шейпере и дополнительных амсемплерах. Кто пользовал DF2 сразу почувствует разницу.

    Что еще стоит отметить - добавлено округление с дизером в маке. Что позволило уменьшить разрядность шины данных до 22 бит, а так же - сделало входной аттенюатор фактически беспотерьным даже при малой разхрядности шины данных, и его теперь можно использовать как качественный цифровой РГ.
    Округление с дизером было и в самом первом проекте DF1, но теперь оно выполнено более аккуратно.
    Дизеры для мака и для округления выходных данных выполнены на LFSR со сдвигом на 16 тактов перед выборкой. Если использовать сдвиг на 2^N тактов, то длина генерации последовательности до повтора получается такая же, как и при сдвиге на один такт (т.к. 2^N всегда некратно максимальной длине последовательности LFSR).
    Так же, в ходе экспериментов с округлением на сигналах малой разрядности выяснил, что амплитуда дизера должна быть не менее +/-1 LSB, иначе получается модуляция шума, хотя на спектре следов квантования не видно.
    Для округления данных на выходе добавлена опция дизера с треугольным распределением. Шум которого на 3дБ ниже, чем с прямоугольным. Однако это имеет значение только для округления без шейпера.
    Наличие даже самого простого шейпера 1-го порядка исключает модуляцию шума и можно использовать самый простой шум с равномерным распределением минимальной амплитуды: +/-0.5LSB.

    Схему отработки переполнения наоборот упростил: убрал дополнительный аттенюатор перед шейпером.
    Теперь аттенюация отдана на откуп пользователю проекта, который должен сам решать - на сколько ослабить сигнал в случае вывода данных малой разрядности с шейпингом.

    Ну и отдельно стоит упомянуть про такую вещь, как асинхронное тактирование ядра в DF3E. Для этого выделен отдельный порт "CCLK".
    Типовая тактовая частота для данного проекта 1024Fs.
    Однако, в случае отсутствия тактовых генераторов на такую частоту, можно применить например 512Fs генераторы, а ядро фильтра (а так же ядро DSD дециматора) затактировать любой произвольной частотой, не обязательно кратной 1024Fs (например от встроенного в FPGA генератора).
    Это не только позволяет сохранить производительность при низкой частоте тактовых генераторов, но и при необходимости - поднять тактовую частоту и увеличить длину фильтров.
    Подняв частоту вдвое получим производительность DF2 (если конечно позволит быстродействие выбранной плисины).

    В архиве проект DF3E с исходниками, как обычно в альфа версии, т.к. протестировать весь накрученный функционал слишком трудоемко.
    В файле с примерами приведено два проекта:
    1. Вывода на параллельный ЦАП с возможность приема DSD битстрима.
    2. Вывод данных с соневского модулятора дифференциальными битстримами на PCM179x в моно-включении в режиме DSD.

    Помимо исходников в архиве есть графики частотных хар-к в разных режимах (включая хар-ки DSD дециматоров), диаграммы управляющих сигналов и данных, а так же доработанная утилита (и ее исходник) для преобразования коэф-тов, сгенерированным в матлабе.
    Модули вывода SAI_OUTPUT взяты с проекта DF2 с чисто косметическими доработками, поэтому его описание не делал.
    Вложения Вложения
    Последний раз редактировалось dortonyan; 26.02.2025 в 23:38.

  2. #161
    Завсегдатай Аватар для Delta213
    Регистрация
    23.01.2006
    Адрес
    Астрахань
    Сообщений
    5,323

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    С генератором ничего не делал. С него идет на 17 пин
    У тебя есть доки на эту плату? Я ничего не нашел по ней, одни только фото, даже не знаю что там за второй разъем IDC10, для чего он?
    Подчиненный перед лицом начальствующим должен иметь вид лихой и придурковатый, дабы разумением своим не смущать начальство.
    Указ Петра I от 09.12.1709:

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

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио


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

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Алексей, а как увеличить максимальный поток преобразования pcm2dsd до dsd512?
    Сейчас потолок скорости потока dsd256, как я понимаю.
    Последний раз редактировалось Turbo_man; 26.09.2025 в 22:04.

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

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Задать параметр DSDMAX значением DSD512.
    Там на входе CIC-дециматор, у которого вообще нет ограничения на входную частоту. Просто чем она выше - тем больше разрядности и соот-но больше расход ресурсов.

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

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Спасибо. Мне показалось, что нельзя выбрать такой вариант.

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

    Ещё вопрос: можно ли поток dsd512 разбить на два dsd256? В первом потоке нечётные данные, во втором чётные. Клоки половинной частоты со сдвигом на полпериода, данные тоже со сдвигом.

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

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Ещё вопрос: можно ли поток dsd512 разбить на два dsd256?
    Если имеется ввиду для воспроизведения двумя ЦАП с последующим объединением аналоговых выходов, то я не уверен, но скорее всего так не прокактит.
    Да и зачем вообще такое делать? Если ЦАП выше 256 не тянет, то на DSD512 можно просто забить. Все равно записей в таком формате практически нет, а даже если и найдутся, то объемом в два десятка гигов на альбом.

    Вообще DSD формат имеет смысл только в двух случаях:
    1. Для оцифровки уже сведенных мастер-лент.
    2. Для воспроизведения на своем однобитном ЦАП.

    В первом случае запись будет максимум DSD256, а скорее в DSD64.
    Во втором случае свой СД модулятор можно сделать на любую требуемую кратность оверсемплинга, которую поддерживает ЦАП.
    А в DSD треках, сконвертированных из студийного цифрового PCM формата смысла вообще нуль. Просто очередная аудио-мода и пустой перевод объемов накопителей.

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

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Я планирую преобразовывать с помощью твоего цф пцм в дсд512, затем его разделять на 2 потока по дсд256. И подавать эти 2 потока на 1шт. TDA1547 (у неё раздельные входы клока по каналам), аналог с неё да, суммировать. И так на каждый канал, т.е. суммарно 2шт TDA1547.
    Обычно инвертируют данные и подают во второй канал. Но это банально. Хочу креатива.
    ---------- Сообщение добавлено 19:00 ---------- Предыдущее сообщение было 18:55 ----------

    Просто проверка новой концепции на разницу в звучании с работающими параллельниками в конвейере.
    Исходников в дсд512 нет и не будет.

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

    Кстати, а почему не прокатит такое деление, если суммировать потом аналог? Обычная конвейеризация.
    Последний раз редактировалось Turbo_man; 27.09.2025 в 19:23.

  9. #168
    Завсегдатай Аватар для Yurgen
    Регистрация
    23.05.2005
    Адрес
    Из Замкадья
    Возраст
    54
    Сообщений
    1,641

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Хотя туда нужен однобитный поток 192фс. Но думаю и 256фс (11...12МГц) тоже переварит.
    Меня такая идея тоже посещала, в нем есть своя изюминка по сравнению с мультибитной D-S.
    Make Linux Great Again

  10. #169
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    38,986

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Цитата Сообщение от dortonyan Посмотреть сообщение
    А в DSD треках, сконвертированных из студийного цифрового PCM формата смысла вообще нуль.
    Да, но только если есть доступ к тем-же записям, в этом студийном формате (DXD).
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

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

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Цитата Сообщение от Yurgen Посмотреть сообщение
    Меня такая идея тоже посещала, в нем есть своя изюминка по сравнению с мультибитной D-S.
    256fs прекрасно "кушает" 1547, но по схеме выхлопа из дш, он же тик , звук был так себе,продал 2 цапика без сожаления. Может кому и понравится.

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

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Я на базе платки из Тика буду макет делать. Выхлоп буду апгрейдить. Всё, что до тда1547 буду отключать.
    Жаль платка от VRDS-10, а не 10SE. Больше придётся мучиться.

  13. #172
    Завсегдатай Аватар для Yurgen
    Регистрация
    23.05.2005
    Адрес
    Из Замкадья
    Возраст
    54
    Сообщений
    1,641

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    он же тик , звук был так себе,
    Есть в наличии VRDS 10SE звук конечно не очень детальный, но если ему на вход подать с нормального ЦФ и модулятора PCM и выхлоп сделать хороший, то кто его знает. Если DSD тянет 256 тогда тем более интересен, поскольку во всех современных чипах конвертор в мультибитную DS.


    Цитата Сообщение от dortonyan Посмотреть сообщение
    А в DSD треках, сконвертированных из студийного цифрового PCM формата смысла вообще нуль.
    Для PCM вариант с PWM модулятором как у Бруно Путцейза в теории более выиграшен, поскольку у него при той же OSR меняется еще и ширина импульса, т.е. биты как бы кодируются во времени. У мультибитных DS есть 7 ключей и DEM чтобы убрать их нелинейность, а тут ключ один, только более высокочастотный. И если найти хорошие гены на 1024Fs с ультранизким джиттером, сделать продуманную трасировку ПП и выхлоп хороший, то результат может быть получится лучше чем у Бруно в его Mola-Mola.
    У DSD64 (SACD) упрощенный по нынешним временам D-S модулятор, его собственно и придумали чтобы математику считать не внутри микросхемы ЦАП, а подавать готовое. Потом стали повышать OSR, но сама идея так себе.

    Цитата Сообщение от Alex Посмотреть сообщение
    Да, но только если есть доступ к тем-же записям, в этом студийном формате (DXD).
    DXD это и есть мультибитная D-S, нахрена его в PCM преобразовывать, можно было ведь сразу подавать на DAC типа AK4499EX только привести к стандарту к-во бит.
    Последний раз редактировалось Yurgen; 28.09.2025 в 00:27.
    Make Linux Great Again

  14. #173
    Завсегдатай
    Автор темы
    Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    39
    Сообщений
    4,023

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

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

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Кстати, а почему не прокатит такое деление, если суммировать потом аналог? Обычная конвейеризация.
    Скорее всего из-за разного усиления в каналах сильно вырастут нелинейности и шумы.

    Цитата Сообщение от Alex Посмотреть сообщение
    Да, но только если есть доступ к тем-же записям, в этом студийном формате (DXD).
    Ну если исходник оцифрован в мультибитный формат, то для него должны быть доступны и другие варианты.
    Выбирать среди них именно DSD имеет смысл только если хочется однобитный ЦАП, но нет своего аппаратного модулятора.

    Цитата Сообщение от Yurgen Посмотреть сообщение
    Для PCM вариант с PWM модулятором как у Бруно Путцейза в теории более выиграшен, ....
    Выше речь не про реализацию модуляторов, а про форматы записей.

  15. #174
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    38,986

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Ну если исходник оцифрован в мультибитный формат, то для него должны быть доступны и другие варианты.
    Обычным пользователям они не доступны.

    Цитата Сообщение от Yurgen Посмотреть сообщение
    DXD это и есть мультибитная D-S, нахрена его в PCM преобразовывать,
    Конечно не надо преобразовывать, ибо DXD это и есть PCM352/24.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  16. #175
    Завсегдатай
    Автор темы
    Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    39
    Сообщений
    4,023

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Цитата Сообщение от Alex Посмотреть сообщение
    Обычным пользователям они не доступны.
    Если запись имеет мультибитный исходник, то на вряд ли она будет издаваться исключительно в DSD формате.

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

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    44\16 вполне достаточно для слушания музыки дома. Все остальное - хобби или еще что похуже.

  18. #177
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    38,986

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Если запись имеет мультибитный исходник, то на вряд ли она будет издаваться исключительно в DSD формате.
    В многоканальном DXD издаются? (официально).
    Или хотя бы стерео?
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  19. #178
    Частый гость Аватар для Антидот
    Регистрация
    10.12.2023
    Адрес
    СПб
    Возраст
    58
    Сообщений
    297

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Вообще DSD формат имеет смысл только в двух случаях

    Цитата Сообщение от dortonyan Посмотреть сообщение
    1. Для оцифровки уже сведенных мастер-лент
    Чем PCM в этом применении не угодил?
    P.S. А зачем DSD в-принципе?

  20. #179
    Завсегдатай
    Автор темы
    Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    39
    Сообщений
    4,023

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Цитата Сообщение от Alex Посмотреть сообщение
    В многоканальном DXD издаются? (официально).
    Или хотя бы стерео?
    Понятия не имею.
    Я к тому, что вот например видел аудио-магазин, в котором можно самому выбрать формат записи: PCM до 32/352 или DSD до 512 (или даже до 1024).
    Так вот в таком случае выбирать именно DSD смысла нет. Ну только если там внезапно другой мастеринг.

    Цитата Сообщение от Антидот Посмотреть сообщение
    Чем PCM в этом применении не угодил?
    P.S. А зачем DSD в-принципе?
    При оцифровке в DSD однобитным АЦП отсутствует цифровая обработка, вообще. И воспроизвести такую запись также можно без ЦОС, чисто аналоговым трактом.
    В PCM формате обработка присутствует как при записи, так и при воспроизведении.
    Конечно при современных вычислительных мощностях это не принципиально, но как повод использовать именно DSD - имеет право.

  21. #180
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    38,986

    По умолчанию Re: Экономичная реализация арифметики ЦОС в аудио

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Понятия не имею.
    Я к тому, что вот например видел аудио-магазин, в котором можно самому выбрать формат записи: PCM до 32/352 или DSD до 512 (или даже до 1024).
    Таких очень мало, и я уже молчу о репертуаре.

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Так вот в таком случае выбирать именно DSD смысла нет. Ну только если там внезапно другой мастеринг.
    Конечно, при одинаковом мастеринге и наличии даже не 352 а 192, я бы выбрал его а не DSD.
    Хотя, тут надо еще технику учитывать - с ЦАПами на Рохме, или ТИ 1792/94 или дискретным AFIR, я бы может выбрал бы DSD.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

Страница 9 из 10 Первая ... 78910 Последняя

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

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

Ваши права

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