Экспериментальный недокомпьютер NedoPC-28
Moderator: Shaos
-
- Admin
- Posts: 23995
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Экспериментальный недокомпьютер NedoPC-28
Под спойлером первая версия платы с бортовым ОЗУ - оставлена тут для истории:
[spoiler="первая версия платы"]
Предлагаю вашему вниманию схему экспериментальной платы NedoPC-28 v1.0 на основе микроконтроллера Parallax SX28 (максимальная тактовая частота 75 МГц), состоящую всего из 20 корпусов:
NedoPC-28-v1-sch.png (115K)
Файл схемы для Eagle (подготовлено в v4.16 для Linux):
NedoPC-28-v1-eagle.zip (53K)
Внешние контакты платы (указано название разъема и количество пинов в скобках):
JP1 ( 4 ) - разъем тактирования для подключения SX-Blitz (или SX-Key) или самодельной платы с осциллятором или резонатором;
JP2 ( 8 ) - непосредственные входы-выходы микроконтроллера для внешнего использования (RA0,RA1,RA2,RA3,RTCC,RB5,RB6,RB7), причём 4 из них могут являться источниками прерывания работы микроконтроллера (7 i/o, 1 interrupt);
JP3 ( 2 ) - опциональное внешнее подключение ресета;
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) выводящий наружу старший байт внутренней шины адреса.
Итого имеем:
- 1 вход прерываний (RTCC) - не может быть непосредственно использован как вход или выход данных;
- 23 входов-выходов (3 из которых также могут быть запрограммированы как входы прерваний - а именно RB5,RB6,RB7);
- 40 входов (ввод через буфера);
- 37 выходов (вывод через регистры).
т.е. всего 100 возможных входов/выходов для приёма/передачи данных!
На борту находятся два корпуса срамов по 8 килобайт, подсоединённых как одна 16 килобайтная память, в то же время адресующие её сигналы могут быть использованы как выходы (JP13 и JP14).
P.S. Теперь о том как с этой платой предполагается работать. Микроконтроллер SX-28 (IC20) имеет лишь 20 сигналов ввода-вывода и данная плата должна дать возможность использовать большее количество сигналов (а именно 100), но не напрямую. На плате имеется внутренняя шина данных, подключённая к порту C микроконтроллера (RC0...RC7). Место куда эту шину подключать, определяется младшими 4 битами порта B (RB0...RB3), которые дешифруются с помощью IC1 и IC2 (а само действие запускается временным обнулением бита RB4):
0000 ( S0 ) - чтение из бортовой памяти (IC18 или IC19) по ранее сохранённому адресу;
0001 ( S1 ) - чтение с внешней шины данных (JP4) через буфер IC3 (есть возможность использовать буфер не только на вход, но и на выход - см.описание регистра управления);
0010 ( S2 ) - чтение с шины NI-15 (JP5) через буфер IC5;
0011 ( S3 ) - чтение буфера IC7 (JP6);
0100 ( S4 ) - чтение буфера IC10 (JP7);
0101 ( S5 ) - чтение буфера IC11 (JP8);
0110 ( S6 ) - чтение буфера IC12 (JP9);
0111 ( S7 ) - чтение буфера IC13 (JP10);
1000 ( S8 ) - запись в бортовую память (IC18 или IC19) по ранее сохранённому адресу;
1001 ( S9 ) - запись в регистр IC4 (для дальнейшего вывода во внешнюю шину данных JP4);
1010 ( S10 ) - запись в регистр IC6 (для дальнейшего вывода в шину NI-15 через разъём JP5);
1011 ( S11 ) - запись в регистр управления IC8 (о назначении отдельных битов см.ниже);
1100 ( S12 ) - запись в регистр IC14, хранящий младший байт адреса бортовой памяти (байт доступен извне через разъем JP13);
1101 ( S13 ) - запись в регистр IC15, храняший старший байт адреса бортовой памяти (байт доступен извне через разъем JP14);
1110 ( S14 ) - запись в регистр IC16, выход которого доступен через разъем JP11;
1111 ( S15 ) - запись в регистр IC17, выход которого доступен через разъем 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 не шёл в эту шину).
[/spoiler]
Приведённая выше информация устарела и не может считаться достоверной
[spoiler="первая версия платы"]
Предлагаю вашему вниманию схему экспериментальной платы NedoPC-28 v1.0 на основе микроконтроллера Parallax SX28 (максимальная тактовая частота 75 МГц), состоящую всего из 20 корпусов:
NedoPC-28-v1-sch.png (115K)
Файл схемы для Eagle (подготовлено в v4.16 для Linux):
NedoPC-28-v1-eagle.zip (53K)
Внешние контакты платы (указано название разъема и количество пинов в скобках):
JP1 ( 4 ) - разъем тактирования для подключения SX-Blitz (или SX-Key) или самодельной платы с осциллятором или резонатором;
JP2 ( 8 ) - непосредственные входы-выходы микроконтроллера для внешнего использования (RA0,RA1,RA2,RA3,RTCC,RB5,RB6,RB7), причём 4 из них могут являться источниками прерывания работы микроконтроллера (7 i/o, 1 interrupt);
JP3 ( 2 ) - опциональное внешнее подключение ресета;
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) выводящий наружу старший байт внутренней шины адреса.
Итого имеем:
- 1 вход прерываний (RTCC) - не может быть непосредственно использован как вход или выход данных;
- 23 входов-выходов (3 из которых также могут быть запрограммированы как входы прерваний - а именно RB5,RB6,RB7);
- 40 входов (ввод через буфера);
- 37 выходов (вывод через регистры).
т.е. всего 100 возможных входов/выходов для приёма/передачи данных!
На борту находятся два корпуса срамов по 8 килобайт, подсоединённых как одна 16 килобайтная память, в то же время адресующие её сигналы могут быть использованы как выходы (JP13 и JP14).
P.S. Теперь о том как с этой платой предполагается работать. Микроконтроллер SX-28 (IC20) имеет лишь 20 сигналов ввода-вывода и данная плата должна дать возможность использовать большее количество сигналов (а именно 100), но не напрямую. На плате имеется внутренняя шина данных, подключённая к порту C микроконтроллера (RC0...RC7). Место куда эту шину подключать, определяется младшими 4 битами порта B (RB0...RB3), которые дешифруются с помощью IC1 и IC2 (а само действие запускается временным обнулением бита RB4):
0000 ( S0 ) - чтение из бортовой памяти (IC18 или IC19) по ранее сохранённому адресу;
0001 ( S1 ) - чтение с внешней шины данных (JP4) через буфер IC3 (есть возможность использовать буфер не только на вход, но и на выход - см.описание регистра управления);
0010 ( S2 ) - чтение с шины NI-15 (JP5) через буфер IC5;
0011 ( S3 ) - чтение буфера IC7 (JP6);
0100 ( S4 ) - чтение буфера IC10 (JP7);
0101 ( S5 ) - чтение буфера IC11 (JP8);
0110 ( S6 ) - чтение буфера IC12 (JP9);
0111 ( S7 ) - чтение буфера IC13 (JP10);
1000 ( S8 ) - запись в бортовую память (IC18 или IC19) по ранее сохранённому адресу;
1001 ( S9 ) - запись в регистр IC4 (для дальнейшего вывода во внешнюю шину данных JP4);
1010 ( S10 ) - запись в регистр IC6 (для дальнейшего вывода в шину NI-15 через разъём JP5);
1011 ( S11 ) - запись в регистр управления IC8 (о назначении отдельных битов см.ниже);
1100 ( S12 ) - запись в регистр IC14, хранящий младший байт адреса бортовой памяти (байт доступен извне через разъем JP13);
1101 ( S13 ) - запись в регистр IC15, храняший старший байт адреса бортовой памяти (байт доступен извне через разъем JP14);
1110 ( S14 ) - запись в регистр IC16, выход которого доступен через разъем JP11;
1111 ( S15 ) - запись в регистр IC17, выход которого доступен через разъем 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 не шёл в эту шину).
[/spoiler]
Приведённая выше информация устарела и не может считаться достоверной
Last edited by Shaos on 20 Nov 2007 16:35, edited 6 times in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23995
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Господа у кого есть Eagle - просьба открыть на просмотр мою схемку - мне надо понять, требует ли оно мою либу или в схему уже всё включено...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Fanat
- Posts: 88
- Joined: 21 Nov 2002 11:09
- Location: E-burg/Russia
Открылось без проблем, ничего не просит.Shaos wrote:Господа у кого есть Eagle - просьба открыть на просмотр мою схемку - мне надо понять, требует ли оно мою либу или в схему уже всё включено...
-
- Admin
- Posts: 23995
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Отлично - спасибо!Caro wrote:Открылось без проблем, ничего не просит.Shaos wrote:Господа у кого есть Eagle - просьба открыть на просмотр мою схемку - мне надо понять, требует ли оно мою либу или в схему уже всё включено...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23995
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Admin
- Posts: 23995
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Разбил на три платы - две из которых пойдут в производство как одна (потом сам распилю). Это модуль NedoCPU-28, в котором будет сидеть мелкий SX-28 с обвязкой, и модуль NedoMem-16K, в котором будут сидеть два срама по 8K. Вот картинки схемы и получившейся платы. А вот архив с файлами игла и уже подготовленными герберами:Shaos wrote:Чего-то не могу развести в пределах разрешённых иглом 100x80 мм - придётся делить на две платы - плату самого SX и плату расширителя портов ввода-вывода...
http://nedopc.org/nedopc/28/NedoPC-28-v1_1-eagle.zip (69K)
Плату куда это всё втыкается буду делать завтра...
Last edited by Shaos on 28 Nov 2006 20:31, edited 1 time in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23995
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
В связи с этим ввожу два новых интерфейса:Shaos wrote:Разбил на три платы - две из которых пойдут в производство как одна (потом сам распилю). Это модуль NedoCPU-28, в котором будет сидеть мелкий SX-28 с обвязкой, и модуль NedoMem-16K, в котором будут сидеть два срама по 8K. Вот картинки схемы и получившейся платы. А вот архив с файлами игла и уже подготовленными герберами:
http://nedopc.org/nedopc/28/NedoPC-28-v1_1-eagle.zip (69K)
Плату куда это всё втыкается буду делать завтра...
NI-3x8 - используется для связи модуля NedoCPU (построенного на базе SX-28 или PIC или какого-то какого-то микроконтроллера) с материнской платой и состоит из трёх расположенных последовательно друг за другом 8-ногих контактов:
Code: Select all
A0
A1
A2
A3
RTCC (или A4, если есть у бортового MCU)
"1" (или A5, если есть у бортового MCU)
+5V
GND
B0
B1
B2
B3
B4
B5
B6
B7
C0
C1
C2
C3
C4
C5
C6
C7
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
В случае платы NedoMem-16K адресные входы A14-A18 не используются
Last edited by Shaos on 19 Nov 2006 21:45, edited 2 times in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23995
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Просьба к тем, кто работал с высокими частотами оценить на глаз потолок рабочих частот разводки моего NedoCPU-28 - хотелось бы иметь возможность пускать чип на пределе рабочих частот, а именно 75 МГц (ну или хотя бы 50):Shaos wrote:Разбил на три платы - две из которых пойдут в производство как одна (потом сам распилю). Это модуль NedoCPU-28, в котором будет сидеть мелкий SX-28 с обвязкой, и модуль NedoMem-16K, в котором будут сидеть два срама по 8K. Вот картинки схемы и получившейся платы. А вот архив с файлами игла и уже подготовленными герберами:
http://nedopc.org/nedopc/28/NedoPC-28-v1_1-eagle.zip (69K)
Плату куда это всё втыкается буду делать завтра...

