![](http://www.nedopc.org/nedopc/image/nedobanner3.gif) |
nedoPC.orgElectronics hobbyists community established in 2002 |
![](http://www.nedopc.org/nedopc/image/nedobanner4.gif) |
Real i8085 + Xilinx CPLDs + 2 * SIMM30 = Orionix :)
Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22599 Location: Silicon Valley
|
Пренёс Хардваремановско-Альтеровский Орион с одним симмом в отдельный топик
http://www.nedopc.org/forum/viewtopic.php?t=10522
|
03 Dec 2013 15:14 |
|
![](./styles/getaway/theme/images/spacer.gif) |
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
|
03 Dec 2013 19:22 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22599 Location: Silicon Valley
|
![Reply with quote Reply with quote](./styles/getaway/imageset/en/icon_post_quote.gif)
Вот чего из твоего Верилога нагенерилось для XC9572XL:
![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | Code: ************************* Mapped Resource Summary **************************
Macrocells Product Terms Function Block Registers Pins Used/Tot Used/Tot Inps Used/Tot Used/Tot Used/Tot 7 /72 ( 10%) 13 /360 ( 4%) 11 /216 ( 5%) 7 /72 ( 10%) 5 /34 ( 15%)
** Function Block Resources **
Function Mcells FB Inps Pterms IO Block Used/Tot Used/Tot Used/Tot Used/Tot FB1 4/18 3/54 3/90 2/ 9 FB2 2/18 4/54 6/90 2/ 9 FB3 1/18 4/54 4/90 1/ 9 FB4 0/18 0/54 0/90 0/ 7 ----- ----- ----- ----- 7/72 11/216 13/360 5/34
* - Resource is exhausted
** Global Control Resources **
Signal 'MClk' mapped onto global clock net GCK1. Global output enable net(s) unused. Global set/reset net(s) unused.
** Pin Resources **
Signal Type Required Mapped | Pin Type Used Total ------------------------------------|------------------------------------ Input : 0 0 | I/O : 4 28 Output : 4 4 | GCK/IO : 1 3 Bidirectional : 0 0 | GTS/IO : 0 2 GCK : 1 1 | GSR/IO : 0 1 GTS : 0 0 | GSR : 0 0 | ---- ---- Total 5 5
************************* Summary of Mapped Logic ************************
** 4 Outputs **
Signal Total Total Loc Pin Pin Pin Pwr Slew Reg Init Name Pts Inps No. Type Use Mode Rate State CpuClk 1 2 FB1_2 1 I/O O STD FAST SET nCAS 4 4 FB2_2 35 I/O O STD FAST RESET PixClk 2 2 FB2_8 38 I/O O STD FAST RESET nRAS 4 4 FB3_2 11 I/O O STD FAST RESET
** 3 Buried Nodes **
Signal Total Total Loc Pwr Reg Init Name Pts Inps Mode State State<3> 1 3 FB1_16 STD RESET State<1> 1 1 FB1_17 STD RESET State<0> 0 0 FB1_18 STD RESET
** 1 Inputs **
Signal Loc Pin Pin Pin Name No. Type Use MClk FB1_9 5~ GCK/I/O GCK
********** Mapped Logic **********
FTCPE_CpuClk: FTCPE port map (CpuClk,CpuClk_T,MClk,'0','0'); CpuClk_T <= (State(0) AND State(1));
FDCPE_PixClk: FDCPE port map (PixClk,PixClk_D,MClk,'0','0'); PixClk_D <= State(0) XOR PixClk_D <= State(1);
FTCPE_State0: FTCPE port map (State(0),'1',MClk,'0','0');
FTCPE_State1: FTCPE port map (State(1),State(0),MClk,'0','0');
FTCPE_State3: FTCPE port map (State(3),State_T(3),MClk,'0','0'); State_T(3) <= (State(0) AND State(1) AND NOT CpuClk);
FDCPE_nCAS: FDCPE port map (nCAS,nCAS_D,MClk,'0','0'); nCAS_D <= ((NOT State(0) AND State(1)) OR (State(1) AND NOT State(3)) OR (State(1) AND NOT CpuClk) OR (State(0) AND NOT State(1) AND State(3) AND CpuClk));
FDCPE_nRAS: FDCPE port map (nRAS,nRAS_D,MClk,'0','0'); nRAS_D <= ((NOT State(0) AND NOT State(1)) OR (State(0) AND State(1) AND NOT State(3)) OR (State(0) AND State(1) AND NOT CpuClk) OR (NOT State(1) AND State(3) AND CpuClk));
Register Legend: FDCPE (Q,D,C,CLR,PRE,CE); FTCPE (Q,D,C,CLR,PRE,CE); LDCP (Q,D,G,CLR,PRE);
| ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) |
|
03 Dec 2013 22:19 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Error404
Maniac
Joined: 05 Oct 2006 04:45 Posts: 269 Location: Moscow
|
Все клево конечно, но встает вопрос, а чо не на i4004?
_________________ Всем добра!
|
05 Dec 2013 00:22 |
|
![](./styles/getaway/theme/images/spacer.gif) |
MC68k
Retired
Joined: 25 Jul 2011 00:14 Posts: 1331 Location: WWW
|
ЖЫР
|
05 Dec 2013 00:26 |
|
![](./styles/getaway/theme/images/spacer.gif) |
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Почему то все думают, что СИМЫ у всех есть. Все равно заказывать детальки, так что можно использовать все что легкодоставаемо через ebay (и аналоги)
|
05 Dec 2013 01:22 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22599 Location: Silicon Valley
|
Ну если бы оригинал был на i4004...
ИМХО: Оспектрумовливание советских компов (путём приклеивания Z80-проца соплями с 50 Гц прерыванием) было ошибкой - я строю свою альтернативную историю! ![:roll:](./images/smilies/icon_rolleyes.gif)
|
05 Dec 2013 04:39 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22599 Location: Silicon Valley
|
Симы тоже вполне доставаемы через ebay ![;)](./images/smilies/icon_wink.gif)
|
05 Dec 2013 05:01 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22599 Location: Silicon Valley
|
![Reply with quote Reply with quote](./styles/getaway/imageset/en/icon_post_quote.gif)
Блиттер можно сделать опциональным (в виде отдельно стоящего XC9572XL) и по идее можно копировать не только в пределах экранных областей, но и вообще в пределах всех симов (для этого правда нужно будет задавать уже не 16, а 22 бита адреса), и не только симов, но и скажем и из ПЗУ-картриджа (который вставляется в общую память по биту P7 порта управления страницами памяти):
0000 0001 - копируем в пределах первого сима
0000 0010 - копируем в пределах второго сима
0000 0011 - копируем в обоих симах (16 бит за раз)
0001 0001 - копируем из ПЗУ в первый симм
0001 0010 - копируем из ПЗУ во второй симм
Биты 2 и 3 оставляем про запас на будущее (если вдруг дойдут руки сделать 4 сима для 16-цветного режима), а бит 7 в будущем сможет задавать копирование в пределах симов с накладыванием маски (тоже на будущее)...
P.S. Бит 5 можно заставить переключать приёмник при копировании:
0010 0001 - читаем из первого сима, но пишем во второй
0010 0010 - читаем из второго сима, но пишем в первый
0010 0011 - меняем байты в симах местами?
P.P.S. А в случае ПЗУ этот бит может выбирать вторую половинку ПЗУ-картриджа:
0011 0001 - копируем из второй половинки ПЗУ в певый сим
0011 0010 - копируем из второй половинки ПЗУ во второй сим
Хотя наверное это тоже на будущее...
P.P.P.S. А факт окончания копирования можно вводить через бит последовательного порта либо через одно из новых прерываний 8085 (которые вроде как можно читать программно без непосредственно самого прерывания).
Last edited by Shaos on 05 Dec 2013 22:18, edited 1 time in total.
|
05 Dec 2013 07:45 |
|
![](./styles/getaway/theme/images/spacer.gif) |
MC68k
Retired
Joined: 25 Jul 2011 00:14 Posts: 1331 Location: WWW
|
Z80 много где применялся и прерывания по КСИ тоже.
|
05 Dec 2013 16:02 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22599 Location: Silicon Valley
|
ARM ещё больше где применяется, но это ведь не повод? ![:roll:](./images/smilies/icon_rolleyes.gif)
|
05 Dec 2013 16:46 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22599 Location: Silicon Valley
|
![Reply with quote Reply with quote](./styles/getaway/imageset/en/icon_post_quote.gif)
![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | Shaos wrote: Пока прикидываю неразогнанный двухсимовый вариант для 5 МГц: Как я понимаю за 4 такта процессора (и 8 тактов пиксельклока) нам надо успеть прочитать один раз из видеопамяти и один-два раза прочитать-записать данные по требованию процессора, ну и может один раз сделать CAS-before-RAS рефреш - так? Процессор всегда пишет-читает через такт после ALE. У нас может быть четыре состояния s0,s1,s2,s3, в первых трёх из которых по умолчанию будет читаться видеопамять и сохранять видеоданные в регистре, из которого в состоянии s3 видеоданные будут уходить в сдвиговый регистр и ALE может попасть на любое из этих состояний: ALE попало на s0 - значит общение процессора с памятью будет во время состояния s2 и мы точно знаем, что регистр с видеоданными уже будет записан в текущем такте (s0), значит следующий такт s1 можно посвятить рефрешу CAS-before-RAS, а на s3 снова может выпасть ALE. ALE попало на s1 - значит общение процессора с памятью будет во время состояния s3 и мы точно знаем, что регистр с видеоданными уже будет записан в текущем такте (s1), значит следующий такт s2 можно посвятить рефрешу CAS-before-RAS. ALE попало на s2 - значит общение процессора с памятью будет во время состояния s0, а в следующем состоянии s3 регистр с данными уже должен быть записан, значит в текущем такте (s2) пишем регистр с видеоданными и больше ничего не делаем (CAS-before-RAS не заказывается). ALE попало на s3 - значит общение процессора с памятью будет во время состояния s1 и следующий такт (s0) надо посвятить записи видеорегистра, значит CAS-before-RAS также не заказывается. P.S. RD и WR надо попросту укоротить, откусив их начала и оставив только кусок, попадающий на T3? | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) |
Наверное надо на полтакта сдвинуть формирование RAS/CAS, причём удлиннив RAS и укоротив CAS:
P.S. Пока прикидки такие - имеем 2 обязательных CPLD чипа:
Orionix Chip1 - дешифратор адресов и почти все порты (см. VHDL код выше)
Orionix Chip2 - видеоконтроллер, перебирающий адреса видеопамяти (PAL и NTSC)
и 2 опциональных:
Orionix ChipX - гибкий доступ к видеопамяти с шагом в 256 байт вместо 16К (горизонтальный скролл)
Orionix ChipY - блиттер (пока в базовом варианте с копированием без прозрачности)
плюс некоторое небольшое количество мелкой логики (регистры, мультиплексоры и т.д.)
P.P.S. По идее можно шаг сдвига видеопамяти и в 1 байт сделать - в этом случае можно будет вертикальный скролл поддержать, правда с минимальной софтверной поддержкой (программно придётся стирать перехлестнувшиеся пикселы), но этоу же мелочи...
P.P.P.S. С другой стороны в качестве мультиплексоров можно тот же Xilinx заюзать - дешевле будет (один XC9572XL-10 стоит $2.26, один XC9536XL-10 стоит $1.18, а шесть 74LS153 - уже $4.50) - тогда обязательными будут 3 CPLD-чипа...
|
05 Dec 2013 21:48 |
|
![](./styles/getaway/theme/images/spacer.gif) |
MC68k
Retired
Joined: 25 Jul 2011 00:14 Posts: 1331 Location: WWW
|
не надо путать божий дар с яичницей
|
06 Dec 2013 02:03 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Error404
Maniac
Joined: 05 Oct 2006 04:45 Posts: 269 Location: Moscow
|
i8080 в поделках времен 89-90г.г. это дань предельной бедности тогдашних сельских радиолюбителей. Тремя годами позже все Орионы уже шли с Z80 "искаропки" (Ташкентский Турбо, Альтаир, Орион-ПРО). Предлагаю пересчитать на форуме предельно бедных радиолюбителей, у которых нет Z80.
_________________ Всем добра!
|
06 Dec 2013 08:08 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22599 Location: Silicon Valley
|
А нонче всё идёт "искаробки" с интеловским многоядерным пентиум-совместимым процом ![:)](./images/smilies/icon_smile.gif)
|
06 Dec 2013 08:22 |
|
|
Who is online |
Users browsing this forum: No registered users and 14 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
|
|