
Недоспектрум NEDOCON-48K и далее NEDOCON-56K
Moderator: Shaos
-
- Retired
- Posts: 1328
- Joined: 25 Jul 2011 00:14
- Location: WWW
-
- Admin
- Posts: 24011
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Admin
- Posts: 24011
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Нарисовал (пока не бумаге) всю цепочку вплоть до вывода пикселов и бордера - теперь можно собирать на макетке и пробовать генерить видеосигнал без проца 
P.S. Наличие ПЗУ в качестве формирователя сигналов сильно упрощает привязку к разным кристаллам-осцилляторам и видеорежимам - я даже могу VGA сигнал сгенерить, главное чтобы видео со всеми синхрами умещалось в квадрат 512x512...

P.S. Наличие ПЗУ в качестве формирователя сигналов сильно упрощает привязку к разным кристаллам-осцилляторам и видеорежимам - я даже могу VGA сигнал сгенерить, главное чтобы видео со всеми синхрами умещалось в квадрат 512x512...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
-
- Admin
- Posts: 24011
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Admin
- Posts: 24011
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
В ленинграде у меня стоит 14.31818 МГц (как советовал автор печатной платы на своём сайте) и есть пара запасных таких же - могу начать с них (правда PAL-оригинала с таким кварцем не получится). А теперь немного посчитаем.MC68k wrote:28/2=14алсо поляки продают 14МГц осцилляторы
Частота строк в PAL - 15625 Гц и 50 полукадров в секунду (312.5 строки в полукадре).
Частота строк в NTSC - 15734.26 Гц и 59.94 полукадров в секунду (262.5 строки в полукадре).
При частоте кварца 14 МГц (пиксельклок 7 МГц) мы получим 448 точек в строке для PAL и 444.9 точек в строке для NTSC (округляем до 448, чтобы было кратно 8, что приведёт к уменьшению частоты кадров до 59.64 при 262 строках и 59.18 при 264 строках).
При частоте кварца 14.31818 МГц (пиксельклок 7.16 МГц) мы получим 458.2 точек в строке для PAL (округляем до 456, чтобы было кратно 8, что приведёт увеличению частоты кадров до 50.3 при 312 строках) и 455 точек в строке для NTSC (округляем до 456, чтобы было кратно 8, что приведёт к небольшому уменьшению частоты кадров до 59.92 при 262 строках, а при 264 строках частота кадров будет ещё меньше - 59.47).
Как видно при кварце 14.31818 МГц цифры для NTSC очень близки к идеальным (правда кол-во строк при этом не кратно 4) - так что наверное именно эту частоту я и буду использовать для NTSC-варианта, а PAL-вариант будет на 14 МГц...
P.S. А поставив кварц на 25.175 МГц (пиксельклок 12.59 МГц) и перепрограммировав ПЗУ можно без изменения схемы генерить VGA-сигнал 640x400@70 (точнее это будет 320x400), при этом частота Z80 будет 6.29 МГц

P.P.S. Ну или 640x480@60...

Last edited by Shaos on 16 Jun 2013 09:21, edited 3 times in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24011
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Сегодня добавил возможность сброса счётчика строк на строке некратной 4 (но кратной 2 - например 262 в случае NTSC - при этом джампер J1 должен быть установлен).Shaos wrote:Вобщем как-то так:Shaos wrote:Например счётчик на четырёх 74LS163 плюс 74LS74 - два раза по девять (H0...H8, V0...V8) из которых на 8-килобайтную ПЗУ идут H3, H4, H5, H6, H7, H8, V2, V3, V4, V5, V6, V7, V8...
Счётчик точек с синхронным сбросом (74LS163), а счётчик строк - с асинхронным (74LS161) - это чтобы можно было без младших 2 бит сбросить в ноль...
P.S. Выяснилась неприятная деталь - осцилляторов на 14 МГц нигде нет, да и кристаллы тоже фиг найдёшь - купил непойми чего на ебее - поглядим...
P.S. Первые 3 счётчика 74LS163 можно заменить на 74LS161, но вместо входа /CLR сигнал сброса HCLR надо будет подавать на вход /LOAD (он синхронный), а биты установки надо все посадить на 0.
P.P.S. 16 июня решил поставить все 74LS163 и добавил также мелкой логики на синхронное окончание счёта в случае количества линий кратных 2 (джампер J1) или кратных 4 (джампер J2).
Last edited by Shaos on 15 Jun 2013 23:28, edited 1 time in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Retired
- Posts: 1328
- Joined: 25 Jul 2011 00:14
- Location: WWW
капитан напоминает, что 14.318... какбе для NTSC и сделан. но если в PAL, то пентагон получится - строк-то добавить надо. 264 строки откуда такое?
как будет с прерываниями в NTSC?
в ленинграде 14.0-14.5 и предустановка по таблице. у меня стоял вакуумированный на 14000кГц, маргиналы обходились подстроечником.
а как с чтениями из видеопамяти? четыре в нечетном знакоместе и два в четном или четыре чтения на два знакоместа? yoba.jpg
как будет с прерываниями в NTSC?
в ленинграде 14.0-14.5 и предустановка по таблице. у меня стоял вакуумированный на 14000кГц, маргиналы обходились подстроечником.
а как с чтениями из видеопамяти? четыре в нечетном знакоместе и два в четном или четыре чтения на два знакоместа? yoba.jpg
-
- Admin
- Posts: 24011
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
264 кратно 4 и именно эта цифра напечатана в ULA-книжке для NTSC-варианта - правда он никуда не пошёл (это было ещё до таймекса), так что мы пожалуй остановимся на стандартных 262 - раз уж я уже предусмотрел несколько внешних гейтов для их поддержки...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24011
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Четыре чтения подряд когда счётчики показывают адрес нечётного знакоместа - точно как в оригиналеMC68k wrote:а как с чтениями из видеопамяти? четыре в нечетном знакоместе и два в четном или четыре чтения на два знакоместа? yoba.jpg

