«масштабирование» на микроконтроллерах

Допустим есть 8 битный микроконтроллер с 20MIPS, который может генерировать последовательный сигнал 10Mhz.
Возможно ли как-то взять 2 микроконтроллера и генерировать сигнал с большей частотой? (первый выдает четную последовательность, второй нечетную и нужно их объединить).
Существуют какие-нибудь решения?

за 1 такт можно вывести 8 бит в порт, что если использовать 16 битные сдвиговые регистры?

первый МК выдает 8бит, второй МК еще 8 бит, и защелкивает регистр.
мне нужно генерировать 40мгц (VGA)
  • Вопрос задан
  • 3805 просмотров
Пригласить эксперта
Ответы на вопрос 4
@Flexz
первый МК выдает 8бит, второй МК еще 8 бит, и защелкивает регистр.
мне нужно генерировать 40мгц (VGA)

Кажется вам нужен видео ЦАП (он же видео энкодер), он примерно так и работает. Например, THS8200. Еще есть варианты у Analog Devices.

Но для формирования исходного потока данных вряд ли можно обойтись набором мелких контроллеров, вам же исходные данные еще и формировать нужно, а не только выводить. Хотя для вывода статики может и прокатит.
Лучше всего для этого подходит ПЛИС, процессор может формировать картинку и отдавать ее ПЛИСке, а та, в свою очередь, занимается исключительно ее выводом. Данных будет довольно много, поэтому их можно хранить во внешнем ОЗУ, подключенном к ПЛИС.

PS Взгляните на Altera DE-1 на этой плате уже имеется простой R2R ЦАП с выходом на VGA.
Ответ написан
SFx
@SFx
поглядите в сторону i.MX23 Display Processing
в процессоре встроенный TV-Out VGA. цена процессора — ~15$
(сам юзал i.mx27, отлично работает)
Ответ написан
@horlon
В теории можно, но есть несколько проблем:
— микроконтроллеры должны делать операцию за один такт (о двутактовых операциях забудьте);
— результаты должны хранится в общих регистах (это уже — костыль);
— нужен таймер на 40МГц, чтобы тактовать оба контроллера, переключая такты между двумя микроконтроллерами (нужен какой-то костыль для распределения тактов);

готовых решений не выдел… Легче сделать 16-битный микроконтроллер, чем 40МГц-овый :)
Ответ написан
@Alexeyslav
Программирование, электроника
10Мгц с контроллера на 20МИПС можно получить лишь с огромными ограничениями. И не уверен что каждый контроллер способен такое выдать. Например, AVR может каждую инструкцию инвертировать один вывод порта, это если организовать бесконечный цикл из таких инструкций без использования команды перехода(она прервет генерацию в этот момент на пару тактов) можно будет говорить о частоте 5Мгц на выходе т.к. каждая подобная инструкция выполняется за 2 такта — а это лишь половина периода генерируемого сигнала. При этом контролер будет занят исключительно на генерацией сигнала на одном выводе и делать больше ничего не способен.

Так что вывод — нужен контроллер побыстрее. Альтернативы еще хуже — помимо объединения нескольких контроллеров в «кластер» нужен будет еще и супервизор который будет ими управлять синхронно, в общем — это работа по деланию слона из мухи.
И порой, обычным контроллером не обойтись — нужна аппаратная обработка т.к. программно сформировать видеосигнал не под силам даже современным «большим» процессорам общего назначения. Есть еще класс так называемых видеопроцессоров — гибрид гибко программируемых логических схем и ядра в виде классического процессора — именно такой подход и применяется в современных видеокартах.

А для формирования медленно изменяющихся изображений может вполне хватить связки жесткая логика + 2-х портовая RAM (реализуется из обычной путем демультиплексирования шин адреса и данных на два независимых входа-выхода) — один порт на чтение ЦАП а другой порт на запись со стороны контроллера. Обычно это все умещается на средних размеров ПЛИС-ине.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы