nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 01:56



Reply to topic  [ 115 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8  Next
Программно-аппаратное формирование видеосигнала 
Author Message
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Post 
Позволю себе, ибо курилка, процитировать своего давнего вашингтонского друга: "Всё, что мы думаем, уже делается, всё, а что мы придумали, уже снято с производства". :lol:
С другой сороны, только что отключали лехтронергию, смею заверить, що керосиновая лампа и кирпичная печь - рулят. ;)


13 Jan 2014 08:48
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
jdigreze wrote:
"Всё, что мы думаем, уже делается, всё, а что мы придумали, уже снято с производства". :lol:

Мне иногда кажется, что всё придумали древние римляне с греками: всё назвали нужными
словами, на все случаи придумали подходящие цитаты и афоризмы...

Но меня так эмоционально подкинуло другое: я вроде сделал прикидки, посчитал, обсудил
с коллегами, но всё-равно в душЕ некий червь сомнения - а будет ли ОНО работать?

А ОНО - РАБОТАЛО 30 ЛЕТ НАЗАД! --- Вот это - ШОК! :lol:



PS. Вот только у меня сомнение, сможет ли 580ВМ80 успевать и регенерацию ДОЗУ выполнять
при таком способе?...

PРS. В общем-то здесь не курилка, а топик Galaksija из раздела Other retrocomputers... :-?

_________________
iLavr


13 Jan 2014 09:02
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
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 пикселей, но пиксель будет НЕ КВАДРАТНЫМ! 8)
Я уж было начал делать кое-какие схемные прикидки, но стало мне интересно, а как будет выглядеть при этом экран?

Вариантов поручилось 2: первый - используем способ как в "Специалисте" и получаем 48 символов в строке.
Выглядеть это будет вот так:
Attachment:
SpecDumpEF.gif
SpecDumpEF.gif [ 8.83 KiB | Viewed 9246 times ]

А второй вариант - не используем сдвигов и матрица символа - шириной в байт, это быстрее.
Но получаем 32 символов в строке, и выглядит это вот так:
Attachment:
SpecDumpDF.gif
SpecDumpDF.gif [ 7.23 KiB | Viewed 9246 times ]


Я, кстати, искал схему Галаксии поразборчивее и увидел, что интерес к ней не пропадает.
Какие-то черти пытаются сделать её на CMOS... https://revspace.nl/Galaksija

Попадаются материалы по Галаксии-плюс, но как я вижу, это - попытка "дотянуть" её до уровня "Специалиста",
причем не совсем удачная, так что мне она не показалась интересной...

_________________
iLavr


19 May 2016 16:47
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
А ты уже придумал, как ты без регистра регенерации памяти будешь видео выводить в варианте Галаксии на 580ВМ80?
Я уже не помню где (может даже на этом форуме), но была вроде идея на время формирования строки видео
запускать процессор по видеопамяти, но он при этом должен получать NOPы, а считанные из ОЗУ байты должны записываться
в сдвиговый регистр. Только вот непонятно, как этот процесс заканчивать в конце строки. Видимо, тут надо как-то усложнять
дешифрацию адреса, чтобы для процессора видеопамять была "дырявая", с NOPами в видимой части строки.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


23 May 2016 00:06
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
b2m wrote:
А ты уже придумал, как ты без регистра регенерации памяти будешь видео выводить в варианте Галаксии на 580ВМ80?
Я уже не помню где (может даже на этом форуме), но была вроде идея на время формирования строки видео
запускать процессор по видеопамяти, но он при этом должен получать NOPы, а считанные из ОЗУ байты должны записываться
в сдвиговый регистр.

Именно это я и придумал, а потом ещё и увидел, что так же сделано в zx80, обсуждали мы это прямо в этой ветке несколько страниц назад.

И это можно уже начать проверять на имеющейся у нас модели 580ВМ80 aka урезанный z80, и потихоньку я уже начал это делать...

Но всё же интересно выяснить в чем была программно-аппаратная хитрость Галаксии. Если всё связано с регистром регенерации памяти, то для него мне известно следующее:
Quote:
R: Регистр регенерации памяти, 8 бит. Увеличивается на 1 после каждой выборки команды, но инкремент затрагивает только младшие 7 бит, старший бит не меняется и может быть использован в программах.
- При выборке команды с префиксом, R увеличивается еще на 1. В блочных командах R увеличивается на 2 в каждой итерации.
- Для правильной работы LD A, R и LD R, A увеличение R должно происходить до выполнения команды.
- Прием прерывания увеличивает R на единицу.

Что из этого, или из того, чего здесь нет, может помешать сделать "Галаксию" на современном z80?

По схеме оригинальной "Галаксии", которую я на днях, надеюсь, что дорисую, я вижу, что обращением к УВВ они тормозят z80 по WAIT с учетом М1, а строчный импульс из ожидания z80 отпускает на формирование строки.
Я прочитал где-то, что вроде как у некоторых клонов z80 есть отличия именно где-то в процессе обращения к УВВ.
Возможно, это еще может иметь значение?

_________________
iLavr


