Geben Sie die genauen Pin-Positionen auf dem FPGA an

Ich habe ein Altera Cyclone IV FPGA und verwende die Quartus II-Software als Compiler.

Im "PinPlanner" ist es möglich, Gruppen von Pins (zB Datenbusse) festzulegen. Für jede Gruppe kann eine I/O-Bank und ein I/O-Standard (z. B. LVDS) angegeben werden. Dann gibt der Installateur (Ort und Route) bestimmte "Monteurstandorte" vor, wobei er einen genauen Pin für jeden einzelnen Draht festlegt.

Gibt es eine Möglichkeit, die genauen Stiftpositionen anzugeben, bevor der Monteur versucht, die Stifte in jeder Bank für mich einzubauen? Kann das im Pin-Lanner gemacht werden?

Antworten (2)

Es gibt zwei Möglichkeiten, die PIN-Vergabe festzulegen – Sie können entweder PinPlanner verwenden oder set_location_assignmentdie PIN zusammen mit set_instance_assignmentder Angabe des IO-Standards angeben.

Ich empfehle Ihnen, die I/O-Management- Dokumentation von Altera zu lesen. Aber hier sind ein paar Beispiele:

Dies sind Standortzuweisungen für die 1-GbE-RGMII-Ethernet-Schnittstelle:

set_location_assignment PIN_D25 -to eth_tx_clk
set_location_assignment PIN_V6 -to eth_rx_clk
set_location_assignment PIN_D17 -to eth_rx_c
set_location_assignment PIN_G20 -to eth_tx_c
set_location_assignment PIN_M20 -to eth_reset_n
set_location_assignment PIN_E21 -to eth_rx_q[0]
set_location_assignment PIN_E24 -to eth_rx_q[1]
set_location_assignment PIN_E22 -to eth_rx_q[2]
set_location_assignment PIN_F24 -to eth_rx_q[3]
set_location_assignment PIN_J20 -to eth_tx_q[0]
set_location_assignment PIN_C25 -to eth_tx_q[1]
set_location_assignment PIN_G22 -to eth_tx_q[2]
set_location_assignment PIN_G21 -to eth_tx_q[3]

set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_c
set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_c
set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_clk
set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_clk
set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_q
set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_reset_n
set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_q

Und hier ist ein LVDS-Takteingang zum FPGA:

set_instance_assignment -name IO_STANDARD LVDS -to in_clk_100
set_location_assignment PIN_AJ19 -to in_clk_100
set_location_assignment PIN_AK19 -to "in_clk_100(n)"

Ich hoffe es hilft. Viel Glück!

Vielen Dank. Sie geben Beispiele für die Verwendung von set_location_assignment, aber wie kann dies mit dem PinPlanner geschehen?
@Randomblue: Hast du das Dokument gesehen? In PinPlanner gibt es ein Raster von Top-Level-Ports mit Pin-Position, E/A-Standard usw. Klicken Sie einfach, wählen Sie Werte aus der Dropdown-Liste aus, und das war's.
Aha, nun, mein Problem ist, dass es keine „Standort“-Spalte gibt, sondern nur eine „Fitter-Standort“-Spalte, die ausgefüllt wird, nachdem der Fitter ausgeführt wurde.
@Randomblue: Sind Sie sicher, dass Sie sich im Pin Planner befinden? Sie sollten so etwas sehen – Idle-Logic.com/wp-content/uploads/2011/12/PinPlanner.png Es gibt keinen Fitter-Standort, der eher nach einem Ort und einer Route klingt …

Ich habe nicht mit Altera gearbeitet, aber in Xilinx konnten Sie Pin-Zuweisungen vor dem Kompilieren in der Constraints-Datei (.UCF für Xilinx) manuell festlegen.

Soweit ich das beurteilen kann, können Sie dasselbe für Altera in der Quartus II .QSF-Datei tun, indem Sie set_location_assignment.

Siehe die .QSF-Beispieldatei auf Seite 6 in diesem Quartus II-Handbuch .