Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: контроллер AVR, АЦП, сигнал с несущей частотой 12 мегагерц
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
sKWO
Добрый день всем!!!
Возникла необходимость создания схемы ввода оцифрованного
сигнала с несущей 12 МГц и шириной спектра 340 КГц.
Хотелось реализовать схему на АВРовском контроллере с использованием
внешнего АЦП и на верное через ЮеСБи.
Помогите с советом!!!!
Программу хотелось бы написать на ИАР Си и при необходимости микшировать с асм.
С ув. Катюха ВО.
Nanobyte
Цитата(sKWO @ Apr 5 2007, 20:01) *
Возникла необходимость создания схемы ввода оцифрованного сигнала с несущей 12 МГц и шириной спектра 340 КГц.
Хотелось реализовать схему на АВРовском контроллере с использованием
внешнего АЦП и на верное через ЮеСБи.

Напрямую AVR точно не потянет. 12 МГц сигнал требует частоты оцифровки как минимум 24 МГц. Тут впору применять ПЛИС, или какой-нибудь контроллер ARM.
Возможно удастся сделать приём данных от АЦП и преобразование их в последовательный вид с помощью регистров сдвига, а эти данные подавать на преобразователь COM-USB типа FTDI232BM.
Ну, или, использовать микроконтроллер со скоростным АЦП и USB на борту.

PS. А какова разрядность АЦП?
sKWO
бит восемь наверное хватит!!

Цитата(sKWO @ Apr 5 2007, 21:02) *
Читаю Микроконтроллер AT91SAM7S256 - Быстрое обучение на примерах ---http://www.projects.org.ua
ядро ARM7 потянет помколько производительность выполнения однотактных инструкции из встроенной флэш-памяти составляет 27 млн. операции в секунду
Какой контроллер лучше использовать и какой фирмы?
ARM микроконтроллеры производят много фирм, такие как ATMEL, PHILIPS, INTEL, ANALOG DEVICE, SIEMENS!!!
Ацп думаю Аналог девайсовский использовать!
Разбираюсь с "Вышла очередная версия AVR-USB драйвера от Objective Development"
на этом форуме http://electronix.ru/forum/index.php?showt...l=ИАР&st=30 s USB.
zorromen
Я чета недопер... это типа АМ модуляцию вы имеете ввиду? И ваще почему все хотят из простого управляющего контроллера AVR обработку сигнала большего чем 20кГц? Тут следует использовать или АРМ на 33 а лучше ваще на 55 Мгц(91SAM7256) как яркий представитель ... ктомуже USB уже наборту ... А Если связываться с ПЛИС то головняа больше во много раз(В плане разработки) чем АРМ , хотя и возможностей тоже немало ...
Так что нужно использовать АРМ ...
Robot_Bender
Цитата(zorromen @ Apr 5 2007, 22:22) *
Я чета недопер... это типа АМ модуляцию вы имеете ввиду? И ваще почему все хотят из простого управляющего контроллера AVR обработку сигнала большего чем 20кГц? ...
Так что нужно использовать АРМ ...


Поддерживаю, теорему Котельникова еще не отменили...
rezident
Впрямую 12МГц сигнал на AVR??? blink.gif Вы издеваетесь что ли? cranky.gif Да и без предварительной обработки через USB этот сигнал может "не пролезть". Для таких дел DSP использовать нужно. И то очень тщательно выбирать придется и сам DSP и периферию.
Делали как-то устройство ввода/вывода данных. Частота сэмплирования была 400kSPS. В качестве ядра брали TMS320VC5509A, у него USB 1.1 device на борту имеется. АЦП какой-то от Linear Technology стоял.
P.S. во, аналог этого устройства от L-card. http://www.lcard.ru/e-440.php3
sKWO
Цитата(rezident @ Apr 5 2007, 21:51) *
rezident, можно плиз поподробнее о Вашем проекте!!!
о сигнальных процах слышал, дорого отладочные платы стоят!!



Из Википедии http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%...%BE%D0%B2%D0%B0
Теорема отсчётов Уиттакера — Найквиста — Котельникова — Шеннона (теоре́ма Коте́льникова) гласит, что если непрерывный сигнал x(t) имеет спектр, ограниченный частотой Fmax, то он может быть однозначно и без потерь восстановлен по своим дискретным отсчётам, взятым с частотой:

