Страница 12 из 12 Первая ... 2101112
Показано с 221 по 238 из 238

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

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

    По умолчанию 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 
Просмотров:	100 
Размер:	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. #221
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    61
    Сообщений
    36,830

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

    Цитата Сообщение от Злой Посмотреть сообщение
    Особенно если перевести выход в слейв и тактировать от ЦАП.
    Тактировать мастерклоком само собой со стороны ЦАПа, а вот выход ASRC в слейве - это лишний геморрой. Чем его тактировать? Не многие ЦАПы умеют быть мастером и генерировать WCLK/BCLK.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Ну что, можете меняться обратно."(с)типа анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

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

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

    А где бы почитать про основы (принципы) функционирования ASRC? Как там идут расчёты внутри итд. Может и Алексей заинтересуется.

    ---------- Сообщение добавлено 17:00 ---------- Предыдущее сообщение было 16:57 ----------

    Неужто это очень сложно? Ведь в ADAU1467 этих ASRC почти десяток.

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

    А какая точность измерения отношения частот ЧД реально требуется? Разницу в 1/100 Гц можно посчитать за 1.5 сек, если сравнивать BCLK. А если сравнивать MCLK, то будет ещё быстрее или точнее.

  4. #223
    Частый гость Аватар для Злой
    Регистрация
    30.10.2009
    Сообщений
    483

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

    Цитата Сообщение от Alex Посмотреть сообщение
    Не многие ЦАПы умеют быть мастером и генерировать WCLK/BCLK.
    Я на логике делал, как в эвалюшене на ад1896

  5. #224
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    61
    Сообщений
    36,830

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

    Цитата Сообщение от Злой Посмотреть сообщение
    Я на логике делал,
    Сделать не проблема, только зачем?
    Нормальные ASRC (типа AK4137) прекрасно работают в мастере, тактируясь со стороны ЦАПа (например у меня в 1-м на АД1862).
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Ну что, можете меняться обратно."(с)типа анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  6. #225
    Частый гость Аватар для Злой
    Регистрация
    30.10.2009
    Сообщений
    483

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

    Цитата Сообщение от Alex Посмотреть сообщение
    Сделать не проблема, только зачем?
    А это лет десять назад было, может и больше.

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

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

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    А если сделать всё же, то тогда можно будет сделать спдиф входы без фифо. И ген взять ровно 50МГц, как 1024фс для ЧД 48,828кГц. Безумная идея. Аудиогены исключить.
    Небольшой спин-офф: ещё можно поставить генератор на частоту кратную 7056000Гц (НОК 44100 и 48000), тогда вместо переключения генераторов можно будет переключать коэффициенты ЦФ. И кстати, 7056000*7=49392000, это всего на 1.2% отличается от 50Мгц, то есть не труЪ хай-энд, но чтобы попробовать, думаю, годится.
    ∇·D = ρ
    ∇·B = 0
    ∇xE = – ∂B/∂t
    ∇xH = j + ∂D/∂t
    © J. C. Maxwell, O. Heaviside

  8. #227
    Старый знакомый Аватар для tomtit
    Регистрация
    23.06.2009
    Адрес
    пгт.Торонтовка
    Возраст
    66
    Сообщений
    963

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

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    Небольшой спин-офф: ещё можно поставить генератор на частоту кратную 7056000Гц (НОК 44100 и 48000), тогда вместо переключения генераторов можно будет переключать коэффициенты ЦФ. И кстати, 7056000*7=49392000, это всего на 1.2% отличается от 50Мгц, то есть не труЪ хай-энд, но чтобы попробовать, думаю, годится.
    Не..е, плохо получается, лучше 192*147=176.4*160=28224, но чего-то звёзды не сошлись, забросил.

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

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

    Платки приехали.
    Вопрос сообществу: как ещё можно использовать SDRAM 256Mbit, что стоят на платке. ФИФО получается ну очень большим. Полный буфер выходит 128 секунд для 44100 Гц. Можно использовать только 1 банк из этого ОЗУ, он =1/4 ёмкости.

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

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

    Для эксперимента убрал аудио-гены на 1024Fs. Вместо них использовал 2 шт. PLL. Из 50МГц делаю 3072Fs для обеих сеток для семплирования потока спдиф. Для сетки х48 Kpll=59/20, а для х44 Kpll=65/24.
    Погрешность для Fs уложилась в +14/-19 Гц. ФИФО сейчас мало для таких отклонений (для 44100 Гц примерно 4 минуты ФИФО 48х4096). Но далее будет SDRAM 256Мбит.
    Сетки переключаю автоматически по встроенному частотомеру. Неиспользуемая в данный момент PLL подавляется.
    Звук вполне годный.

    ---------- Сообщение добавлено 22:28 ---------- Предыдущее сообщение было 21:16 ----------

    Временно вернулся на внешнее ОЗУ 1Мбит.

    Нажмите на изображение для увеличения. 

