Для поделок в области программируемой логики я приобрел инструментальную
плату Xilinx
Spartan-3E Starter Kit.
Весьма недорогая, в Москве $150.
Есть выход VGA, два порта RS-232 и один порт PS/2 для клавиатуры.
Для подключения к 100-контактному расширителю нужны разъемы
FX2-100S-1.27DS (на плату) или FX2BA-100SA-1.27R (на кабель).
На плате установлена FPGA XC3S500E из серии Xilinx Spartan3E в корпусе FG-320. Чип имеет 10000 гейтов и стоит около $40.
Существуют варианты попроще:
и посложнее:
Три младших микросхемы семейства Spartan-3E имеют исполнение в корпусе QFP. В таблице приведены количество сигналов ввода-вывода и примерная цена.
Корпус: | vq100 | tq144 | pq208 |
---|---|---|---|
Количество сигналов: | 66 | 108 | 158 |
Цена xc3s100e | $17 | $20 | – – |
Цена xc3s250e | нет? | $26 | нет? |
Цена xc3s500e | – – | – – | $40? |
Для радиолюбительского монтажа корпусов VQFP100, TQFP144, PQFP208 с шагом 0.5 мм годятся макетные платы QFP05 фирмы "Миктех".
Для разработки выбран язык Verilog.
Разработка делится на два этапа:
Документация по Verilog:
Есть интересные лекции профессора Джона Кубиатовича по разработке микропроцессоров.
Xilinx подкупает наличием бесплатного софта, в том числе под Linux — ISE Webpack. Как использовать Xilinx ISE под Linux описывается здесь.
Для работы микросхемы FPGA в нее надо загрузить прошивку. Это происходит при нажатии кнопки PROG. Светодиод “DONE” показывает, что процесс загрузки успешно завершился и FPGA готова к работе.
На плате есть три вида памяти, в которых может храниться файл прошивки:
Или FPGA может загружаться через порт USB непосредственно из внешнего компьютера. Выбор производится джамперами J30. Файл прошивки для микросхемы XC3S500E имеет размер 283 килобайта.
Утилита прошивки iMPACT входит в состав программного пакета Xilinx ISE Webpack. Её можно вызывать в пакетном режиме:
impact -batch impact.run
При этом командный файл impact.run выглядит так:
setMode -bscan setCable -p auto identify assignFile -p 1 -file "прошивка.bit" program -p 1 quit
С сайта Xilinx можно скачать примеры разработок для платы Spartan-3E Starter Kit.
Плата Spartan-3E Starter Kit изначально поставляется с прошивкой "startup", демонстрирующей возможности процессора Picoblaze. Это 8-битный процессор с объемом памяти 1024 команд и 64 байт данных. Архитектура похожа на младшие модели микроконтроллеров Microchip PIC. Исходные тексты процессора на языке VHDL (около 1900 строк кода) распространяются бесплатно. Прошивку с текстами можно взять здесь: s3esk-startup.zip. Для компиляции дайте команду “make”. Для загрузки в плату выполните файл “install.bat”.
Microblaze представляет собой 32-битный RISC-процессор с архитектурой, напоминающей MIPS-32. Модуль процессора в виде параметризованного netlist распространяется в составе пакета Xilinx ISE. Исходные тексты на языке VHDL доступны бесплатно, но требуется подписать лицензионное соглашение.
Для архитектуры Microblaze существует компилятор GCC. К сожалению, собрать версию 2005-11-21 из исходных текстов не удается, есть несоответствия в include-файлах. Можно скачать бинарную версию GCC 3.4.1 для Linux. Есть тексты на сайте Xilinx, но они тоже не компилируются.
Есть пример "microblaze-lcd" подключения LCD-индикатора к процессору. Скачать можно здесь.
PetaLogix предлагает встроенный Linux для Spartan3E-500, с поддержкой Ethernet. Тексты, к сожалению, недоступны.
Jason Wu разработал инструкцию по созданию конфигурации ucLinux с помощью Xilinx Base System Builder (входит в состав платной ISE).
OpenRisc 1200 - проект 32-битного процессора с открытым кодом, распространяемым по лицензии GNU. Архитектура похожа на MIPS и ARM. Из периферии есть контроллер прерываний, таймер, контроллер SRAM/Flash, интерфейс отладчика, UART, Ethernet, VGA, клавиатура/мышь PS2. Система модульная, основана на шине Wishbone. Минимальная конфигурация для Spartan-3E Starter Kit занимает 58% ресурса FPGA.
Для OpenRisc есть поддержка в компиляторе GCC. Программное обеспечение можно скачать с сайта фирмы Beyond Semiconductor.
Есть также отличный симулятор архитектуры OpenRisc. Существуют версии Linux, ucLinux, RTEMS и ecos для OpenRisc.