nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 23 Apr 2024 10:39



Reply to topic  [ 193 posts ]  Go to page Previous  1 ... 4, 5, 6, 7, 8, 9, 10 ... 13  Next
Самодельный процессор nedoRISC-0 (NEDONAND) 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22566
Location: Silicon Valley
Reply with quote
Далее по планам разработки плат на ближайшие дни:
- восьмибитный регистр-защёлка для построения регистров с прямыми и инверсными выходами NEDONAND-5 (2+1+8+16=27 ног);
- восемь мультиплексоров 2:1 с общим управлением NEDONAND-6 (2+1+16+8=27 ног);
- демультиплексор 1:8 распостраняющий единичку NEDONAND-7 (2+3+1+8=14 ног);
- мультиплексор 8:1 под названием NEDONAND-8 (2+3+8+1=14 ног);
- девятивходовый логический элемент AND под названием NEDONAND-9 (2+9+1=12 ног).

Планирую для начала построить версию которая щас есть в логисиме - только первая ступень конвейера (и только 16 байт ПЗУ).
Далее будет 128-байтовая версия (тоже память на диодах), и только потом полноценная версия с 2К на РФ2.

P.S. Вот так их можно тестировать, подключая поочерёдно в один 30-дырчатый разъём, с другой стороны которого будет большой PIC16:
Code:
    NN1  NN2  NN3    NN4   NN5  NN6  NN7  NN8  NN9  NN16
--------------------------------------------------------
 1) GND  GND  ---    GND   GND  GND  GND  GND  GND  GND
 2) O0   D1   ~Q0    D0    D0   O0   O0   I0   A    D0
 3) O1   ^C1  ~Q1    D1    D1   O1   O1   I1   B    D1
 4) O2   /R1  ~Q2    D2    D2   O2   O2   I2   C    D2
 5) A    Q1   ~Q3    D3    D3   O3   O3   I3   D    D3
 6) B    /Q1  IN     COUT  D4   O4   O4   I4   E    D4
 7) C    D2   ACT0   VOUT  D5   O5   O5   I5   F    D5
 8) H    ^C2  ACT1   /O0   D6   O6   O6   I6   G    D6
 9) L    /R2  /RESET /O1   D7   O7   O7   I7   H    D7
10) COUT Q2   CLK    /O2   STB  SEL  /ENO OUT  I    NC (/OE)
11) DOUT /Q2  NC     /ZERO NC   /SEL EN   NC   AND  NC (/CS)
12) VCC  VCC  VCC    VCC   VCC  VCC  VCC  VCC  VCC  VCC
13) ---  ---  GND    ---   ---  ---  GND  GND  ---  ---
14)                                  A0   A0        ~A0
15)           D0     O0    Q0   A0   A1   A1        ~A1
16)           D1     O1    /Q0  B0   A2   A2        ~A2
17)           D2     O2    Q1   A1                  ~A3
18)           D3     C     /Q1  B1
19)           D4     A0    Q2   A2
20)           D5     A1    /Q2  B2
21)           D6     A2    Q3   A3
22)           D7     A3    /Q3  B3
23)           D8     B0    Q4   A4
24)           D9     B1    /Q4  B4
25)           D10    B2    Q5   A5
26)           D11    B3    /Q5  B5
27)                        Q6   A6
28)                        /Q6  B6
29)                        Q7   A7
30)                        /Q7  B7

~ означает, что сигнал подключен проводом с бокового разъёма

P.P.S. Если любую плату NEDONAND повернуть к себе лицом и разъёмом вниз, то ноги будут нумероваться справа-налево...

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


24 Feb 2016 23:12
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
и только потом полноценная 2Кбайтная на РФ2...

Лучше на РТ, или какой там есть её аналог... РФ2 по скорости убивает всё быстродействие - я подсчитывал.
Весь смысл в быстродействующих NAND теряется.

_________________
iLavr


25 Feb 2016 01:27
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22566
Location: Silicon Valley
Reply with quote
Ну тут сумматор подцеплен цепочкой - точно также убивает всю скорость - так что одно на другое и выходит...

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


25 Feb 2016 05:59
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22566
Location: Silicon Valley
Reply with quote
Shaos wrote:
Потестил на брэдборде - работает ;)

Image

P.S. Плюс к этому видео снял как оно светодиодами мигает, но это уже завтра...

P.P.S. По сути это аналог одного счётчика 74161 (с асинхронным сбросом) на рассыпухе ;)


А вот и видео :)



Четыре красных светодиода это 4 выхода считаемого адреса, а пятый жёлтый - это сигнал разрешения счётся для следующего каскада

P.S. Эта этажерка жрёт порядка 130 мА всё время...

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