P.S. А вообще, как я понимаю, двухслойная плата нормально с высокими частотами работать не будет - надо покупать стандартную редакцию Eagle и учиться разводить четырёхслойки, где нижний слой - одна сплошная земля...
Last edited by Shaos on 23 Nov 2006 10:20, edited 1 time in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23995
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Третью плату обозвал NedoMama-100 (по количеству гнёзд ввода-вывода)Shaos wrote: Разбил на три платы - две из которых пойдут в производство как одна (потом сам распилю). Это модуль NedoCPU-28, в котором будет сидеть мелкий SX-28 с обвязкой, и модуль NedoMem-16K, в котором будут сидеть два срама по 8K.
.......
Плату куда это всё втыкается буду делать завтра...
В результате имеем NedoPC-28 = NedoMama-100 + NedoCPU-28 + NedoMem-16K
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
по поводу четырехслоек...
Я вообще-то не спец по этим вопросам, однако:
В 4-х слойных ПП вроде бы как внутренние 2 слоя VCC и GND.
Помимо изоляции слоев образуют некое подобие емкости.
P.S. Саша, попробуй еще поиграться с длинами дорожек...
В 4-х слойных ПП вроде бы как внутренние 2 слоя VCC и GND.
Помимо изоляции слоев образуют некое подобие емкости.
P.S. Саша, попробуй еще поиграться с длинами дорожек...
-
- Admin
- Posts: 23995
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Shaos wrote: Разбил на три платы - две из которых пойдут в производство как одна (потом сам распилю). Это модуль NedoCPU-28, в котором будет сидеть мелкий SX-28 с обвязкой, и модуль NedoMem-16K, в котором будут сидеть два срама по 8K. Вот картинки схемы и получившейся платы. А вот архив с файлами игла и уже подготовленными герберами:
http://nedopc.org/nedopc/28/NedoPC-28-v1_1-eagle.zip (69K)
Плату куда это всё втыкается буду делать завтра...

Получил вчера изготовленные и ускоренно высланные платы - две штуки:

Заплатил $60 за изготовление и $15 за ускоренную доставку (2 дня)
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23995
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
А вот и NedoMama развелась (4 проводка придется напаять - не воткнулись):Shaos wrote:Третью плату обозвал NedoMama-100 (по количеству гнёзд ввода-вывода)Shaos wrote: Разбил на три платы - две из которых пойдут в производство как одна (потом сам распилю). Это модуль NedoCPU-28, в котором будет сидеть мелкий SX-28 с обвязкой, и модуль NedoMem-16K, в котором будут сидеть два срама по 8K.
.......
Плату куда это всё втыкается буду делать завтра...
В результате имеем 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: 23995
- 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: 23995
- 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: 23995
- 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