nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 18 Nov 2017 11:47



Reply to topic  [ 97 posts ]  Go to page Previous  1, 2, 3, 4, 5 ... 7  Next
[Zpring] Великий долгострой nedoSprinter на Z180 и Xilinx(?) 

Как назвать железяку, чтобы юзеры потянулись?
Zprint 10%  10%  [ 1 ]
Zpring 20%  20%  [ 2 ]
Zprinx 0%  0%  [ 0 ]
Неважно т.к. ничего не получится 10%  10%  [ 1 ]
А мне пофиг 40%  40%  [ 4 ]
Названия в опросе - полная лажа 20%  20%  [ 2 ]
Total votes : 10

[Zpring] Великий долгострой nedoSprinter на Z180 и Xilinx(?) 
Author Message
Online
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15673
Location: Colorado
Reply with quote
Post 
Shaos wrote:
Решил взять в качестве проца Z180. Есть идея заимплементить акселератор софтверно - команды акселератора на шине будут превращаться в RST-прерывания. С переключением памяти через порты тоже можно что-то придумать (теже RST)...


Суть в том, что команды включения акселератора будут вызывать немаскируемое прерывание NMI, по которому программа-обработчик будет брать из стека адрес возврата и разбирать по нему команды вплоть до LD B,B выполняя все действия софтверно (ну или через DMA).

_________________
:eugeek: https://twitter.com/Shaos1973


18 May 2013 03:36
Profile WWW
Online
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15673
Location: Colorado
Reply with quote
Post 
Задействовать дополнительне разряды адреса от Z180 (A17,A18,A19) скорее всего не получится, т.к. бортовой MMU делит доступную память на 3 части, причём первая часть - это всегда начало памяти, а последняя - это всегда конец, т.е. перемещаться по большой памяти может только среднее окно, а нам надо 4 независимых области по 16K...

P.S. Хотя эти биты адреса можно для DMA пересылок использовать - ведь ему весь мегабайт физически доступен будет и скорость у него приличная - один байт за 6 системных клоков (частота кварца делённая пополам).

_________________
:eugeek: https://twitter.com/Shaos1973


Last edited by Shaos on 18 May 2013 04:18, edited 1 time in total.



18 May 2013 03:40
Profile WWW
Online
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15673
Location: Colorado
Reply with quote
Post 
В последнее время я пришёл к выводу, что логичнее не заморачиваться с ТВ стандартами (PAL vs NTSC), а ориентироваться сразу на SVGA 800x600 - универсальное решение получается. Текстовый режим 80x32 можно сразу растянуть на весь экран (размер знакоместа при этом будет 10x18 пикселов). А вот у графических режимов придётся размножать пикселы - 640x256 можно удвоить по вертикали (каждая строка будет повторяться 2 раза), разместив получившееся изображение 640x512 посередине экрана 800x600:

Image

Image

Режим 320x256 потребует раздвоения как по вертикали, так и по горизонтали:

Image

Image

Image

Image

Image

Ну и добавится родной режим 800x600 - 16 цветов с двумя экранами и 256 цветов с одним.
Хотя наверное 400 надо сделать по горизонтали для 256 цветов, чтобы оставался один байт на 2 такта пиксельклока.
Видеопамяти при этом потребуется полмегабайта (со своим процессором?) или четверть мегабайта если без вторых экранов.
Кроме того можно добавить PC-шный текстовый режим 80x25 - чисто на всякий случай :)

P.S. Если уж пошли бордюры, то может и ZX-спектрумовский экран поддержать? ;)

P.P.S. Согласно HardWareMan-овской ссылке режимы 800x600 у нас бывают такие:
Code:
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

Для Z180 20MHz в качестве задающей частоты можно взять 40MHz (800x600@60).
А для Z180 33MHz можно попробовать 36MHz (800x600@56) - вдруг заведётся...

_________________
:eugeek: https://twitter.com/Shaos1973


Last edited by Shaos on 19 May 2013 16:10, edited 1 time in total.



18 May 2013 03:52
Profile WWW
Online
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15673
Location: Colorado
Reply with quote
Post 
Хотя может и не стоит замахиваться сразу на 800x600, а начать с "EGA on VGA" 640x350 с пиксельклоком 25.175 MHz?...

