Перейти к содержанию

RedSpirit

Members
  • Постов

    6
  • Зарегистрирован

  • Посещение

Информация

  • Город
    Санкт-Петербург

Электроника

  • Стаж в электронике
    Менее года
  • Сфера радиоэлектроники
    AVR, Zigbee

Достижения RedSpirit

Новичок

Новичок (1/14)

  • Неделя на форуме
  • Месяц на форуме

Последние значки

0

Репутация

  1. Спасибо! Значит правильно определил 2.2В, пойду теперь штудировать таблички из даташита от плиски
  2. Добрый день! Есть у меня в наличии такая вот оперативка CY7C109D-10VXIT, даташит прилагается. Напряжение питания у нее 5В, я хочу подключить ее к Altera MAX II, которая работает на 3.3В. Понятное дело, что к VCC памяти я подключу 5В, но на шины адреса и данных у меня будет идти уровень 3.3В. Вопрос в том, достаточно ли будет на шинах 3.3В чтобы память воспринимала их как уровень HIGH? Я не очень понимаю, что говорит по этому поводу даташит, какой именно параметр нужно смотреть? Вроде как есть что-то похожее и там указано 2.2В, но все равно спрашиваю здесь, чтобы быть уверенным и не паять зря в случае чего. И еще интересно, какой уровень будет на линии данных при чтении? Если 5В, то не грохнется ли от этого моя ПЛИСка MAX II?
  3. Все еще мало-помалу пытаюсь реализовать сей девайс. По совету купил отладочную плату Nucleo-64 на STM32F103, стал изучать эти ваши STM-ы, голова пухла, но после некоторых свистоплясок с таймерами все же удалось вывести примитивный, но рабочий VGA-сигнал, когда начал пробовать генерировать осмысленное изображение столкнулся с таким явлением как джиттер, картинка слегка дребезжала и плавала, особенно заметно было на стыке цветов, такая же фигня была и на AVR, но там умельцы с помощью ассемблерных вставок хитро регулировали тайминги и дребезг сводился к минимуму, наверняка решения есть и для STM-ки, но так не хотелось с ним возиться... А потом мне как обухом по голове прилетела мысль: "Какого черта? Есть же ПЛИС!". Про плисы я только слышал, но никогда не трогал их руками, заказал несколько недорогих микросхемок Альтера, и взял на алике одну из самых дешевых отладочных платок на Altera MAX II с 80 полезными пинами и с кварцем на 50 мгц. Сел изучать Verilog. Это кайф, жалею только о том, что не занимался плисами раньше. Практически сходу за вечер создал схемку, делю входные 50 мгц на 2, дальше просто отсчитываю нужные такты для генерации HSYNC и VSYNC, небольшая отладка осцилографом и все заработало, картинка четкая, без дребезга, можно забыть про рассыпухи, дешевой MAX II хватает за глаза. Уже сейчас начал паять на макетке SRAM, она полностью всеми контактами уходит в плис, из этой же плиски сделаю вывод на 8-битный видео ЦАП, и отдельный вход от МК (адрес, данные). В момент когда кадр находится в форточках (не активен) МК сможет записывать произвольные данные в SRAM буфер, а плис, соответственно, управляет всей этой связкой, генерит VGA сигналы и синхронизирует взаимодействие буфера и МК. Если получится, то задача будет решена. Если все получится, то отчитаюсь )
  4. Звучит как потенциальное решение, надо будет с утреца обдумать. Спасибо за развернутый ответ. Если что-то получится обязательно отпишусь. Кстати да, младшие модели стоят реально копейки, а казалось, что в разы дороже. Немного отстал я от жизни )
  5. Добрый день! Это мой первый пост на этом форуме, хочу поделиться своими соображениями по сабжу и попросить совета. Опыт работы с электроникой не очень большой и то по сути только в логикой, всего пару месяцев как засел за avr-микроконтроллеры, так что далеко не все тонкости могу знать. В общем... Хочу сделать типа "видеокарту" для вывода картинки по VGA 640x480x60гц. А точнее фрейм-буфер (или как он там правильно называется) данные из которого преобразуется в аналоговые цветовые сигналы для монитора. Чтобы чуток упростить требование к железу решил, что мне достаточно будет разрешения картинки в 4 раза меньше (320х240) но при этом стандарт таймингов для синхросигналов остается как для 640x480, то есть просто буду 4 пикселя брать за один, это позволит мне сэкономить на частоте пикселей, вместо 25мгц получается ~12.5мгц. Цвет каждого пикселя удобнее всего кодировать одним байтом по схеме 3R-3G-2B (8 значений красного, 8 зеленого и 4 синего, всего 256 цветов). Таким образом мне нужно как минимум 76800 байт на буфер, то есть микросхемку памяти на 128К*8bit (выбрал CY7C109D). Я даже написал консольную утилиту, которая конвертирует любую картинку в нужный формат и на выходе выдает готовый массив байтов. Я звял Atmega664P, не без проблем, но настроил нормальный и достаточно четкий ШИМ для h-sync и v-sync, подключил к монитору и проверил на одном красном цвете, что все работает и все строчки заливаются красным. Осталось дело за малым, я подключил оперативку к МК, подключив все 17 ног адреса, 8 ног данных и 4 для управления памятью заняв практически все выводы мк кроме SPI интерфейса. Теперь надо только по нужным таймингам выставлять на портах адрес для оперативки, а 8 бит данных от нее через нехитрую схему с резисторами (ЦАП) выдавать на монитор. И да, перед этим я предварительно закинул часть картинки во flash-память контроллера, который при запуске "заливает" ее в sram, осталось только бегать по всем адресам и снимать картинку. Но ничего не работало. Перебор адресов на атмеге слишком медленный, в идеале переключение адресов должно происходить с интервалами 79.4 нс а это всего 2 процессорных такта и то при условии, что мк будет работать кварце 25мгц, а судя по отладке в AtmelStudio один цикл тратил 57(!) тактов. При этом надо изменить значения в трех портах (2 целых порта и один бит на еще одном порту), инкрементировать счетчик, переключить управляющие оперативкой пины, чтобы записать значение. Короче, никакой avr тут не справиться, даже если упороться, все переписать на асм и забустить частоту, все равно будет мало. Ну собственно думать долго не пришлось, сразу пришла идея использовать отдельные битовые счетчики (например SN74HC4040D, на 12 бит) поставить два таких, подать высокочастотный сигнал на нужные мне 12.5 мгц (хотя тут опять-таки всплывается, что есть синхронные и асинхронные счетчики, и типа асинхронные на высоких частотах работают не так как хотелось бы, мне тут пока не все понятно). Я соорудил схему с таким счетчиком в Протеусе, вроде все работает, НООООО... И тут я наконец-то подошел к вопросу, который уже несколько дней не могу решить. Дело в том, что как я сказал в начале, изначальное разрешение 640х480 я решил уменьшить до 320х240, то есть вместо 640 пикселей на одну строку мне за этот же период времени нужно вывести в 2 раза меньше с меньшей частотой, таким образом пиксели "растянутся" в два раза на одну строку. Но нам так же нужно растянуть пиксель и по вертикали, то есть сделать так чтобы две горизонтальные линии идущие друг за другом были одинаковые, потом еще две одинаковые и так далее до конца кадра. Но наш битовый счетчик считает все по порядку строку за строкой, по идее пройдя по одной линии нужно было бы вычесть из адреса 320 и инкрементировать дальше, чтобы получить две одинаковые строки. Но из счетчика нельзя вычитать, тем более произвольные значения. Можно забить память одинаковой информацией, чтобы не было манипуляций с адресами, но тогда и понадобится в 2 раза больше памяти (стоит сильно дороже) и вообще хранить одну и туже информацию ну совсем не вариант. Я еще рассматривал, что если использовать sram с организацией 64к*16 бит, то есть уменьшаем разрядность адреса с 17 до 16 (до двух портов мк) и храним в одной ячейке сразу два пикселя. Таким образом можно оптимизировать время доступа, но все равно не достаточно для использования мк avr и это никак не решает подход с битовым счетчиком. В общем я не вижу выхода как решить проблему дублирующих строк через битовый счетчик. А если все же использовать микроконтроллер, то какой, STM32? У меня с ним нет опыта, да и не слишком ли он жирный для такой вроде бы тривиальной задачки. Может вообще есть дешевая и простенькая готовая RAMDAC микросхемка? Знаю, что такие есть, типа AT76C176, но дорого и фиг где купишь да и не понятно в точности то ли это, что надо или не очень. По этому прошу совета у знающих специалистов, может кто сталкивался с подобным и может дать совет, как лучше сделать. Я в курсе разных поделок "видеоприставок" на ардуино, где они генерируют картинку и текст через vga (от туда я подсмотрел настройки таймеров и шим) но мне нужен именно модуль преобразования информации из памяти в картинку.
×
×
  • Создать...