vak: (Default)
[personal profile] vak
Есть такое странное хобби: компьютеры конструировать. Но не так, чтобы купил по частям, воткнул и готово. Не-ет, сделать надо всё с самого начала. Нашёлся умелец, который спроектировал и собрал компьютер, используя только простейшие микросхемы базовой логики. И еще Си-компилятор написал, а теперь Minix переносит. Проект называется "Homebrew CPU", по аналогии с домашним пивоварением. :)



А я вот придумал другую концепцию радиолюбительского компьютера: http://vak.ru/doku.php/proj/samputer/intro
Причем на отечественном процессоре, MIPS32, да с плавающей точкой.

Date: 2007-04-30 00:26 (UTC)
From: [identity profile] vadim-kataev.livejournal.com
Так ведь задача давно решаема любым средненьким FPGA Development Kit и гораздо экономичнее, проще и быстрее любой дизайн выйдет. Тот же MicroBlaze вшить, на него и линукс есть. Открытых дизайнов и интерфейсов так же пруд пруди. И проблема переносимости дизайна отлично решается если скажем мы задумали поменять железку (всё ведь описано в HDL).

Date: 2007-04-30 10:06 (UTC)
From: [identity profile] webushka.livejournal.com
Плата (http://www.nuhorizons.com/xilinx/boards/virtex-4/FX12kit/index.asp) с Virtex-4 FX12, 64M DDR SDRAM, гигабитным эзернетом и 24-битным VGA стоит 300 баксов. Да и встроенного туда PowerPC ядра на 350МГц, подозреваю, за глаза хватит любому радиолюбителю :)

Date: 2007-04-30 10:18 (UTC)
From: [identity profile] webushka.livejournal.com
Homebrew, к сожалению, закончилось с появлением BGA и многослойных плат :(

Date: 2007-04-30 10:20 (UTC)
From: [identity profile] webushka.livejournal.com
А, кстати, почему не open source ? Ядро powerpc там железное, в смысле - встроенное в чип. Лицензионно чистое, насколько я понимаю.

Date: 2007-04-30 11:19 (UTC)
From: [identity profile] webushka.livejournal.com
$400 за тоненькую стопку пустых плат - это уж точно не homebrew :)
А уж запаивать туда руками TQFP с шагом ножек в 0.5мм - брр...

Не очень понял, каким боком даровое ядро нестыкуется с open source. Его можно попросту не использовать, а грузить свой софт-процессор. А когда захочется побыстрее/потрадиционнее - включить встроенное и запустить linux.
Я-то к тому вёл, что можно использовать довольно дешёвую уже готовую плату с очень хорошей скоростью и приятной периферией для игр с собственноручно разработанным процессором и своей же OS.

Date: 2007-04-30 11:50 (UTC)
From: [identity profile] webushka.livejournal.com
Конструирование нетрадиционных компьютеров и их процессоров к дешёвым хобби уж точно не относится :)
Я пока обхожусь Digilent Spartan-3 starter board в модификации с xc3s1000 вместо xc3s200. Мне обошлась с доставкой в россию в 4900 рублей :)

Date: 2007-04-30 15:45 (UTC)
From: [identity profile] webushka.livejournal.com
Те же.
Только у меня ячеек 17 тысяч и блочной памяти больше. Брал с запасом :)

Date: 2007-04-30 14:13 (UTC)
From: [identity profile] vadim-kataev.livejournal.com
> для игр с собственноручно разработанным процессором и своей же OS

зачем тебе такой велосипед изобретать?
ты хоть представляешь сколько времени это занимает?
увы, не всё пока предельно автоматизированно

меня больше всего угнетает отсутсвие открытых (GPL например) средств синтеза и примитивные VHDL/Verilog. SystemC в целом нравится, но кроме как создавать тестбенчи в hardware-in-the-loop мы его для синтеза не используем. хотелось бы иметь что нить типа PythonHDL :)

Date: 2007-04-30 16:18 (UTC)
From: [identity profile] webushka.livejournal.com
Я же написал - "для игр". Т.е. делаешь процессор, собираешь для него окружение, пишешь софт.
Занимает это очень много времени, да. Но я же не всё свободное время этому отдаю. Это так, хобби.
Да и ОС у меня очень своеобразные - это форт :) У которого несколько десятков слов всего работают с аппаратурой, остальные более высокого уровня. Он очень шустрый, маленький и расширяемый. Вполне можно за несколько дней набросать что-то вида супермикро-x11. И эта наработка останется и будет работать уже на другом процессоре совсем другой архитектуры. В итоге перенос ядра на новое железо - работа одного дня.