P.S. 640x400 и 640x480 тоже можно по ходу поддержать, т.к. у них пиксельклок тот же

P.P.S. Пока пожалуй остановлюсь на 640x350@70 и 640x400@70, тогда вместо вот этих режимов:
Quote:
- text 40x32 with 16 colors (mode 02h);
- text 80x32 with 16 colors (mode 03h);
- graphic 320x256 with 256 colors (mode 81h);
- graphic 640x256 with 16 colors (mode 82h).

вводятся вот такие (жирным выделены программно "совместимые" со старым Спринтером):
Quote:
#01 - Text 80x35 with 16 colors and characters 8x10 (640x350);
#02 - Text 40x32 with 16 colors and characters 8x10 - emulated by #01 or #84 (640x350);
#03 - Text 80x32 with 16 colors and characters 8x10 - emulated by #01 or #84 (640x350);
#04 - Text 80x40 with 16 colors and characters 8x10 (640x400 - future?);
#80 - Hybrid mode with graphics on top and text on bottom of screen 640x400 (future?);
#81 - Graphics 320x256 with 256-color palette - emulated by mode #85 with offset 50;
#82 - Graphics 640x256 with 16 colors - emulated by mode #84 with offset 50;
#83 - Graphics 320x200 with 256-color palette and 2 pages (top and bottom);
#84 - Graphics 640x350 with 16 colors and 7 configurable zones;
#85 - Graphics 320x350 with 256-color palette and 7 configurable zones;
#86 - Graphics 640x400 with 16 colors;
#87 - Graphics 320x400 with 256-color palette.


P.P.S. По той же ссылке находим:

Image

Значит пока вырисовывается такая картина - Z180 работает на кварце 25.175 МГц, а выдаваемая из проца системная частота PHI будет в 2 раза меньше - 12587.5 кГц, которую мы и заюзаем как пиксельклок (в 16-цветных режимах буду использовать обе фазы этого клока). В результате экранных пикселов будет в 2 раза меньше:
4 пиксела - горизонтальный перед;
48 пикселов - горизонтальая синхра;
20 пикселов - горизонтальный зад;
4 пиксела - левый бордюр;
320 пиксела - видео;
4 пиксела - правый бордюр.
т.к. на бордюр нам наплевать, то прибавим его к переду и заду, сдвинув всё влево, чтобы строка начиналась сразу с видео (так удобнее считать):

320+8+48+24=400

по вертикалям (бордюр тоже прибавлен):

350+37+2+60=449 для 350 строк
400+12+2+35=449 для 400 строк

В отличие от Спринтера хочу несколько иначе построить работу с расширенными видеорежимами - вместо подключения отдельных строк кадра в 16K окно, мы разделим всю видеопамять на куски по 16K и будем подключать именно их в адресное пространство процессора. Одно окно в 16384 байта может охватить 51.2 строки видео (одна строка это 320 однобайтовых пикселов или 640 полубайтовых) - округлим до 50. Выходит, что режим в 350 строк потребует 7 таких областей, а в 400 строк - 8 (т.е. всего видеопамяти будет 128K). Видеопамять можно построить так, чтобы её куски были относительно независимыми друг от друга и чтобы процессор тормозился только если он лезет в тот кусок, который в данный момент отрисовывается.

P.P.P.S. Открыл опрос вначале этого топика по поводу названия:

http://www.nedopc.org/forum/viewtopic.php?t=8869

_________________
:eugeek: https://twitter.com/Shaos1973


Last edited by Shaos on 03 Jun 2013 20:41, edited 10 times in total.



18 May 2013 10:02
Profile WWW
Senior
User avatar

Joined: 09 Aug 2012 14:20
Posts: 176
Location: 95.135.174.189
Reply with quote
Post 
не увидел в списке 640х480х256@60!?

_________________
Хочу стать всезнайкой ;-)


18 May 2013 14:41
Profile
Online
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15673
Location: Colorado
Reply with quote
Post 
He3HauKo wrote:
не увидел в списке 640х480х256@60!?


Памяти на него не хватит и 640x480 пока сильно другой режим - не срастается в лёгкую с 640x350 и 640x400

_________________
:eugeek: https://twitter.com/Shaos1973


