Страница 11 из 13 Первая ... 910111213 Последняя
Показано с 201 по 220 из 243

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

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

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

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

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

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

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

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

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

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    То же самое касается модуля SAI_OUTPUT - ему пофиг как тактируется ядро, главное, чтобы у ядра на выходе было синхронное обновление данных (что и реализовано).
    Ядро и модуль вывода можно тактировать отдельно любой частотой и фазой, лишь бы эти клоки были синхронны друг относительно друга.

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

    Надежнее всего всю логику тактировать общим клоком по одному фронту.
    Алексей привет! Правильно понимаю, что можно спокойно тактировать ДФ2 512 fs? Ничего при этом не поменяется или надо DF2_UPSAMPLE х2 выставить?

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

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

    Приветствую Михаил.
    Да, коэф-ты ЦФ подобраны так, что можно практически безболезненно опустить частоту мастерклока вдвое. Только дополнительный оверсеплер трогать не надо.
    Просто макс оверсемплинг и частоту битклока на выходе нужно задавать вдвое выше. Т.к. ЦФ не знает какой частотой тактируется. Он видит только соотношение частоты мастерклока и входной/выходной ЧД.
    Входная ЧД 48к для ядра с клоком 512Fs будет восприниматься как 96к при клоке 1024Fs.
    Ну а чтобы не потерять производительность ядра, можно затактировать его отдельно через удвоитель на триггере (получается тактирование по обеим фронтам мастерклока). Я такой вариант из примера убрал, но оказалось что он вполне себе нормально работает.

    В частности, для клока 512 опробован такой вариант:
    1. Ядро тактируется через удвоитель. Макс. оверсемплинг задается такой же, как при клоке 1024.
    2. Модуль вывода тактируется напрямую 512 Fs клоком. Для него макс. оверсемплинг задается вдвое выше.

    Удвоитель на верилоге

    Код:
    // optional iCLK doubler Logic
    reg rDIV;
    wire wCLK = rDIV ^ iCLK;
    
    always@ (posedge wCLK) begin
    	rDIV <= !rDIV;
    end
    iCLK - вход мастерклока.
    wCLK - выход удвоенной частоты.
    [свернуть]
    Последний раз редактировалось dortonyan; 06.03.2024 в 13:35.

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

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

    Алексей спасибо! Я использовал pll, работает, но думаю, что при твоем решении будет лучше. Все играет, но хочу понять, почему кни выше с ДФ, чем без на tda1541.

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

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

    Сама-то арифметика искажений не вносит. Надо смотреть разницу в загрузке данных в 1541.
    В новом ЦФ в примере есть режим байпасс. Не пробовали через него сравнить (чтобы вывод данных был один и тот же)?

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

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

    Уже и не помню. Вернусь из командировки и проверю.

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

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Сама-то арифметика искажений не вносит. Надо смотреть разницу в загрузке данных в 1541.
    В новом ЦФ в примере есть режим байпасс. Не пробовали через него сравнить (чтобы вывод данных был один и тот же)?
    Проверил в самом щадящем режиме х4. Искажения на уровне обычном. Еще раньше лоханулся на тестовом синусе- он был на самом деле -6 Дб. Для этих цап достаточно, чтоб выросли НИ. На 0 Дб уровне все норма. При увеличении передискретизации до х16,х32 искажения растут, хотя звучит поначалу более "гладко". В общем остановился на ДФ2 с тактированием 512фс и внутренней PLL циклона 2 на глобальном клоке. Время музыку слушать, а не цапики перебирать. Спасибо тебе за пояснения и участие.
    Последний раз редактировалось Михаил45; 26.03.2024 в 19:38.

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

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

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

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

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

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

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

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

    Кстати, если будете менять коэф-ты или пробовать эмулировать какой-то другой ЦФ, то достаточно заменить коэф-ты только для первой х2 ступени, т.к. она определяет импульсную хар-ку фильтра.
    Остальные каскады апсемплинга на АФЧХ практически не влияют. Поэтому у меня они для всех типов ЦФ одни и те же: максимально экономичные полуполосные интерполяторы.

    Ну и если входная ЧД выше 48..96кГц, то для первой ступени ЦФ может выбирать более короткий фильтр, т.к. длинный не успеет обсчитать. Но на таких ЧД тип фильтра и не особо важен, т.к. переходная полоса много выше звуковой.
    Если будете заливать коэф-ты через SPI интерфейс, то DF2 для первой ступени задействует всегда те коэффициенты, которые залиты. Поэтому производительность фильтра нужно учитывать самостоятельно и при высоких входных ЧД заливать соотв. более короткие фильтры.

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

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

    Понял. Твой ДФ1,2 еще и отличные примеры для изучения верилога.

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

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


    Offтопик:
    Ну первый не особо, там я только начинал пробовать абстрактное описание.
    Второй уже более-менее. Но и там есть куда стремиться: пора переходить к объекто-ориентированному программированию с накоплением библиотек.
    Хотя для обучения наверное лучше пройти все стадии, начиная с графического редактора. Я когда-то так и начинал, рисуя вентилями в MAX+Plus II.

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

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

    Купил вот такие платки. Как приедут отпишусь.

    https://aliexpress.ru/item/100500624...00036444544658

    https://aliexpress.ru/item/329492811...id=66243315594

    На этом CycloneIV удалось в 2 раза увеличить объём ФИФО в проекте (это на встроенном ОЗУ, внешнюю наплатную SDRAM ещё не пробовал добавлять).
    На Cyclone10 ещё не компилировал свой проект. Точнее попробовал, но не все модули можно проапгрейдить до 10-ки. Буду разбираться.

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

    Похоже, что платки на GOWIN идут в долгий ящик пока.
    Последний раз редактировалось Turbo_man; 16.05.2024 в 15:42.

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

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

    10-е циклоны серии LP самые дешевые, поэтому на перспективу лучше ориентироваться на них.
    Можно еще здесь поискать чего. Только не через сортировку (она там корявая), а поиском.
    Я там урвал пару 4-ых циклонов за недорого (забрал последние). Правда, попал ли на брак - вопрос. Запускать пробовать буду не скоро.

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

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

    Алексей, а ты не прикидывал вариант совместить ЦФ-апсемплер с ASRC? Я давно про это спрашивал. Но тогда решили не делать. А если сделать всё
    же, то тогда можно будет сделать спдиф входы без фифо. И ген взять ровно 50МГц, как 1024фс для ЧД 48,828кГц. Безумная идея. Аудиогены исключить.

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

    На демоплатках с Циклонами ген 50МГц уже есть. Хочется услышать такой упрощённый вариант, с сильными отступлениями от аудио канонов.

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

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

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Алексей, а ты не прикидывал вариант совместить ЦФ-апсемплер с ASRC? Я давно про это спрашивал. Но тогда решили не делать.
    А я с арифметикой ASRC так и не разобрался.
    Так что пока вместо FIFO остается либо использовать готовые ASRC (типа AK4137), либо использовать перестраиваемые генераторы (типа Si514).

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

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

    ASRC требует довольно больших вычислительных затрат, к тому же она уже содержит в неявном виде аналог сверхузкополосного ФАПЧ - это подсистема очень точного измерения отношения частот двух аппаратных клоков.
    Существует поверхностное мнение, что ASRC избавляет от джиттера клока. Но на деле это не совсем так, а совсем не так. Природу не обманешь.
    Во первых, фазовый шум и джиттер выходного сигнала определяется точностью вычисления отношения частот, что есть задача нетривиальная, так как работает в реальном времени с неидеальными сигналами. Во вторых, все динамические ошибки вносятся в выходной сигнал навечно и он не пригоден для дальнейшей обработки и хранения для многократного воспроизведения, правда для ДАК это не важно.
    Поэтому я и не стал заморачиваться, хотя для ментального упражнения задачка интересная.

    В последней версии дискретного ДАК я поставил тупо 2 аналоговых VCXO на 44.1х и 48х, они недорогие, кушают всего по 5 мА, джиттер весьма маленький.
    Не пришлось даже корректировать алгоритм в FPGA.
    Правда, пришлось добавить 3 аналоговых мультиплексора 2:1 для коммутации выходов, питания и сигналов управления частотой, чтобы полностью исключить взаимовлияние генераторов друг на друга. Но это копеечные мелочи.


    Offтопик:
    B.Putzeys в одном из интервью рассказал, что в его Мола-Мола время стабилизации ASRC около минуты, что и обеспечивает чистоту клока. Это очень близко к моим 45сек для ФАПЧ. Те же яйца в профиль
    Последний раз редактировалось tomtit; 17.05.2024 в 17:33.

  18. #217
    Завсегдатай Аватар для sia_2
    Регистрация
    18.07.2005
    Сообщений
    4,015

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

    Цитата Сообщение от tomtit Посмотреть сообщение
    В последней версии дискретного ДАК я поставил тупо 2 аналоговых VCXO на 44.1х и 48х, они недорогие, кушают всего по 5 мА, джиттер весьма маленький.
    Не пришлось даже корректировать алгоритм в FPGA.
    Правда, пришлось добавить 3 аналоговых мультиплексора 2:1 для коммутации выходов, питания и сигналов управления частотой, чтобы полностью исключить взаимовлияние генераторов друг на друга. Но это копеечные мелочи.


    Offтопик:
    B.Putzeys в одном из интервью рассказал, что в его Мола-Мола время стабилизации ASRC около минуты, что и обеспечивает чистоту клока. Это очень близко к моим 45сек для ФАПЧ. Те же яйца в профиль
    Только непонятно, зачем делать два VCXO. Проще фильтр-ресэмплер для одной из сеток сделать, и все запустить от одного VCXO. VCXO тогда можно сделать свой и очень крутой. Два таких ставить жирно, и на режим они при переключении выходить долго будут, а один - то что доктор прописал..

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

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

    Цитата Сообщение от sia_2 Посмотреть сообщение
    Только непонятно, зачем делать два VCXO. Проще фильтр-ресэмплер для одной из сеток сделать, и все запустить от одного VCXO. VCXO тогда можно сделать свой и очень крутой. Два таких ставить жирно, и на режим они при переключении выходить долго будут, а один - то что доктор прописал..
    Уже всё проверено в железе, VCXO выходят на режим достаточно быстро, за доли секунды.
    Самая трудная задача - избавиться от щелчков при переключении сеток. Случаются очень нерегулярно и похоже, что причина в Windows драйвере и его неочищенных буферах. Да и желание что-то усовершенствовать пропадает. Все гармоники уже ниже -140dBc при 0дБ, при -10дБ вообще ничего не видно. SNR (невзвешенный) довёл до 113дБ при 19бит ENOB. Разницы в звуке что при 106, что при 113 никакой не услышал.
    Последний раз редактировалось tomtit; 18.05.2024 в 04:39.

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

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

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

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

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

    Цитата Сообщение от Alex Посмотреть сообщение
    с АСРЦ и на слух оно гораздо лучше.
    Особенно если перевести выход в слейв и тактировать от ЦАП.

Страница 11 из 13 Первая ... 910111213 Последняя

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

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

Ваши права

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