Экспериментальный недокомпьютер NedoPC-28
Moderator: Shaos
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
В связи с разбиением платы на части и иной нумерацией микросхем и разъемов изменилось и описание девайса, который теперь состоит из трёх плат (см. принципиальные схемы тут и тут):
Разъемы платы и количество пинов в скобках:
JP1, JP2, JP3 (24) - подключение платы NedoCPU (NI-3x8);
JP4 ( 8 ) - внешняя шина данных (8 i/o);
JP5 ( 15 ) - шина NI-15 (8 i/o, 5 o);
JP6 ( 8 ) - входной порт (8 i);
JP7 ( 8 ) - входной порт (8 i);
JP8 ( 8 ) - входной порт (8 i);
JP9 ( 8 ) - входной порт (8 i);
JP10 ( 8 ) - входной порт (8 i);
JP11 ( 8 ) - выходной регистр (8 o);
JP12 ( 8 ) - выходной регистр (8 o);
JP13 ( 8 ) - выходной регистр (8 o) выводящий наружу младшие байт внутренней шины адреса;
JP14 ( 8 ) - выходной регистр (8 o) выводящий наружу старший байт внутренней шины адреса.
JP15 ( 8 ) - непосредственные входы-выходы микроконтроллера для внешнего использования (RA0,RA1,RA2,RA3,RTCC,RB5,RB6,RB7), причём 4 из них могут являться источниками прерывания работы микроконтроллера (7 i/o, 1 interrupt);
JP16 (32) - подключение бортовой памяти NedoMem (NI-32).
Итого имеем следующие входы-выходы:
- 1 вход прерываний (RTCC) - не может быть непосредственно использован как вход или выход данных (теоретически может быть использован как вход-выход при подключении другого модуля NedoCPU, построенного к примеру на PIC у которого будет пин A4);
- 23 входов-выходов (3 из которых также могут быть запрограммированы как входы прерваний - а именно RB5,RB6,RB7);
- 40 входов (ввод через буфера);
- 37 выходов (вывод через регистры).
т.е. всего 100 возможных входов/выходов для приёма/передачи данных (отсюда и название материнской платы - NedoMama-100).
Модуль процессора NedoCPU может быть построен на базе другого микроконтроллера ( не SX-28 ) с аналогичным количеством портов, например PIC16F870. В материнскую плату может быть воткнута бортовая память ( например NedoMem-16K ) объемом до 64К, причём адресующие её сигналы могут быть использованы как выходы (JP13 и JP14). На выход NI-15 можно припаять как угловые иголки, для втыкания платы NedoMama-100 вертикально в другую NI-15 материнку либо бредборду (в этом случае преобразователь напряжения 7805 (IC17) можно не припаивать, считая что питание идёт с шины), либо 15 дырчатый разъем-маму для втыкания других NI-15 устройств или простых разветвителей шины NI-15 (типа NedoMama-1) - в таком случае плата располагается горизонтально - разъемами вверх (и в бок), а микросхемами вниз.
Теперь о том как с этим устройством предполагается работать. Микроконтроллер SX-28 ( модуль NedoCPU-28 ) имеет лишь 20 сигналов ввода-вывода и данная плата должна дать возможность использовать большее количество сигналов (а именно 100), но не напрямую. На плате имеется внутренняя шина данных, подключённая к порту C микроконтроллера (RC0...RC7) - разъем JP3. Место куда эту шину подключать, определяется младшими 4 битами порта B (RB0...RB3) - разъем JP2, которые дешифруются с помощью IC1 и IC2 (а само действие запускается временным обнулением бита RB4):
0000 ( S0 ) - чтение из бортовой памяти NedoMem по ранее сохранённому адресу;
0001 ( S1 ) - чтение с внешней шины данных (JP4) через буфер IC3 (есть возможность использовать буфер не только на вход, но и на выход - см.описание регистра управления);
0010 ( S2 ) - чтение с шины NI-15 (JP5) через буфер IC5;
0011 ( S3 ) - чтение буфера IC7 (JP6);
0100 ( S4 ) - чтение буфера IC9 (JP7);
0101 ( S5 ) - чтение буфера IC10 (JP8);
0110 ( S6 ) - чтение буфера IC11 (JP9);
0111 ( S7 ) - чтение буфера IC12 (JP10);
1000 ( S8 ) - запись в бортовую память NedoMem по ранее сохранённому адресу;
1001 ( S9 ) - запись в регистр IC4 (для дальнейшего вывода во внешнюю шину данных JP4);
1010 ( S10 ) - запись в регистр IC6 (для дальнейшего вывода в шину NI-15 через разъём JP5);
1011 ( S11 ) - запись в регистр управления IC8 (о назначении отдельных битов см.ниже);
1100 ( S12 ) - запись в регистр IC13, хранящий младший байт адреса бортовой памяти (байт доступен извне через разъем JP13);
1101 ( S13 ) - запись в регистр IC14, храняший старший байт адреса бортовой памяти (байт доступен извне через разъем JP14);
1110 ( S14 ) - запись в регистр IC15, выход которого доступен через разъем JP11;
1111 ( S15 ) - запись в регистр IC16, выход которого доступен через разъем JP12.
Назначение битов регистра управления IC8 (запись по адресу 1011):
бит 0 - сигнал _CS шины NI-15 (JP5) - может использоваться как обычный выход;
бит 1 - сигнал ALE шины NI-15 (JP5) - может использоваться как обычный выход;
бит 2 - сигнал M_IO шины NI-15 (JP5) - может использоваться как обычный выход;
бит 3 - сигнал _RD шины NI-15 (JP5) - может использоваться как обычный выход;
бит 4 - сигнал _WR шины NI-15 (JP5) - может использоваться как обычный выход;
бит 5 - разрешение вывода данных из регистра IC6 (записанного по адресу 1010) в шину NI-15 (JP5);
бит 6 - разрешение вывода данных из регистра IC4 (записанного по адресу 1001) во внешнюю шину данных (JP4);
бит 7 - управление направлением буфера IC3 (обычно "0", но может быть установлено в "1" для вывода во внешнюю шину данных без защёлкивания через адрес 0001 - при этом бит 6 должен быть установлен в "1", чтобы выход регистра IC4 не шёл в эту шину).
Разъемы платы и количество пинов в скобках:
JP1, JP2, JP3 (24) - подключение платы NedoCPU (NI-3x8);
JP4 ( 8 ) - внешняя шина данных (8 i/o);
JP5 ( 15 ) - шина NI-15 (8 i/o, 5 o);
JP6 ( 8 ) - входной порт (8 i);
JP7 ( 8 ) - входной порт (8 i);
JP8 ( 8 ) - входной порт (8 i);
JP9 ( 8 ) - входной порт (8 i);
JP10 ( 8 ) - входной порт (8 i);
JP11 ( 8 ) - выходной регистр (8 o);
JP12 ( 8 ) - выходной регистр (8 o);
JP13 ( 8 ) - выходной регистр (8 o) выводящий наружу младшие байт внутренней шины адреса;
JP14 ( 8 ) - выходной регистр (8 o) выводящий наружу старший байт внутренней шины адреса.
JP15 ( 8 ) - непосредственные входы-выходы микроконтроллера для внешнего использования (RA0,RA1,RA2,RA3,RTCC,RB5,RB6,RB7), причём 4 из них могут являться источниками прерывания работы микроконтроллера (7 i/o, 1 interrupt);
JP16 (32) - подключение бортовой памяти NedoMem (NI-32).
Итого имеем следующие входы-выходы:
- 1 вход прерываний (RTCC) - не может быть непосредственно использован как вход или выход данных (теоретически может быть использован как вход-выход при подключении другого модуля NedoCPU, построенного к примеру на PIC у которого будет пин A4);
- 23 входов-выходов (3 из которых также могут быть запрограммированы как входы прерваний - а именно RB5,RB6,RB7);
- 40 входов (ввод через буфера);
- 37 выходов (вывод через регистры).
т.е. всего 100 возможных входов/выходов для приёма/передачи данных (отсюда и название материнской платы - NedoMama-100).
Модуль процессора NedoCPU может быть построен на базе другого микроконтроллера ( не SX-28 ) с аналогичным количеством портов, например PIC16F870. В материнскую плату может быть воткнута бортовая память ( например NedoMem-16K ) объемом до 64К, причём адресующие её сигналы могут быть использованы как выходы (JP13 и JP14). На выход NI-15 можно припаять как угловые иголки, для втыкания платы NedoMama-100 вертикально в другую NI-15 материнку либо бредборду (в этом случае преобразователь напряжения 7805 (IC17) можно не припаивать, считая что питание идёт с шины), либо 15 дырчатый разъем-маму для втыкания других NI-15 устройств или простых разветвителей шины NI-15 (типа NedoMama-1) - в таком случае плата располагается горизонтально - разъемами вверх (и в бок), а микросхемами вниз.
Теперь о том как с этим устройством предполагается работать. Микроконтроллер SX-28 ( модуль NedoCPU-28 ) имеет лишь 20 сигналов ввода-вывода и данная плата должна дать возможность использовать большее количество сигналов (а именно 100), но не напрямую. На плате имеется внутренняя шина данных, подключённая к порту C микроконтроллера (RC0...RC7) - разъем JP3. Место куда эту шину подключать, определяется младшими 4 битами порта B (RB0...RB3) - разъем JP2, которые дешифруются с помощью IC1 и IC2 (а само действие запускается временным обнулением бита RB4):
0000 ( S0 ) - чтение из бортовой памяти NedoMem по ранее сохранённому адресу;
0001 ( S1 ) - чтение с внешней шины данных (JP4) через буфер IC3 (есть возможность использовать буфер не только на вход, но и на выход - см.описание регистра управления);
0010 ( S2 ) - чтение с шины NI-15 (JP5) через буфер IC5;
0011 ( S3 ) - чтение буфера IC7 (JP6);
0100 ( S4 ) - чтение буфера IC9 (JP7);
0101 ( S5 ) - чтение буфера IC10 (JP8);
0110 ( S6 ) - чтение буфера IC11 (JP9);
0111 ( S7 ) - чтение буфера IC12 (JP10);
1000 ( S8 ) - запись в бортовую память NedoMem по ранее сохранённому адресу;
1001 ( S9 ) - запись в регистр IC4 (для дальнейшего вывода во внешнюю шину данных JP4);
1010 ( S10 ) - запись в регистр IC6 (для дальнейшего вывода в шину NI-15 через разъём JP5);
1011 ( S11 ) - запись в регистр управления IC8 (о назначении отдельных битов см.ниже);
1100 ( S12 ) - запись в регистр IC13, хранящий младший байт адреса бортовой памяти (байт доступен извне через разъем JP13);
1101 ( S13 ) - запись в регистр IC14, храняший старший байт адреса бортовой памяти (байт доступен извне через разъем JP14);
1110 ( S14 ) - запись в регистр IC15, выход которого доступен через разъем JP11;
1111 ( S15 ) - запись в регистр IC16, выход которого доступен через разъем JP12.
Назначение битов регистра управления IC8 (запись по адресу 1011):
бит 0 - сигнал _CS шины NI-15 (JP5) - может использоваться как обычный выход;
бит 1 - сигнал ALE шины NI-15 (JP5) - может использоваться как обычный выход;
бит 2 - сигнал M_IO шины NI-15 (JP5) - может использоваться как обычный выход;
бит 3 - сигнал _RD шины NI-15 (JP5) - может использоваться как обычный выход;
бит 4 - сигнал _WR шины NI-15 (JP5) - может использоваться как обычный выход;
бит 5 - разрешение вывода данных из регистра IC6 (записанного по адресу 1010) в шину NI-15 (JP5);
бит 6 - разрешение вывода данных из регистра IC4 (записанного по адресу 1001) во внешнюю шину данных (JP4);
бит 7 - управление направлением буфера IC3 (обычно "0", но может быть установлено в "1" для вывода во внешнюю шину данных без защёлкивания через адрес 0001 - при этом бит 6 должен быть установлен в "1", чтобы выход регистра IC4 не шёл в эту шину).
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Сборка NedoCPU-28:


Собранный вариант с радиатором воткнут в бредборду:

Прошивка через SX-Blitz и работа со встроенным генератором на 4 МГц:

Затем перепрошил на использование HS3 и перебробовал все внешние осцилляторы - вот этот самый быстрый что у меня был - на 66.666 MHz:

Тестовая программа инкрементировала 16-битное число с задержкой и выводила младшее слово в порт B, а старшее в порты A и C:
К портам подключены светодиоды по которым я мог анализировать скорость счёта. Турбо получается в среднем в 3 раза быстрее обычного режима. Турбо 66.666 МГц быстрее чем турбо 4 МГц в ожидаемые 16 раз.
Теперь бы оценить степень помех, которые генерирует сей девайс на таких частотах - у меня при его работе с генераторами выше 50 МГц создалось ощущение, что волосы на голове зашевелились, постепенно становясь дыбом


Собранный вариант с радиатором воткнут в бредборду:

Прошивка через SX-Blitz и работа со встроенным генератором на 4 МГц:

Затем перепрошил на использование HS3 и перебробовал все внешние осцилляторы - вот этот самый быстрый что у меня был - на 66.666 MHz:

Тестовая программа инкрементировала 16-битное число с задержкой и выводила младшее слово в порт B, а старшее в порты A и C:
Code: Select all
#ifndef DEVICE
#define DEVICE pins28+pages1banks1+oschs3+turbo
#endif
processor sx28
include "sxdefs.inc"
device equ DEVICE
include "shaosx.inc"
trisb equ 0x00
initb equ 0x00
pattern equ 0x08
bigpat equ 0x09
count1 equ 0x0A
count2 equ 0x0B
org 0x10
reset: mode 0x0f
option
movlw initb
movwf portc
movwf portb
movwf porta
movlw trisb
tris portc
tris portb
tris porta
movlw 0x00
movwf pattern
movlw 0xFF
movwf bigpat
movwf porta
movwf portc
loop:
movrw pattern
movwf portb
delay2 0x00,count1,count2
decfsz pattern,f
goto loop
decf bigpat,f
movrw bigpat
movwf porta
movwf portc
goto loop
END
Теперь бы оценить степень помех, которые генерирует сей девайс на таких частотах - у меня при его работе с генераторами выше 50 МГц создалось ощущение, что волосы на голове зашевелились, постепенно становясь дыбом

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Вот и подошли недомамы - $115 за 4 штуки с бесплатной доставкой:Shaos wrote:А вот и NedoMama развелась (4 проводка придется напаять - не воткнулись):Shaos wrote:Третью плату обозвал NedoMama-100 (по количеству гнёзд ввода-вывода)
В результате имеем NedoPC-28 = NedoMama-100 + NedoCPU-28 + NedoMem-16K
Вот большие картинки - схема и плата
Архив с исходниками для Eagle увеличился в размерах включив файлы недомамы:
http://nedopc.org/nedopc/28/NedoPC-28-v1_1-eagle.zip (178K)

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Новая плата - NedoCPU-28+ (v2.0) и NedoMem-512K на одной плате (распиливается вручную):

