реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> контроллер AVR, АЦП, сигнал с несущей частотой 12 мегагерц, можно ли создать устройство на AVR ввода оцифрованного сигнала в КОМП?
Stas633
сообщение Apr 6 2007, 10:50
Сообщение #16


Частый гость
**

Группа: Свой
Сообщений: 105
Регистрация: 6-01-06
Пользователь №: 12 901



... работа над ошибками, так сказать... ))

Цитата(Stas633 @ Apr 6 2007, 00:57) *
...
Варианты:
1. демодулировать сигнал перед оцифровкой.
....

... неправильно.... сигнал необходимо "детектировать", а не "демодулировать", так как исследуется огибающая, а не несущая.

Цитата(Stas633 @ Apr 6 2007, 00:57) *
....
- считывание информации из порта в рабочий регистр (IN) - 1 такт;
- "пересылка" данных из рабочего регистра в SRAM МК (ST) - 2 такта,

итого 3-такта на "отсчет", т.е. 20/3=6,(6)МГц.

Внимание!!! еще меньше, так как необходимо анализировать число сделанных очсчетов, чтобы закончить цикл измерения. Одной командой это сделать нельзя, так как при выполнении команды ST флаги НЕ МЕНЯЮТСЯ!!
....


вариант программы на ASM:

; АЦП и МК работают синхронно
; для "опроса" АЦП используется порт "D" МК
; порт D "настроен" на ввод.
; для записи а ОЗУ используются регистры r26,r27 - X
; r16 - "рабочий" регистр
:Adr - адрес "конца" массива данных, увеличенный на 1. Потому что для записи используется команда с преддекрементом

....
nop
ldi r26,AdrH ; ввод конечного адреса массива в ОЗУ
ldi r27,AdrL ;
M1: in r16,PinD ; "считывание" остчета - 1 такт
st -X,r16 ; запись отсчета в ОЗУ - 2 такта
; определение окончания цикла заполнения ОЗУ
mov r16,r26 ; 1 такт
or r16,r27 ; 1 такт
brne M1 ; 2 такта
nop
....

таким образом "длина" програмы 7 тактов, то есть ЧД будет равна 20/7=2,857 МГц, то есть при использовании "обычного" AVR возможно оцифровать сигнал с частотой не более 1,428 МГц.
Go to the top of the page
 
+Quote Post
NVade
сообщение Apr 6 2007, 10:51
Сообщение #17


Участник
*

Группа: Свой
Сообщений: 71
Регистрация: 7-07-06
Из: Новосибирск
Пользователь №: 18 652



Цитата(sKWO @ Apr 6 2007, 01:19) *
нужно ли брать частоту АЦП 24 МГц ???
достаточно 340 КГц, ведь так же?!!!

Если сигнал с полосой 340 кГц, то достаточно взять частоту дискретизации 680 кГц. Теорема говорит именно о ширине спектра, а не о том, на какой несущей он сидит.
Подробно теорию по этому вопросу можно почитать задав поиск типа "Nyquist zone" или "undersampling".
Здесь есть два момента: надо обеспечить отсутствие отражений от n*680kHz, то есть подавить все вне полосы 12МГц+-340кГц, и выполнить требование к АЦП, чтобы его аналоговая полоса была шире 12 МГц.
Ну и не стоит ожидать, что 8-разрядный 1МГц АЦП даст вам те же 8 разрядов на 12МГц, там будет хуже. Можно пересчитать, если для АЦП указана в параметрах апертурная дрожь (aperture jitter) .
Go to the top of the page
 
+Quote Post
Nanobyte
сообщение Apr 6 2007, 12:41
Сообщение #18


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



Цитата(NVade @ Apr 6 2007, 11:51) *
Если сигнал с полосой 340 кГц, то достаточно взять частоту дискретизации 680 кГц. Теорема говорит именно о ширине спектра, а не о том, на какой несущей он сидит.

Распространённая ошибка! Нужно дискретизировать весь сигнал, а не его изменения. Вот если его выделить, тогда 680 КГц, как минимум, хватит.
Цитата(NVade @ Apr 6 2007, 11:51) *
...Подробно теорию по этому вопросу можно почитать задав поиск типа "Nyquist zone" или "undersampling".

