Digilent Nexys

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

FPGA-Board, verfügbar mit Xilinx Spartan 3-200, -400 und -1000, Speedgrade 4.

Nexys mit Erweiterungsboard FX2-BB


Dokumentation

RAM

Das RAM ist ein MT45W8MW16 PSRAM (pseudo-statisches RAM) von Micron. Im einfachsten Fall kann es wie ein (mit 70 ns leider ziemlich langsames) SRAM angesteuert werden (Beispiel unter T51-Core). Schneller geht es mit dem synchronen Burst-Mode, der auch nicht besonders schwierig zu implementieren sein sollte.

Beispieldesigns

Cypress FX2-Firmware

Die USB-Verbindung wird durch einen Cypress FX2-Mikrocontroller realisiert.

Die vorinstallierte Firmware ermöglicht rudimentäre Verbindungen zu der auf der Digilent Webseite bereitgestellten Adept-Software. Das ebenfalls bereitgestellte "dpimref.vhd"-Modul kann für einen Datentransfer zwischen PC und FPGA benutzt werden. Ein Mapping der dort verwendeten Signale auf die USB-Signale innerhalb des Schematics ist dabei folgendermaßen (funktioniert so auch für das Basys Board und vermutlich allen anderen FX2 basierten Digilent Produkten):

ASTRB <-> U-FLAGA
DSTRB <-> U-FLAGB
WAIT <-> U-SLRD
WRITE <-> U-FLAGC
DATA(7:0) <-> U-FD7 bis U-FD0

FX2-Firmware Hacking

Wie man die Firmware durch seine eigene ersetzen kann wird hier erklärt: http://www.hackdaworld.org/cgi-bin/awki.cgi/NexysFPGA

usb_jtag FX2-Firmware

Es ist auch möglich, die Firmware des Projektes "usb_jtag" von [1] zu benutzen, um dann mittels UrJtag auf den FPGA zuzugreifen. Man kann direkt die FX2-Firmware und die JTAG-Software installieren. Eine Anleitung dazu findet man unter [2].

Ist die FX2-Firmware geladen, sollte der FX2-Mikrocontroller sich mittels "lsusb" nun als "VOTI" melden:

 # lsusb 
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 009: ID 16c0:06ad VOTI
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

JTAG-Software

Nimmt man nun ein aktuelles Release von URJtag (hier: svn Version 1356), kann man nach dem "./configure; make && make install" sofort loslegen (vgl. [3]).

Man muß lediglich beachten, daß man die richtigen BSDL-Dateien aus dem Xilinx-Ordner in das Verzeichnis /usr/local/share/urjtag/bsdl/ kopiert (die BSDL-Dateien heißen in der Xilinx-Installation "*.bsd"), damit URJtag beim "detect" die Chips richtig erkennt.

mobil11:~/.svn/fpga/Nexys_demo_simple# jtag

UrJTAG 0.8 #1356
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

WARNING: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> bsdl path /usr/local/share/urjtag/bsdl
jtag> cable UsbBlaster ftdi 16c0:06ad
Connected to libftdi driver.
jtag> detect
IR length: 14
Chain length: 2
Device Id: 11110101000001000110000010010011 (0x00000000F5046093)
  Filename:     /usr/local/share/urjtag/bsdl/xcf04s.bsd
Device Id: 00010001010000101000000010010011 (0x0000000011428093)
  Filename:     /usr/local/share/urjtag/bsdl/xc3s1000l.bsd
jtag> print chain
 No. Manufacturer              Part                 Stepping Instruction          Register
-------------------------------------------------------------------------------------------------------------------
   0                           XCF04S                        BYPASS               BYPASS
   1                           XC3S1000L_BARE                BYPASS               BYPASS
jtag> part 1
jtag> svf Nexysdemo.svf
Warning: USB-Blaster frequency is fixed to 12000000 Hz
Warning svf: command TIR not implemented
Warning svf: command TDR not implemented
Warning svf: command TIR not implemented
Warning svf: command TDR not implemented
Warning svf: command HIR not implemented
Warning svf: command HDR not implemented
Warning svf: command TIR not implemented
Warning svf: command TDR not implemented
Error svf: SIR command length inconsistent.
 in input file between line 6623 col 1 and line 6623 col 33
Error occured for SVF command SIR.
jtag> quit
mobil11:~/.svn/fpga/Nexys_demo_simple#

Die usb_jtag-Firmware wird in URJtag als "Altera USB-Blaster" erkannt. Wichtig beim "cable"-Kommando ist die Angabe der USB-ID "16c0:06ad".

Erzeugen der SVF-Datei in Impact

Beim Erzeugen der SVF-Datei in Impact muß man darauf achten, daß alle Geräte des JTAG-Chains des Nexys-Boards in der Datei enthalten sind. Mit Hilfe folgender Datei "impact.cmd" lässt sich dieser Schritt auf der Kommandozeile automatisieren:

setMode -bs
setCable -port svf -file Nexysdemo.svf
addDevice -p 1 -file /usr/local/share/jtag/bsl/xcf04s.bsd
addDevice -p 2 -file Nexysdemo.bit
program -p 2
closeCable
quit

Jetzt kann man mittels "impact -batch impact.cmd" den Prozeß des SVF-Datei-Erzeugens automatisieren:

$ impact -batch impact.cmd
Release 9.2.01i - iMPACT J.37
Copyright (c) 1995-2007 Xilinx, Inc.  All rights reserved.
Preference Table
Name                 Setting
StartupClock         Auto_Correction
AutoSignature        False
KeepSVF              False
ConcurrentMode       False
UseHighz             False
ConfigOnFailure      Stop
UserLevel            Novice
MessageLevel         Detailed
svfUseTime           false
SpiByteSwap          Auto_Correction

Reusing 6400C001 key.
Reusing E800C001 key.

INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully.
----------------------------------------------------------------------
INFO:iMPACT:1777 -
   Reading /usr/local/share/urjtag/bsdl/xcf04s.bsd...

INFO:iMPACT:1777 -
   Reading /opt/xilinx-webpack/xcf/data/xcf04s.bsd...
INFO:iMPACT:501 - '1': Added Device XCF04S successfully.
----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------
INFO:iMPACT:1777 -
   Reading /usr/local/share/urjtag/bsdl/xcf04s.bsd...
----------------------------------------------------------------------
'2': Loading file 'Nexysdemo.bit' ...

done.

INFO:iMPACT:1777 -
   Reading /opt/xilinx-webpack/spartan3/data/xc3s1000.bsd...
INFO:iMPACT:501 - '2': Added Device xc3s1000 successfully.
----------------------------------------------------------------------
----------------------------------------------------------------------


'2': Programming device...

done.
INFO:iMPACT:579 - '2': Completed downloading bit file to device.
INFO:iMPACT - '2': Checking done pin....done.
'2': Programmed successfully.
Elapsed time =      1 sec.
----------------------------------------------------------------------
----------------------------------------------------------------------