P.S. Вывод пикселов сдвинут вправо на ползнакоместа относительно адресов...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24011
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Хотя 640x480 уже больше 512 линий в кадре получится - придётся большее ПЗУ ставить, ну и для этого режима, как и для 640x400 надо каждую строку дублировать (в-принципе, это не проблема - просто иначе номер строки на формирование адреса надо подавать).Shaos wrote:В ленинграде у меня стоит 14.31818 МГц (как советовал автор печатной платы на своём сайте) и есть пара запасных таких же - могу начать с них (правда PAL-оригинала с таким кварцем не получится). А теперь немного посчитаем.MC68k wrote:28/2=14алсо поляки продают 14МГц осцилляторы
Частота строк в PAL - 15625 Гц и 50 полукадров в секунду (312.5 строки в полукадре).
Частота строк в NTSC - 15734.26 Гц и 59.94 полукадров в секунду (262.5 строки в полукадре).
При частоте кварца 14 МГц (пиксельклок 7 МГц) мы получим 448 точек в строке для PAL и 444.9 точек в строке для NTSC (округляем до 448, чтобы было кратно 8, что приведёт к уменьшению частоты кадров до 59.64 при 262 строках и 59.18 при 264 строках).
При частоте кварца 14.31818 МГц (пиксельклок 7.16 МГц) мы получим 458.2 точек в строке для PAL (округляем до 456, чтобы было кратно 8, что приведёт увеличению частоты кадров до 50.3 при 312 строках) и 455 точек в строке для NTSC (округляем до 456, чтобы было кратно 8, что приведёт к небольшому уменьшению частоты кадров до 59.92 при 262 строках, а при 264 строках частота кадров будет ещё меньше - 59.47).
Как видно при кварце 14.31818 МГц цифры для NTSC очень близки к идеальным (правда кол-во строк при этом не кратно 4) - так что наверное именно эту частоту я и буду использовать для NTSC-варианта, а PAL-вариант будет на 14 МГц...
P.S. А поставив кварц на 25.175 МГц (пиксельклок 12.59 МГц) и перепрограммировав ПЗУ можно без изменения схемы генерить VGA-сигнал 640x400@70 (точнее это будет 320x400), при этом частота Z80 будет 6.29 МГц
P.P.S. Ну или 640x480@60...
ПЗУ видеогенератора должно иметь время доступа до 4 тактов пиксельклока, что есть 571 нс для 7 МГц, 558 нс для 7.16 МГц и 317 нс для 12.59 МГц
Можно ещё поглядеть на 800x600:
Code: Select all
Mode name Lines line sync back active front whole frame
Total width pulse porch time porch period
(us) (us)(lin) (us)(lin) (us) (lin) (us)(lin) (us) (lin)
VGA 800x600 56Hz 625 28.44 56 1 568 20 17177 604 -1* 17775 625
VGA 800x600 60Hz 628 26.40 106 4 554 21 15945 604 -1* 16579 628
VGA 800x600 72Hz 666 20.80 125 6 436 21 12563 604 728 35 13853 666
Mode name Pixel sync back active front whole line
clock pulse porch time porch period
(MHz) (us)(pix) (pix) (pix) (pix) (pix)
VGA 800x600 56Hz 36 2 72 125 806 21 1024
VGA 800x600 60Hz 40 3.2 128 85 806 37 1056
VGA 800x600 72Hz 50 2.4 120 61 806 53 1040
Если взять 800x600@60 Hz, то пиксельклок будет 40/2=20 MHz, частота проца - 10 MHz, скорость доступа к видеопамяти - 200 нс (100 у ОЗУ) и строк опять таки больше 512.
Видимо надо выбирать 640x350, чтобы не надо было строки раздваивать, а если ещё и кварц уменьшить до 18 МГц (точное значение 18.357), то соотношение сторон такого спектрумовского экрана будет примерно 4:3...
P.S. А при оригинальном кварце 25.175 MHz правильное соотношение сторон будет только на широкоэкранных мониторах...
P.P.S. Вот несколько примеров VGA:
Пиксельклок 25.175 МГц, частота процессора 12.59 МГц, широкоформатный монитор, правильное соотношение сторон (640x350):