Хорошая мысль, почитайте smile.gif
Цитата(NVade @ Apr 6 2007, 11:51) *
...Ну и не стоит ожидать, что 8-разрядный 1МГц АЦП даст вам те же 8 разрядов на 12МГц, там будет хуже. Можно пересчитать, если для АЦП указана в параметрах апертурная дрожь (aperture jitter) .

На 12 МГц одномегагерцовый АЦП вообще ничего не даст.


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
NVade
сообщение Apr 6 2007, 12:46
Сообщение #19


Участник
*

Группа: Свой
Сообщений: 71
Регистрация: 7-07-06
Из: Новосибирск
Пользователь №: 18 652



2 Nanobyte - а можно еще почитать, что возвращает поиск по digital subsampling, берем первое, что попалось:
http://www.gage-applied.com/Applications/a...3/APW-99156.htm -
при дискретизации 50MSPS народ наблюдает сигнал на несущей 305 МГц,
вначале статьи немного теории, дословно:
The theory behind subsampling is quite simple. The Nyquist theorem needs to be met with respect to the bandwidth of the input signal only, not the actual input frequency itself. In this case, a 200 kHz FM signal with a CW (carrier wave) frequency of 150 MHz need only be sampled at 400 kHz (twice the rate of the FM width). This results in the band of interest being aliased down to a frequency band close to DC.
Перевести?

Сообщение отредактировал NVade - Apr 6 2007, 13:14
Go to the top of the page
 
+Quote Post
zorromen
сообщение Apr 6 2007, 13:38
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 13-12-05
Пользователь №: 12 147



Блин люди... а как вы будете делать subsampling?
Go to the top of the page
 
+Quote Post
AlexG_changed
сообщение Apr 6 2007, 13:59
Сообщение #21


Участник
*

Группа: Validating
Сообщений: 64
Регистрация: 16-06-05
Пользователь №: 6 073



Нужно взять устройство выборки-хранения с определенными параметрами (время выборки такое, чтобы сигнал не успевал заметно измениться за это время) и правильно выбрать частоту дискретизации относительно несущей и полосы частот сигнала, а дальше в теории все просто smile.gif

Сообщение отредактировал AlexG - Apr 6 2007, 14:00
Go to the top of the page
 
+Quote Post
zorromen
сообщение Apr 6 2007, 15:29
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 13-12-05
Пользователь №: 12 147



Люди давайте поймем , что нам нужно ...
if ( Модуляци АМ или ЧМ )... нужно просто выделить полезный сигнал и его уже исследовать...
если просто нужно осцифровать сигнал то я предлогаю метод ... т.к. скорости усб1.0 нехватит для передачи 24.680 Mбайт/сек в реальном времени... то можно так АЦП быстрый, далее ПЛИС тупо записывает значения во внешнюю SDRAM ... потом усе мжно и предовать учерез usb ...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Apr 7 2007, 02:25
Сообщение #23


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Stas633 @ Apr 6 2007, 07:50) *
вариант программы на ASM:
ldi r26,AdrH ; ввод конечного адреса массива в ОЗУ
ldi r27,AdrL ;
M1: in r16,PinD ; "считывание" остчета - 1 такт
st -X,r16 ; запись отсчета в ОЗУ - 2 такта
; определение окончания цикла заполнения ОЗУ
mov r16,r26 ; 1 такт
or r16,r27 ; 1 такт
brne M1 ; 2 такта
таким образом "длина" програмы 7 тактов, то есть ЧД будет равна 20/7=2,857 МГц, то есть при использовании "обычного" AVR возможно оцифровать сигнал с частотой не более 1,428 МГц.

А как вам такой вариант?
Код
      in r16,pind    ; чтение 1-го отcчета
      st x+,r16      ; запись отсчета в ОЗУ
      in r16,pind    ; чтение 2-го отcчета
      st x+,r16      ; запись отсчета в ОЗУ
   . . . . . . . . . . .
      in r16,pind    ; чтение 2048-го отcчета
      st x+,r16      ; запись отсчета в ОЗУ

Потом весь накопленный буфер передать в писюк для отображения. На таком принципе один товарищ соорудил осциллограф-приставку, 6667 квыборок/с. Он использовал АЦП на 28 МГц, который тактировался от МК, считывалось каждое третье преобразование. А я подумываю пойти дальше и сделать 20 Мвыборок/с на 20 МГц атмеге.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Stas633
сообщение Apr 7 2007, 09:11
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 105
Регистрация: 6-01-06
Пользователь №: 12 901