Date: 2007-04-30 10:56 (UTC)
From: [identity profile] vadim-kataev.livejournal.com
не подскажешь ка линком, где такое за 300$ есть?

Date: 2007-04-30 11:27 (UTC)
From: [identity profile] webushka.livejournal.com
Терраэлектроника умудряется и JTAG-USB дигилентовский за $60 толкать. Хотя ему красная цена - $40.

Date: 2007-04-30 11:23 (UTC)
From: [identity profile] webushka.livejournal.com
Первое слово того коммента было ссылкой :)
Повторю:
http://www.nuhorizons.com/xilinx/boards/virtex-4/FX12kit/index.asp
При заказе в россию добавиться стоимость доставки (~ $20) и таможня может захотеть свои $60 (а может, кстати, и не захотеть - при определённых условиях).

Date: 2007-04-30 11:40 (UTC)
From: [identity profile] vadim-kataev.livejournal.com
спасибо,
кстати digilent делает очень хорошие киты, у меня есть их спартан3-плата.
доставка в EU примерно неделю, таможня иногда берёт где то 25 евро, иногда нет. заказывать можно любой кредиткой.

да, вот прямой линк:
http://digilent.us/Products/Detail.cfm?Prod=FX12&Nav1=Products&Nav2=Programmable

мне 299$ кажется не много за virtex4. нужно посмотреть спецификацию точную, что за виртекс и что за периферия на плате :)

а вот побольше их продуктов:
www.digilent.us

Date: 2007-04-30 11:44 (UTC)
From: [identity profile] webushka.livejournal.com
Не за что :)
Я у них осенью вот это (http://webushka.livejournal.com/50370.html) покупал. С набортной xc3s1000, чтоб все мои тогдашние идеи влезли. Включая fpu :)

Date: 2007-04-30 14:04 (UTC)
From: [identity profile] vadim-kataev.livejournal.com
узнаю
ну и как? многое уже до конца довёл :) ?

Date: 2007-04-30 15:54 (UTC)
From: [identity profile] webushka.livejournal.com
Ну, что-то типа спектрума я в него утоптал в качестве развлечения. И форт-процессор масштабируемый вроде сделал с обвязкой и вполне полным форт-словарём в пзу. Чем форт хорош - сам себе операционка :)
Следующим этапом хочу попробовать многоядерность.

Date: 2007-04-30 10:51 (UTC)
From: [identity profile] vadim-kataev.livejournal.com
Хорошо, раз микроблаз не GPL, тогда в топку.
Но на FPGA можно и кэш и точку реализовать. Я делал когда то АПУ с плавающей точкой на обычном спартане за 25$. Сейчас работаю с виртексами новыми 65nm, гоняем на них многоядерные решения, с очень даже неплохим кэшем. Я к чему это всё:
можно взять третий спартан помощнее (S1500 например, 75$) и реализовать на нём простое ядро и кэш. пусть будет не быстрый, но ведь можно добавить интересные DSP функции. в качестве экономии поверхности существует ещё и битстрим подход.
В общем, подход должен быть такой - меньше железа - максимум реконфигурируемости.

Date: 2007-04-30 14:15 (UTC)
From: [identity profile] vadim-kataev.livejournal.com
SMD печка делается из подручной печи для пиццы за 30-50$

офф

Date: 2007-05-01 17:58 (UTC)
From: [identity profile] maria-tuzhilina.livejournal.com
Сереж, сделай доброе дело - загрузи куда-нибудь воскресенье! Очень хочется себя послушать!

выбор CPU

Date: 2007-05-17 10:47 (UTC)
From: [identity profile] skolk.livejournal.com
По-моему, минимальный любительский компьютер должен иметь фон-Неймановскую, а не Гарвардскую архитектуру. Из современных 8-битных микроконтроллеров в таком режиме могут работать x51-е с 40 и больше ногами (внешние адресные пространства можно объединить).

А для полного компьютера, опять-таки по моему, главное - VGA внутри микроконтроллера, что оставляет небольшой выбор:
Cirrus ARM9 EP93xx
Atmel AVR32
Blackfin (используется параллельный порт)

Поскольку все это BGA, надо заказывать многослойки и рассылать под заказ полуфабрикаты: плата с пастой и маской и запеченными BGA-корпусами. А остальное, включая VGA R-2R (ибо микросхема слишком дорогая), пусть достает и паяет заказчик.

P.S. Ноги с шагом 0,5 мм часто можно развести в 2 слоя, может, раздвинув компоненты.

