Страница 1 из 1
сформировать управляющее воздействие
Добавлено: Сб авг 02, 2014 21:43:47
Open
Добрый день! Понадобилось мне сформировать управляющее воздействие (цифровое 1-0) для оптимального управление пьезоэлементом. Элемент этот работает на частоте 2.2 - 2.6 мгц. Управляющее воздействие должно быть логического уровня. Смена с 1 на ноль за все время управления ограничивается 16 переключениями. Дискретность переключения по времени должна быть порядка 20нс. Микроконтроллер (я планирую использовать STM32F100 - 24МГц для непосредственной генерации явно не хватает, а ставить более мощные сильно накладно) играет роль программирования некого девайса, "плеера последовательности".
Подскажите, есть ли элегантное решение?
Внешний кварц допустим.
Re: сформировать управляющее воздействие
Добавлено: Сб авг 02, 2014 23:57:26
uk8amk
Что вы имеете в виду под
Дискретность переключения по времени должна быть порядка 20нс.
Изменение частоты/периода с шагом 20нс? Если да, то вам нужен чип DDS.
Re: сформировать управляющее воздействие
Добавлено: Вс авг 03, 2014 00:56:21
SmarTrunk
Известные мне микросхемы DDS же делают синус. Ну еще треугольник и меандр. Если некая произвольная последовательность нулей и единиц, то можно на ПЛИС (если МК не справляется). Что автор имеет в виду под "длительностью переключения", не ясно - время между переключениями или длительность фронта.
Re: сформировать управляющее воздействие
Добавлено: Вс авг 03, 2014 08:07:22
uk8amk
Прямоугольник из синуса сделать большого ума не надо. А вот обратно фарш прокрутить там да, что-то уметь и соображать надо.
Re: сформировать управляющее воздействие
Добавлено: Вс авг 03, 2014 08:17:53
Open
В общем, мне надо сформировать меандр (2.5мгц+\-) на несколько периодов. но это не совсем меандр - время переключения конкретного фронта из 0 в 1 и наоборот может плавать (с дискретностью в 20 нс).
иначе говоря надо примерно это:

Плис конечно хорошо, но для этой цели накладно

Ибо дешевые чипы не пойдут - в них последовательность придется зашивать намертво, либо городить внешнюю память.
А вот DDS выглядит заманчиво - в конце концов аналоговое задающее воздействие всегда гибче.
Сейчас прогуглю!
Re: сформировать управляющее воздействие
Добавлено: Вс авг 03, 2014 08:39:50
Open
Идеально подошло бы что нибудь функционально вроде этого с последовательным интерфейсом программирования памяти.

На худой конец можно обойтись однобитной памятью без ЦАП (первоначальный вариант)
Re: сформировать управляющее воздействие
Добавлено: Вс авг 03, 2014 11:40:27
uk8amk
То что есть на рисунке называется широтно-импульсная модуляция.
Для получения дискретности установки ширины импульсов в 20нс необходимо иметь тактовый генератор не менее 50МГц.
Помнится у микроконтроллеров TMS320 были какие-то хитрые таймеры, позволяющие регулировать ширину импульсов до наносекундного диапазона.
Re: сформировать управляющее воздействие
Добавлено: Вс авг 03, 2014 16:05:53
Open
uk8amk писал(а):То что есть на рисунке называется широтно-импульсная модуляция.
да ладно, оно просто похоже. Там нет постоянства периода. Таймеры надо перепрограммировать каждый раз на лету. А скорости такие, что даже МК с >100МГц в диаграмму не попадет. Другое дело, что можно задействовать DMA (программно в цикле в порт писать так быстро не выйдет) , но опять же частота шины периферии должна быть более либо равной 50МГц. Как правило это МК с частотой от 100 МГц. На такую задачу немного избыточно

Вот если б его кроме этого достойной работой нагрузить - тогда дело другое.
Re: сформировать управляющее воздействие
Добавлено: Вс авг 03, 2014 17:01:46
GARMIN
Интересно, какой длины нужна последовательность? Думаю, простой CPLD можно обойтись легко.
И второе - чем и как будете загружать управляющее воздействие? Есть ли МК, с каким интерфейсом, в каком формате?
Re: сформировать управляющее воздействие
Добавлено: Вс авг 03, 2014 17:17:10
Open
ну, если использовать CPLD то формат может быть любым. Естественно, это будет последовательный интерфейс. UART вполне достаточно. Последовательность будет достаточно короткой - порядка 8 импульсов. т.е. ресурса плисины должно хватать на 1 счетчик(либо же 16, если в искомой реализации плис нету драйверов 3го состояния в достаточном количестве) + 16 регистров для хранения задержек (8 бит вполне хватит, а скорее даже 6) + сдвиговый регистр на интерфейс + регистр хранения адреса (номер счетчика в который грузить) + немного контрольной логики.
в крайнем случае можно отказаться от регистров и загружать счетчики каждый раз перед проигрыванием последовательности, благо она активируется не так уж и часто. Однако это нежелательно.
Что же, похоже CPLD подойдет. Вначале я отмел этот вариант из за неправильной предпосылки, что к плис придется паять память и задавать последовательность таблично на каждые 20 ns.
в этом случае получится память порядка 256 бит + система адресации тоже неплохо отъест ресурса.
Какая плис подойдет под такие требования? Понятное дело: 50МГц не обсуждается:)
CPLD не занимался, поэтому имею слабое представление о логических емкостях их блоков.
Посмотрел CPLD от Xilinx - xc9500 вообще никто уже не продает, а кулранер еле еле... как то стремно на них завязываться - завтра вообще не сыщешь

а с альтерой не работал вообще
Re: сформировать управляющее воздействие
Добавлено: Пн авг 04, 2014 00:20:41
GARMIN
Количество логических элементов 16 * 8 бит память, 20 LUT UART, 8 счётчик и 20-50 управление. Итого 206.
EPM240 может хватить, если будет мало, то EPM570 от Altera. Это дешёвая серия MAX II. Внешний генератор 50 или 100 МГЦ. Питание 3,3В. Можно использовать плату от Марсохода:
http://marsohod.org/index.php/howtostart/plata