Цитата(=GM= @ Apr 7 2007, 03:25) *
А как вам такой вариант?
Код
      in r16,pind; чтение 1-го отcчета
      st x+,r16     ; запись отсчета в ОЗУ
      in r16,pind; чтение 2-го отcчета
      st x+,r16     ; запись отсчета в ОЗУ
   . . . . . . . . . . .
      in r16,pind; чтение 2048-го отcчета
      st x+,r16     ; запись отсчета в ОЗУ

Потом весь накопленный буфер передать в писюк для отображения. На таком принципе один товарищ соорудил осциллограф-приставку, 6667 квыборок/с. Он использовал АЦП на 28 МГц, который тактировался от МК, считывалось каждое третье преобразование. А я подумываю пойти дальше и сделать 20 Мвыборок/с на 20 МГц атмеге.


Абсолютно верно! Проигрываете в объеме программы - выигрываете в скорости !
И тогда действительно частота выборок (дискретизации) 6,(6) МГц.

Не хочу спрорить, но мне кажеться, что приведенное Вами решение САМОЕ быстрое. Менее 3-х тактов работы CLOCK генератора на один отсчет не получить. Поэтому "довести" част.выб. до 20MSPS при частоте CLOCK МК в 20МГц мне представляется весьма затруднительным.
Я ошибаюсь?
Go to the top of the page
 
+Quote Post
=GM=
сообщение Apr 7 2007, 20:02
Сообщение #25


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Stas633 @ Apr 7 2007, 06:11) *
Абсолютно верно! Проигрываете в объеме программы - выигрываете в скорости !
И тогда действительно частота выборок (дискретизации) 6,(6) МГц.

Проигрыш проигрышу рознь(:-). В атмеге ОЗУ имеется всего 1-2-4-8 Кбайт, куда можно выборки класть. Для каждой выборки необходимо 4 байта кода, т.е. всего 32 Кбайта флеши на 8 Кбайт ОЗУ. Ну и зачем мне 30 Кбайт пустой флеши, если получается всего 2857 квыборок/с? По-моему, лучше 32 Кбайта заполненной флеши, но 6667 квыборок/с. Да и 8 Кбайт тоже не всегда нужны, достаточно 1-2.
Цитата(Stas633 @ Apr 7 2007, 06:11) *
Не хочу спорить, но мне кажется, что приведенное Вами решение САМОЕ быстрое. Менее 3-х тактов работы CLOCK генератора на один отсчет не получить. Поэтому "довести" част.выб. до 20MSPS при частоте CLOCK МК в 20МГц мне представляется весьма затруднительным. Я ошибаюсь?

Да, моё решение самое быстрое в заданной конфигурации - АЦП + МК. Но к проектированию любой системы надо подходить творчески, помнить о приоритетах и о компромиссах. Ну вот, последовательно обдумывая принципы построения осцилла, пришёл к выводу, что вышеприведенный вариант - тупиковый. Недостатки - только 8-битное АЦП, мало памяти, нельзя нарастить систему, построение двухканального прибора с возможностью получения одного канала с 40 Мвыборок/с и т.д. Если рассказать вкратце, то я пришёл к внешнему ОЗУ 32Кх16 с частотой записи 20 МГц, МК здесь выступает как часть конечного автомата, выдаёт адреса в ОЗУ и в конце цикла пересылает накопленные отсчёты в писюк. В результате система содержит АЦП (10-12-14 бит, 20 Мвыборок/с), ОЗУ, МК и пару Д-триггеров. По-моему неплохая плата за 20 Мвыборок/с.

Кстати, ваше решение с семью тактами легко укоротить до 5 тактов.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Stas633
сообщение Apr 7 2007, 22:35
Сообщение #26


Частый гость
**

Группа: Свой
Сообщений: 105
Регистрация: 6-01-06
Пользователь №: 12 901



Цитата(=GM= @ Apr 7 2007, 21:02) *
...
Проигрыш проигрышу рознь(:-).
...

Да я и не имел ввиду, что "проигрыш" в данном случае это плохо. Я лишь "интерпритировал" закон Паскаля для гидравлического пресса (площадь-давление). smile.gif
Но главное, что при рассматриваемой в данной теме, "..заданной конфигурации - АЦП + МК..", "...решение самое быстрое.."! Это факт!