Date: 2007-05-17 10:53 (UTC)
From: [identity profile] skolk.livejournal.com
Вспомнил, BGA в домашних условиях можно ставить брюхом вверх и разводить обмоточными проводами... ;)

Date: 2007-05-18 09:52 (UTC)
From: [identity profile] skolk.livejournal.com
Перебирал Blackfin-ы, нашел QFP.
ADSP-BF531SBST400

Я думаю, для однопользовательского 32-битного компьютера полноценный MMU (диспетчер памяти) вещь необязательная ;-)

Кстати, у Cirrus Logic есть FPU. И чипы без VGA в корпусах QFP. А Blackfin с 64K цветов в QFP. Правда, GPIO не остается, надо регистры ставить...

Date: 2007-05-19 15:02 (UTC)
From: [identity profile] skolk.livejournal.com
Как сделан выход? Часть программной конфигурации - Application note EE-256
http://www.analog.com/processors/blackfin/technicalLibrary/applicationNotes/index.html
http://www.analog.com/UploadedFiles/Application_Notes/74670263ee256Rev2March706.pdf
http://www.analog.com/UploadedFiles/Associated_Docs/377016527EE256v02_March06.zip
Смотреть в последнем архиве, кажется, код для второго ядра.
Аппаратно - думаю, можно взять за основу схему от Cirrus EP9315
http://www.cirrus.com/en/pubs/manual/EDB9315A_Tech_Ref_Manual.pdf
http://arm.cirrus.com/files/schematics/edb9307/8_SCHEMATICS/pdf/9307_schematics_v_2.pdf

Кстати, рылся у себя в свалке, еще одного QFP с VGA нашел:
Winbond W90P710
http://www.winbond.com.tw/NR/rdonlyres/B8339DC2-3563-48A2-A048-66F57FE87CFB/0/W90N710CD_W90P710CDG.pdf

И, повторяю, если плату заказывать, можно заказать и монтаж BGA.
А распространять через Мастер-Кит, например.

Цена

Date: 2007-05-20 12:32 (UTC)
From: [identity profile] skolk.livejournal.com
А по-моему - самое неспортивное вылазить за $100 на микросхемы+плату.

Использование FPGA и российского (военного) CPU - прямая туда дорога.
К тому же для рабочего компьютера они не нужны, максимум GAL или дешевый CPLD.

Я бы даже VGA DAC попробовал сделать на R-2R (учитывая импеданс выходов, возможно, поставив защелки) - у нас ведь скорее всего 5-6 бит, а не 8.

А для расширения надо оставить ISA в формате PC/104.
Забуферировать 245-ми, отгородив от CPU+SDRAM.
Кстати, IDE (параллельный ATA) тоже надо предусмотреть, шагом 2,54.
Может, поставить стандартный ISA MIO (FDC + 2COM + LPT + IDE ~CS).

Основные применения ящика:
- терминал RDP, возможно, X11;
(по опыту, 24-битному RDP хватает 10Мбит на 5 человек)
- "однорукий бандит";
- FreePascal.

Ящик должен допускать пересборку ядра и компиляторов (самые тяжелые вещи) на нем самом и запуск минимального менеджера окон без свопа. Кстати, может поставить слабенький FPGA ради внешнего TLB и сделать, как в MIPS (TLB miss -> exception)?

Назначение

Date: 2007-05-20 12:38 (UTC)
From: [identity profile] skolk.livejournal.com
Прочел упоминание о полевой шине и подумал - а, может, ящик и вправду должен быть индустриального или военного исполнения??

И винчестер ему ни к чему, и ЦАП в VGA...

Тогда все слова забираю обратно.

Спецификация

Date: 2007-05-23 10:12 (UTC)
From: [identity profile] skolk.livejournal.com
Наверно, все-таки надо определиться - мы делаем полевой (мобильный) компьютер или комнатный (домашний, учебный). Строго говоря, "однорукий бандит" - изделие полевое, работающее в жестких условиях. Да и "полевой день" - мероприятие интересное ;-)

Однако для комнатного применения, по-моему, лучше оставить IDE - ведь он ничего не стоит (дешифровать его ~CS-ы), заодно можно подключить CompactFlash, а винчестер все-таки имеет большую емкость и допускает большее число записей сектора.

ISA, с другой стороны, и особенно в формате PC/104 - стандарт для таких систем, и единственная шина, для которой привык вести разработку типичный радиолюбитель - без FPGA и специализированных микроконтроллеров с поддержкой синхронных последовательных шин.