23 May 2016 06:56
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Я вот думаю, а не поставить ли таймер типа 8253 на формирование строчных и кадровых импульсов?

С одной стороны - он уберет 3...4 корпуса ИС... но с другой стороны, таймер - это как-то
не "по-нищебродски"...

Но программируемый таймер с прерыванием по нему - очень удобная вещь и даже несколько универсальная...

_________________
iLavr


10 Jun 2016 13:50
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Lavr wrote:
Я вот думаю, а не поставить ли таймер типа 8253 на формирование строчных и кадровых импульсов?


http://zxpress.ru/book_articles.php?id=2054


Attachments:
vi53sync.jpg
vi53sync.jpg [ 168.83 KiB | Viewed 7970 times ]

_________________
:dj: https://mastodon.social/@Shaos
10 Jun 2016 14:32
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Ну два таймера 8253, как мне кажется, это уже будет перебор... :wink:

_________________
iLavr


10 Jun 2016 16:01
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Мне кажется здесь разговор пошёл не о Галаксии, а о ZX80. Может всё это в другую тему?


10 Jun 2016 21:29
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
fifan wrote:
Мне кажется здесь разговор пошёл не о Галаксии, а о ZX80. Может всё это в другую тему?

Да нет... разговор здесь о том, как генерировать видео-сигнал программно-аппаратным способом,
и Галаксия - просто хороший тому пример.

А ZX80 использует трюк с аппаратной подстановкой процессору кода NOP, хотя и не так, как я планировал.
Но разобрать его схемотехнику мне показалось полезным.
И нет нужды новые темы плодить, я считаю... пусть вся нужная информация лежит в одном месте.


По поводу программно-аппаратной генерации видео-сигнала на К580ВМ80:
что-то у меня структура видео-памяти неприятная сейчас вырисовывается - начала строк не выраниваются
на удобные числа.

Я планировал поместить видео-ОЗУ на адреса 0C000…DFFFH, 0E000 - начало служебного ОЗУ.
И строки должны были располагаться так:
Code:
0C000…0C01F - 1100000000011111
0C020…0C03F - 1100000000111111
0C040…0C05F - 1100000001011111
0C060…0C07F и т.д.

Но времЯнка видеосигнала пока мне не дает так сделать.

На обратный ход по строке у меня остаются 24 такта - это 6 NOP-ов или что-то другое...
Варианты: либо потерять на каждой строке лишних ячеек памяти - пропустить их, либо логическая
организация видео-ОЗУ будет весьма неудобной... :-?

_________________
iLavr


11 Jun 2016 05:11
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
а если сразу VGA сделать? там времянки другие - может удобнее будет? ;)

_________________
:dj: https://mastodon.social/@Shaos


11 Jun 2016 08:52
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
а если сразу VGA сделать? там времянки другие - может удобнее будет? ;)

Не получится. Я рассчитываю для К580ВМ80А на тактовой частоте 2.5 МГц при частоте выдачи
пикселей 5 МГц.
И то всего получается выдать 256 точек в видимой части строки - это всего 32 байта.

А в VGA и этого не получится, т.к. К580ВМ80А для этих целей слабоват...

Давайте уж о реальном, а не об сюрреальном... :wink:

_________________
iLavr


11 Jun 2016 09:48
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
а ты много точек хочешь? ну тогда да :)
а то можно было бы при 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 Гц, чтобы он выплёвывал видеостроку побайтно, а в конце видимого растра выдавал бы короткий импульс (и отпускал прерывание) и по этому импульсу простая схемка их резисторов и кондёра делала бы строчный синхроимпульс с нужными задержками :)

_________________
:dj: https://mastodon.social/@Shaos


11 Jun 2016 10:12
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
а ты много точек хочешь? ну тогда да :)
а то можно было бы при 31778 Гц строчной частоты и 5 МГц пиксельклока утолкать 157 точек в строку ;)

Я бы и все 384 точки хотел бы... но проц не потянет... так что только 256.
Shaos wrote:
можно процессор прерывать с частотой 31778 Гц, чтобы он выплёвывал видеостроку побайтно, а в конце видимого растра выдавал бы короткий импульс (и отпускал прерывание) и по этому импульсу простая схемка их резисторов и кондёра делала бы строчный синхроимпульс с нужными задержками :)

Глядя на свои расчеты и на план видео-ОЗУ, я пока сомневаюсь в подобной резвости К580ВМ80А на выбранной частоте.
Поэтому за INT будет дергать кадровая частота, поскольку если прерывать с частотой 31778 Гц,
проц замучается обрабатывать прерывания.

_________________
iLavr


11 Jun 2016 10:31
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
В общем, на данный момент получается вот такой примерно расклад:
на тактовой частоте 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… - служебная область.
Code:
0C000…0C02F - 1100000000101111 - 0-я строка
0C030…0C05F - 1100000001011111 - 1-я строка
0C060…0C08F - 1100000010001111 - 2-я строка
0C090…0C0BF - 1100000010111111 - 3-я строка
и т.д.

Область 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
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 115 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8  Next

Who is online

Users browsing this forum: No registered users and 24 guests


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

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.