Страница 8 из 8 Первая ... 678
Показано с 141 по 160 из 160

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

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

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

    Просто 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. #141
    Завсегдатай Аватар для Михаил45
    Регистрация
    09.03.2007
    Адрес
    Санкт-Петербург
    Возраст
    63
    Сообщений
    2,151

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

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

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

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

    Алексей, а вместо PCM179x можно же подключить TDA1547? А то лежит где-то парочка в закромах.

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

    Хотя туда нужен однобитный поток 192фс. Но думаю и 256фс (11...12МГц) тоже переварит.

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

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

    На выходе демодулятора однобитный поток, куда его подавать - без разницы. Хоть на россыпные триггеры AFIR.
    А можно и вовсе без AFIR, просто вывести диф. сигналы в режиме dsd256 с RZ кодированием (по 4 сигнала на канал), пересинхронизировать на триггерах с чиcтым питанием (можно на одном корпусе 574) и просуммировать резисторами перекрестно (как в DSD1700).
    Дальше аналоговый ФНЧ 5-го порядка и hi-end ЦАП готов.

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

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    На выходе демодулятора однобитный поток, куда его подавать - без разницы. Хоть на россыпные триггеры AFIR.
    А можно и вовсе без AFIR, просто вывести диф. сигналы в режиме dsd256 с RZ кодированием (по 4 сигнала на канал), пересинхронизировать на триггерах с чиcтым питанием (можно на одном корпусе 574) и просуммировать резисторами перекрестно (как в DSD1700).
    Дальше аналоговый ФНЧ 5-го порядка и hi-end ЦАП готов.
    Долго искал кнопку с огоньком или сердечком

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

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

    Цитата Сообщение от Delta213 Посмотреть сообщение
    У Михаила на ep2c5t144 мастер клок заведен на 18 пин, а надо на 8, или я не то прочитал в дш?
    Юра, ниже пример ДФ3 для твоей платы циклон2, вход от аманерки, 512фс. Модуль вывода для 1541 SAI_output , сигналы : dat2_left, dat2_right, bck2, ltch2, режим х8, 16 бит. Для вывода на цап типа 1702 и прочих используется модуль вывода USAI_OUTPUT, сигналы : oDL, oDR, oBCK, oWCK, х8, 16 бит.
    Вложения Вложения
    • Тип файла: 7z DF3E.7z (9.21 Мб, Просмотров: 14)

  7. #146
    Новичок Аватар для alesis33
    Регистрация
    13.03.2011
    Адрес
    г.Минск
    Сообщений
    6

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

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    Модуль вывода для 1541 SAI_output , сигналы : dat2_left, dat2_right, bck2, ltch2
    TDA1541 в режиме simultaneous, вывод 27 OB/TWC на -5В?

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

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

    Да, как и написано в ДШ. А ты сомневаешься?

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

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

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    Юра, ниже пример ДФ3 для твоей платы циклон2
    Михаил, спасибо!
    Для 1541 не надо ли ОВ подпаравить?
    198 .OB( 0 ), // 1 - offset Binary, 0 - 2*s complement
    Нужно включить ОВ, или он в другом месте уже включен?
    Подчиненный перед лицом начальствующим должен иметь вид лихой и придурковатый, дабы разумением своим не смущать начальство.
    Указ Петра I от 09.12.1709:

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

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

    Юра, ты не изучил еще ДФ и модуль вывода SAI_output? уже задано все в .ob_ntwc( 1 ). Если собираешься сам использовать, то надо вникать. И верилог изучать.

  11. #150
    Новичок Аватар для alesis33
    Регистрация
    13.03.2011
    Адрес
    г.Минск
    Сообщений
    6

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

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    Да, как и написано в ДШ. А ты сомневаешься?
    В двух схемах, которые мне попались, режим другой. Развожу печатную плату, поэтому
    решил уточнить. Михаил, спасибо за проект и пояснения.

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

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

    Что-то у меня не прошивается висит на прошивке и прогресс не идет, долго ждал. На этой плате какие-то секреты? Этим-же программатором епм240 прекрасно шилась. Вечером еще дома проверю на другом компе. А что может быть? Байт бластер в системе виден.
    Подчиненный перед лицом начальствующим должен иметь вид лихой и придурковатый, дабы разумением своим не смущать начальство.
    Указ Петра I от 09.12.1709:

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

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

    Цитата Сообщение от Delta213 Посмотреть сообщение
    Что-то у меня не прошивается висит на прошивке и прогресс не идет, долго ждал. На этой плате какие-то секреты? Этим-же программатором епм240 прекрасно шилась. Вечером еще дома проверю на другом компе. А что может быть? Байт бластер в системе виден.
    Секретов нет. Сфоткай плату.

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

    Цитата Сообщение от alesis33 Посмотреть сообщение
    В двух схемах, которые мне попались, режим другой. Развожу печатную плату, поэтому
    решил уточнить. Михаил, спасибо за проект и пояснения.
    Понял. Алексею спасибо, он тут автор.

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

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

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    Секретов нет. Сфоткай плату.
    Нажмите на изображение для увеличения. 