Пиксельклок 25.175 МГц, частота процессора 12.59 МГц, стандартный монитор, неправильное соотношение сторон (640x350):

Пиксельклок 12.59 МГц, частота процессора 6.29 МГц, стандартный монитор, неправильное соотношение сторон (320x350):

Пиксельклок 18.432 МГц, частота процессора 9.22 МГц, соотношение сторон близкое к правильному (ошибка 0.4%) на стандартном мониторе (469x350):

Пиксельклок 18 МГц, частота процессора 9 МГц, соотношение сторон близкое к правильному (ошибка 2%) на стандартном мониторе (458x350):

P.P.P.S. т.к. схема у нас манипулирует строками в точках, кратных 8 пикселам, то надо пересчитать размеры для двух последних случаев и кроме того можно присмотреть другие частоты, близкие к идеальному значению пиксельклока 18.357 МГц (частота кварца 36.71 МГц).
Пиксельклок 18.432 (ошибка 0.4%) вместо 469 делаем 472 (59 знакомест). Проблема в том, что кварца 36.864 МГц похоже не существует, поэтому вряд ли удастся использовать эту частоту в схеме без изменений.
Частота осциллятора/кварца - 36 МГц, пиксельклок 18 МГц (ошибка 2%) - вместо видимых 458 делаем 456 (57 знакомест), кол-во пикселов в полной строке - 572 (71.5 знакомест).
Частота осциллятора/кварца - 37.05 МГц, пиксельклок 18.53 МГц (ошибка 1%), видимых 470, а всего кол-во пикселов в полной строке - 588.67 (73.58 знакомест).
Частота осциллятора/кварца - 37.4 МГц, пиксельклок 18.7 МГц (ошибка 2%), видимых 475, а всего кол-во пикселов в полной строке - 594.23 (74.28 знакомест).
Частота осциллятора/кварца - 37.5 МГц, пиксельклок 18.75 МГц (ошибка 2%), видимых 476, а всего кол-во пикселов в полной строке - 595.82 (74.48 знакомест).
P.P.P.P.S. Ещё частоты:
Частота осциллятора/кварца - 35.469 МГц, пиксельклок 17.73 МГц (ошибка 3%), видимых 450, а всего кол-во пикселов в полной строке - 563.55 (70.4 знакомест).
Частота осциллятора/кварца - 35.6 МГц, пиксельклок 17.8 МГц (ошибка 3%), видимых 450, а всего кол-во пикселов в полной строке - 563.64 (70.7 знакомест).
Частота осциллятора/кварца - 35.7 МГц, пиксельклок 17.85 МГц (ошибка 3%), видимых453, а всего кол-во пикселов в полной строке - 567.22 (70.9 знакомест).
Чтобы частота кадров была близка к стандартным 70.086 Гц, надо выбрать количество знакомест, близкое к целому числу, например 35.7 МГц - в этом случае выбрав 71 знакоместо мы получим 31426 строк в секунду, разделив которые на 449 получим 69.99 кадров в секунду. Оставив теже 71 знакомест, но взяв 36 МГц, мы получим 31690 строк в секунду или 70.6 кадров в секунду (наверное это немножко много) в случае 449 строк, а взяв 450 получим 70.4 кадров в секунду . А теперь пересчитаем для 72 знакомест - 31250 строк в секунду или 69.60 кадров в секунду. Из больших частот можно попробовать 37.4 МГц и 74 знакоместа - 31588 строк в секунду, 70.35 кадров в секунду при 449 строках и 70.20 при 450 строках.
Кварц 37.4 МГц, пиксельклок 18.7 МГц, частота процессора 9.35 МГц, соотношение сторон близкое к правильному (ошибка 2%) на стандартном мониторе (475x350):

Кварц 35.7 МГц, пиксельклок 17.85 МГц, частота процессора 8.93 МГц, соотношение сторон близкое к правильному (ошибка 3%) на стандартном мониторе (454x350):

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24011
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
С другой стороны вот тут чуваки пробовали для 640x480@60 вместо 525 строк генерировать только 512 - и всё работало:Shaos wrote:Хотя 640x480 уже больше 512 линий в кадре получится - придётся большее ПЗУ ставить, ну и для этого режима, как и для 640x400 надо каждую строку дублировать (в-принципе, это не проблема - просто иначе номер строки на формирование адреса надо подавать).
http://people.ece.cornell.edu/land/cour ... 25_dah322/
т.е. теоретически можно в той же схеме сгенерить 640x480 VGA, правда с несколько кривыми таймингами...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24011
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Retired
- Posts: 1328
- Joined: 25 Jul 2011 00:14
- Location: WWW