fдискр=2*(Fmax - Fmin),

где Fmin - минимальная частота в спектре, или, по-другому, по отсчётам, взятым с периодом:

Tдискр=1/2* Fmax

нужно ли брать частоту АЦП 24 МГц ???
достаточно 340 КГц, ведь так же?!!!


Цитата(Robot_Bender @ Apr 5 2007, 21:28) *
Фазовая манипуляция с индексом модуляции 0.2
rezident
Цитата(sKWO @ Apr 6 2007, 01:19) *
нужно ли брать частоту АЦП 24 МГц ???
достаточно 340 КГц, ведь так же?!!!

Без переноса спектра вниз по частоте так не получится.
Вы бы не ходили вокруг да около, а описали полностью свою задачу. Если она секретно/военного назначения, то звания/должности/местоположение объектов при описании можно не указывать biggrin.gif
Nanobyte
Цитата(sKWO @ Apr 5 2007, 23:11) *
... нужно ли брать частоту АЦП 24 МГц ???
достаточно 340 КГц, ведь так же?!!!

Нет, не так. Если вы каким-либо образом (преобразованием частоты, к примеру) сместите ваш сигнал на ~12 МГц вниз, то тогда вам действительно нужно будет оцифровывать сигнал с полосой 0-340 КГц, то есть сэмплировать его с частотой 680 КГц. Но даже эта частота для AVR тяжеловата.
К слову, сейчас я делаю проект, в котором сигнал оцифровывается с частотой 330 КГц. Так вот, пришлось делать микропрограммный автомат на счётчиках и мультиплексорах, котороый считывает байт из параллельного АЦП и записывает в ОЗУ с автоинкрементом. AVR используется по назначению - управляет стартом/стопом и поочерёдно меняет местами две микросхемы ОЗУ, ну а сам во время оцифровки занимается передачей данных по Ethernet.
bodja74
2sKWO

Ка Вы думаете почему теорема Котельникова называется тиоремой ? smile.gif
Во первых так можно теоретически мерять периодически повторяющийся сигнал.
Во вторый приведите лучше формулы и методы как Вы будете определять начало периодического сигнала для сдвига дикретного измерения ,для того чтобы востановить полную картину о сигнале.

"скоростной" камень вам светит однозначно.
sKWO
Цитата(bodja74 @ Apr 5 2007, 22:33) *
Спасиб за просвещение!!!
Открыл новую тему немного кореллируемую с этой !!
Тему закрыто!!
Не издевайтесь над незнанием!
Нанобайту болшущее спасибо!
Stas633
Цитата(sKWO @ Apr 5 2007, 21:01) *
...Возникла необходимость создания схемы ввода оцифрованного
сигнала с несущей 12 МГц и шириной спектра 340 КГц.
Хотелось реализовать схему на АВРовском контроллере с использованием
внешнего АЦП и на верное через ЮеСБи.


Если "взять" внешний, "быстрый", параллельный, 8-ми разрядный АЦП; 8-битный контроллер AVR (ATMegaxxx, например), с тактовой частотой 20 МГц, то максимально возможная частота дискретизации равна 6,(6)МГц, потому что:
- считывание информации из порта в рабочий регистр (IN) - 1 такт;
- "пересылка" данных из рабочего регистра в SRAM МК (ST) - 2 такта,

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

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

