Skip to content

board_sam9_xilinx_ru

Serge Vakulenko edited this page Aug 26, 2015 · 1 revision

В каталоге examples/arm-sam9-s3e/fpga находятся исходные тексты и скрипты для сборки прошивки FPGA Xilinx XC3S500E платы Starterkit SAM9-S3E.

Чтобы скомпилировать прошивку, необходимо установить Xilinx ISE Webpack. Это бесплатная система разработки, включающая синтезатор и симулятор для языков Verilog и VHDL, а также JTAG-программатор.

Шина между процессором и FPGA устроена следующим образом: | Процессор | Направление | FPGA | На схеме | |:----------|:------------|:---------|:--------------| | D0-D15 | <—> | D[0—15] | SD_D0-SD_D15 | | A1-A20 | ——> | A[1—20] | SD_DQL2, SD_A0-SD_A11, A12, SD_A13-SD_A14, A15, SD_BA0, SD_BA1, A18-A20 | | NCS0 | ——> | nCS | F_CS0 | | NRD | ——> | nOE | F_OE | | NWE | ——> | nWE | F_WE | | NBS0 | ——> | nLB | SD_DQL1 | | NBS1 | ——> | nUB | SD_DQH1 | | PC5 | ——> | nRST | F_CS1 | | PC15/IRQ1 | <—— | nIRQ | FP_199 | | — | ——> | M50 | 50M |

Базовый адрес для обращений к FPGA - 0x10000000 (AT91C_EBIC_CS0).

Исходные тексты

Файл examples/arm-sam9-s3e/fpga/sram_to_arm.v содержит Verilog-тексты простейшей прошивки, транслирующей обращения чтения-записи от процессора к статической памяти Samsung K6R4008V1D.

module sram_to_arm (
                inout [7:0] ARM_D,
                input [18:0] ARM_A,
                input ARM_nCS,
                input ARM_nOE,
                input ARM_nWE,

                inout [7:0] SRAM_D,
                output [18:0] SRAM_A,
                output SRAM_nCS,
                output SRAM_nOE,
                output SRAM_nWE
        );

        assign SRAM_nCS = ARM_nCS;
        assign SRAM_nOE = ARM_nOE;
        assign SRAM_nWE = ARM_nWE;
        assign SRAM_A   = ARM_A;

        assign ARM_D  = (!ARM_nOE && !ARM_nCS) ? SRAM_D : 8'hzz;
        assign SRAM_D = (!ARM_nWE && !ARM_nCS) ? ARM_D  : 8'hzz;

endmodule

В файле examples/arm-sam9-s3e/fpga/sam9_s3e.ucf описана привязка внешних сигналов FPGA к ножкам корпуса.

Синтез прошивки

Для компиляции прошивки надо в каталоге examples/arm-sam9-s3e/fpga/ выполнить команду "make" (для Linux) или скрипт examples/arm-sam9-s3e/fpga/compile.bat (для Windows). Временные файлы размещаются в подкаталоге "build".

Сборка прошивки для FPGA Xilinx состоит из восьми этапов:

  1. XST - преобразование исходного кода на языке VHDL или Verilog в список логических цепей.
  2. NGDBuild - разбиение схемы на элементарные логические элементы.
  3. MAP - отображение элементарных логических элементов на компоненты заданной конкретной микросхемы программируемой логики.
  4. PAR - размещение компонентов и трассировка соединений.
  5. TRCE - временной анализ синтезированной схемы.
  6. BITGEN - создание файла прошивки для загрузки в микросхему FPGA.
  7. PROMGEN - преобразование файла прошивки для записи в микросхему последовательной памяти.
  8. iMPACT - загрузка прошивки в микросхему FPGA или в микросхему последовательной памяти.

В результате синтеза будем порождать следующие файлы:

  • firmware.bit - бинарный файл прошивки для FPGA.
  • firmware.mcs - бинарный файл прошивки для микросхемы последовательной памяти.
  • 1-compile.log - протокол утитилиты XST. Пример.
  • 2-build.log - протокол утитилиты NGDBuild. Пример.
  • 3-map.log - протокол утитилиты MAP. Пример.
  • 4-route.log - протокол утитилиты PAR. Пример.
  • 5-trace.log - протокол утитилиты TRCE. Пример.
  • 6-bitgen.log - протокол утитилиты BITGEN. Пример.
  • 7-promgen.log - протокол утитилиты PROMGEN. Пример.

Пакетные файлы для Windows

Дапуска синтезатора Xilinx под Windows можно использовать следующие пакетные файлы:

  • compile.bat - запуск синтезатора.
  • loadfpga.bat - загрузка FPGA.
  • progflash.bat - прошивка микросхемы последовательной памяти.
  • clean.bat - удаление временных файлов.
  • cleanall.bat - удаление временных файлов и результатов компиляции.

Обобщающий Makefile для Linux

Все этапы синтеза можно объединить в одном файле Makefile. Запуск:

  • "make" или "make all" - компиляция прошивки, создание файлов firmware.bit и firmware.mcs.
  • "make load" - загрузка прошивки в микросхему FPGA.
  • "make prog" - загрузка прошивки в микросхему последовательной памяти.
  • "make clean" - удаление временных файлов.
  • "make cleanall" - удаление временных файлов и результатов синтеза.

В начале файлов Makefile и compile.bat находятся параметры:

  • FPGA - тип целевой микросхемы FPGA.
  • XSTFLAGS - дополнительные флаги для синтезатора XST. Описание на сайте Xilinx.
  • BGFLAGS - дополнительные флаги для утилиты BITGEN. Описание на сайте Xilinx.
  • PROMFLAGS - флаги утилиты PROMGEN, в частности тип микросхемы последовательной памяти, используемой для загрузки FPGA при подаче питания.
  • SRCV - список исходных файлов на языке Verilog.
  • SRCVHD - список исходных файлов на языке VHDL.
  • PINS - файл, содержащий распределение ножек микросхемы и параметры синтеза.

Скрипты для программатора IMPACT

В качестве JTAG-интерфейса я использую LPT-адаптер, совместимый с Xilinx Parallel Cable III.

Файл loadfpga.impact содержит скрипт для загрузки прошивки в FPGA командой "impact -batch loadfpga.impact".

setMode -bscan
setcable -port lpt1
setcablespeed -speed 625000
identify
assignFile -p 1 -file firmware.bit
program -p 1
quit

В файле progflash.impact имеется скрипт для записи прошивки в микросхему последовательной памяти конфигурации FPGA командой "impact -batch progflash.impact".

setmode -spi
setcable -port lpt1
setcablespeed -speed 625000
adddevice -p 1 -spi AT45DB321B -file firmware.mcs
program -p 1 -e -v
quit
You can’t perform that action at this time.