Страница 7 из 7 Первая ... 567
Показано с 121 по 133 из 133

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

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

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

    Просто 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. #121
    Завсегдатай Аватар для Serge_L
    Регистрация
    12.09.2008
    Адрес
    Калуга
    Возраст
    50
    Сообщений
    3,152

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

    domician, знаешь))), а я вот люблю 1541!
    Есть в нем что-то особенное, «виниловое».
    И почему бы не иметь такое)))
    Включать иногда. У меня он внутри СД встроен. С компа на нем слушать не буду)))
    Это просто джиттер какой-то! (с) momitko

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

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

    Цитата Сообщение от Serge_L Посмотреть сообщение
    Есть в нем что-то особенное, «виниловое».
    Вот все так говорят, я и решил попробовать, тем более что сам чип у меня был, собственно на 4х у меня и сейчас работает, я 8х хочу. И еще ламповый и/у ну чтобы это дело усугубить.
    Подчиненный перед лицом начальствующим должен иметь вид лихой и придурковатый, дабы разумением своим не смущать начальство.
    Указ Петра I от 09.12.1709:

  4. #123
    Завсегдатай Аватар для domician
    Регистрация
    07.12.2012
    Сообщений
    2,658

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

    Цитата Сообщение от Serge_L Посмотреть сообщение
    Есть в нем что-то особенное, «виниловое».
    Ну не знаю... Был у самого давно, но отдал без сожаления.
    Как продал последовательно все связанное с LP после покупки CD, лент/кассет после появления CD-R, CD после появления достаточно вместительных HDD за адекватные деньги. Ну а теперь на внешних SSD размером в флешку. Нет механики - другой уровень надежности. Я сознательно не касаюсь субъективного - звучания, но по удобству коллекция аудио на SSD/тихом, малооборотистым ноутбучным HDD вне конкуренции.
    А виниловый/магнитофонный звук нет проблем симитировать (хотя смысла не вижу) на PC без всей возни с аппаратурой и носителями.

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

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

    Цитата Сообщение от domician Посмотреть сообщение
    Но использовать его для 1541 и похоже нонсенс.
    Ничего подобного. Именно ДФ Алексея позволяет все возможности старых TDA1541 или типа РСМ1702\04 реализовать.

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

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

    Согласен. Именно с дф2+конвейер у меня тда1541 играют лучше некуда.

  7. #126
    Завсегдатай Аватар для domician
    Регистрация
    07.12.2012
    Сообщений
    2,658

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

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    РСМ1702\04
    Да, их еще есть смысл, но 1541...
    По любому для меня это давно пройденный этап.

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

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

    Цитата Сообщение от Delta213 Посмотреть сообщение
    Насчет плл не понял, дф восстанавливает клок с аманеро? Или из 512 делает 1024?
    Внутри фпга есть pll, которым можно умножить любую частоту. Главное правильно выбрать входной пин для мастерклока. Например, у ep1c3t100 циклона из двух Dedicated Clock входов только один заведен на вход pll.

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

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Главное правильно выбрать входной пин для мастерклока.
    У Михаила на ep2c5t144 мастер клок заведен на 18 пин, а надо на 8, или я не то прочитал в дш?
    Подчиненный перед лицом начальствующим должен иметь вид лихой и придурковатый, дабы разумением своим не смущать начальство.
    Указ Петра I от 09.12.1709:

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

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

    Delta213, я так с ходу не скажу, надо читать в мануале на данный циклон раздел по PLL.
    Но на вскидку могу предположить, что если у Михаила PLL по факту работает, то значит клок заведен куда надо.

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

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

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

Название:	изображение_2025-08-31_130459107.png 
Просмотров:	19 
Размер:	136.6 Кб 
ID:	477424
    Подчиненный перед лицом начальствующим должен иметь вид лихой и придурковатый, дабы разумением своим не смущать начальство.
    Указ Петра I от 09.12.1709:

  12. #131
    Частый гость Аватар для Ilya_Blazer
    Регистрация
    13.07.2015
    Адрес
    Ярославль
    Сообщений
    210

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

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    Больше 768кГц не тривиально вывести с компа.
    Запиливаешь медиасервер. Делов-то, правда долго и муторно. (железо сам делал к такому).

    ---------- Сообщение добавлено 23:32 ---------- Предыдущее сообщение было 23:23 ----------

    Цитата Сообщение от domician Посмотреть сообщение
    Проще делать на современных DAC микрухах
    Ну и современные r-2r микросхемы ЦАП-ов есть.
    И используются. Например, в Schiit Yggdrasil.

    Есть и авторские разработки, тоже на этих же "мультибитах". Такой цап у меня в РФ остался.

  13. #132
    Завсегдатай Аватар для Meta|_
    Регистрация
    08.03.2005
    Адрес
    Северная Голландия
    Возраст
    41
    Сообщений
    2,191

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


    Offтопик:
    Цитата Сообщение от Ilya_Blazer Посмотреть сообщение
    Делов-то, правда долго и муторно.
    Мне кажется, "делов-то" и "долго и муторно" - несколько противоречивые понятия ;)
    ИМХО, прямо здесь и сейчас проще вывести с компа 176..384кГц, а остальное (дальнейший оверсемплинг, фильтрация, шейпинг/модуляция и что ещё может быть нужно индейцу) сделать на ПЛИС.
    Можно и всё на ПЛИС, но на компе удобнее. Поясню, для эквализации и подобного хочется гибкости, а заодно сделать немного оверсемплинга и ФНЧ - это по сути бесплатно.
    Выше 80+ кГц - напротив, гибкость ни к чему, нужны простые и понятные технические характеристики.

    ЗЫ: Полагаю, здесь это офф.
    ∇·D = ρ
    ∇·B = 0
    ∇xE = – ∂B/∂t
    ∇xH = j + ∂D/∂t
    © J. C. Maxwell, O. Heaviside

  14. #133
    Частый гость Аватар для Ilya_Blazer
    Регистрация
    13.07.2015
    Адрес
    Ярославль
    Сообщений
    210

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

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    ИМХО, прямо здесь и сейчас проще вывести с компа 176..384кГц, а остальное (дальнейший оверсемплинг, фильтрация, шейпинг/модуляция и что ещё может быть нужно индейцу) сделать на ПЛИС.
    Можно и всё на ПЛИС, но на компе удобнее. Поясню, для эквализации и подобного хочется гибкости, а заодно сделать немного оверсемплинга и ФНЧ - это по сути бесплатно.
    ну у меня есть близкие товарищи, кто делал.
    Сибарит сделал black.bike Proton, там обработка на ПЛИСе.
    И еще один товарищ, с которым мы лет много назад делали разные прикольные вещи, некоторые даже принесли баблища.
    Он тоже на плисе сделал, ибо собственно практическим плисоводством занимается лет 20.

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

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    Мне кажется, "делов-то" и "долго и муторно" - несколько противоречивые понятия ;)
    Не совсем противоречивые, это не сложно, но затратно по времени было.

Страница 7 из 7 Первая ... 567

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

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

Ваши права

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