Кто-нибудь сталкивался с реализацией видеосигнала (для TV-входа) на CPLD?
Интересуют строчные и кадровые синхроимпульсы. Как и с какими параметрами они должны располагаться? Импульсы гашения обязательны? Со строчными СИ вроде немного разобрался, а вот с кадровыми... Для меня загадка - как они должны выглядеть?
У Digilent видел аппноту, но там ориентировано на формирование VGA сигнала (все времянки указаны для 640х480 и 800х600). А кадровый такой же как и строчный, только другой длины. Ну и если формируете именно для телевизора, то там надо еще заморачиваться чересстрочной развёрткой вся соль которой именно в строчных синхроимпульсах.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Chettuser писал(а):Кто-нибудь сталкивался с реализацией видеосигнала (для TV-входа) на CPLD?
Интересуют строчные и кадровые синхроимпульсы. Как и с какими параметрами они должны располагаться?
В ТВ-сигнале кадровый синхроимпульс — это замена строчных синхроимпульсов полустрочными (половинная длина, удвоенная частота), потом на какое-то время смена длины (не инверсия, а именно смена длины, спады на полустрочных размещены в те же моменты времени), опять полустрочные импульсы и возобновление строчных. Сетка строчных импульсов «в уме» при этом остаётся, а кадровый синхроимпульс начинается то в конце строки, то посредине (но каждій раз на полустрочном импульсе.
Подробнее ITU-R BT.1700. Там на 8-ой страничке птичками отмечены те спады начал строк (и строк «в уме» на кадровом синхроимпульсе).
Для справки:
В EPM3032 влазит полный синхрогенератор -- кадровые и строчные синхро и гашения, чётность поля, полная синхросмесь и смесь гашения. Ну и раз есть счётчики строк и точек в строке, то можно и какую-то тестовую картинку нагенерить, но в 3032 может уже и не влезть.
В EPM3064 влазит ещё и полное управление CCD-матрицей типа ICX255/259/405/409 и прочих соневских плюс управления аналоговым чипом CXA1310.
О, кстати, хорошие картинки ещё в описании соневской CXD2463, синхрогенератор для указанных выше матриц, замену которому с изменением логики работы (а для юстировки объективов заливалась прошивка под ТВ-режим) я делал на EPM3064 под специальное применение.
Последний раз редактировалось avreal Пн окт 01, 2012 19:14:36, всего редактировалось 1 раз.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Да нет, не для телевизора - для мониторчика маленького (типа медицинского) VIDAMAX.
Тут наверное можно и без СИ гашения обойтись?
avreal писал(а):В EPM3032 влазит полный синхрогенератор -- кадровые и строчные синхро и гашения, чётность поля, полная синхросмесь и смесь гашения. Ну и раз есть счётчики строк и точек в строке, то можно и какую-то тестовую картинку нагенерить, но в 3032 может уже и не влезть.
В EPM3064 влазит ещё и полное управление CCD-матрицей типа ICX255/259/405/409 и прочих соневских плюс управления аналоговым чипом CXA1310.
У меня EPM240 - влезет со свистом. Пните в нужном направлении плиз - где хоть какой проект подсмотреть? Переделаю уж сам, мне бы только зацепиться было за что.
Последний раз редактировалось Chettuser Пн окт 01, 2012 19:22:28, всего редактировалось 1 раз.
Chettuser писал(а):У меня EPM240 - влезет без вазелина. Пните в нужном направлении плиз - где хоть какой проект подсмотреть? Переделаю уж сам, мне бы только зацепиться было за что.
EPM240 — да, влезет без вазелина, но займёт гораздо больше 32 ячеек. Там много широкой логики по счётчику точек в (полу)строке и счётчику (полу)строк, 4-входовые LUT каскадируются по два, а где и по три. А у EPM3ххх таких широких "И" по нескольку в одной ячейке, т.е. JK-триггер и несколько его условий установки/сброса лезут в одну ячейку.
Не смог сейчас у себя найти давний альтеровский архив NTSC_GEN.EXE с примером генератора.
Да там, вообще говоря, достаточно несложно всё.
У меня сначала генерируется полустрочная частота (т.е. длина пол строки, а частота вдвое выше).
Дальше отдельно делится на 625, чтобы получить частоту полей (312.5 строк).
И отдельно на два, чтобы получить строчную частоту.
Выход частоты полей (делителя на 625) делится ещё на два, это чётность поля.
По счётчику полустрок и четности поля выделяем зону кадрового синхроимпульса с врезками до и после него.
Во время полных строк по счётчику делителя на длину полустроки при нулевом триггере строчной частоты формируем строчный синхроимпульс и гашение.
Во время кадрового синхроимпульса не глядя на триггер строчной частоты только по делителю полустроки делаем вдвое короче импульсы врезок либо почти на всю длину полустроки импульсы во время кадрового синхра.
Кстати, те импульсы на кадровом вдвое короче потому, что вдвое чаще -- в результате постоянная составляющая сохраняется. Для аналогового выделятора синхроимпульсов весьма полезно
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Ребята, тут программатор AVR910.
Скажите, а по какой схеме подключается программируемая микросхема?
Как я понимаю, подключается MOSI к MOSI, MISO к MISO, SCK к SCK, RESET полагаю что к RESET. А куда LED? И необходима для программируемой микросхемы какая нибудь обвязка?
Всё так.
Выход LED - никуда в обычном режиме. На нём присутствует меандр с частотой в 1МГц, в случае, если случайно переключите контроллер на внешнее тактирование, то его можно подцепить на XTAL1 и оживить МК.
Обвязка не нужна. Только кварц (если используется), и все ноги питания (AVCC в том числе, если имеется)
Прицепил его к вышеуказанной микросхеме и... Контроллер не определился, хотя с FT232RL компьютер связался нормально.
Поломав немного голову и перепроверив всё целую кучу раз. Собрался и поехал на работу. Там имеется два программатора: STK500 и Sterh-007. Оба они не самопальные.
Первым делом я воткнул свою мегу в STK500 и попробовал в последовательном режиме считать данные о микроконтроллере. Считанная сигнатура не совпала с той, которая должна была быть. Причём она каждый раз считывалась разная. При этом попавшаяся под руку ATmega8515 читалась нормально.
Далее я воткнул ATmega8 в Sterh, в режиме параллельного программирования. Микросхема определилась, сигнатура совпала, а считанные ФЬЮзы совпали с установленными по умолчанию.
Этим же Sterh-ом я запросто запрограммировал микроконтроллер и проверил его на отладочной плате. А вот ту же прошивку через STK500 в том же последовательном режиме я загрузить не смог.
Кто нибудь сталкивался с такими чудесами, или я один такой особенный? И что за болячка может быть с такими симптомами, если не секрет?))
Сегодня спалил проц. Не хватило силы тока на питание ещё одного ядра и переферии, перевоткнул резистор, идущий параллельно со стабилизатором на более слабый(вместо 4.7 кОм на 1.0 кОм) спалил проц.
Ткните в сторону подробных статей по поводу организации питания МК и периферии.
Есть блок питания, 5 вольт, 1 ампер. Подключал через преобразователь в 3.3 вольта и 0.1 ампер. Без резистора МК не тянул.
Если я подрублю на цепь преобразователь в 3.3 вольта и 0.8 ампер, этого ведь хватит на питание мк и переферии без извращений с параллельно подключёнными резисторами? И не спалит ли это МК?
И да, вопрос, мучающий меня давно. Какой силой тока надо питать ps/2 клавиатуру?
Без схемы непонятно что за резистор, что значит параллельно стабилизатору, что за проц и какая периферия. Вообще-то потребляемый ток нужно смотреть в справочных данных на элементы схемы.
Лень искать про ток потребления клавиатуры, но про первый попавшийся контроллер клавиатуры (TP66P04) написано что рабочий ток 5.5мА, а там кроме него и 3х светодиодов ничего и нет.
Последний раз редактировалось Engineer_Keen Ср окт 03, 2012 14:05:11, всего редактировалось 1 раз.
black_lizard Непонятно что там у вас за схема питания вообще использована, не пробовали искать в теме мелкие вопросы по питанию?
Как можно уменьшив сопротивление резистора спалить проц?Я отвечу - если после резистора в цепи не стоял стабилитрон на нужное напряжение то запросто.Резистор ограничивает ток, но не ограничивает напряжение.Нужно ставить стабилитрон после резистора и на минус ( стабилитрон это диод, у которого напряжение обратного пробоя точно известно и если его пробило, при снятии напряжения он восстанавливается)
Если по схеме то стрелкой "диода" к плюсу.Это получается самый простой стабилизатор напряжения.
С большим сопротивлением все работало, так как ток небольшой и внутренний стабилитрон справлялся.Вы ток увеличили и внутри корпуса стало выделяться больше тепла.Вот проц и не выдержал.
Вообще более простым стабилизатором для Мк является микросхема 7805 на пять вольт в корпусе TO 220 это как обычный транзистор на 1,5 ампера мощностью.
Подробности подключения можно посмотреть в даташите.Если не найдете, я могу скинуть.
Доброго времени суток.
Подскажите, как запустить кодек на плате с плис? Использую отладочную плату от Digilent. На плате установлен кодек LM4550.
Перебрал список IP ядер - ничего подходящего не нашел. Городить обмен данными с нуля - как то не хочется. Может есть готовые библиотеки?
Использую отладочную плату Digilent Atlys
ПЛИС - Spartan6 XC6SLX45
Среда разработки Xilinx ISE
Проц propeller parallax
Накопал подключение питания в их демонстрационных платах. Там используется два стабилизатора, на 5 вольт, 0.5 ампер и на 3.3 вольта, 0.5 ампера подключённых последовательно. Скоро будут в лапах - поставлю их. Хотя странно, но в доках написано, что на проц надо подавать не более 0.4 ампера... но раз так в демоборде, то стоило делать так с самого начала.
И ещё вопрос. Если на стабилизаторе максимальная сила тока 0.5 это значит, что она всегда будет 0.5 или она может быть ниже?
А схема питания обычная паралельная. Адаптер -> стабилизатор -> проц + светодиод питания.
А клавиатура кстати не прихотливая, 3.3 вольта - тоже работает.
Ну все мы были чайниками когда-то И как чайник ( бывший ) нонешнему отвечу : паспортный ток стабилизатора обозначает тот максимум, который с него можно снять без вреда для его здоровья, а меньше - да хоть 0 .
С месяц назад начал осваивать МК. Прошел всю обучалку по AVRкам. Сейчас пробую сделать что-нибудь самостоятельно. В предпоследней статейке в обучалке автор обещался сделать секундомер, но видимо забыл. С него то я и захотел начать. Описанная там програмка IndicCycle выводит числа по разрядам на дисплей. Время я решил отсчитавать с помощью таймера. Т е по прерыванию от компаратора я инкрементирую регистр Dg в след. порядке ...-0-1-2-...-9-0... затем значения обрабатываю в цикле:
IndicCycle:
cp Dg4,Dg ;сравниваем
breq HappyEnd ;если равны ничего не меняем
;в противном случае
mov Dg4,Dg ;копируем в регистр 4 разряда
cpi Dg4,0 ;сравниваем с 0 (первоначально Dg и Dg4 равны и до этого не доходит)
breq Load4 ;если равны-переходим к Load4 и увеличиваем 3 разряд
rjmp HappyEnd ;если нет-выводим 4 разряд
Load4:
cpi Dg3,9 ;и т. д.
breq Load3
inc Dg3
rjmp HappyEnd
Load3:
ldi Dg3,0
cpi Dg2,9
breq Load2
inc Dg2
rjmp HappyEnd
Load2:
ldi Dg2,0
cpi Dg1,9
breq Load1
inc Dg1
rjmp HappyEnd
Load1:
ldi Dg1,0
rjmp HappyEnd
HappyEnd:
sts Digit,Dg1 ;загрузка актуальных значений
sts Digit+1,Dg2
sts Digit+2,Dg3
sts Digit+3,Dg4
rcall Display ;цикл индикации
rjmp IndicCycle
Вопрос в следующем: можно ли как-нибудь организовать програмку не объясняя контроллеру устройство десятичной системы исчисления. А если мне часы придется отображать в 24 часовом формате, то алгоритм и вовсе будет извращенским. Может можно сделать как-нибудь по проще
Нет. можно конечно хранить и считать время в двоичной форме, но тогда нужны будут еще более сложные преобразования BIN2BCD чтобы число перевести в десятичное, или довольно хитрую математику если захочешь сделать это БЫСТРО. а часы-минуты-секунды, вообще получить можно будет если использовать целочисленное деление - DIV и MOD, но поскольку контроллеры в своей массе не поддерживают аппаратно эти команды, то начинается АДЪ по реализации алгоритмов деления целых чисел...