|
сигма-дельта модулятор + МК |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 27)
|
Oct 20 2010, 08:56
|

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

|
Цитата(skyv @ Oct 20 2010, 11:33)  Именно этот модулятор я и рассматриваю. ... Для себя хочу рассмотреть возможность приема непрерывного потока по SPI с использованием двух буферов + ДМА. Получается, что SPI должен работать в режиме MASTER, чтоб генерировать клок для модулятора (проверить, потянит ли SPI тактовую 16 МГц). Судя по даташиту на AD7401 минимальная частота 5 МГц, так что м.б. и исходить из 5 МГц. Также необходимо убедиться, что SPI не будет между байтами (или словами) пропускать биты (за счет вставки CS=1 между передачами). На моём МК (LPC1754) к SPI DMA не прикручивается... Через пару дней мне придут образцы AD7401A, так что если будет свободное время - обязательно поиграюсь с ними.
|
|
|
|
|
Oct 20 2010, 11:19
|

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

|
Цитата(skyv @ Oct 20 2010, 14:34)  Пока лучше опишу чего не выходит. Посмотрел текст фильтра на VHDL и возникают вопросы. 1. Сигнал reset нужен только для начальной инициализации и в процессе работы он не нужен? Замечание: там не VHDL код, а Verilog. VHDL приводиться в документации на TIшную м/сх AMC1203. Сигнал "reset" только для начальной инициализации. Цитата(skyv @ Oct 20 2010, 14:34)  2. Не пойму комментарий. if(mdata1==0) ip_data1 <= 0; /* change from a 0 to a -1 for 2's comp */ else ip_data1 <= 1; Если mdata1==0, то всегда ip_data1 = 0, а где и когда получаем -1? В интернетах об этот комментарий много копий сломано на буржуйских форумах. Я эту штуковину моделировал в Delphi. Брал "0" и "1" как в тексте. Цитата(skyv @ Oct 20 2010, 14:34)  3.Долее, не пойму как могут работать интеграторы если ip_data1 всегда 0 или 1. К Acc1 либо прибавляется единичка, либо нет. В схеме с интеграторами нас интересует только изменение Acc3 за промежуток между децимацией. Ну да, случаются переполнения, ну и аллах с ними, нас же интересует только приращение Acc3 и всё. А при должной разрядности сумматоров (чтоб между моментами выборки дециматора не произошло 2 или более переполнения Acc3) одно переполнение ни как не скажется на вычислении приращения. При моделировании я использовал беззнаковые числа с фиксированной точкой. На вход подавал засигмодельтированную синусоиду, на выходе получал синусоиду на фоне постоянной составляющей в полшкалы. Мне пока не совсем понятны частотные характеристики этого чуда. Есть такой чип AMC1210, который может сам всё отфильтровать.
|
|
|
|
|
Oct 20 2010, 12:02
|

Профессионал
    
Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565

|
Цитата(skyv @ Oct 19 2010, 15:57)  Есть несколько вопросов по работе с сигма-дельта модулятором. Исходно имеем частоту модулятора Fsampl = 16МГц и частоту дискретизации выходного сигнала Fd = 10кГц. Число разрядов – 16. 3. В даташите на модулятор есть пример фильтра-дециматора на VHDL. Скажите, а если этот поток с модулятора прогнать через НЧ фильтр с частотой среза 5кГц и взять каждый 16000 отсчёт, то чем это плохо? Типа ресурсов много сожрёт или некачественно будет? А то я в этих сигма дельта ничего не понимаю, особенно когда они имеют порядок. Тем более, что в одном из имеющихся у меня - количество единиц превышает количество нулей...
|
|
|
|
|
Oct 20 2010, 12:17
|

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

|
Цитата(_4afc_ @ Oct 20 2010, 16:02)  Скажите, а если этот поток с модулятора прогнать через НЧ фильтр с частотой среза 5кГц и взять каждый 16000 отсчёт, то чем это плохо? Типа ресурсов много сожрёт или некачественно будет? Как раз это и надо сделать. Вопрос в реализации этого фильтра и дециматора. Суть в том, чтобы с поток с большой частотой семплирования (16MГц) максимально простым фильтром и дециматором привести к меньшей частоте семплирования, а потом на этой частоте семплирования строить фильтр со срезом 5кГц и ещё разок проводить децимацию до Fs = 10 кГц. Цитата(_4afc_ @ Oct 20 2010, 16:02)  Тем более, что в одном из имеющихся у меня - количество единиц превышает количество нулей... Значит по входу у Вас сигнал больше чем полшкалы. Хорошее подспорье для понимания - MATLAB + Delta Sigma ToolboxТам есть документация и "How it works" на одном листке.
|
|
|
|
|
Oct 20 2010, 12:25
|

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

|
Цитата Скажите, а если этот поток с модулятора прогнать через НЧ фильтр с частотой среза 5кГц и взять каждый 16000 отсчёт, то чем это плохо? Типа ресурсов много сожрёт или некачественно будет? При очень большом соотношении частоты дискретизации к полосе использовать простые децимирующие FIR фильтры неэкономично по ресурсам. По этой причине в сигма-дельта модуляторах повсеместно используют CIC фильтры или комбинацию CIC и FIR (для исправления завала АЧХ CIC). Цитата В даташите на модулятор есть пример фильтра-дециматора на VHDL. Где найти аналогичный пример на С? http://www.analog.com/static/imported-file.../EE-350rev1.pdfhttp://www.analog.com/static/imported-file...es/EE350v01.zipно лучше, ИМХО, простую плисину прикрутить, благо написать CIC-дециматор не составляет особых проблем
|
|
|
|
|
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
|
|
|