18 May 2013 14:50
Profile WWW
Senior
User avatar

Joined: 09 Aug 2012 14:20
Posts: 176
Location: 95.135.174.189
Reply with quote
Post 
А разве видео не будет отдельным устройством(видео карта)!?

_________________
Хочу стать всезнайкой ;-)


18 May 2013 15:50
Profile
Online
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15673
Location: Colorado
Reply with quote
Post 
Вот так будет выглядеть стандартный спринтеровский экран 640x256 в разрешении 640x350 с вертикальным смещением в 50 пикселов:

Image

А вот так он будет выглядеть, если спринтеровская программа будет выводить свою графику 640x256 в новом режиме 640x400 (смещение не предусмотрено):

Image

Ну и на последок - так может выглядеть гипотетический гибридный видеорежим, когда верхняя часть экрана - это стандартный спринтеровский графический экран 640x256, а нижняя - 12 строк в текстовом режиме, используемых скажем для отладки стандартных спринтеровских приложений:

Image

P.S. Все картинки после подготовки в своих разрешениях были растянуты до 640x480 чтобы сохранить правильное соотношение сторон для читателя ;)

_________________
:eugeek: https://twitter.com/Shaos1973


Last edited by Shaos on 23 May 2013 17:19, edited 8 times in total.



18 May 2013 15:51
Profile WWW
Online
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15673
Location: Colorado
Reply with quote
Post 
He3HauKo wrote:
А разве видео не будет отдельным устройством(видео карта)!?


Угу - только я хочу утолкать его в платку 10x10 см и обойтись без дорогих FPGA - максимум CPLD не очень большой ёмкости...

_________________
:eugeek: https://twitter.com/Shaos1973


18 May 2013 15:55
Profile WWW
Senior
User avatar

Joined: 09 Aug 2012 14:20
Posts: 176
Location: 95.135.174.189
Reply with quote
Post 
с учетом CPLD 10х10 вполне достаточно, ну а какой объём памяти планируется?

_________________
Хочу стать всезнайкой ;-)


18 May 2013 16:03
Profile
Online
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15673
Location: Colorado
Reply with quote
Post 
Shaos wrote:
Вот так будет выглядеть стандартный спринтеровский экран 640x256 в разрешении 640x350 с вертикальным смещением в 50 пикселов:

Image


т.е. идея заключается в том, что смещение настраиваемое - можно скажем с тем же шагом в 50 строк сделать

P.S. отсюда новая идея - в режиме 640x350 (и соответственно 320x350) экран замкнуть в кольцо, у которого всегда будет видно 7 из 8 сегментов (т.к. видеопамяти у нас на 400 строк) - в теневом сегменте можно хранить спрайты для игр, а прокрутку как таковую теоретически для титров можно заюзать :)

_________________
:eugeek: https://twitter.com/Shaos1973


Last edited by Shaos on 19 May 2013 15:34, edited 1 time in total.



18 May 2013 16:07
Profile WWW
Online
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15673
Location: Colorado
Reply with quote
Post 
He3HauKo wrote:
с учетом CPLD 10х10 вполне достаточно, ну а какой объём памяти планируется?


Планирую взять 128K четырьмя блоками по 32K (CY62256 70ns) с независимым доступом - это чтобы процессор и видеоконтроллер мешали друг-другу только в 25% случаев (на самом делее меньше - ещё ведь синхросигналы всякие есть и т.д.), когда процессор читает или пишет в видеопамять.

P.S. Хотя для начала можно и одной микросхемой 128K сделать, а городки с интеллектуальной синхронизацией на потом отложить. Правда при этом в режиме 640x400 процент перекрытия с процессором будет 71% (при условии, что процессор подключил видеопамять в своё адресное пространство), а 640x350 - 62% (т.е. 2/3 времени работы с видеопамятью процессор будет простаивать в ожидании видеоконтроллера). В случае же 4 корпусов с "интеллектуальной" логикой разрешения конфликтов, время простоя процессора, работающего с видеопамятью, будет в 4 раза меньше - 17.8% и 15.6% соответственно.

P.P.S. Ещё один вариант - позвать HardWareMan-a, чтобы он нахимичил полностью прозрачную схему работы с видеопамятью для Z180 :roll:

_________________
:eugeek: https://twitter.com/Shaos1973


18 May 2013 16:09
Profile WWW
Online
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15673
Location: Colorado
Reply with quote
Post 
Shaos wrote:
т.е. идея заключается в том, что смещение настраиваемое - можно скажем с тем же шагом в 50 строк сделать

P.S. отсюда новая идея - в режиме 640x350 (и соответственно 320x350) экран замкнуть в кольцо, у которого всегда будет видно 7 из 8 сегментов (т.к. видеопамяти у нас на 400 строк) - в теневом сегменте можно хранить спрайты для игр, а прокрутку как таковую теоретически для титров можно заюзать :)


Подумалось ещё усугубить - сделать возможным подключать любой сегмент в любую из 8 областей экрана :)

Тогда нам нужно будет 4 порта, каждый из которых будет управлять двумя экранными местами (четверть экрана), куда можно будет подключать любой из 8 сегментов или вообще отключать сегмент:
bit 7 - управление нечётным экранным местом (1-запрещено, 0-разрешено);
bits 4,5,6 - номер сегмента в нечётном экранном месте (0...7);
bit 3 - управление чётным экранным местом (1-запрещено, 0-разрешено);
bits 0,1,2 - номер сегмента в чётном экранном месте (0...7).
Запрещённое экранное место закрашивается чёрным цветом, а в будущем три бита у запрещённого сегмента можно считать цветом заливки...

А вот текстовый экран можно по честному скроллить с шагом в одну строку - через порт, куда номер первой строки экрана будет заноситься и скроллинг точно также только для "старых" режимов будет доступен (2 и 3).

P.S. Если установка сегментов в графическом режиме будет доступна только в "старых" режимах, где вертикальное разрешение 350 линий, то экранных мест будет 7, а не 8 - соответственно в четвёртом порту будет 4 свободных бита, которые в будущем тоже можно подо что-то задействовать...

P.P.S. Может цвет бордюра ими переключать?

P.P.P.S. Наверное лучше экраны переключать в режиме 320x200 и палитры...

_________________
:eugeek: https://twitter.com/Shaos1973


18 May 2013 18:48
Profile WWW
Online
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15673
Location: Colorado
Reply with quote
Post 
Всё таки разнёс оригинальные режимы Спринтера (256 строк) и новые (350 строк), т.к. в будущем (например когда дорастём до 800x600) можно будет эмулировать оригинальные режимы через другое разрешение - в 640x350 уж слишком сплюснуто выглядит. Ну и опять же будет возможность перемаппивать эти режимы на другие по желанию пользователя.

800x600 (сжато до 640x480):



640x350 (растянуто до 640x480):

Image

Потом есть мысль таки разделить видеопамять на 4 микросхемы по 32K, которые будут использоваться не только как хранилище пикселов, но и палитры - т.е. когда работаем с одной микросхемой, три другие выступают в роли кодировщика цвета по палитре - я прикинул, всё влазит! Но т.к. память только 70 нс, то придётся некое подобие конвейера делать - пока один пиксел декодится в RGB, следующий пиксел в тоже самое время будет считываться из видеопамяти...

_________________
:eugeek: https://twitter.com/Shaos1973


Last edited by Shaos on 19 May 2013 16:04, edited 3 times in total.



19 May 2013 13:23
Profile WWW
Online
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15673
Location: Colorado
Reply with quote
Post 
Shaos wrote:
Открыл опрос вначале этого топика:

http://www.nedopc.org/forum/viewtopic.php?t=8869


Как-то вяло голосуем - добавил ещё 2 варианта ответа - про то что ничего не получится и классический "мне пофиг" :roll:

P.S. Zpring пока побеждает - я сам к этому названию склоняюсь, т.к. придумал его применительно к Спринтеру ещё 8 лет назад, правда речь там шла только про эмулятор...

_________________
:eugeek: https://twitter.com/Shaos1973


Last edited by Shaos on 19 May 2013 14:50, edited 2 times in total.



19 May 2013 13:28
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 97 posts ]  Go to page Previous  1, 2, 3, 4, 5 ... 7  Next

Who is online

Users browsing this forum: No registered users and 0 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.