Название:	50MHz_gen+SRAM.jpg 
Просмотров:	97 
Размер:	432.2 Кб 
ID:	455639

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

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

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Временно вернулся на внешнее ОЗУ 1Мбит.
    Это получше SDRAM. 256Мбит для фифо избыточно.

    А вообще вот Сергей пишет, что можно и свой VCXO собирать:
    Цитата Сообщение от sia_2 Посмотреть сообщение
    VCXO тогда можно сделать свой и очень крутой.
    Может в самом деле сообразить какой-нить ген на "трехточке" с подстройкой варикапом и буфером на AUP вентиле?

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

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Это получше SDRAM. 256Мбит для фифо избыточно.
    В принципе да, но хочется использовать плату по максимуму. Да и освоить интерфейс с внешней SDRAM для ФИФО тоже интересно в образовательных целях.

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    сообразить какой-нить ген на "трехточке" с подстройкой варикапом
    Лет 10 назад Сергей мне тоже советовал сделать VCXO, но тогда он говорил про кварц между 2-х эмиттеров 2-х транзисторов генератора. Я тогда до конца не врубился про схему генератора, а чуть позже ASRC или ФИФО пришло.

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

    Свой VCXO получится на 256, 384 или 512Fs, и его всё равно придётся умножать на PLL, хотя это и не страшно.

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

    Алексей, а свежий софт Xilinx поддерживает графическое редактирование? Интересна платка

    https://aliexpress.ru/item/100500596...00035059024749

  13. #232
    Старый знакомый Аватар для tomtit
    Регистрация
    23.06.2009
    Адрес
    пгт.Торонтовка
    Возраст
    66
    Сообщений
    963

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

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

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

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

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Алексей, а свежий софт Xilinx поддерживает графическое редактирование? Интересна платка
    Не знаю, по идее должен быть.
    Я только один раз пробовал собирать свой верилоговский проект в ихнем ISE.

    Цитата Сообщение от tomtit Посмотреть сообщение
    Зачастую хороший металлический корпус-экран у заводского генератора даёт лучший результат, чем изощрённая схемотехника.
    В данном случае вопрос не в наилучшести, а тупо в доступности. Хорошие VCXO на нужные частоты днем с огнем не сыщешь, даже в американских магазинах.
    Вот и остается только "колхозить" на россыпи.

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

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

    Как приемлимый вариант, я решил ген 50Мгц на демоплатке заменить на 45.1584Мгц для сетки х44 (она для меня важнее). А для сетки х48 синтезировать PLL через 160/147. Квартус это позволяет. А вот для XILINX так не выходит. Там множители/делители ограничены 128(?).
    Кроме того, в сети нашёлся верилоговский проект управления SDRAM на 256Мбит. Так что и это надеюсь осилить (ФИФО на SDRAM).

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

    Платки на ARTIX-е приехали, тоже буду пытаться их приспособить. Немного по верилогу продвинулся. Так глядишь и GOWIN-овские платки тоже запоют.

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

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

    Удалось запустить ФИФО на SDRAM 256Mb. Прикольно. Выключаешь источник и всё ещё слушаешь кусок трека на 2 минуты. Кварц 50МГц заменён на 45.158Мгц. 49.152 МГц получаю от PLL, как выше уже написал. Немного помучился с клоками для модуля sdram control. Пришлось ещё сформировать клоки 3072фс со сдигом на 90 градусов (позже цифра изменилась на 90...135гр.). Иначе модуль не хотел функционировать нормально. Своя логика фифо работает на клоке без сдвига.

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

    16-бит данные для sdram сформировал так. Старшие 8 бит отдал левому каналу, младшие 8 бит правому. Соответственно полный семпл занимает в ОЗУ 3 слова по 16 бит.
    Последний раз редактировалось Turbo_man; 29.07.2024 в 17:50.

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

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

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    16-бит данные для sdram сформировал так. Старшие 8 бит отдал левому каналу, младшие 8 бит правому. Соответственно полный семпл занимает в ОЗУ 3 слова по 16 бит.
    При таких объемах памяти можно не мелочиться. Паковать данные сразу в 32 бита.

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

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Паковать данные сразу в 32 бита.
    Согласен, тогда бы и режим burst=4 хорошо подошёл, но этот модуль sdram controller-а не поддерживает его. Т.е. адрес передается с каждой операцией записи-чтения. Нет автоинкремента адреса.

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

    Сейчас сделал лаг при чтении 1 сек (~44100 семплов, точнее 131070/3=43690). Но и это многовато. Есть ещё такой момент, что при переходах 44<-->192 и обратно слышна изменённая скорость воспроизведения этого лага (эффект буратино и карабаса). Надо ресетить адресные счётчики при каждом изменении Fs.

    ---------- Сообщение добавлено 20:54 ---------- Предыдущее сообщение было 20:28 ----------

    Добавлю пару фоток.

    Нажмите на изображение для увеличения. 

