Next revision | Previous revision |
xilinx:spartan3e [2009/06/04 19:52] – created - external edit 127.0.0.1 | xilinx:spartan3e [2022/05/16 05:17] (current) – vak |
---|
| ====== Хардвер ====== |
| [[: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}} выглядит так: |
| <code> |
| setMode -bscan |
| setCable -p auto |
| identify |
| assignFile -p 1 -file "прошивка.bit" |
| program -p 1 |
| quit |
| </code> |
| |
| ====== Примеры от 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. |
| |