Экспериментальный недокомпьютер NedoPC-28

8-битные микроконтроллеры PICmicro (ПИКи) от Microchip и совместимые, а также 16-битные PIC24 и 32-битные PIC32

Moderator: Shaos

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

Post by Shaos »

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
NI-32 - используется для связи модулей NedoMem (до 512К адресуемого пространства) с материнской платой и состоит из 32 контактов, расположенных в два ряда:

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
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:Разбил на три платы - две из которых пойдут в производство как одна (потом сам распилю). Это модуль NedoCPU-28, в котором будет сидеть мелкий SX-28 с обвязкой, и модуль NedoMem-16K, в котором будут сидеть два срама по 8K. Вот картинки схемы и получившейся платы. А вот архив с файлами игла и уже подготовленными герберами:

http://nedopc.org/nedopc/28/NedoPC-28-v1_1-eagle.zip (69K)

Плату куда это всё втыкается буду делать завтра...
Просьба к тем, кто работал с высокими частотами оценить на глаз потолок рабочих частот разводки моего NedoCPU-28 - хотелось бы иметь возможность пускать чип на пределе рабочих частот, а именно 75 МГц (ну или хотя бы 50):

Image

P.S. А вообще, как я понимаю, двухслойная плата нормально с высокими частотами работать не будет - надо покупать стандартную редакцию Eagle и учиться разводить четырёхслойки, где нижний слой - одна сплошная земля...
Last edited by Shaos on 23 Nov 2006 10:20, edited 1 time in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote: Разбил на три платы - две из которых пойдут в производство как одна (потом сам распилю). Это модуль NedoCPU-28, в котором будет сидеть мелкий SX-28 с обвязкой, и модуль NedoMem-16K, в котором будут сидеть два срама по 8K.
.......
Плату куда это всё втыкается буду делать завтра...
Третью плату обозвал NedoMama-100 (по количеству гнёзд ввода-вывода)

В результате имеем NedoPC-28 = NedoMama-100 + NedoCPU-28 + NedoMem-16K
Я тут за главного - если что шлите мыло на me собака shaos точка net
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

по поводу четырехслоек...

Post by jdigreze »

Я вообще-то не спец по этим вопросам, однако:
В 4-х слойных ПП вроде бы как внутренние 2 слоя VCC и GND.
Помимо изоляции слоев образуют некое подобие емкости.

P.S. Саша, попробуй еще поиграться с длинами дорожек...
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote: Разбил на три платы - две из которых пойдут в производство как одна (потом сам распилю). Это модуль NedoCPU-28, в котором будет сидеть мелкий SX-28 с обвязкой, и модуль NedoMem-16K, в котором будут сидеть два срама по 8K. Вот картинки схемы и получившейся платы. А вот архив с файлами игла и уже подготовленными герберами:

http://nedopc.org/nedopc/28/NedoPC-28-v1_1-eagle.zip (69K)

Плату куда это всё втыкается буду делать завтра...
Image

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

Image

Заплатил $60 за изготовление и $15 за ускоренную доставку (2 дня)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
Shaos wrote: Разбил на три платы - две из которых пойдут в производство как одна (потом сам распилю). Это модуль NedoCPU-28, в котором будет сидеть мелкий SX-28 с обвязкой, и модуль NedoMem-16K, в котором будут сидеть два срама по 8K.
.......
Плату куда это всё втыкается буду делать завтра...
Третью плату обозвал NedoMama-100 (по количеству гнёзд ввода-вывода)

В результате имеем NedoPC-28 = NedoMama-100 + NedoCPU-28 + NedoMem-16K
А вот и NedoMama развелась (4 проводка придется напаять - не воткнулись):

Image

Вот большие картинки - схема и плата

Архив с исходниками для Eagle увеличился в размерах включив файлы недомамы:

http://nedopc.org/nedopc/28/NedoPC-28-v1_1-eagle.zip (178K)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

В связи с разбиением платы на части и иной нумерацией микросхем и разъемов изменилось и описание девайса, который теперь состоит из трёх плат (см. принципиальные схемы тут и тут):

Разъемы платы и количество пинов в скобках:
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
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Сборка NedoCPU-28:

Image

Image

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

Image

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

Image

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

Image

Тестовая программа инкрементировала 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
К портам подключены светодиоды по которым я мог анализировать скорость счёта. Турбо получается в среднем в 3 раза быстрее обычного режима. Турбо 66.666 МГц быстрее чем турбо 4 МГц в ожидаемые 16 раз.

Теперь бы оценить степень помех, которые генерирует сей девайс на таких частотах - у меня при его работе с генераторами выше 50 МГц создалось ощущение, что волосы на голове зашевелились, постепенно становясь дыбом ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
Shaos wrote:Третью плату обозвал NedoMama-100 (по количеству гнёзд ввода-вывода)

В результате имеем NedoPC-28 = NedoMama-100 + NedoCPU-28 + NedoMem-16K
А вот и NedoMama развелась (4 проводка придется напаять - не воткнулись):

Image

Вот большие картинки - схема и плата

Архив с исходниками для Eagle увеличился в размерах включив файлы недомамы:

http://nedopc.org/nedopc/28/NedoPC-28-v1_1-eagle.zip (178K)
Вот и подошли недомамы - $115 за 4 штуки с бесплатной доставкой:

Image
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Новая плата - NedoCPU-28+ (v2.0) и NedoMem-512K на одной плате (распиливается вручную):

Image

Вот картинки схемы и платы, а также архив с игловыми исходниками и герберами:

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
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:Ждём изготовленных плат ;)
Готовая плата:

Image

Собранная плата:

Image

Image
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Только на производство экспериментальных плат по проекту NedoPC-28 (включая NedoText) уже истрачено $420 - пора плодить приложения ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
cr0acker
God
Posts: 1078
Joined: 03 Feb 2003 13:53

Post by cr0acker »

Можно все микрухи кроме ОЗУ и дешифраторов заменить на 74*652 и получить двунаправленную шины везде с меньшим количеством элементов?
Image
Формат конференции позволяет сказать то что я действительно думаю о проблемах...
(с) Путин
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

cr0acker wrote:Можно все микрухи кроме ОЗУ и дешифраторов заменить на 74*652 и получить двунаправленную шины везде с меньшим количеством элементов?
74HCT652 $1.5
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
cr0acker
God
Posts: 1078
Joined: 03 Feb 2003 13:53

Post by cr0acker »

Shaos wrote:
cr0acker wrote:Можно все микрухи кроме ОЗУ и дешифраторов заменить на 74*652 и получить двунаправленную шины везде с меньшим количеством элементов?
74HCT652 $1.5
Зато лишний дм печатный платы, это литр нефти, а литр нефти это три срубленных дерева, а три срубленных дерева это сотни бездомных белочек:) А мы ведь белочек любюим?
Image
Формат конференции позволяет сказать то что я действительно думаю о проблемах...
(с) Путин