Название:	cyclone4+sdram.jpg 
Просмотров:	48 
Размер:	318.1 Кб 
ID:	458240
    Нажмите на изображение для увеличения. 

Название:	cyclone4+sdram_2.jpg 
Просмотров:	40 
Размер:	519.5 Кб 
ID:	458241

    ---------- Сообщение добавлено 26.07.2024 в 18:37 ---------- Предыдущее сообщение было 25.07.2024 в 20:54 ----------

    Чёрт, капризная схема оказалась. При любых изменениях в схеме после компиляции перестаёт нормально работать.
    Что же там такого уникального получилось, не пойму? Удалось добиться нормальной работы и для генератора 50МГц для обеих сеток, но схема такая же капризная. Даже не даёт увеличить лаг до 2-х секунд (сейчас 1 сек). Т.е. сдвинуть старт чтения из буфера на 1 двоичный разряд счётчика записи.

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

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    при переходах 44<-->192 и обратно слышна изменённая скорость воспроизведения этого лага (эффект буратино и карабаса). Надо ресетить адресные счётчики при каждом изменении Fs.
    Это только при извлечении входного кабеля, т.е. при пропадании входного сигнала. При нормальном переключении треков с пульта всё нормально и так.

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

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

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Чёрт, капризная схема оказалась.
    Вроде поборол там все болячки.
    Выкладываю для общества свой рабочий проект ФИФО на SDRAM 256Mb на базе контроллера с гитхаба. Может кому-то и пригодится. В папочке проекта есть и PLL-ка для сетки 48х. Я её тоже положил, но не задействовал для упрощения. Запуск чтения буфера задержан на 2 сек (лаг). Можно самостоятельно поменять.

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

    Если кто-то не поленится и переделает модуль фифо полностью на верилоге, то прошу тут его и разместить.Нажмите на изображение для увеличения. 

Название:	fifo.jpg 
Просмотров:	14 
Размер:	419.9 Кб 
ID:	458367

    ---------- Сообщение добавлено 17:09 ---------- Предыдущее сообщение было 16:16 ----------

    Поскольку время записи в и чтения из ОЗУ для каждого семпла 48 бит примерно по 200нсек, то ограничений по частоте Fs я не вижу. Проверял до 192кГц, т.к. у меня основное применение фифо для спдифа. Но можно и для Аманерок (или иных юсб-модулей) в режиме мастер тоже попробовать до 768кГц.
    Вложения Вложения
    Последний раз редактировалось Turbo_man; 29.07.2024 в 17:20.

Страница 12 из 12 Первая ... 2101112

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

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

Ваши права

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