Lattice FPGA - Pin deklarieren

Ich lerne VHDL und verwende die Lattice-Boards. Ich möchte wissen, wie man einen GPIO deklariert. Ich habe den folgenden Codeblock im Beispiel des Diamond-Softwareordners gefunden. Es ist eine ".lpf" -Datei und ich denke, es ist der Ort, an dem die Pins deklariert werden. Kann jemand einfach erklären, was die Zeilen bedeuten:

BLOCK RESETPATHS ;
BLOCK ASYNCPATHS ;
BLOCK JTAGPATHS ;
IOBUF ALLPORTS IO_TYPE=LVCMOS33 ;
LOCATE COMP "seg_1" SITE "V6" ;
LOCATE COMP "seg_2" SITE "U7" ;
LOCATE COMP "seg_3" SITE "Y6" ;
LOCATE COMP "seg_4" SITE "AA6" ;
LOCATE COMP "seg_5" SITE "U8" ;
LOCATE COMP "seg_6" SITE "T8" ;
LOCATE COMP "seg_7" SITE "AA5" ;
LOCATE COMP "seg_8" SITE "AB4" ;
LOCATE COMP "clk" SITE "L5" ;
IOBUF PORT "seg_1" IO_TYPE=LVCMOS33 TERMINATEVTT=OFF ;
LOCATE COMP "reset" SITE "J7" ;
IOBUF PORT "reset" IO_TYPE=LVCMOS33 ;
LOCATE COMP "direction" SITE "J6" ;
LOCATE COMP "LOCK" SITE "W5" ;
LOCATE COMP "seg_9" SITE "Y20" ;
LOCATE COMP "seg_10" SITE "AA21" ;
LOCATE COMP "seg_11" SITE "U18" ;
LOCATE COMP "seg_12" SITE "U19" ;
LOCATE COMP "seg_13" SITE "W19" ;
LOCATE COMP "seg_14" SITE "V19" ;
LOCATE COMP "seg_15" SITE "AB20" ;
LOCATE COMP "seg_16" SITE "AA20" ;

Korrigieren Sie mich, wenn ich falsch liege, also blockieren die ersten 3 Zeilen den Benutzer, Pins zu verwenden, die in JTAG & Reset verwendet werden?

Eine Zeile wie diese:

LOCATE COMP "seg_16" SITE "AA20" ;

bedeuten für den Synthesizer, dass die Variable seg_16 aus den VHDL-Dateien mit dem "echten" Pin des Boards verknüpft ist.

Schließlich habe ich keine Ahnung, was das Schlüsselwort IOBUF bedeutet. Habe ich also etwas richtig gemacht oder liege ich falsch?

Das ist überhaupt kein VHDL. Dies ist eine Pin-Beschränkungsdatei eines bestimmten FPGAs. Ihr Verständnis ist in Ordnung. Die IOBUF-Einschränkung gibt die Art der mit dem Pin verbundenen Schaltung an - akzeptiert sie 2,5 V, 3,3 V oder möglicherweise 5 V, hat sie Abschluss- oder Pullup-Widerstände usw. (Es sollte wahrscheinlich einen für jeden Pin geben, also nicht seg_2 bis seg_16 übereinstimmen seg_1)
@BrianDrummond Ich weiß, dass es kein VHDL ist, aber ich habe diese Frage bekommen, nachdem ich eine ODER-Gatter-Architektur geschrieben habe, und ich frage mich, wie ich Ihren VHDL-Code mit den Pins verknüpfen kann. Nach dem, was ich gesucht habe, hängt es wirklich davon ab, welchen Synthesizer Sie verwenden. Jede Umgebung hat ihre Syntax zum Verbinden von VHDL-Variablen mit tatsächlichen NETs. (korrigiert mich, wenn ich falsch liege)

Antworten (1)

Die *.lpf-Datei beschreibt tatsächlich die Pinbelegung des FPGAs, aber bevor Sie die Leitungen erklären, sollten Sie wissen, dass es eine einfachere Möglichkeit gibt, sie mit der Lattice Diamond-Designsoftware zuzuweisen, und es gibt einige großartige Tutorials, die zeigen, wie es geht das habe ich gerade gefunden: https://youtu.be/SmdEP_ZsBgM

Er beginnt gegen 17:15 Uhr mit dem Zuweisen von Pins, aber es lohnt sich, sich das Ganze anzusehen, damit Sie den Prozess von Anfang bis Ende sehen können.

Um Ihnen eine Vorstellung davon zu geben, was die Zeilen in der lpf-Datei bedeuten, hier ein paar Beispiele:

IOBUF ALLPORTS IO_TYPE=LVCMOS33 ; = Stellen Sie alle Ports so ein, dass sie den 3V3-Low-Voltage-CMOS-Logikstandard verwenden.

COMP "seg_1" SITE "V6" FINDEN ; = Weisen Sie Pin V6 den Port mit dem Namen "seg_1" zu.

Hoffe das hilft,

Zigeuner