НО при этом!!!
1. необходима синхронная работа АЦП и МК (например тактировать АЦП резонатором МК), в противном случае необходимо предусмотреть программную "фиксацию" отсчета АЦП, что, естественно" увеличит время работы программы и снизит ЧД;
2. "ввод" (оцифровка) сигнала будет "стробоскопической", и длительность "вспышки" будет ограничена объемом ОЗУ МК (предположим, что "под" оцифровку отведено 2 кБ, тогда время "вспышки" будет равно 2048*(3/20)*10^-6=307,2мкС.
3. время "передачи" пакета данных в КОМП значительно превосходит (в разы) время анализа данных (вспышки), что на "оцифровке" исследуемого сигнала сказывается не лучшим обзазом.

Поэтому, как уже было сказано - "напрямую" решение Вашей задачи весьма затруднительно.

Варианты:
1. демодулировать сигнал перед оцифровкой. плюс - "снижается" исследуемая частота, минус- теряете информацию о фазе несущей.
2. вводить в схему внешнее ОЗУ и блок (узел) контроля-синхронизации АЦП-ОЗУ-МК. плюс - время вспышки может быть увеличено, за счет объема ОЗУ, но при этом "скважность" исследования останется прежней, так как время обработки полученных данных неизбежно возрастет, причем в той же пропорции. минус - усложнение конструкции (узел контроля может быть выполнен как на МС малой степени интеграции: счетчики. мультиплексоры и т.д. (об это писал Nanobyte), так и с использованием ПЛИС.

...и даже после этого Вы не сможете получить "непрерывную" "картинку"

для связи AVR с КОМПом через USB советую обратить внимание не на FT232Bx, а на FT232Rx - отсутствие внешних элементов + наличие внутреннего генератора, с возможностью вывода 6,12,24,48 МГц.
...кстати говоря, наверняка возможно использовать МС типа FT245xx для непосредственного ввода данных из АЦП в КОМП через USB... хотя, возможно, что я ошибаюсь..
Murk
Цитата
для связи AVR с КОМПом через USB советую обратить внимание не на FT232Bx, а на FT232Rx - отсутствие внешних элементов + наличие внутреннего генератора, с возможностью вывода 6,12,24,48 МГц....кстати говоря, наверняка возможно использовать МС типа FT245xx для непосредственного ввода данных из АЦП в КОМП через USB... хотя, возможно, что я ошибаюсь..

Не аппаратный USB будет и быстрее и красивее (снимаются задачи по управлению протоколом)
Kuzmi4
Хочется и свои 5 копеек втулить - скоротной камень - однохначно,зачем сразу арм??Есть ещё цигналы - у них заявленная частота 100МГЦ - я без проблем работал на 89, и не надо будет ничего сложного городить...
mse
Цитата(Nanobyte @ Apr 5 2007, 21:49) *
Напрямую AVR точно не потянет. 12 МГц сигнал требует частоты оцифровки как минимум 24 МГц. Тут впору применять ПЛИС, или какой-нибудь контроллер ARM.
Возможно удастся сделать приём данных от АЦП и преобразование их в последовательный вид с помощью регистров сдвига, а эти данные подавать на преобразователь COM-USB типа FTDI232BM.
Ну, или, использовать микроконтроллер со скоростным АЦП и USB на борту.

PS. А какова разрядность АЦП?

Дык...;О) А вдруг у него FPSLIC?
Stas633
... работа над ошибками, так сказать... ))

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