25 Feb 2016 07:22
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Ну тут сумматор подцеплен цепочкой - точно также убивает всю скорость - так что одно на другое и выходит...

Фигово... с Рф2 - и до 1МГц не разгонишься, выходит так.

_________________
iLavr


25 Feb 2016 07:45
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22566
Location: Silicon Valley
Reply with quote
Lavr wrote:
Shaos wrote:
Ну тут сумматор подцеплен цепочкой - точно также убивает всю скорость - так что одно на другое и выходит...

Фигово... с Рф2 - и до 1МГц не разгонишься, выходит так.


ну оно по спецификации 450нс вроде как, а это 2.222 МГц - я хочу в пике разогнать этот недопроц до 1.666 МГц с РФ2 (частота кварца при этом должна быть 6.666 МГц)

не получится с РФ2 - поставлю 2716 поновее...

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


25 Feb 2016 08:39
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22566
Location: Silicon Valley
Reply with quote
Один товарищ решил покодить условные переходы и доказал, что их тут сильно не хватает:
https://hackaday.io/project/9795-nedonand-homebrew-computer/discussion-48545#j-discussions-title
В результате я придумал команду SKIP-IF-A-EQ-FF (пропустить следующую команду, если A=0xFF ; )
В этом случае переход если равно будет выглядеть так:
Code:
E=addr_neq
A=0x40 ; mask for flag Z
NAN F ; A=~(A&F)
SFF ; new magic command (if A=0xFF at this point then tested flag was 0)
G=E ; skip if equal (so jump if NOT equal)
; stay here if equal
A=addr_eq
G=A ; jump to addr_eq
addr_neq:

P.S. На самом деле можно и SKIP-IF-A-NEQ-FF завести, чтобы не городить лишние перескоки...

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


25 Feb 2016 17:44
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22566
Location: Silicon Valley
Reply with quote
Сегодня переместил NOP в 0x88, RET в 0x80, а 0xBE и 0xBF (места для G=F и G=~G) стали двумя новыми инструкциями:
0xBE SAEFF - Skip if A is Equal to FF
0xBF SANFF - Skip if A is Not equal to FF
которые заставляют процессор пропустить следующую инструкцию если регистр A равен 0xFF или не равен 0xFF соответственно

P.S. Ещё народ советует подменить на что-то полезное F=~F и F=G (например чтение-запись в ОЗУ?), но это потом...

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


25 Feb 2016 19:17
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22566
Location: Silicon Valley
Reply with quote
Уже черепов больше, чем у Зори:


Attachments:
hackaday160225.png
hackaday160225.png [ 424.21 KiB | Viewed 9391 times ]

_________________
:dj: https://mastodon.social/@Shaos
25 Feb 2016 23:23
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22566
Location: Silicon Valley
Reply with quote
ой, на меня OSHPark подписался :o
https://twitter.com/oshpark
и полайкал несколько моих твитов (в частности про мой чип)

P.S. а потом ещё и в блоге своём про меня написали!
http://blog.oshpark.com/2016/02/27/nedonand-homebrew-computer/

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


26 Feb 2016 19:18
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22566
Location: Silicon Valley
Reply with quote
Итак, очередная платка - по счёту пятая (NEDONAND-5) и это 8-разрядный регистр-защёлка с прозрачным стробированием (причём не только с прямыми выходами, но и с инверсными):



Вот авторазведёнка:



Только что заказал на OSHPark:

Image

Распиновка:
1.1) GND - земля
1.2) D0 - вход бит 0
1.3) D1 - вход бит 1
1.4) D2 - вход бит 2
1.5) D3 - вход бит 3
1.6) D4 - вход бит 4
1.7) D5 - вход бит 5
1.8) D6 - вход бит 6
1.9) D7 - вход бит 7
1.10) STB - строб записи (активный "1")
1.11) NC - не подключен
1.12) VCC - питание +5В
2.1) Q0 - выход сохранённый бит 0
2.2) /Q0 - выход инверсный сохранённый бит 0
2.3) Q1 - выход сохранённй бит 1
2.4) /Q1 - выход инверсный сохранённый бит 1
2.5) Q2 - выход сохранённый бит 2
2.6) /Q2 - выход инверсный сохранённый бит 2
2.7) Q3 - выход сохранённый бит 3
2.8) /Q3 - выход инверсный сохранённый бит 3
2.9) Q4 - выход сохранённый бит 4
2.10) /Q4 - выход инверсный сохранённый бит 4
2.11) Q5 - выход сохранённый бит 5
2.12) /Q5 - выход инверсный сохранённый бит 5
2.13) Q6 - выход сохранённый бит 6
2.14) /Q6 - выход инверсный сохранённый бит 6
2.15) Q7 - выход сохранённый бит 7
2.16) /Q7 - выход инверснй сохранённый бит 7