Вот картинки схемы и платы, а также архив с игловыми исходниками и герберами:
http://nedopc.org/nedopc/28/NedoPC-28-v2_0-eagle.zip (65K)
NedoCPU-28+ это основа микроконтроллерного девайса NedoText, а модуль памяти NedoMem-512K просто чтобы был. При подготовке платы в игле использовал свою либу shaos_lbr.zip (3.8K), где добавился компонент SX28 в DIP корпусе.
Отличие NedoCPU-28+ от NedoCPU-28 состоит в том, что на плате имеется счётчик, который запитан от осциллятора и он может делить тактовую частоту на 3, 6 или 10 (а также на обычные 2, 4, 8, 16 - настраивается двумя перемычками JP8 и JP9) и эта поделённая частота идёт на ногу A5 вместо "1" как у NedoCPU-28 (причём перемычкой JP7 можно сделать совместимый вариант, когда там будет "1"). Более подробную доку по плате напишу позже.
Ждём изготовленных плат

Вот картинки схемы и платы, а также архив с игловыми исходниками и герберами:
http://nedopc.org/nedopc/28/NedoPC-28-v2_0-eagle.zip (65K)
NedoCPU-28+ это основа микроконтроллерного девайса NedoText, а модуль памяти NedoMem-512K просто чтобы был. При подготовке платы в игле использовал свою либу shaos_lbr.zip (3.8K), где добавился компонент SX28 в DIP корпусе.
Отличие NedoCPU-28+ от NedoCPU-28 состоит в том, что на плате имеется счётчик, который запитан от осциллятора и он может делить тактовую частоту на 3, 6 или 10 (а также на обычные 2, 4, 8, 16 - настраивается двумя перемычками JP8 и JP9) и эта поделённая частота идёт на ногу A5 вместо "1" как у NedoCPU-28 (причём перемычкой JP7 можно сделать совместимый вариант, когда там будет "1"). Более подробную доку по плате напишу позже.
Ждём изготовленных плат

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- God
- Posts: 1078
- Joined: 03 Feb 2003 13:53
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- God
- Posts: 1078
- Joined: 03 Feb 2003 13:53
Зато лишний дм печатный платы, это литр нефти, а литр нефти это три срубленных дерева, а три срубленных дерева это сотни бездомных белочек:) А мы ведь белочек любюим?Shaos wrote:74HCT652 $1.5cr0acker wrote:Можно все микрухи кроме ОЗУ и дешифраторов заменить на 74*652 и получить двунаправленную шины везде с меньшим количеством элементов?