Если сигнал с полосой 340 кГц, то достаточно взять частоту дискретизации 680 кГц. Теорема говорит именно о ширине спектра, а не о том, на какой несущей он сидит.
Подробно теорию по этому вопросу можно почитать задав поиск типа "Nyquist zone" или "undersampling".
Здесь есть два момента: надо обеспечить отсутствие отражений от n*680kHz, то есть подавить все вне полосы 12МГц+-340кГц, и выполнить требование к АЦП, чтобы его аналоговая полоса была шире 12 МГц.
Ну и не стоит ожидать, что 8-разрядный 1МГц АЦП даст вам те же 8 разрядов на 12МГц, там будет хуже. Можно пересчитать, если для АЦП указана в параметрах апертурная дрожь (aperture jitter) .
Nanobyte
Цитата(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 МГц одномегагерцовый АЦП вообще ничего не даст.
NVade
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.
Перевести?
zorromen
Блин люди... а как вы будете делать subsampling?
AlexG_changed
Нужно взять устройство выборки-хранения с определенными параметрами (время выборки такое, чтобы сигнал не успевал заметно измениться за это время) и правильно выбрать частоту дискретизации относительно несущей и полосы частот сигнала, а дальше в теории все просто smile.gif
zorromen
Люди давайте поймем , что нам нужно ...
if ( Модуляци АМ или ЧМ )... нужно просто выделить полезный сигнал и его уже исследовать...
если просто нужно осцифровать сигнал то я предлогаю метод ... т.к. скорости усб1.0 нехватит для передачи 24.680 Mбайт/сек в реальном времени... то можно так АЦП быстрый, далее ПЛИС тупо записывает значения во внешнюю SDRAM ... потом усе мжно и предовать учерез usb ...
=GM=
Цитата(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 МГц атмеге.
Stas633
Цитата(=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МГц мне представляется весьма затруднительным.
Я ошибаюсь?
=GM=
Цитата(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 тактов.
Stas633
Цитата(=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", и ни какой другой...
=GM=
Цитата(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", и никакой другой...

А чем плохо?
Stas633
Цитата(=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) например, и с их "помошью" "перебирать" адреса. Тогда на "плечи" МК ляжет лишь мультиплексирование тактового сигнала (запись в ОЗУ из АЦП и чтение из ОЗУ в МК) и "обработка" полученных данных. Что скажете?

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

Зачем это всё делать на 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 к примеру или ПЛМ стоимость прибора практически не возрастёт. А если это пересчитать на два луча, то тем более.
Stas633
Еще одна мысль...
В связи с тем, что динамический диапазон 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) стоит еще больше. (Исхожу из того, что Вы не рассматривали использование ПЛМ только в качестве замены МС малой интеграции).

Повторяемость же (интерес к повторению) многократно снижается, прибор из разряда "широкодоступных" становится "экспериментальным образцом". Посмотрите это:
Форум по осциллографу - ...интерес к простому, с невысокими характеристиками прибору не утихает... Прибор делается, настраивается "всем миром"... и напрочь игнорируются предложения усложнить схему! Отчего так?
SasaVitebsk
На самом деле стоимость ARMов опускается до 6$. За 10$ вы можете найти ARM c двумя 32 битными портами + ПДП. Ёмкость внутреннего озу достаточно большая. Существуют различные варианты соединения с внешним АЦП.

Но не в том суть. Я для примера привёл ARM. Я просто пишу о том, что МП в данном случае имеет непринципиальное значение. Если вы к тому же примените 3 АЦП с обвеской, то стоимость CPU окончательно уйдёт на пятый план.

Производительность АЦП также имеет значение. Ведь как осуществляется в вашем приборе работа.
1) Цикл замера
2) Цикл обработки и выдачи информации.

В зависимости от МП соотношение будет очень большим.
По хорошему можно проанализировать сигнал и сделать программную синхронизацию. Просчитать частоту и разные значения U.
Stas633
Цитата(SasaVitebsk @ Apr 8 2007, 11:48) *
На самом деле стоимость ARMов опускается до 6$. За 10$ вы можете найти ARM c двумя 32 битными портами + ПДП. Ёмкость внутреннего озу достаточно большая. Существуют различные варианты соединения с внешним АЦП.

Но не в том суть. Я для примера привёл ARM. Я просто пишу о том, что МП в данном случае имеет непринципиальное значение. Если вы к тому же примените 3 АЦП с обвеской, то стоимость CPU окончательно уйдёт на пятый план.

Производительность АЦП также имеет значение. Ведь как осуществляется в вашем приборе работа.
1) Цикл замера
2) Цикл обработки и выдачи информации.

В зависимости от МП соотношение будет очень большим.
По хорошему можно проанализировать сигнал и сделать программную синхронизацию. Просчитать частоту и разные значения U.

Вы правы! Действительно "7S" серия стоит от 5$ . Правда порт (32bit) в ней один, но за то она весьма "паябильна" даже на "коленке" (64-lead LQFP). Да и посмотрев еще раз "возможности" ARM (с ARM'ами я не работал) убедился окончательно в Вашей правоте! Спасибо за подсказку!
=GM=
Цитата(Stas633 @ Apr 7 2007, 22:59) *
Извините, за "тупость"... не "доходит"...

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

Ну, это просто. Когда вы читаете из внешней памяти с помощью команды ld r16,z+, то МК выдает 16-битный адрес, что нам и нужно! Мы не читаем, мы просто выставляем адрес. Я ж вроде написал: фиктивная команда чтения, которая выполняется за 3 такта. Чтобы адрес стоял на шине 4 такта, надо добавить один такт ожидания.
Цитата(Stas633 @ Apr 7 2007, 22:59) *
какой объем flash необходим?

Чтобы забить 8 КБ ОЗУ, программа чтения должна состоять из 2000 команд ld r16,z+. Ну а для 32 Квыборок - соответственно 8 КБ флеша. Тут конечно, стоит остановиться и спросить самого себя, а нужны ли нам такие длинные выборки(:-)? Скажем, 16000 периодов частоты 10 МГц, не слишком ли круто?
Цитата(Stas633 @ Apr 7 2007, 22:59) *
Использование внешних триггеров определяет наличие как минимум одного корпуса МС.

Не о том надо думать. Эти два триггера в одном корпусе - 8-ногий корпус, крохи, о чём мы говорим? И не забыть, что ещё нужен регистр-защелка для формирования адреса.
Цитата(Stas633 @ Apr 7 2007, 22:59) *
А что если увеличить кол-во внешних корпусов до 2-х? Поставить два 8-ми разрядных двоичных счетчика (74хх393) например, и с их "помошью" "перебирать" адреса. Тогда на "плечи" МК ляжет лишь мультиплексирование тактового сигнала (запись в ОЗУ из АЦП и чтение из ОЗУ в МК) и "обработка" полученных данных.

К сожалению, схема мгновенно разрастается. У меня есть схема цифрового осциллоскопа, собранного на такой логике: четыре 4-битных счётчика, мультиплексоры, еще куча всего. Плюс атмега8 для обработки данных и выдачи на дисплей. И не забыть про аналоговую часть и управление ею.
Stas633
Цитата(=GM= @ Apr 8 2007, 17:37) *
Ну, это просто. Когда вы читаете из внешней памяти....

Теперь понятно. Но какие AVR8, кроме 8515 умеют работать с внешней памятью? А если Вы говорите про неё, то работа этого МП с частотой 20МГц производителем не заявлена... 16 - максимум... да и flash объемом 8к может стать ограничением. Тем более, что за "скорость" приходится "жертвовать" объемом..

И, насколько я помню, 8515 работает с внешней памятью аналогично 51-м клонам... то есть для "защелки", по-моему, младшей части адреса нужен регистр (ИР22 это было), так как порт МК работает в режиме временнОго мултиплексирования АДРЕС<->ДАННЫЕ.. То есть на выводах МП (МК) адрес (младшая его часть) "держится" не в течении всей команды, а лишь время необходимое для фиксации (1 такт наверняка).

Но в общем, это только мое мнение. Ваше решение я уважаю. Сам же уже часа 4 "смотрю в упор" на ARM, спасибо SasaVitebsk smile.gif
=GM=
Цитата(Stas633 @ Apr 8 2007, 15:10) *
Теперь понятно. Но какие AVR8, кроме 8515 умеют работать с внешней памятью? А если Вы говорите про неё, то работа этого МП с частотой 20МГц производителем не заявлена... 16 - максимум... да и flash объемом 8к может стать ограничением. Тем более, что за "скорость" приходится "жертвовать" объемом..

И, насколько я помню, 8515 работает с внешней памятью аналогично 51-м клонам... то есть для "защелки", по-моему, младшей части адреса нужен регистр (ИР22 это было), так как порт МК работает в режиме временнОго мултиплексирования АДРЕС<->ДАННЫЕ.. То есть на выводах МП (МК) адрес (младшая его часть) "держится" не в течении всей команды, а лишь время необходимое для фиксации (1 такт наверняка).

Защёлка адреса необходима, ничего не поделаешь. От этого варианта я давно уже отказался, в частности, из-за отсутствия интерфейса к внешней памяти для 20-МГц приборов.

Одно время посматривал на аврки с клоком на 48 МГц и USB с DMA на борту, поскольку как-то же надо передавать все данные в писюк. ОЗУ там до 8 Кбайт и памяти программ 16-22 Кбайта. Одно НО: клок не кратен 10/20 МГц. Как я понимаю, МК с системой команд авр и тактовой частотой 48 МГц легко забьёт почти любой АРМ.
Nanobyte
Цитата(Stas633 @ Apr 8 2007, 19:10) *
... Но какие AVR8, кроме 8515 умеют работать с внешней памятью?

Насколько я помню, умеют M162 и M128. Тогда и Flash хватит для линейной программы.
=GM=
Цитата(Nanobyte @ Apr 8 2007, 20:43) *
Насколько я помню, умеют M162 и M128. Тогда и Flash хватит для линейной программы.

Всё так, только максимальная частота опоры - 16 МГц. Нет ли какого-нибудь авр-проца с 20 МГц ровно?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.