Цитата(=GM= @ Apr 7 2007, 21:02) *
... МК здесь выступает как часть конечного автомата, выдаёт адреса в ОЗУ.. и в конце цикла пересылает накопленные отсчёты в писюк.
...

Снова smile.gif весьма интересная идея. Только как Вы сможете за один такт переслать двух-байтный адрес в порты ввода/вывода? Не понимаю.. Может ОЗУ с автоинкрементом и AVR не причем? В любом случае, использование AVR в качестве "адресного" счетчика, весьма упрощает схему оцифровки.

Цитата(=GM= @ Apr 7 2007, 21:02) *
...
Кстати, ваше решение с семью тактами легко укоротить до 5 тактов.
...

Бесспорно.. Я и не претендовал на "исключительность"... Лишь предложил вариант...
Но уже то, что тема, благодаря Вам, стала "наполнятся" принципиальными идеями, считаю очень полезным... smile.gif
В моем варианте 7-тактов это не единственное "узкое место". Так например адрес начала массива выборок только "0", и ни какой другой...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Apr 7 2007, 23:47
Сообщение #27


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Stas633 @ Apr 7 2007, 19:35) *
Снова smile.gif весьма интересная идея. Только как Вы сможете за один такт переслать двух-байтный адрес в порты ввода/вывода? Не понимаю.. Может ОЗУ с автоинкрементом и AVR ни причем? В любом случае, использование AVR в качестве "адресного" счетчика, весьма упрощает схему оцифровки.

Никакого ОЗУ с автоинкрементом, идея проста до безобразия. Атмега работает на 20 МГц и выдает адрес (А02-А15) на 16-битное ОЗУ за 4 (!) такта (200 нс, придётся поставить один такт ожидания) на чтение с помощью команды ld r16,z+. Далее, на каждом такте (50 нс) два Д-триггера перебирают адреса А00-А01 (четыре раза по 50 нс) и на каждом такте идёт запись в ОЗУ. При чтении Д-триггеры переключаются стробами чтения, АЦП переводится в третье состояние, начинается процесс передачи накопленного в писюк. Вот такой вариант.
Цитата(Stas633 @ Apr 7 2007, 19:35) *
В моем варианте 7-тактов это не единственное "узкое место". Так например адрес начала массива выборок только "0", и никакой другой...

А чем плохо?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Stas633
сообщение Apr 8 2007, 01:59
Сообщение #28


Частый гость
**

Группа: Свой
Сообщений: 105
Регистрация: 6-01-06
Пользователь №: 12 901



Цитата(=GM= @ Apr 8 2007, 00:47) *
Никакого ОЗУ с автоинкрементом, идея проста до безобразия. Атмега работает на 20 МГц и выдает адрес (А02-А15) на 16-битное ОЗУ за 4 (!) такта (200 нс, придётся поставить один такт ожидания) на чтение с помощью команды ld r16,z+. Далее, на каждом такте (50 нс) два Д-триггера перебирают адреса А00-А01 (четыре раза по 50 нс) и на каждом такте идёт запись в ОЗУ. При чтении Д-триггеры переключаются стробами чтения, АЦП переводится в третье состояние, начинается процесс передачи накопленного в писюк. Вот такой вариант.

А чем плохо?

Извините, за "тупость"... не "доходит"...

Не понятно как с помощью ld r16,z+ можно вывести данные в I/O порт? Я ожидал наличия команды out...
Мне представлялся вариант, когда для перебора адресов используется 16-битный counter, а значения его регистров выводятся в I/O порты. Но в этом случае для вывода адреса нужно более 4 тактов (ld r16,x+; out 0;ld r16,x; out 1;rjmp... например так).

Если предположить, что для "ускорения" процесса Вы таблицу адресов размещаете во flash, то тогда какой объем flash необходим? Поправте, если я не прав: для перебора 32к/4 адресов необходимо 8к "выборок", при учете что каждая выборка двух байтная, нужно 16к однобайтных команд "ld...", да еще для хранения таблицы адресов нужно 8к. Итого 24к flash для формирования адреса? Но это опять же при условии отсутствия команды "out"....

Использование внешних триггеров определяет наличие как минимум одного корпуса МС.

