Страница 9 из 22 Первая ... 789101119 ... Последняя
Показано с 161 по 180 из 436

Тема: Проектируем цифровой фильтр для ЦАП

  1. #1 Показать/скрыть первое сообщение.
    Забанен (навсегда)
    Автор темы
    Аватар для Эзотехник
    Регистрация
    10.10.2004
    Адрес
    Ru
    Сообщений
    1,188

    По умолчанию Проектируем цифровой фильтр для ЦАП

    Подскажите структуру идеального фильтра и его желаемые характеристики, например для частоты 4х44 кГц. Если в наличии значительная вычислительная мощность и объём памяти.
    Нужна именно теория, поскольку "синицы в руках" уже имеются и подробно рассмотрены в других ветках (микросхемы NPC и BB).
    Кстати фирма Wadia в своих изделиях применяла мотороловские процессоры на шестислойных платах, а не готовые фильтры.

  2. #161
    Завсегдатай Аватар для aal
    Регистрация
    04.11.2004
    Адрес
    пос. Краснообск, Новосибирская область
    Возраст
    53
    Сообщений
    2,854

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    Немного не в тему, но близко.
    Требуется сформировать 2 синуса (естественно в цифре). Можно пойти табличным методом - но для 8 бит и 1к хватит, а для 18 бит и метра может мало оказатся. Есть другой метод http://www.gaw.ru/html.cgi/txt/doc/m.../max2000_5.htm .
    Но интересные эфекты: даже при инт64 вылазеют гармоники на уровне -70 дб + к этому и частота не точно заданная.
    Попробывал так:
    X(n)=k*X(n-1)-X(n-2), где k=2*cos(2*Pi*F/Fd);
    для 0 градусов X(-1)=0, X(-2)=-A*sin(2*Pi*F/Fd);
    для 90 градусов X(-1)=A, X(-2)=A*sin(pi/2+2*Pi*F/Fd)
    90 гр. частота на сотые доли процентов выше и уползает вперёд по отношению к 0 гр.
    Сейчас хочу через приблежённое вычеслени по Тейлору попробывать. Но явно по вычислениям более накладно будет.
    Может ещё есть способ с минимум вычислений сгенерить синус?
    (Всё должно в итоге оказатся в FPGA).

  3. #162
    Новичок
    Регистрация
    28.05.2005
    Адрес
    Ростов - н/Д
    Возраст
    52
    Сообщений
    46

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    Рекурсивный генератор не впечатлил.
    С ходу могу предложить следующее: использовать таблицу небольших размеров (скажем, 4096) и большой разрядности (36 бит). Промежуточные значения получать с помощью линейной интерполяции - потребуется одна операция умножения и два сложения (точнее, сложение и вычитание). Большую точность можно получить, используя квадратичную интерполяцию - потребуются две таблицы и вычислений будет больше...
    А вообще, это лучше спросить на электрониксе, в разделе ПЛИСов или алгоритмов. Там ответят более грамотно.
    Успехов!

  4. #163
    Частый гость
    Регистрация
    17.11.2004
    Сообщений
    342

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    Цитата Сообщение от Vitёk
    Рекурсивный генератор не впечатлил.
    С ходу могу предложить следующее: использовать таблицу небольших размеров (скажем, 4096) и большой разрядности (36 бит). Промежуточные значения получать с помощью линейной интерполяции - потребуется одна операция умножения и два сложения (точнее, сложение и вычитание). Большую точность можно получить, используя квадратичную интерполяцию - потребуются две таблицы и вычислений будет больше...
    А вообще, это лучше спросить на электрониксе, в разделе ПЛИСов или алгоритмов. Там ответят более грамотно.
    Успехов!
    А я тут потиху готовлюсь реализовать в железе енту тему(вроде основное железо уже приобрел)

  5. #164
    Частый гость Аватар для crucifier
    Регистрация
    15.01.2006
    Адрес
    Бывший СССР
    Возраст
    46
    Сообщений
    452

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    Все говорят что недостоваемые PMD фильтры, а они вот(насколько я понял): http://www.audiotuning.de/index.html?1-51-digital.html

    интересно было бы прочитать что же все таки лучше NPC или PMD от тех кто ел и то и другое...
    Последний раз редактировалось crucifier; 02.02.2006 в 12:31.

  6. #165
    Happy little boozer Аватар для Viking
    Регистрация
    11.10.2004
    Адрес
    Украина, г.Хмельницкий
    Возраст
    46
    Сообщений
    1,079

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    Цитата Сообщение от cricifier
    Все говорят что недостоваемые PMD фильтры, а они вот(насколько я понял): http://www.audiotuning.de/index.html?1-51-digital.html

    интересно было бы прочитать что же все таки лучше NPC или PMD от тех кто ел и то и другое...
    Это не они. Там предлагается некая альтернатива этим фильтрам.

  7. #166
    Частый гость Аватар для crucifier
    Регистрация
    15.01.2006
    Адрес
    Бывший СССР
    Возраст
    46
    Сообщений
    452

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    точно! я ошибся. тем не менее вопрос интересный - зачем они предлагают заменить PMD100 на DF1704 в виде апгрейда?

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

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    Цитата Сообщение от Vitёk
    Рекурсивный генератор не впечатлил.
    С ходу могу предложить следующее: использовать таблицу небольших размеров (скажем, 4096) и большой разрядности (36 бит). Промежуточные значения получать с помощью линейной интерполяции - потребуется одна операция умножения и два сложения (точнее, сложение и вычитание). Большую точность можно получить, используя квадратичную интерполяцию - потребуются две таблицы и вычислений будет больше...
    А вообще, это лучше спросить на электрониксе, в разделе ПЛИСов или алгоритмов. Там ответят более грамотно.
    Успехов!
    В 1988 году мной как раз для табличного вычислителя синуса/косинуса было доказано, что для гарантии ошибки не более 1/2 от 2^-24 при правильном выборе линейных приближений (не отрезок, соединяющий "точные значения", а отрезок, дважды пересекающий точную кривую) при хранении четверти периода, достаточно всего 2048 элементов таблицы, причем коэффициенты поправок достаточны 12-битные (весь вычислитель, кроме ПЗУ - два сумматора и умножитель 12х12).

  9. #168
    Новичок
    Регистрация
    28.05.2005
    Адрес
    Ростов - н/Д
    Возраст
    52
    Сообщений
    46

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    не отрезок, соединяющий "точные значения", а отрезок, дважды пересекающий точную кривую
    Это интересно. Нельзя ли подробнее?

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

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    Цитата Сообщение от Vitёk
    Это интересно. Нельзя ли подробнее?
    Тут все просто - отрезок истинной кривой между точками интерполяции с очень хорошей точностью можно рассматривать как параболу. Пусть нормированная длина отрезка по х равна 1, т.е. от -0.5 до +0.5. Если минимизировать максимальную абсолютную (а не среднеквадратичную) ошибку, прямая наилучшего приближения будет пересекать кривую в точках -(sqrt(2)/4), sqrt(2)/4. Эти точки (лежащие симметрично внутри интервала интерполяции на расстоянии в sqrt(2) раз меньше, чем его длина по аргументу) и используются для вычисления коэфициентов смещения и наклона интерполирующих отрезков. Т.е. каждый интерполирующий отрезок (кроме первого, идущего строго из 0) дважды пересекает истинную кривую, "располовинивая" максимальную ошибку.

  11. #170
    Новичок
    Регистрация
    28.05.2005
    Адрес
    Ростов - н/Д
    Возраст
    52
    Сообщений
    46

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    sia_2, респект!!!
    Если я правильно понял, то:
    - аргумент на 1/4 периода имеет 23 разряда;
    - таблица синуса - 24 бита х 2048 (11 старших разрядов аргумента);
    - таблица коэффициентов наклона - 12 бит х 2048;
    - оставшиеся 12 младших разрядов агрумента используются для вычисления смещения относительно "грубой" величины.
    отрезок истинной кривой между точками интерполяции с очень хорошей точностью можно рассматривать как параболу
    Поэотму я и советовал aal использовать квадратичную интерполяцию. Есть у меня подозрение, что при той же точности вычислений размер ПЗУ можно сократить ещё раза в 4 по сравнению с линейной интерполяцией. Как появится настроение, проверю....

  12. #171
    Завсегдатай
    Регистрация
    04.10.2004
    Сообщений
    1,531

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    cricifier,
    Offтопик:
    зачем они предлагают заменить PMD100 на DF1704 в виде апгрейда?
    Наверное, они - идиоты . Хотя скорее идиоты -их клиенты

  13. #172
    полный песец
    Регистрация
    02.03.2005
    Адрес
    Jerusalem
    Возраст
    61
    Сообщений
    1,054

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    Цитата Сообщение от cricifier
    тем не менее вопрос интересный - зачем они предлагают заменить PMD100 на DF1704 в виде апгрейда?
    Как я понимаю, имеется в виду что некий абстрактный ЦАП с PMD на борту принципиально пригоден только для источника с форматом 44/16 (ну или близко к этому), т.е. CD-DA. Апгрейд же позволит подключать (если возможно технически) еще и 24/96 т.е. DVD-Audio. Потребитель получает дополнительную возможность, за деньги заведомо меньшие чем покупка нового целого девайса. А разницу всё равно не каждый услышит, тем более что она имхо не настолько уж громадна.
    Так что не глупость, а весьма удачное решение.

    Цитата Сообщение от cricifier
    интересно было бы прочитать что же все таки лучше NPC или PMD от тех кто ел и то и другое...
    PMD - это поддержка HDCD. Формат не умер, диски выпускаются (и копируются без проблем )
    Другое дело, что чипов вроде бы нет. Однако тут и там мелькают шанлини всякие новые и с поддержкой этого дела. Может быть на РСМ1732. Были еще несколько других - смотри аттач.
    Если же поддержка HDCD не важна, то недоставабельность PMD сводит к нулю любое преимущество.
    Вложения Вложения

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

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    Цитата Сообщение от Vitёk
    sia_2, респект!!!
    Если я правильно понял, то:
    - аргумент на 1/4 периода имеет 23 разряда;
    - таблица синуса - 24 бита х 2048 (11 старших разрядов аргумента);
    - таблица коэффициентов наклона - 12 бит х 2048;
    - оставшиеся 12 младших разрядов агрумента используются для вычисления смещения относительно "грубой" величины.
    Поэотму я и советовал aal использовать квадратичную интерполяцию. Есть у меня подозрение, что при той же точности вычислений размер ПЗУ можно сократить ещё раза в 4 по сравнению с линейной интерполяцией. Как появится настроение, проверю....
    Примерно так, только в таблице синуса хранился не сам синус, а разность синуса и прямой линии (выходящей из начала координат), сдвинутая на 1 бит влево (точность вычислений получается при этом 25 бит, аргумент после приведения к [0...pi/2] становится 23-разрядным). Примерно тот же трюк в таблице поправок. Образующийся запас точности и позволял гарантировать максимум ошибки в +/- 0,8 МЗР 24 бит, и СКО не более примерно 0,4 МЗР.
    Таблиц было 2 варианта - для фиксированной запятой (минимум абс. ошибки) и для плавающей - минимум максимальной относительной. В 1988 году устройство занимало меньше полуплаты 230х160 и работало с частотой 8 МГц (5 ступеней конвеера).

    Смысл сокращать ПЗУ за счет перехода к квадратичной интерполяции есть только при необходимости обеспечения точности синуса лучше 30-32 бит. В противном случае умножители и сумматоры съедают больше места на кристалле (тогда - плате) и работают медленнее, чем ПЗУ.
    Последний раз редактировалось sia_2; 06.02.2006 в 19:21.

  15. #174
    Новичок
    Регистрация
    28.05.2005
    Адрес
    Ростов - н/Д
    Возраст
    52
    Сообщений
    46

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    Цитата Сообщение от sia_2
    Смысл сокращать ПЗУ за счет перехода к квадратичной интерполяции есть только при необходимости обеспечения точности синуса лучше 30-32 бит. В противном случае умножители и сумматоры съедают больше места на кристалле (тогда - плате) и работают медленнее, чем ПЗУ.
    Именно, как Вы сказали, сокращать размер ПЗУ. В Spartan-3 при разрядности 36 бит её размер равен 512 слов, надеюсь использовать именно в такой конфигурации. А с умножителями проблем нет, они являются частью кристалла, умножай не хочу.
    На днях всё-таки займусь моделированием, посмотрю, какая точность получится. Предварительно куплю таблеток от жадности, НЕ МЕНЬШЕ 100 ШТУК!!!

  16. #175
    Новичок
    Регистрация
    28.05.2005
    Адрес
    Ростов - н/Д
    Возраст
    52
    Сообщений
    46

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    Если кому интересно...
    Я провёл соответствующие исследования апроксимации функции синуса с помощью небольшой таблицы (512 значений на 1/4 периода) и функции 2-го порядка.
    Отклонение полученных величин от искомой (ошибка приближения) симметрична и напоминает синусоиду, сжатую с боков (см. рисунок). Абсолютная величина ошибки не превышает 1.51е-10, что эквивалентно 0.65 МЗР при 32-битах (красные точки на графике). При этом ошибка максимальна в самом начале (Y ~ 0). При приближении синусоиды к максиальному значению (Y -> 1) ошибка уменьшается до 0. Собственно, она пропорциональна первой производной.
    Абсолютная величина ошибки на заданном участке (длиной 1/2048 периода) минимальна, если система уравнений решается для трёх точек, чей Х равен равен 0.067, 0.500 и 0.933 (зелёные точки).
    Все вычисления проводились для чисел с плавающей точкой. Для чисел с фиксированной точкой надо будет постараться не сильно нагрубить (в смысле огрубления результов).
    На этом всё.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	sine_approx_ERR.png 
