Генератор субтитров из КР580ВГ75
Moderator: Shaos
Генератор субтитров из КР580ВГ75
Здравствуйте, уважаемые форумопосетители!
В настоящее время среди радиолюбителей весьма популярны самодельные генераторы субтитров. Эти приборы позволяют накладывать текст, генерируемый несложной ЭВМ, на внешний видеосигнал. Вот некоторые из таких конструкций:
http://alternatezone.com/electronics/vcg.htm
http://www.usblcd.de/lcdproc/stv5730.php4
http://www.knology.net/~gdion/videoverlay.html
http://www.circuitcellar.com/avr2004/wa ... stract.pdf
http://perso.orange.fr/loicmarty/osdubz/osdubz.htm
http://perso.orange.fr/loicmarty/5730/l ... u_5730.htm
Все эти конструкции подразделяются на две категории. Одни используют микросхему STV5730A, которая снята с производства, дефицитна и дорога. Другие используют программную генерацию видеосигнала, но при этом у МК остаётся слишком мало ресурсов на сервисные функции.
Предлагаю использовать в качестве генератора субтитров многочисленные ЭВМ на основе видеоконтроллера КР580ВГ75. Для этого необходимо:
1. Выделить из внешнего видеосигнала синхроимпульсы. Это очень простая задача, для выполнения которой давно существует микросхема LM1881;
2. Засинхронизировать работу микросхемы КР580ВГ75 синхроимпульсами, выделенными из внешнего видеосигнала. А вот это задача посложнее, поскольку непонятно, как это сделать.
Кто какие идеи предложит?
В настоящее время среди радиолюбителей весьма популярны самодельные генераторы субтитров. Эти приборы позволяют накладывать текст, генерируемый несложной ЭВМ, на внешний видеосигнал. Вот некоторые из таких конструкций:
http://alternatezone.com/electronics/vcg.htm
http://www.usblcd.de/lcdproc/stv5730.php4
http://www.knology.net/~gdion/videoverlay.html
http://www.circuitcellar.com/avr2004/wa ... stract.pdf
http://perso.orange.fr/loicmarty/osdubz/osdubz.htm
http://perso.orange.fr/loicmarty/5730/l ... u_5730.htm
Все эти конструкции подразделяются на две категории. Одни используют микросхему STV5730A, которая снята с производства, дефицитна и дорога. Другие используют программную генерацию видеосигнала, но при этом у МК остаётся слишком мало ресурсов на сервисные функции.
Предлагаю использовать в качестве генератора субтитров многочисленные ЭВМ на основе видеоконтроллера КР580ВГ75. Для этого необходимо:
1. Выделить из внешнего видеосигнала синхроимпульсы. Это очень простая задача, для выполнения которой давно существует микросхема LM1881;
2. Засинхронизировать работу микросхемы КР580ВГ75 синхроимпульсами, выделенными из внешнего видеосигнала. А вот это задача посложнее, поскольку непонятно, как это сделать.
Кто какие идеи предложит?
-
- Retired
- Posts: 490
- Joined: 17 Mar 2002 00:00
Боюсь, конструкция получится довольно сложная (ВГ75, ПЗУ знакогенератора, логика выхода, схема наложения на видеосигнал, управление ВГ-шкой, которое далеко не плевок в порт - в том-же РК для этого используется DMA). И фиговая - символы с ВГ75 получаются мелкими и трудночитаемыми, что совершенно не катит для субтитров.
Согласен. проще какой нить микроконтроллер достаточно шустрый а лучше специализированную фигню.Shiru Otaku wrote:Боюсь, конструкция получится довольно сложная (ВГ75, ПЗУ знакогенератора, логика выхода, схема наложения на видеосигнал, управление ВГ-шкой, которое далеко не плевок в порт - в том-же РК для этого используется DMA). И фиговая - символы с ВГ75 получаются мелкими и трудночитаемыми, что совершенно не катит для субтитров.
Фишка в том что видеосигнал надо раскладывать на составляющие и потом еще складывать (если с прозрачностью), а потом модулировать обратно.
-
- Retired
- Posts: 490
- Joined: 17 Mar 2002 00:00
Выложить тебе даташит на 8275 (ВГ75)?
Если взять готовую машину - то проблема с слишком мелким шрифтом будет очень актуальна (матрица символа 6x8 пикселей, на экране отображается 64x25, с пустыми полями слева-справа). И, кстати, я-бы пожалел готовую машину, так как их осталось в природе крайне немного. Их надо беречь и пылинки сдувать, а не курочить на титровальные агрегаты:)
Для титров можно купить Daewoo MSX CPC400S (я такой за 1000р купил в полном комплекте), у него уже всё для этого предусмотрено - композитные вход и выход.
Если взять готовую машину - то проблема с слишком мелким шрифтом будет очень актуальна (матрица символа 6x8 пикселей, на экране отображается 64x25, с пустыми полями слева-справа). И, кстати, я-бы пожалел готовую машину, так как их осталось в природе крайне немного. Их надо беречь и пылинки сдувать, а не курочить на титровальные агрегаты:)
Для титров можно купить Daewoo MSX CPC400S (я такой за 1000р купил в полном комплекте), у него уже всё для этого предусмотрено - композитные вход и выход.
-
- Retired
- Posts: 490
- Joined: 17 Mar 2002 00:00
Так как 580-ый комплект - клон 82xx, то и даташита на ВГ75 не бывает (изначально микросхемы набора поставлялись прямо с родной Intel'овской документацией). Вот тебе родной даташит на 8275 (3.8мб, на sendspace).
CPC400s не такая уж и громоздкая, если использовать без монитора - то она всего раза в два больше какой-нибудь РК-шки (к которой, между прочим, ещё и магнитофон/дисковод нужен, а у MSX'а сразу есть дисковод, и возможность легко сделать ROM-диск, даже не открывая корпус. И титры цветные будут, и шрифт можно любой сделать, и вообще.. Ладно:).
CPC400s не такая уж и громоздкая, если использовать без монитора - то она всего раза в два больше какой-нибудь РК-шки (к которой, между прочим, ещё и магнитофон/дисковод нужен, а у MSX'а сразу есть дисковод, и возможность легко сделать ROM-диск, даже не открывая корпус. И титры цветные будут, и шрифт можно любой сделать, и вообще.. Ладно:).
Вот это всё я и видел. Там описание не всех ног. Для начала такой вопрос: существует ли у этой микросхемы вообще возможность внешней синхронизации?
О! Можно ли ногу 6 для синхронизации использовать? Она, как я понял, предназначена для подтверждения, что запрос на DMA был выполнен. Т.е. как только микросхема узнала, что запрос был выполнен, начинается обращение к видео-ОЗУ и вывод кадра?
ЗЫ видел, как субтитры на "Агате-9" делали (синхронизировали же как-то!), но там видеоконтроллер совсем другой.
О! Можно ли ногу 6 для синхронизации использовать? Она, как я понял, предназначена для подтверждения, что запрос на DMA был выполнен. Т.е. как только микросхема узнала, что запрос был выполнен, начинается обращение к видео-ОЗУ и вывод кадра?
ЗЫ видел, как субтитры на "Агате-9" делали (синхронизировали же как-то!), но там видеоконтроллер совсем другой.
-
- Retired
- Posts: 490
- Joined: 17 Mar 2002 00:00
Насколько я понимаю, у ВГ75 нет как раз внутренней синхронизации, она всегда внешняя. На вход идёт тактовая частота, внутри программно задаются различные параметры (сколько символов в строке, сколько строк); ширина символа в пикселях вообще задаётся внешней схемой (регистр, сдвигающий данные из ПЗУ знакогенератора). По мере прохода по растру ВГ75 даёт запросы на контроллер DMA (запрашивает коды символов, с упреждением на строку, и последовательностями программируемой длины).
Дать схему Радио 86РК?
Дать схему Радио 86РК?
-
- Retired
- Posts: 490
- Joined: 17 Mar 2002 00:00
Имхо, проще забить на этот ВГ75, сделать простой растровый видеорежим (скажем, того-же Специалиста взять за основу, который модифицирован HardWareMan'ом, с SRAM вместо DRAM). Там можно будет любые шрифты использовать, а в случае с ВГ75 подключение ОЗУ знакогенератора, доступного из системы, будет целым геммороем, и возможные размеры шрифта будут крайне ограниченными (да ещё и только 128 символов в наборе!). Ну а проблему наложения сигнала в любом случае придётся решать отдельно от генератора изображения.
Только фрагмент, где видеоконтроллер показан.
Так, это радует, что она всегда внешняя. Только я вот что подумал, если синхронизацию подавать не от проца, а снаружи, то иногда она будет пытаться считывать данные из видео-ОЗУ тогда, когда оно занято (т.е. в него что-то пишут). Как эту проблему решить?
И куда именно подавать синхру?
Машины на основе других видеоконтроллеров сразу отпадают вот по какой причине: они все разные (у специалиста один, у вектора другой, у ориона третий, у спекообразных вообще четвёртый), а которые на КР580ВГ75 - все в части видеоконтроллера примерно одинаковы (что РК, что апогей, что партнёр, что микроша), и можно придумать универсальный способ переделки, который подходит ко всем таким машинам.
Так, это радует, что она всегда внешняя. Только я вот что подумал, если синхронизацию подавать не от проца, а снаружи, то иногда она будет пытаться считывать данные из видео-ОЗУ тогда, когда оно занято (т.е. в него что-то пишут). Как эту проблему решить?
И куда именно подавать синхру?
Машины на основе других видеоконтроллеров сразу отпадают вот по какой причине: они все разные (у специалиста один, у вектора другой, у ориона третий, у спекообразных вообще четвёртый), а которые на КР580ВГ75 - все в части видеоконтроллера примерно одинаковы (что РК, что апогей, что партнёр, что микроша), и можно придумать универсальный способ переделки, который подходит ко всем таким машинам.
-
- Retired
- Posts: 490
- Joined: 17 Mar 2002 00:00
Схема вот (вся, качество низкое, если надо - есть получше, в djvu): http://retro.bip.ru/RK86/CPU/CPUP3.jpg
Описание к ней из журнала вот: http://retro.bip.ru/RK86/CPU/CPU.html
Интересующий тебя фрагмент - справа внизу схемы. Тактирование ВГ75 идёт через счётчик D3 на 30-ый вывод ВГ-шки; этот-же счётчик формирует остальные синхросигналы. Изображение символов формируется ПЗУ знакогенератора D12, регистром D15, и мелочёвкой рядом с ними.
Из ОЗУ считывает контроллер DMA, при этом проц тормозится. Внутри ВГ75 есть два строковых буфера, так что данные в любом случае успевают считаться.
Описание к ней из журнала вот: http://retro.bip.ru/RK86/CPU/CPU.html
Интересующий тебя фрагмент - справа внизу схемы. Тактирование ВГ75 идёт через счётчик D3 на 30-ый вывод ВГ-шки; этот-же счётчик формирует остальные синхросигналы. Изображение символов формируется ПЗУ знакогенератора D12, регистром D15, и мелочёвкой рядом с ними.
Из ОЗУ считывает контроллер DMA, при этом проц тормозится. Внутри ВГ75 есть два строковых буфера, так что данные в любом случае успевают считаться.
И если неаккуратно засинхронизировать, то регенерация ОЗУ нарушиться может?
Ну, допустим, на ВГ75 подаётся что? Просто тактовая частота (какая она, кстати, там, после делителя?). Просто так туда (на 30 ногу) кадровые и строчные синхроимпульсы не подашь. Надо не просто привязать тактовую частоту КР580ВГ75 к частоте кадров внешнего видеосигнала, а именно привязать начало развёртки следующего кадра микросхемой к кадровому синхроимпульсу из внешнего видеосигнала. А как?
Желательно, конечно, ещё и строчную частоту к внешнему видеосигналу привязать, но это не обязательно. Если смириться с тем, что буквы будут немного уплывать по диагонали, можно строчную не привязывать, только кадровую.
Ну, допустим, на ВГ75 подаётся что? Просто тактовая частота (какая она, кстати, там, после делителя?). Просто так туда (на 30 ногу) кадровые и строчные синхроимпульсы не подашь. Надо не просто привязать тактовую частоту КР580ВГ75 к частоте кадров внешнего видеосигнала, а именно привязать начало развёртки следующего кадра микросхемой к кадровому синхроимпульсу из внешнего видеосигнала. А как?
Желательно, конечно, ещё и строчную частоту к внешнему видеосигналу привязать, но это не обязательно. Если смириться с тем, что буквы будут немного уплывать по диагонали, можно строчную не привязывать, только кадровую.
-
- Retired
- Posts: 490
- Joined: 17 Mar 2002 00:00
Есть, правда, ещё одна идея, совсем ленивая. Ничего вообще не синхронизировать, просто найти в схеме машины такую точку, где имеется видеосигнал БЕЗ синхроимпульсов (а такая точка есть в любой бытовой ЭВМ, неважно, на КР580ВГ75, или нет). Этот сигнал через простейший микшер подмешиваем к внешнему видеосигналу. Надпись окажется в произвольном месте экрана, немного сползёт по диагонали, возможно, часть её переползёт за край (но это устраняется изменением её местоположения в видео-ОЗУ). Зато сделать-то как просто!