А что если увеличить кол-во внешних корпусов до 2-х? Поставить два 8-ми разрядных двоичных счетчика (74хх393) например, и с их "помошью" "перебирать" адреса. Тогда на "плечи" МК ляжет лишь мультиплексирование тактового сигнала (запись в ОЗУ из АЦП и чтение из ОЗУ в МК) и "обработка" полученных данных. Что скажете?

Прим. Все это я пишу не с целью "покритиковать", хочется выработать более-менее "оптимальную" концепцию оцифровщика (осцил).

Сообщение отредактировал Stas633 - Apr 8 2007, 01:59
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 8 2007, 02:07
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Тогда уже ещё один вопрос и по теме вопроса и по теме осциллографа. Правда он уже звучал здесь не раз.

Зачем это всё делать на AVR?
Не бейте больно я не против AVR. Но вопрос можно же задать. Чем он такой замечательный, что необходимо огород городить.

Ведь по-большому счёту можно сделать плату с внешней обвеской и для решения поставленной автором задачи. Но меня гложет мысль зачем?!!! Для чего существует не один десяток различных камней.


Ну для осциллографа - ладно. Там как правило всё равно необходима внешняя схема причём приличная. А объём обработки не очень велик по большому счёту. Но в общем то всё равно вопросы остаются. Возьмём посчитаем.

1) Надо камень с внешней памятью. По минимуму 8515 1.8$ (Для 20МГц необходим другой) Если м64, то 5$
2) Надо АЦП с частотой выборки 32М. 3.5$
3) Надо внешнее ОЗУ. 2$
4) Обвеска проца 1$
5) Аналоговая часть 2$
6) Дисплей графический 15$
7) Корпус 4$
8) Печатная плата 3$
9) Кнопки, щуп и прочие мелочи - 2$
==================
Итого 34-38$

При этом стоимость процессора составит 5-13%

Таким образом применив процессор типа ARM к примеру или ПЛМ стоимость прибора практически не возрастёт. А если это пересчитать на два луча, то тем более.
Go to the top of the page
 
+Quote Post
Stas633
сообщение Apr 8 2007, 09:28
Сообщение #30


Частый гость
**

Группа: Свой
Сообщений: 105
Регистрация: 6-01-06
Пользователь №: 12 901



Еще одна мысль...
В связи с тем, что динамический диапазон 8-м разядного АЦП около 40дБ, думаю что не лишним будет в аналоговой части предусмотреть 3 АЦП:
- 2-ва восьмиразрядных для работы 2-х лучевого осциллографа;
- 1-ин 10...16 разрядный для работы анализатора спектра.
Все АЦП работают на одно 16-ти разрядное (=GM= © ) ОЗУ, а выбором используемого АЦП управляет МК.

Внимание! OFFTOP
Цитата(SasaVitebsk @ Apr 8 2007, 03:07) *
...
Зачем это всё делать на AVR?
...
Таким образом применив процессор типа ARM к примеру или ПЛМ стоимость прибора практически не возрастёт. А если это пересчитать на два луча, то тем более.

На мой взгляд, вопрос выбора типа МК - это вопрос идеологии и личных предпочтений (наличия навыков работы). Применение ARM для портативного (с дисплеем 128х64 точки) осциллографа решением считаю неоправданным. Вот для анализатора спектра производительности AVR8 может не хватить... хотя... http://rf.atnn.ru/s10/digital_osc.html (кстати, применены многие решения обозначенные в этой теме..)
Да и применением ARM (~$17...20) принципиального упрощения не достичь. Все равно вся аналоговая часть с АЦП останется.
ПЛМ же способная "вместить" обработку с выводом на экран (CPLD не "потянет", нужно использовать FPGA) стоит еще больше. (Исхожу из того, что Вы не рассматривали использование ПЛМ только в качестве замены МС малой интеграции).

Повторяемость же (интерес к повторению) многократно снижается, прибор из разряда "широкодоступных" становится "экспериментальным образцом". Посмотрите это:
Форум по осциллографу - ...интерес к простому, с невысокими характеристиками прибору не утихает... Прибор делается, настраивается "всем миром"... и напрочь игнорируются предложения усложнить схему! Отчего так?

Сообщение отредактировал Stas633 - Apr 8 2007, 09:29
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 08:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01425 секунд с 7
ELECTRONIX ©2004-2016