|
сигма-дельта модулятор + МК |
|
|
|
Oct 20 2010, 12:35
|
Частый гость
 
Группа: Участник
Сообщений: 181
Регистрация: 26-07-10
Пользователь №: 58 606

|
Цитата(hobgoblin @ Oct 20 2010, 16:25)  но лучше, ИМХО, простую плисину прикрутить, благо написать CIC-дециматор не составляет особых проблем Реализация на ПЛИС сомнений не вызывает, но хотелось бы оценить требования к МК для этой задачи.
|
|
|
|
|
Oct 20 2010, 12:54
|

Местный
  
Группа: Свой
Сообщений: 202
Регистрация: 2-10-06
Из: Петербург
Пользователь №: 20 881

|
Цитата(skyv @ Oct 20 2010, 16:35)  Реализация на ПЛИС сомнений не вызывает, но хотелось бы оценить требования к МК для этой задачи. В принципе, в той статье, на которую я ссылку дал, есть описание расчета ресурсов. Но во-первых, как здесь уже говорили, есть проблема с вводом данных в МК на такой частоте (в статье используется последовательный порт блэкфина, но у него частота тактовая может быть довольно высокая, не уверен что в ARMе есть что-то подобное). Во-вторых, делать CIC, который напрямую будет, децимировать в 16000 раз, нежелательно. а) Разрядность на выходе будет большой: ceil(K*log2(M)). K -порядок фильтра, M - коэффициент децимации. Например, для CIC третьего порядка, арифметика должна быть для чисел с разрядностью больше 32 бит (3*15). б) у Вас все равно останется много внеполосного шума, который по любому надо будет отфильтровать, например halfband фильтром.
|
|
|
|
|
Oct 21 2010, 07:58
|
Частый гость
 
Группа: Участник
Сообщений: 181
Регистрация: 26-07-10
Пользователь №: 58 606

|
Цитата(sysel @ Oct 20 2010, 14:04)  Отпишите, пожалуйста, что у Вас выйдет Решил посмотреть в симуляторе какое число тактов затратит 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 мкс обнадеживает.
|
|
|
|
|
Oct 25 2010, 11:14
|
Частый гость
 
Группа: Участник
Сообщений: 181
Регистрация: 26-07-10
Пользователь №: 58 606

|
Цитата(sysel @ Oct 25 2010, 13:25)  ... Процессор LPC1754 (Cortex-M3) на частоте 100 МГц.
На вычисление одного выходного отсчета сигнала (CIC+FIR) требуется 53 мкс. Вот интересно как 100 МГц МК LPC1754 вычисляет быстрее, чем 200 МГц SAM9?
|
|
|
|
|
Oct 25 2010, 11:43
|

Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852

|
Цитата(skyv @ Oct 25 2010, 15:38)  Тогда еще один вопрос. Просто для себя я его пока не рассматривал детально. Данный АЦП предназначен для непосредственного подключения к шунтам с целью измерения тока. У Вас АЦП также используется или нет? Я собираюсь его использовать для измерения напряжений +- 10В. Я тоже мерю ток с шунта. По ТЗ Rшунт = 1 Ом и он находиться внутри девайса, так что я его могу разбить на несколько последовательно включенных резисторов. Для измерения напряжения я эту схему не рассматривал. Хотя что-т подобное видел в даташите на TI. Скорее всего Вам нужно будет перед модулятором ставить буфер на операционнике.
|
|
|
|
|
May 25 2012, 11:00
|

Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852

|
Цитата(Alexey Belyaev @ May 20 2012, 17:11)  Ребят, можно разворошить старое? Чем всё кончилось?  Кончилось всё запуском этого решения в серию. Довольно удачно получилось: 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 такта (с учетом всех трёх секций фильтра). Цитата(Alexey Belyaev @ May 20 2012, 17:11)  Нет ли у кого PDM -> PCM ? У меня нет.
|
|
|
|
|
Dec 14 2012, 11:55
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 10-10-08
Пользователь №: 40 839

|
Цитата(sysel @ May 25 2012, 14:00)  Кончилось всё запуском этого решения в серию. Довольно удачно получилось: 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 бит?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|