P.S. Аналогичный функционал можно получить из 2 чипов 74175 (если нужны и прямые выходы, и инверсные) либо 74573 (если только прямые)

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


26 Feb 2016 22:22
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22566
Location: Silicon Valley
Reply with quote
Сегодня статистика такая:


Attachments:
hackaday160226.png
hackaday160226.png [ 424.13 KiB | Viewed 9370 times ]

_________________
:dj: https://mastodon.social/@Shaos
26 Feb 2016 22:34
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22566
Location: Silicon Valley
Reply with quote
Шестая плата NEDONAND-6, которая есть 8 мультиплексоров 2:1 с общим управлением (прямым и инверсным сигналом выбора):



Авторазведёнка:



Уже заказана на OSHPark:

Image

Распиновка:
Code:
1.1) GND - ground
1.2) O0 - output of multiplexer 0
1.3) O1 - output of multiplexer 1
1.4) O2 - output of multiplexer 2
1.5) O3 - output of multiplexer 3
1.6) O4 - output of multiplexer 4
1.7) O5 - output of multiplexer 5
1.8) O6 - output of multiplexer 6
1.9) O7 - output of multiplexer 7
1.10)SEL - straight select
1.11)/SEL - inverted select
1.12)VCC - power +5V

2.1) A0 - input A of multiplexer 0
2.2) B0 - input B of multiplexer 0
2.3) A1 - input A of multiplexer 1
2.4) B1 - input B of multiplexer 1
2.5) A2 - input A of multiplexer 2
2.6) B2 - input B of multiplexer 2
2.7) A3 - input A of multiplexer 3
2.8) B3 - input B of multiplexer 3
2.9) A4 - input A of multiplexer 4
2.10)B4 - input B of multiplexer 4
2.11)A5 - input A of multiplexer 5
2.12)B5 - input B of multiplexer 5
2.13)A6 - input A of multiplexer 6
2.14)B6 - input B of multiplexer 6
2.15)A7 - input A of multiplexer 7
2.16)B7 - input B of multiplexer 7


P.S. NEDONAND-6 можно подцепить к NEDONAND-5 и получить 8-битный регистр с управляемой инвертируемостью выходов - это пригодится например для регистра T (временный регистр, который хранит в себе значение в процессе копирования регистров - см. симуляцию в Logisim).

P.P.S. По сути эта платка работает как 2 чипа 74157

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


27 Feb 2016 18:16
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22566
Location: Silicon Valley
Reply with quote
Седьмая плата NEDONAND-7, которая есть демультиплексор 1:8, но по сравнению с dmux8 из nedonand.circ для Logisim:



вход IN (щас он называется EN т.к. "enable") ещё инвертируется и выдаётся наружу (под названием /ENO) для каскадирования (из 2 плат без лишней обвязки можно получить 1:16):



Авторазведёнка:



Уже заказана на OSHPark:

Image

Распиновка:
Code:
1) GND - ground
2) O0 - output "1" if EN="1" and A=0
3) O1 - output "1" if EN="1" and A=1
4) O2 - output "1" if EN="1" and A=2
5) O3 - output "1" if EN="1" and A=3
6) O4 - output "1" if EN="1" and A=4
7) O5 - output "1" if EN="1" and A=5
8) O6 - output "1" if EN="1" and A=6
9) O7 - output "1" if EN="1" and A=7
10)/ENO - output of inverted EN
11)EN - enable input (must be "1" to demultiplex)
12)VCC - power +5V
13)GND - another ground
14)A0 - bit 0 of address
15)A1 - bit 1 of address
16)A2 - bit 2 of address

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


27 Feb 2016 22:49
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22566
Location: Silicon Valley
Reply with quote
Восьмая плата NEDONAND-8, которая есть мультиплексор 8:1, повторяющий один в один схему mux8 из nedonand.circ для Logisim:



Выведены все сигналы на 16-ногий разъём (такой же как и у NEDONAND-7):



Авторазведёнка:



Уже заказана на OSHPark:

Image

Распиновка:
Code:
1) GND - ground
2) I0 - input if A=0
3) I1 - input if A=1
4) I2 - input if A=2
5) I3 - input if A=3
6) I4 - input if A=4
7) I5 - input if A=5
8) I6 - input if A=6
9) I7 - input if A=7
10)OUT - output of multiplexer
11)NC - not connected
12)VCC - power +5V
13)GND - another ground
14)A0 - bit 0 of address
15)A1 - bit 1 of address
16)A2 - bit 2 of address

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


27 Feb 2016 22:53
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 193 posts ]  Go to page Previous  1 ... 4, 5, 6, 7, 8, 9, 10 ... 13  Next

Who is online

Users browsing this forum: No registered users and 39 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:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.