Формат конференции позволяет сказать то что я действительно думаю о проблемах...
(с) Путин
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Не думаю что корпусов будет меньше, т.к. щас и так по корпусу на 8-битный канал (регистры односторонние, буфера в обе стороны)cr0acker wrote:Зато лишний дм печатный платы, это литр нефти, а литр нефти это три срубленных дерева, а три срубленных дерева это сотни бездомных белочек:) А мы ведь белочек любюим?Shaos wrote:74HCT652 $1.5cr0acker wrote:Можно все микрухи кроме ОЗУ и дешифраторов заменить на 74*652 и получить двунаправленную шины везде с меньшим количеством элементов?
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
более чем через шесть лет
Очень странно, что NedoText вообще заработал - я НЕПРАВИЛЬНО использовал там 74F163 - я тогда не обратил внимания, что у этого счётчика синхронный сброс и что он будет считать не N шагов, а N+1, т.е. то что я думал есть счёт до 6, на самом деле является счётом до 7. Выходит счётчик может делить тактовую частоту не на 2,3,4,6,8,10,16, а на единицу больше - 3,4,5,7,9,11,17 и чтобы поддержать 6, схему придётся переделатьShaos wrote:Отличие NedoCPU-28+ от NedoCPU-28 состоит в том, что на плате имеется счётчик, который запитан от осциллятора и он может делить тактовую частоту на 3, 6 или 10 (а также на обычные 2, 4, 8, 16 - настраивается двумя перемычками JP8 и JP9) и эта поделённая частота идёт на ногу A5 вместо "1" как у NedoCPU-28 (причём перемычкой JP7 можно сделать совместимый вариант, когда там будет "1"). Более подробную доку по плате напишу позже.

P.S. Ну или заменить на 74F161...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
ещё через почти четыре года...
видимо уже не подсовывает...Lavr wrote:А то при поиске на "SX-28 Parallax" Гугл упрямо подсовывает эту страницу...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re:
Начал таки сборку недомамы через более чем 12 лет, начав с платок памяти nedoMemShaos wrote:NI-32 - используется для связи модулей NedoMem (до 512К адресуемого пространства) с материнской платой и состоит из 32 контактов, расположенных в два ряда:
В случае платы NedoMem-16K адресные входы A14-A18 не используютсяCode: Select all
D0 | A0 D1 | A1 D2 | A2 D3 | A3 D4 | A4 D5 | A5 D6 | A6 D7 | A7 _RD | A8 _WR | A9 _CS | A10 A18 | A11 A17 | A12 A16 | A13 +5V | A14 GND | A15

You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net