====== Разработка БК-0010 на программируемой логике ====== Цель проекта - создание аналога компьютера [[http://ru.wikipedia.org/wiki/%D0%91%D0%9A-0010 | БК-0010]] на базе микросхемы программируемой логики (FPGA). ===== Хардвер ===== Для разработки процессора решено применить FPGA [[http://www.xilinx.com/xlnx/xweb/xil_publications_display.jsp?iLanguageID=1&category=/Data+Sheets/FPGA+Device+Families/Spartan-3E | XC3S500E]] из серии [[http://www.xilinx.com/products/silicon_solutions/fpgas/spartan_series/spartan3e_fpgas/overview.htm | Xilinx Spartan3E]]. Он имеет 10000 гейтов и стоит около $40. Есть исполнение в корпусе QFP208. [[:verilog:hw-spar3e-sk|{{ http://www.xilinx.com/bvdocs/images/ipcenter/product_images/HW-SPAR3E-SK-US_t.jpg}}]] У Xilinx есть хорошая инструментальная плата для разработки - [[http://www.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?sSecondaryNavPick=BOARDS&key=HW-SPAR3E-SK-US&sGlobalNavPick=PRODUCTS | Spartan-3E Starter Kit]]. Весьма недорогая, [[http://www.plis.ru/page.php?id=77 | в Москве $150]]. Есть выход VGA, два порта RS-232 и один порт PS/2 для клавиатуры. Для подключения к 100-контактному расширителю нужны разъемы FX2-100S-1.27DS (на плату) или FX2BA-100SA-1.27R (на кабель). Еще один вариант - [[http://www.digilentinc.com/Products/Detail.cfm?Prod=S3BOARD | Digilent DL-S3BOARD]] на чипе XC3S200. Цена [[http://www.chip-dip.ru/product0/276741843.aspx | 3912 руб. на сhip-dip.ru]]. Более сложные вещи можно делать на плате [[http://www.xess.com/prod035.php3 | Xess XSA-3S1000]]. Xilinx подкупает наличием бесплатного софта, в том числе под Linux --- [[http://www.xilinx.com/webpack/ | ISE Webpack]]. Как использовать Xilinx ISE под Linux [[verilog:linux | описывается здесь]]. Для радиолюбительского монтажа корпусов VQFP100, TQFP144, PQFP208 годятся [[http://www.deol.ru/users/mictech/qfp05.htm | макетные платы]] [[http://www.deol.ru/users/mictech/maket.htm | фирмы "Миктех"]]. ===== Verilog ===== Для разработки выбран язык Verilog. * [[http://ru.wikipedia.org/wiki/Verilog | Статья в Википедии]] * {{verilog:verilog-rus.pdf | Краткий обзор}} из журнала "Схемотехника" 2001/02. Разработка делится на два этапа: * моделирование (simulation) --- проверка правильности функционирования создаваемого устройства; * синтез (synthesis) --- создание файла "прошивки" для загрузки в микросхему программируемой логики (ПЛИС, FPGA). Документация по Verilog: * {{verilog:petervrlk.pdf | Introduction to Verilog}} - прекрасный учебник по языку. * [[http://www.emmelmann.org/Library/Tutorials/docs/verilog_ref_guide/vlog_ref_top.html | On-line Verilog Quick Reference Guide]]. * {{http://www-ee.eng.hawaii.edu/~msmith/ASICs/Files/pdf/CH11.pdf | Глава про Verilog}} из книги [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/ASICs.htm | "Application-Specific Integrated Circuits"]]. * Официальная спецификация IEEE Verilog(TM) HDL Language Reference Manual. [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/TOC/ieeeLRMTOC.htm | Содержание]], главы [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/01/ch01.htm | 1]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/02/ch02.htm | 2]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/03/ch03.htm | 3]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/04/ch04.htm | 4]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/05/ch05.htm | 5]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/06/ch06.htm | 6]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/07/ch07.htm | 7]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/08/ch08.htm | 8]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/09/ch09.htm | 9]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/10/ch10.htm | 10]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/11/ch11.htm | 11]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/12/ch12.htm | 12]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/13/ch13.htm | 13]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/14/ch14.htm | 14]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/15/ch15.htm | 15]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/16/ch16.htm | 16]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/17/ch17.htm | 17]], [[http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Verilog/LRM/HTML/IX/ieeeLRMIX.htm | индекс]]. * [[http://www.doulos.com/knowhow/verilog_designers_guide/ | Designer’s Guide to Verilog]] - пошаговое введение в Verilog. * [[http://www.fpga4fun.com/ | Сайт для разработчиков FPGA]] - много полезного. Есть интересные [[http://www.cs.berkeley.edu/~kubitron/courses/cs152-S01/index_lectures.html | лекции профессора Джона Кубиатовича]] по разработке микропроцессоров. ---- ===== Составные части ===== Проект можно разбить на составные части: * Процессор * Память * [[bk-fpga:bk-vga | Видеоадаптер VGA]] * Клавиатура PS/2 * Диск IDE или SD/MMC ---- ====== Документация по БК-0010 ====== * [[http://ru.wikipedia.org/wiki/%D0%91%D0%9A-0010 | Статья в Википедии]]. * {{bk:bk0010.djvu | Схема}} компьютера Электроника БК-0010. * {{bk:bk0011m.djvu | Схема}} компьютера Электроника БК-0011М. * {{bk:bk-851022-25.djvu | Статья}} из журнала "Микропроцессорные средства и системы" №1, 1985. * [[bk:bk-0010-um | Руководство пользователя]] для БК-0010 (недоформатировано). * [[bk:bkprogramming | Руководство программиста]]. * [[bk:bk-0011m-pm | Руководство системного программиста]] для БК-0011М. * [[bk:bk0010-monitor | Дизассемблированное ПЗУ монитора БК-0010 с комментариями]]. * Методичка {{pdp11:negoda-nikiwenkov-1996.pdf | В.Н.Негода и И.А.Никищенков}}. "Функциональная организация микро-эвм и микроконтроллеров. Часть 1: PDP-11". * Описание {{pdp11:1806vm2.pdf | 1806ВМ2}} - одночиповый отечественный аналог PDP-11, выпускается заводом [[http://www.angstrem.ru/product/mk-mp.htm | "Ангстрем"]]. * [[bk:1801vm-series | Описание процессоров серии 1801/1806]]. * [[bk:1801vm1 | Описание процессора 1801ВМ1]]. * {{pdp11:dcj11.pdf | Документация}} на DCJ-11 - четвертый и последний микропроцессор в линейке LSI-11. (12 мегабайт) * [[http://pdp-11.org.ru/info.pl | Подборка документации]] на сайте pdp-11.org.ru. * [[bk:bk-a16tech | Контроллер флоппи-диска]] фирмы “АльтПро”. [[bk:bk-floppy-cable | Шлейф для БК]]. [[bk:bk-floppy-bios | Подпрограммы ПЗУ контроллера дисковода]]. Работа с [[bk:floppy-800k | флопиками 800k]] под Линукс и Windows. * [[http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-26765-51-86.pdf | ГОСТ на интерфейс МПИ]]. Для подключения к БК нужен разъем [[http://www.erk.su/?action=144 | СНО63-64/95x9Р-24-2]]. Есть в [[http://www.chip-dip.ru/product0/10152.aspx | Чипе-и-дипе]]. ---- ===== Похожий проект XSOC ===== [[http://www.fpgacpu.org/xsoc/xr16.html | The xr16 CPU Core]] - проект 16-битного процессора с открытым исходным кодом (verilog). Можно попытаться переделать в pdp11. * {{http://www.fpgacpu.org/papers/xsoc-series-drafts.pdf | Статья}}, описывающая проект. * {{pdp11:xsoc:started.pdf | Getting Started Guide}} * {{pdp11:xsoc:xspecs.pdf | Various xsoc/xr16 specifications}} * {{pdp11:xsoc:schematics.pdf | A Tour of the XSOC/xr16 Schematics}} * {{pdp11:xsoc:xsoc-talk.pdf | Slides of a talk on FPGA CPUs and XSOC/xr16}} * {{pdp11:xsoc:xr16man.pdf | xr16 assembler/simulator manual page}} ===== Аналогичный проект POP11 ===== Японцы сделали [[http://shimizu-lab.dt.u-tokai.ac.jp/pop11.html | pdp-11 на программируемой логике]]. Плюс встроенный контроллер прерываний, таймер, управление памятью, асинхронный порт RS-232 и интерфейс к диску IDE. Фотографии: * [[pdp11:pop11-board | плата с внешним диском IDE]] * [[pdp11:pop11-v6unix | загрузка Unix V6]] Осталось добавить видеоадаптер и контроллер клавиатуры. Язык, правда, не Verilog и не VHDL - некий SFL. ===== Minimig - Amiga на FPGA ===== [[http://en.wikipedia.org/wiki/Minimig | Minimig - клон]] компьютера [[http://en.wikipedia.org/wiki/Amiga_500 | Amiga 500]] на базе FPGA Xilinx. В качестве процессора, правда, используется реальная Motorola 68000. [[http://www.amiga.org/search.php?action=showallbyuser&mid=31&uid=12811 | Здесь]] есть фотографии проекта Minimig. ===== C-One - Commodore 64 ===== [[http://c64upgra.de/c-one/ | C-One - клон]] компьютера Commodore 64 на основе FPGA и процессора 65c816. Плата выполнена в стандарте ATX, её можно приобрести за 269 евро. ===== Электронный флоппи-диск ===== Аппаратный [[http://jeanfrancoisdelnero.free.fr/floppy_drive_emulator/index.html | эмулятор флоппи-диска]] для использования в старых компьютерах. [[http://www.amiga.org/modules/myalbum/viewcat.php?uid=12817 | Еще один вариант]] --- на базе Atmel AVR.