|
nedoPC.orgCommunity for electronics hobbyists, established in 2002 |
|
Программно-аппаратное формирование видеосигнала
Author |
Message |
jdigreze
God
Joined: 02 Jan 2006 02:28 Posts: 1388 Location: Abakan
|
Позволю себе, ибо курилка, процитировать своего давнего вашингтонского друга: "Всё, что мы думаем, уже делается, всё, а что мы придумали, уже снято с производства".
С другой сороны, только что отключали лехтронергию, смею заверить, що керосиновая лампа и кирпичная печь - рулят.
|
13 Jan 2014 08:48 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Мне иногда кажется, что всё придумали древние римляне с греками: всё назвали нужными
словами, на все случаи придумали подходящие цитаты и афоризмы...
Но меня так эмоционально подкинуло другое: я вроде сделал прикидки, посчитал, обсудил
с коллегами, но всё-равно в душЕ некий червь сомнения - а будет ли ОНО работать?
А ОНО - РАБОТАЛО 30 ЛЕТ НАЗАД! --- Вот это - ШОК!
PS. Вот только у меня сомнение, сможет ли 580ВМ80 успевать и регенерацию ДОЗУ выполнять при таком способе?...
PРS. В общем-то здесь не курилка, а топик Galaksija из раздела Other retrocomputers...
_________________ iLavr
|
13 Jan 2014 09:02 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
| | | | Lavr wrote: Учтём параметры полного телевизионного сигнала системы SECAM: • Номинальная длительность строки Н = 64 мкс; • Длительность гасящего импульса строк а = 12 мкс; - (Откуда видимая часть строки = 52 мкс ) ... Рассмотрим всё же как оно по правде будет: 52 мкс / (4 такта * 1/F мкс)F=2.0МГц 4 такта по 500нс = 2000нс = 2.000мкс - 26 символов в строке Кварц- 8 МГц F=2.5МГц 4 такта по 400нс = 1600нс = 1.600мкс ~ 32 символа в строке Кварц- 10 МГц F=2.7МГц 4 такта по 370нс = 1481нс = 1.481мкс ~ 35 символов в строке Кварц- 10.8 МГц F=3.0МГц 4 такта по 333нс = 1332нс = 1.333мкс ~ 39 символов в строке Кварц- 12 МГц F=3.5МГц 4 такта по 286нс = 1143нс = 1.143мкс ~ 45 символа в строке Кварц- 14 МГц F=4.0МГц 4 такта по 250нс = 1000нс = 1.000мкс - 52 символа в строке Кварц- 16 МГц | | | | |
В общем мысль у меня к Галаксии периодически возвращается, тем более что у нас теперь есть модель z80 aka 580ВМ80 для Протезуса. А значит, можно уже некоторые прикидки поделать, исходя из того, что в этом топике обсудили... Мне лично интересны 2 вещи: реализовать идеологию Галаксии (а может быть zx81) на процессоре 580ВМ80 без специфики z80. И вторая мысль: использовать отдельный 580ВМ80 в качестве счетчиков, если это осуществимо... Из процитированных выше расчетов оптимальным представляется вариант: F=2.5МГц 4 такта по 400нс = 1600нс = 1.600мкс ~ 32 символа в строке Кварц- 10 МГцЭто дает нам геометрию 256х256 пикселей, но пиксель будет НЕ КВАДРАТНЫМ! Я уж было начал делать кое-какие схемные прикидки, но стало мне интересно, а как будет выглядеть при этом экран? Вариантов поручилось 2: первый - используем способ как в "Специалисте" и получаем 48 символов в строке. Выглядеть это будет вот так: А второй вариант - не используем сдвигов и матрица символа - шириной в байт, это быстрее. Но получаем 32 символов в строке, и выглядит это вот так: Я, кстати, искал схему Галаксии поразборчивее и увидел, что интерес к ней не пропадает. Какие-то черти пытаются сделать её на CMOS... https://revspace.nl/GalaksijaПопадаются материалы по Галаксии-плюс, но как я вижу, это - попытка "дотянуть" её до уровня "Специалиста", причем не совсем удачная, так что мне она не показалась интересной...
_________________ iLavr
|
19 May 2016 16:47 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 889
|
А ты уже придумал, как ты без регистра регенерации памяти будешь видео выводить в варианте Галаксии на 580ВМ80? Я уже не помню где (может даже на этом форуме), но была вроде идея на время формирования строки видео запускать процессор по видеопамяти, но он при этом должен получать NOPы, а считанные из ОЗУ байты должны записываться в сдвиговый регистр. Только вот непонятно, как этот процесс заканчивать в конце строки. Видимо, тут надо как-то усложнять дешифрацию адреса, чтобы для процессора видеопамять была "дырявая", с NOPами в видимой части строки.
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
23 May 2016 00:06 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Именно это я и придумал, а потом ещё и увидел, что так же сделано в zx80, обсуждали мы это прямо в этой ветке несколько страниц назад. И это можно уже начать проверять на имеющейся у нас модели 580ВМ80 aka урезанный z80, и потихоньку я уже начал это делать... Но всё же интересно выяснить в чем была программно-аппаратная хитрость Галаксии. Если всё связано с регистром регенерации памяти, то для него мне известно следующее: Что из этого, или из того, чего здесь нет, может помешать сделать "Галаксию" на современном z80? По схеме оригинальной "Галаксии", которую я на днях, надеюсь, что дорисую, я вижу, что обращением к УВВ они тормозят z80 по WAIT с учетом М1, а строчный импульс из ожидания z80 отпускает на формирование строки. Я прочитал где-то, что вроде как у некоторых клонов z80 есть отличия именно где-то в процессе обращения к УВВ. Возможно, это еще может иметь значение?
_________________ iLavr
|
23 May 2016 06:56 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я вот думаю, а не поставить ли таймер типа 8253 на формирование строчных и кадровых импульсов?
С одной стороны - он уберет 3...4 корпуса ИС... но с другой стороны, таймер - это как-то не "по-нищебродски"...
Но программируемый таймер с прерыванием по нему - очень удобная вещь и даже несколько универсальная...
_________________ iLavr
|
10 Jun 2016 13:50 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23255 Location: Silicon Valley
|
|
10 Jun 2016 14:32 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну два таймера 8253, как мне кажется, это уже будет перебор...
_________________ iLavr
|
10 Jun 2016 16:01 |
|
|
fifan
Devil
Joined: 06 Oct 2006 03:17 Posts: 875 Location: г.Лянтор,Сургутского р-на,ХМАО
|
Мне кажется здесь разговор пошёл не о Галаксии, а о ZX80. Может всё это в другую тему?
|
10 Jun 2016 21:29 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Да нет... разговор здесь о том, как генерировать видео-сигнал программно-аппаратным способом, и Галаксия - просто хороший тому пример. А ZX80 использует трюк с аппаратной подстановкой процессору кода NOP, хотя и не так, как я планировал. Но разобрать его схемотехнику мне показалось полезным. И нет нужды новые темы плодить, я считаю... пусть вся нужная информация лежит в одном месте. По поводу программно-аппаратной генерации видео-сигнала на К580ВМ80: что-то у меня структура видео-памяти неприятная сейчас вырисовывается - начала строк не выраниваются на удобные числа. Я планировал поместить видео-ОЗУ на адреса 0C000…DFFFH, 0E000 - начало служебного ОЗУ. И строки должны были располагаться так: Но времЯнка видеосигнала пока мне не дает так сделать. На обратный ход по строке у меня остаются 24 такта - это 6 NOP-ов или что-то другое... Варианты: либо потерять на каждой строке лишних ячеек памяти - пропустить их, либо логическая организация видео-ОЗУ будет весьма неудобной...
_________________ iLavr
|
11 Jun 2016 05:11 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23255 Location: Silicon Valley
|
а если сразу VGA сделать? там времянки другие - может удобнее будет?
|
11 Jun 2016 08:52 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Не получится. Я рассчитываю для К580ВМ80А на тактовой частоте 2.5 МГц при частоте выдачи пикселей 5 МГц. И то всего получается выдать 256 точек в видимой части строки - это всего 32 байта. А в VGA и этого не получится, т.к. К580ВМ80А для этих целей слабоват... Давайте уж о реальном, а не об сюрреальном...
_________________ iLavr
|
11 Jun 2016 09:48 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23255 Location: Silicon Valley
|
а ты много точек хочешь? ну тогда да а то можно было бы при 31778 Гц строчной частоты и 5 МГц пиксельклока утолкать 157 точек в строку это вместе со всеми синхро и гасящими импульсами - а реально там (исходя из 640+16+96+48 или 80%+2%+12%+6%) будет 125 строк (источник по таймингам: http://martin.hinner.info/vga/timing.html) P.S. если частота будет чуть больше - скажем 5.084 МГц, то в строку влезет 160 точек, из которых видимый растр будет 128, front porch - примерно 3 пиксела, sync pulse - примерно 19 пикселов, back porch - примерно 10 пикселов P.P.S. на самом деле можно процессор прерывать с частотой 31778 Гц, чтобы он выплёвывал видеостроку побайтно, а в конце видимого растра выдавал бы короткий импульс (и отпускал прерывание) и по этому импульсу простая схемка их резисторов и кондёра делала бы строчный синхроимпульс с нужными задержками
|
11 Jun 2016 10:12 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я бы и все 384 точки хотел бы... но проц не потянет... так что только 256. Глядя на свои расчеты и на план видео-ОЗУ, я пока сомневаюсь в подобной резвости К580ВМ80А на выбранной частоте. Поэтому за INT будет дергать кадровая частота, поскольку если прерывать с частотой 31778 Гц, проц замучается обрабатывать прерывания.
_________________ iLavr
|
11 Jun 2016 10:31 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
В общем, на данный момент получается вот такой примерно расклад: на тактовой частоте 2.5 МГц процессор К580ВМ80А выполняет операцию NOP за 4 такта по 400нс = 1600нс = 1.6 мкс То есть каждые 1.6 мкс процессор способен менять адрес ячейки видео-ОЗУ и выдавать байт в регистр сдвига. Последний при этом выдвигает точки по строке с частотой 5 МГц. На видимую часть строки приходится 32 операции NOP или 32 байта (32 х 8 = 256 точек). Это составляет 51200 нс или 51.2 мкс. На строчный гасящий остается 12800 нс или 12.8 мкс (32 такта по 400 нс) или 8 байт. Таким образом, полная длина строки = 40 байт, то есть, через 1 строку начало строки будет не выровнено на параграф. Я всё же хочу для удобства рассчетов координат точек на экране выровнять на параграф, но тогда в каждой строке остается 8 неиспользуемых в отображении байт, а начала строк будут расположены вот так: Весь экран: 0C000…0EFFFH, 0F000… - служебная область. Область 0C000…0EFFFH выбрана как верхняя четверть пространства в 64К. Её удобно отслеживать селекторами по шине адреса, если будет необходимость. ( 11000000.00000000 - 0C000 начало видео-ОЗУ, 11110000.00000000 - 0F000 конец видео-ОЗУ)
_________________ iLavr
Last edited by Lavr on 11 Jun 2016 12:38, edited 1 time in total.
|
11 Jun 2016 12:22 |
|
|
Who is online |
Users browsing this forum: No registered users and 1 guest |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|