Самодельный процессор nedoRISC-0 (NEDONAND)

Публичный форум для http://www.nedopc.org/nedopc

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 23991
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Самодельный процессор nedoRISC-0 (NEDONAND)

Post by Shaos »

Далее по планам разработки плат на ближайшие дни:
- восьмибитный регистр-защёлка для построения регистров с прямыми и инверсными выходами 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: Select all

    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 повернуть к себе лицом и разъёмом вниз, то ноги будут нумероваться справа-налево...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Самодельный процессор nedoRISC-0 (NEDONAND)

Post by Lavr »

Shaos wrote:и только потом полноценная 2Кбайтная на РФ2...
Лучше на РТ, или какой там есть её аналог... РФ2 по скорости убивает всё быстродействие - я подсчитывал.
Весь смысл в быстродействующих NAND теряется.
iLavr
User avatar
Shaos
Admin
Posts: 23991
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Самодельный процессор nedoRISC-0 (NEDONAND)

Post by Shaos »

Ну тут сумматор подцеплен цепочкой - точно также убивает всю скорость - так что одно на другое и выходит...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23991
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Самодельный процессор nedoRISC-0 (NEDONAND)

Post by Shaos »

Shaos wrote:Потестил на брэдборде - работает ;)

Image

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

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



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

P.S. Эта этажерка жрёт порядка 130 мА всё время...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Самодельный процессор nedoRISC-0 (NEDONAND)

Post by Lavr »

Shaos wrote:Ну тут сумматор подцеплен цепочкой - точно также убивает всю скорость - так что одно на другое и выходит...
Фигово... с Рф2 - и до 1МГц не разгонишься, выходит так.
iLavr
User avatar
Shaos
Admin
Posts: 23991
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Самодельный процессор nedoRISC-0 (NEDONAND)

Post by Shaos »

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

не получится с РФ2 - поставлю 2716 поновее...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23991
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Самодельный процессор nedoRISC-0 (NEDONAND)

Post by Shaos »

Один товарищ решил покодить условные переходы и доказал, что их тут сильно не хватает:
https://hackaday.io/project/9795-nedonand-homebrew-computer/discussion-48545#j-discussions-title
В результате я придумал команду SKIP-IF-A-EQ-FF (пропустить следующую команду, если A=0xFF ; )
В этом случае переход если равно будет выглядеть так:

Code: Select all

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 завести, чтобы не городить лишние перескоки...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23991
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Самодельный процессор nedoRISC-0 (NEDONAND)

Post by Shaos »

Сегодня переместил 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 (например чтение-запись в ОЗУ?), но это потом...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23991
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Самодельный процессор nedoRISC-0 (NEDONAND)

Post by Shaos »

Уже черепов больше, чем у Зори:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23991
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Самодельный процессор nedoRISC-0 (NEDONAND)

Post by Shaos »

ой, на меня OSHPark подписался :o
https://twitter.com/oshpark
и полайкал несколько моих твитов (в частности про мой чип)

P.S. а потом ещё и в блоге своём про меня написали!
http://blog.oshpark.com/2016/02/27/nedonand-homebrew-computer/
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23991
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Самодельный процессор nedoRISC-0 (NEDONAND)

Post by Shaos »

Итак, очередная платка - по счёту пятая (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 (если только прямые)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23991
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Самодельный процессор nedoRISC-0 (NEDONAND)

Post by Shaos »

Сегодня статистика такая:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23991
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Самодельный процессор nedoRISC-0 (NEDONAND)

Post by Shaos »

Шестая плата NEDONAND-6, которая есть 8 мультиплексоров 2:1 с общим управлением (прямым и инверсным сигналом выбора):



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



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

Image

Распиновка:

Code: Select all

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
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23991
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Самодельный процессор nedoRISC-0 (NEDONAND)

Post by Shaos »

Седьмая плата NEDONAND-7, которая есть демультиплексор 1:8, но по сравнению с dmux8 из nedonand.circ для Logisim:



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



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



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

Image

Распиновка:

Code: Select all

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
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23991
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Самодельный процессор nedoRISC-0 (NEDONAND)

Post by Shaos »

Восьмая плата NEDONAND-8, которая есть мультиплексор 8:1, повторяющий один в один схему mux8 из nedonand.circ для Logisim:



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



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



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

Image

Распиновка:

Code: Select all

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
Я тут за главного - если что шлите мыло на me собака shaos точка net