Просмотров:	305 
Размер:	2.5 Кб 
ID:	8069  

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

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    Цитата Сообщение от Vitёk
    Если кому интересно...
    Я провёл соответствующие исследования апроксимации функции синуса с помощью небольшой таблицы (512 значений на 1/4 периода) и функции 2-го порядка.
    Отклонение полученных величин от искомой (ошибка приближения) симметрична и напоминает синусоиду, сжатую с боков (см. рисунок). Абсолютная величина ошибки не превышает 1.51е-10, что эквивалентно 0.65 МЗР при 32-битах (красные точки на графике). При этом ошибка максимальна в самом начале (Y ~ 0). При приближении синусоиды к максиальному значению (Y -> 1) ошибка уменьшается до 0. Собственно, она пропорциональна первой производной.
    Абсолютная величина ошибки на заданном участке (длиной 1/2048 периода) минимальна, если система уравнений решается для трёх точек, чей Х равен равен 0.067, 0.500 и 0.933 (зелёные точки).
    Все вычисления проводились для чисел с плавающей точкой. Для чисел с фиксированной точкой надо будет постараться не сильно нагрубить (в смысле огрубления результов).
    На этом всё.
    Местоположение точек понятно - как раз около нулей Чебышевского полинома, единственное что - первый отрезок (от нуля) неплохо бы отдельно интерполировать так, чтобы устремить относительную погрешность к нулю по мере уменьшения аргумента. Удачи!

  18. #177
    Завсегдатай Аватар для aal
    Регистрация
    04.11.2004
    Адрес
    пос. Краснообск, Новосибирская область
    Возраст
    53
    Сообщений
    2,854

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    Цитата Сообщение от Vitёk
    Если кому интересно...
    Я провёл соответствующие исследования апроксимации функции синуса с помощью небольшой таблицы (512 значений на 1/4 периода) и функции 2-го порядка.
    Абсолютная величина ошибки на заданном участке (длиной 1/2048 периода) минимальна, если система уравнений решается для трёх точек, чей Х равен равен 0.067, 0.500 и 0.933 (зелёные точки).
    Все вычисления проводились для чисел с плавающей точкой. Для чисел с фиксированной точкой надо будет постараться не сильно нагрубить (в смысле огрубления результов).
    На этом всё.
    А текст проги посмотреть можно? Буду очень блогадарен.

  19. #178
    Новичок
    Регистрация
    28.05.2005
    Адрес
    Ростов - н/Д
    Возраст
    52
    Сообщений
    46

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    Цитата Сообщение от sia_2
    первый отрезок (от нуля) неплохо бы отдельно интерполировать так, чтобы устремить относительную погрешность к нулю по мере уменьшения аргумента.
    Первый отрезок - это который на графике от 0 до 0.0067 (и от 0.933 до 0.999)? Не приведёт ли это к избыточным вычислениям?
    Цитата Сообщение от aal
    А текст проги посмотреть можно?
    На днях (завтра-пслезавтра) надеюсь закончить это научное тыканье, и тогда оформлю и опубликую результаты. Сегодня, например, выяснил, что увеличение таблицы в 2 раза уменьшает погрешность в 8 (восемь!) раз, для получения 17-битной точности достаточно иметь таблицы глубиной 16 слов, а для их расчёта не обязательно решать системы квадратных уравнений - они вычисляются с помощью тех же синусов и косинусов.
    Исходник проекта могу выложить, но он малоинформативен (я уже сам в нём путаюсь), гораздо проще понять общие принципы, которые я постараюсь изложить в удобоваримой форме.

  20. #179
    Завсегдатай Аватар для aal
    Регистрация
    04.11.2004
    Адрес
    пос. Краснообск, Новосибирская область
    Возраст
    53
    Сообщений
    2,854

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП


    Offтопик:
    Замечательно!
    Сейчас катострофически нехватает времени....

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

    По умолчанию Re: Проектируем цифровой фильтр для ЦАП

    Цитата Сообщение от Vitёk
    Первый отрезок - это который на графике от 0 до 0.0067 (и от 0.933 до 0.999)? Не приведёт ли это к избыточным вычислениям?
    На днях (завтра-пслезавтра) надеюсь закончить это научное тыканье, и тогда оформлю и опубликую результаты. Сегодня, например, выяснил, что увеличение таблицы в 2 раза уменьшает погрешность в 8 (восемь!) раз, для получения 17-битной точности достаточно иметь таблицы глубиной 16 слов, а для их расчёта не обязательно решать системы квадратных уравнений - они вычисляются с помощью тех же синусов и косинусов.
    Исходник проекта могу выложить, но он малоинформативен (я уже сам в нём путаюсь), гораздо проще понять общие принципы, которые я постараюсь изложить в удобоваримой форме.
    1. Первый отрезок - это именно первый отрезок аппроксимации (то есть, в Вашем случае, для углов от 0 до 1/2048 периода);
    2. По поводу соотношений точность/длина таблиц - все правильно. Для линейной интерполяции удвоение таблицы учетверяет точность.

Страница 9 из 22 Первая ... 789101119 ... Последняя

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

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

Ваши права

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