====== Хардвер ====== [[: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 (на кабель). На плате установлена 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]] в корпусе FG-320. Чип имеет 10000 гейтов и стоит около $40. Существуют варианты попроще: * [[http://www.digilentinc.com/Products/Detail.cfm?Prod=S3BOARD&Nav1=Products&Nav2=Programmable | Spartan-3 Board]] (XC3S200) --- $99 * [[http://www.digilentinc.com/Products/Detail.cfm?Prod=NEXYS&Nav1=Products&Nav2=Programmable | Nexys]] (XC3S200) --- $99 * [[http://www.digilentinc.com/Products/Detail.cfm?Prod=BASYS&Nav1=Products&Nav2=Programmable | Basys System Board]] (XC3S100E) --- $59 и посложнее: * [[http://www.digilentinc.com/Products/Detail.cfm?Prod=S3E1600&Nav1=Products&Nav2=Programmable | Spartan 3E-1600 Development Board]] (XC3S1600E) --- $295 * [[http://www.digilentinc.com/Products/Detail.cfm?Prod=FX12&Nav1=Products&Nav2=Programmable | FX12 Board]] (Virtex-4 FX12) --- $299 Три младших микросхемы семейства Spartan-3E имеют исполнение в корпусе QFP. В таблице приведены количество сигналов ввода-вывода и примерная цена. ^ Корпус: ^ vq100 ^ tq144 ^ pq208 ^ ^ Количество сигналов: | 66 | 108 | 158 | ^ Цена xc3s100e | $17 | $20 | -- -- | ^ Цена xc3s250e | нет? | $26 | нет? | ^ Цена xc3s500e | -- -- | -- -- | $40? | Для радиолюбительского монтажа корпусов VQFP100, TQFP144, PQFP208 с шагом 0.5 мм годятся [[http://www.deol.ru/users/mictech/qfp05.htm | макетные платы QFP05]] [[http://www.deol.ru/users/mictech/maket.htm | фирмы "Миктех"]]. ====== Документация ====== * {{starter-kit-ug230.pdf | Руководство пользователя }} для платы Spartan-3E Starter Kit. * Полное {{spartan-3e.pdf | описание семейства Spartan-3E}}. * Описание примитивов и макросов {{spartan-3e-hdl.pdf | семейства Spartan-3E для VHDL и Verilog}}. * Универсальная заготовка {{s3esk-generic.ucf | файла ограничений}} для платы Spartan-3E Starter Kit. * Таблица ножек для {{xc3s500e-fg320.txt | xc3s500e в корпусе fg320}}. * {{s3e_pin.zip | Таблицы ножек}} для всех микросхем семейства Spartan-3E в форматах Excel и CSV. * [[synchronizers | Метастабильность и синхронизаторы]]. ===== 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.sutherland-hdl.com/on-line_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 | лекции профессора Джона Кубиатовича]] по разработке микропроцессоров. ====== Программное обеспечение ====== Xilinx подкупает наличием бесплатного софта, в том числе под Linux --- [[http://www.xilinx.com/webpack/ | ISE Webpack]]. Как использовать Xilinx ISE под Linux [[verilog:linux | описывается здесь]]. ====== Загрузка прошивки ====== Для работы микросхемы FPGA в нее надо загрузить прошивку. Это происходит при нажатии кнопки PROG. Светодиод "DONE" показывает, что процесс загрузки успешно завершился и FPGA готова к работе. На плате есть три вида памяти, в которых может храниться файл прошивки: * 512 килобайт Platform Flash --- специализированная микросхема [[http://www.xilinx.com/products/silicon_solutions/proms/pfp/spartan.htm | Xilinx XCF04S]] * 2 мегабайта последовательной Flash-памяти --- [[http://www.st.com/stonline/stappl/productcatalog/app?path=/comp/stcom/PcStComRPNTableView.onClickFromPartNumber&code=85673&subclassid=407&subclassheader=Serial%20Flash%20for%20Code%20Storage,%20M25P | ST Micro 25P16V6G]] * 16 мегабайт параллельной Flash-памяти --- [[http://www.intel.com/design/flcomp/prodbref/308275.htm | Intel TE28F128]] Или FPGA может загружаться через порт USB непосредственно из внешнего компьютера. Выбор производится джамперами J30. Файл прошивки для микросхемы XC3S500E имеет размер 283 килобайта. Утилита прошивки [[http://toolbox.xilinx.com/docsan/xilinx7/help/iseguide/mergedProjects/impact/impact.htm | iMPACT]] входит в состав программного пакета [[http://www.xilinx.com/webpack/ | 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 ====== С [[http://www.xilinx.com/products/boards/s3estarter/reference_designs.htm | сайта Xilinx]] можно скачать примеры разработок для платы Spartan-3E Starter Kit. ===== Picoblaze ===== Плата Spartan-3E Starter Kit изначально поставляется с прошивкой {{s3esk-startup.pdf | "startup"}}, демонстрирующей возможности процессора [[http://www.xilinx.com/picoblaze | Picoblaze]]. Это 8-битный процессор с объемом памяти 1024 команд и 64 байт данных. Архитектура похожа на младшие модели микроконтроллеров Microchip PIC. Исходные тексты процессора на языке VHDL (около 1900 строк кода) распространяются бесплатно. Прошивку с текстами можно взять здесь: {{s3esk-startup.zip}}. Для компиляции дайте команду "make". Для загрузки в плату выполните файл "install.bat". ===== Microblaze ===== [[http://www.xilinx.com/microblaze | Microblaze]] представляет собой 32-битный RISC-процессор с архитектурой, напоминающей MIPS-32. Модуль процессора в виде параметризованного netlist распространяется в составе пакета Xilinx ISE. Исходные тексты на языке VHDL доступны бесплатно, но требуется подписать лицензионное соглашение. Для архитектуры Microblaze существует [[http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux/Toolchain/toolchain_sources.html | компилятор GCC]]. К сожалению, собрать версию 2005-11-21 из исходных текстов не удается, есть несоответствия в include-файлах. Можно скачать бинарную версию [[http://www.petalogix.com/resources/downloads/mb-gcc | GCC 3.4.1 для Linux]]. Есть тексты [[http://www.xilinx.com/guest_resources/member/mb_gnu/gnu_fullsrc.tar.gz | на сайте Xilinx]], но они тоже не компилируются. Есть пример [[http://www.xilinx.com/products/boards/s3estarter/files/s3esk_microblaze_lcd.pdf | "microblaze-lcd"]] подключения LCD-индикатора к процессору. Скачать можно [[http://www.xilinx.com/products/boards/s3estarter/files/s3esk_microblaze_lcd.zip | здесь]]. ===== Linux на Microblaze ===== PetaLogix предлагает [[http://www.petalogix.com/resources/reference_designs/xilinx | встроенный Linux]] для Spartan3E-500, с поддержкой Ethernet. Тексты, к сожалению, недоступны. Jason Wu разработал [[http://www.itee.uq.edu.au/~wu/downloads/ | инструкцию по созданию конфигурации ucLinux]] с помощью Xilinx Base System Builder (входит в состав платной ISE). ====== OpenRisc: процессор с открытым кодом ====== [[http://www.opencores.org/projects.cgi/web/or1k/openrisc_1200 | OpenRisc 1200]] - проект 32-битного процессора с открытым кодом, распространяемым по лицензии GNU. Архитектура похожа на MIPS и ARM. Из периферии есть контроллер прерываний, таймер, контроллер SRAM/Flash, интерфейс отладчика, UART, Ethernet, VGA, клавиатура/мышь PS2. Система модульная, основана на шине Wishbone. {{http://vak.ru/pub/fpga/s3esk-openrisc.tgz | Минимальная конфигурация для Spartan-3E Starter Kit}} занимает 58% ресурса FPGA. Для OpenRisc есть поддержка в компиляторе GCC. Программное обеспечение можно скачать [[http://www.bsemi.com/page.pl/customers | с сайта фирмы Beyond Semiconductor]]. Есть также отличный [[http://www.opencores.org/projects.cgi/web/or1k/architectural_simulator | симулятор архитектуры OpenRisc]]. Существуют версии Linux, ucLinux, RTEMS и ecos для OpenRisc.