Так что разводить эти разъемы, по-моему, надо, а вот запаивать ли их - личное дело сборщика.

По-моему, следует также сразу предусмотреть JAMMA, даже, может, сдублировав на него VGA. Хотя, может, его лучше сделать на дочерней PC/104 плате.

Место для запайки на ISA NAND flash надо предусмотреть - для несменного твердотельного носителя это стандарт.

Другие вопросы, на которые нужны ответы:

- необходимая тактовая частота:
высокая (около 1ГГц и выше) - XScale + дискретный VGA (у внутреннего недостаточное разрешение), например, бывший C&T,
средняя (175 - 400 МГц) - что и выбрано, надеюсь,
низкая;

- объем ОЗУ:
большой (512 МБ и выше),
средний (64 - 256 МБ), что и выбрано,
малый (4 - 16 МБ);

- тип полевой шины (по-моему, наиболее популярны CAN и RS-485);
- _необходимые_ шины расширения;
- USB ? (нехватка компенсируется прямой поддержкой всех флэш-карт?)
- Ethernet (нужен, хоть место под RTL8019 или CS8900), хотя, опять-таки, возможно на дополнительной плате.

Насчет свопинга без диспетчера памяти - это оверлеи, я собирал unarj под RT-11, об оверлеях должен заботится прикладной программист. (Даже когда системная поддержка самая прозрачная). Голый TLB, как в MIPS, по-моему, - самая простая аппаратная реализация диспетчера памяти, полная аппаратная реализация таблицы страниц по спецификациям IBM S/370, сделанная в i386, намного дороже (т.е. с микрокодовой отработкой TLB miss). А в MIPS этого микрокода нет, все делается обычным кодом режима супервизора.

Кстати, по-моему, 1МГц ARM = 2МГц MIPS (= 0,5Мгц AVR32), поскольку у ARM набор команд намного хитрее - как в микроЭВМ 60-х годов ;-) , а все они полный конвеер без суперскаляра, т.е. почти всегда 1 команда за такт. Т.е. при одной и той же частоте ARM намного быстрее MIPS. Для примера почитайте Вашу хэш-функцию (правда, не знаю, может у российского процессора есть все расширения набора команд, сам ничего не читал, прикидывал когда-то по S-boxes, кто из $50 роутеров быстрее в этом деле...)?
Заодно огромное Вам спасибо за оригиналы стандартов! :-)

SDRAM DIMM

Date: 2007-05-23 10:46 (UTC)
From: [identity profile] skolk.livejournal.com
У SDRAM есть одно приятнейшее свойство - в отличие от по крайней мере DDR входы DQM влияют не только на запись, но и на чтение, следовательно, данные одного модуля можно запараллелить (DQ0 - DQ16 - DQ32 - DQ48, DQ1 - DQ17 - DQ33 - DQ49, ..., DQ15 - DQ31 - DQ47 - DQ63), защелкнуть 2 дополнительных бита адреса, и сформировать DQMB с помощью '155 (если микроконтроллер не поддерживает банки). Приведен вариант с 16-битной шиной, какая остается у Blackfin и некоторых других при использовании 16 линий PPI для VGA. Если есть 32 бит - аналогично (DQ0 - DQ32, DQ1 - DQ33, ..., DQ31 - DQ63; защелкиваем только 1 бит адреса).

Таким образом, установив слот SDRAM DIMM вместо планарных корпусов, мы можем обеспечить значительную экономию средств и легкость приобретения комплектующих.

На плате, по-моему, нужно все же развести оба варианта - запаянная память на материнской плате нужна при:
- запайке ее в Китае вместе с процессором,
- изготовлении компьютера повышенной надежности,
- установке малого объема ОЗУ в целевые изделия.

JAMMA

Date: 2007-05-23 20:58 (UTC)
From: [identity profile] skolk.livejournal.com
JAMMA - краевой разъем в игровых автоматах, с его помощью к контроллеру подсоединяется вся периферия - т.е. у корпуса (ящика, кабинета) есть слот, куда вставляется материнка. К нему подведены кнопки (1 конец, второй на корпусе), лампочки (мощные, на плате нужны драйвера!), монетоприемник и т.п. Во времена 15 кгц строчной развертки на нем же был и компонент с совмещенным синхросигналом. Теперь используется стандартный VGA.

http://pinouts.ru/Slots/jamma_pinout.shtml
http://www.larwe.com/coinop/jamma.html

Лампочки, видимо, не из оригинальной версии, а от болгарского Casino Technology. Сейчас не нахожу :-(