Страница 17 из 17 Первая ... 7151617
Показано с 321 по 323 из 323

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

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

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

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

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

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

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

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

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

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

    Продумываю схему ограничения переполнения выходных данных для нового проекта, и возник вопрос - как правильно строить схему ограничения переполнения.
    Перед округлением к данным суммируется дизер или сигнал ООС шейпера, поэтому уровень сигнала может превысить шкалу.
    Если отработку переполнения выполнить после суммирования, то в клиппе будет обрезаться шум. И как бы получается, шум модулированный сигналом.
    В DF2 я сначала выполняю отработку переполнения, потом небольшую аттенюацию, и потом уже суммирую шейпер и дизер. В таком случае переполнение после суммирования исключается.
    А есть ли смысл так делать (сигнал в клиппе в любом случае будет нелинейный)? Кто что думает?

    Еще обнаружил момент по дизеру.
    При округлении без шейпера для отсутствия гармоник на спектре достаточно дизера амплитудой +/-0.5LSB. Но если урезать разрядность сигнала до небольшой величины (5 бит), и послушать на небольшой громкости (амплитудой в районе 1LSB), то слышно, как на малых уровнях сигнала шум обрывается.
    Т.е. получается как бы модулированный сигналом шум.
    Получается, что амплитуды +/-0.5LSB не достаточно и дизер должен шуметь даже при отсутствии сигнала?
    Последний раз редактировалось dortonyan; 24.01.2025 в 15:14.

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

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    А есть ли смысл так делать (сигнал в клиппе в любом случае будет нелинейный)?
    Мне кажется, не нужно. Нафига там шум если это и так щелчок?

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Т.е. получается как бы модулированный шумом сигнал.
    Наверное наоборот, модулированный сигналом шум?


    Цитата Сообщение от dortonyan Посмотреть сообщение
    Получается, что амплитуды +/-0.5LSB не достаточно и дизер должен шуметь даже при отсутствии сигнала?
    Формально да. С другой стороны, noise gate - стандартная практика что при звукозаписи, что в звуковых картах (в emu1212m точно был). Не исключаю, что это делают сами микросхемы ЦАП. Так что по дефолту я бы оставил так. Но это вкусовщина, так что лучше сделать настройкой (но разрешать меняфть её в runtime наверное смысла нет).
    ∇·D = ρ
    ∇·B = 0
    ∇xE = – ∂B/∂t
    ∇xH = j + ∂D/∂t
    © J. C. Maxwell, O. Heaviside

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

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

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    Нафига там шум если это и так щелчок?
    Не, ну клипп это же не совсем щелчок, а подрезание амплитуды. На музыкальном сигнале может быть целый шлейф таких подрезаний, которые будут еще и модулировать шум.
    Для разрядности от 16 бит наверное пофиг. А если делать что-то совсем малоразрядное с шейпером, то "меня терзают смутные сомнения".

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    Наверное наоборот, модулированный сигналом шум?
    Да, неверно выразился.

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    Формально да. С другой стороны, noise gate - стандартная практика что при звукозаписи, что в звуковых картах (в emu1212m точно был). Не исключаю, что это делают сами микросхемы ЦАП. Так что по дефолту я бы оставил так. Но это вкусовщина, так что лучше сделать настройкой (но разрешать меняфть её в runtime наверное смысла нет).
    В случае с параллельными или однобитными ЦАП это нужно делать самому. В принципе согласен: лучше сделать параметризированным константой, и задавать больше/меньше когда надо.

Страница 17 из 17 Первая ... 7151617

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

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

Ваши права

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