Название:	WhatsApp Image 2025-09-23 at 19.28.46.jpeg 
Просмотров:	21 
Размер:	101.2 Кб 
ID:	478289
    Нажмите на изображение для увеличения. 

Название:	WhatsApp Image 2025-09-23 at 19.28.47.jpeg 
Просмотров:	22 
Размер:	131.1 Кб 
ID:	478290

    Питание подаю, начинается блинк, т.е. прошита алтера.
    Подчиненный перед лицом начальствующим должен иметь вид лихой и придурковатый, дабы разумением своим не смущать начальство.
    Указ Петра I от 09.12.1709:

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

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

    У меня такой же комплект. Все шьется с ноута. А ты зачем снизу то пины припаял?

    ---------- Сообщение добавлено 18:48 ---------- Предыдущее сообщение было 18:46 ----------

    После прошивки мигать не должен. Должны просто гореть индикаторы в зависимости от сигнала.

    Вот прошил только что. Попробуй.
    Вложения Вложения
    • Тип файла: 7z DF3E.7z (8.89 Мб, Просмотров: 4)
    Последний раз редактировалось Михаил45; 23.09.2025 в 19:08.

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

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

    Цитата Сообщение от Delta213 Посмотреть сообщение
    Что-то у меня не прошивается висит на прошивке и прогресс не идет, долго ждал.
    Надо смотреть какие ошибки пишет программатор квартуса.

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

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

    В системе у Юры бластер виден, а видит ли его квартус?

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

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

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    Вот прошил только что. Попробуй.
    А дома на раз-два прошилось, чудеса.

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

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

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

    В той версии разрядность данных ядра была 20 бит на выходе. Не будет звука на выходе для 16 бит, осталось от рсм1702. Сейчас норм. Используй эту.

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

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

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    Используй эту.
    Работает!
    Миша, а что ты с генератором на этой плате сделал? У меня при включении, то загораются св. диоды, то моргают, я думаю из-за него, сдуть штоля?

    На цапах пока не проверял, но думаю все ОК будет, битклок 16х. У меня с битклоком в 32х не заработали 1541.
    1541
    Нажмите на изображение для увеличения. 

Название:	DSView-250924-095400.png 
Просмотров:	4 
Размер:	78.4 Кб 
ID:	478317

    А это якобы 1702, но тоже 16 бит, а можно тут LE сформировать, как у 1541 и сделать 18 бит и еще вариант с 20 бит?
    Нажмите на изображение для увеличения. 

Название:	DSView-250924-100316.png 
Просмотров:	5 
Размер:	76.2 Кб 
ID:	478318
    Подчиненный перед лицом начальствующим должен иметь вид лихой и придурковатый, дабы разумением своим не смущать начальство.
    Указ Петра I от 09.12.1709:

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

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

    С генератором ничего не делал. С него идет на 17 пин., который не задействован. Диоды горят в соответствии с битностью входного сигнала. Не поню точно, как.
    Больше х8 на 1541 смысла нет.

Страница 8 из 8 Первая ... 678

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

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

Ваши права

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