Перейти к содержанию
    

сигма-дельта модулятор + МК

но лучше, ИМХО, простую плисину прикрутить, благо написать CIC-дециматор не составляет особых проблем

 

Реализация на ПЛИС сомнений не вызывает, но хотелось бы

оценить требования к МК для этой задачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Реализация на ПЛИС сомнений не вызывает, но хотелось бы

оценить требования к МК для этой задачи.

В принципе, в той статье, на которую я ссылку дал, есть описание расчета ресурсов. Но во-первых, как здесь уже говорили, есть проблема с вводом данных в МК на такой частоте (в статье используется последовательный порт блэкфина, но у него частота тактовая может быть довольно высокая, не уверен что в ARMе есть что-то подобное). Во-вторых, делать CIC, который напрямую будет, децимировать в 16000 раз, нежелательно. а) Разрядность на выходе будет большой: ceil(K*log2(M)). K -порядок фильтра, M - коэффициент децимации. Например, для CIC третьего порядка, арифметика должна быть для чисел с разрядностью больше 32 бит (3*15). б) у Вас все равно останется много внеполосного шума, который по любому надо будет отфильтровать, например halfband фильтром.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По поводу ресурсов увидел, что использован BF533 с частотой 594 MHz.

SAM9 у меня по SPI работает на 25 MHz без проблем, но под другой задачей.

А для этой похоже ему не дотянуть.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отпишите, пожалуйста, что у Вас выйдет

 

Решил посмотреть в симуляторе какое число тактов затратит SAM9

на вычисление трех интеграторов sinc3 фильтра. Ядро ARM9 работает на 200 МГц,

т. е. 1 такт = 5нс.

Условия для себя принял следующие:

- Частота модулятора = 20 МГц. Частота формирования выходных отсчетов

примерно 10 кГц. Из этих условий я нахожу необходимый размер буфера = 1984 бит

или 62 32-х разрядных слова. Время заполнения буфера составит 1984 * 0.05 мкс = 99.2 мкс.

- В программе я обрабатываю весь буфер = 1984 бит за 10305 тактов, а это соответствует

времени 10305 * 5нс = 51.5мкс. Программный код на обработку 1-го бита такой:

Integr_3 += Integr_2; - 1 такт

Integr_2 += Integr_1; - 1 такт

Integr_1 += ( input >> .... ) & 0x00000001; - 4 такта

Когда использовал цикл по битам, то получил 18672 такта (99 мкс). Пришлось

его развернуть.

Итого из 99.2 мкс потратили 51.5 мкс. Запас в 50 мкс обнадеживает.

 

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мой результат, используя таблицу инкрементов

 

Фильтр CIC (4 интегратора -> децимация в 200 раз -> 4 дифференциатора) -> Фильтр FIR (компенсация CIC + НЧ для дальнейшей децимации) (36 коеф. 32 бита) с децимацией в 5 раз.

Итого децимация в 1000 раз.

 

Алгоритмы реализованы на С, компилятор из IAR, оптимизация по скорости.

 

Процессор LPC1754 (Cortex-M3) на частоте 100 МГц.

 

На вычисление одного выходного отсчета сигнала (CIC+FIR) требуется 53 мкс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

Процессор LPC1754 (Cortex-M3) на частоте 100 МГц.

 

На вычисление одного выходного отсчета сигнала (CIC+FIR) требуется 53 мкс.

Вот интересно как 100 МГц МК LPC1754 вычисляет быстрее, чем 200 МГц SAM9?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот интересно как 100 МГц МК LPC1754 вычисляет быстрее, чем 200 МГц SAM9?

Я использую таблицу инкрементов и оперирую в алгоритме байтами, а не битами. Что само по себе быстрее.

Как допишу алгоритм полностью, вышлю Вам реализацию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда еще один вопрос. Просто для себя я его пока не рассматривал детально.

Данный АЦП предназначен для непосредственного подключения к шунтам с целью

измерения тока. У Вас АЦП также используется или нет? Я собираюсь его использовать для

измерения напряжений +- 10В.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда еще один вопрос. Просто для себя я его пока не рассматривал детально.

Данный АЦП предназначен для непосредственного подключения к шунтам с целью

измерения тока. У Вас АЦП также используется или нет? Я собираюсь его использовать для

измерения напряжений +- 10В.

 

Я тоже мерю ток с шунта.

По ТЗ Rшунт = 1 Ом и он находиться внутри девайса, так что я его могу разбить на несколько последовательно включенных резисторов.

 

Для измерения напряжения я эту схему не рассматривал. Хотя что-т подобное видел в даташите на TI.

Скорее всего Вам нужно будет перед модулятором ставить буфер на операционнике.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С вашей схемой понятно. В моем случае надо будет оценить

итоговое разрешение после приведения входного сигнала с помощью ОУ.

У TI как раз видел использование различных АЦП в схеме привода.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ребят, можно разворошить старое? Чем всё кончилось? :)

Нет ли у кого PDM -> PCM ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ребят, можно разворошить старое? Чем всё кончилось? :)

Кончилось всё запуском этого решения в серию. Довольно удачно получилось:

LPC1754, 96 Мгц.

AD7401A подключен на SSP порт.

клок на модулятор 6МГц.

 

Поток обработки:

Вход(6 MSPS, 1-bit) -> CIC (3 секции, децимация 80) -> CIC (5 секций, децимация 5) -> FIR (порядок = 54, разрядность коэф. 32 бита, децимация 5) -> Выход (3 KSPS, 24 bit)

т.е. произвожу децимацию в 2000 раз.

 

Загрузка процессора = 22 % (оценивал осциллографом)

т.е. на обработку одного бита с модулятора затрачивается 3.5 такта (с учетом всех трёх секций фильтра).

 

Нет ли у кого PDM -> PCM ?

У меня нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кончилось всё запуском этого решения в серию. Довольно удачно получилось:

LPC1754, 96 Мгц.

AD7401A подключен на SSP порт.

клок на модулятор 6МГц.

 

Поток обработки:

Вход(6 MSPS, 1-bit) -> CIC (3 секции, децимация 80) -> CIC (5 секций, децимация 5) -> FIR (порядок = 54, разрядность коэф. 32 бита, децимация 5) -> Выход (3 KSPS, 24 bit)

т.е. произвожу децимацию в 2000 раз.

 

Тоже разворошу былое :)

И сколько получилось реальное разрешение из этих 24 бит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...