FPGA, erste Schritte

11

Nun, dies ist eine Fortsetzung meiner Frage zum FPGA hier .

Ich habe mich schließlich für einen Digilent Atlys mit einem Spartan 6-FPGA entschieden. Ich habe noch keine Erfahrung mit FPGAs, obwohl ich einige Arbeiten mit Mikrocontrollern durchgeführt habe.

Ich habe die letzten Tage damit verbracht, Datenblätter des FPGA durchzulesen, und ich denke, es wäre eine gute Wahl, mit Verilog zu beginnen. Ich konnte jedoch keine Codebeispiele finden und selbst die Datenblätter sind nicht für Neulinge geeignet.

Ich möchte jetzt ein paar Handgriffe auf Programmierung, Simulation und Synthese machen und das ist, was ich tun möchte

  1. Erzeugen Sie eine ungerade Frequenz, z. B. 54 MHz, vom FPGA (es läuft mit einem 100-MHz-Takt) und leiten Sie sie an einen der Pins weiter. Ich müsste wahrscheinlich das DCM oder die PLL dafür verwenden, aber keine Ahnung, wie ich hier anfangen soll?

  2. Implementieren Sie eine Art I2C-Lese- / Schreibzugriff vom FPGA.

Was ich suche, ist eine Referenz, möglicherweise eine Online-Referenz oder ein Buch, das mir Codebeispiele und eine Beschreibung aller im FPGA verfügbaren Hardwarekomponenten wie DCMs, Slices, Clbs usw. enthält.

Ich denke, das sollte mich in die Welt der FPGAs einführen.

Kevin Boyd
quelle

Antworten:

13

Codebeispiele

Hop über zu Opencores und Sie werden Dutzende von Open - Source - Projekten. In Verilog sind viele geschrieben, die den Bereich von E / A-Geräten bis hin zu Prozessoren abdecken.

Vergessen Sie auch nicht die vielen Anwendungshinweise von Xilinx. Sie sind sehr hilfreich mit ihren eigenen Geräten.

Design-Flow

Nehmen Sie ein oder zwei Bücher zum Entwurfsablauf in die Hand, um einen Überblick über die Schritte beim FPGA-Entwurf zu erhalten. Zusammenfassend werden sie Folgendes umfassen:

  1. Designeintrag - in Ihrem Fall Verilog.
  2. Funktionssimulation - mit verschiedenen Werkzeugen.
  3. Synthese - in Ihrem Fall mit den Xilinx ISE-Tools.
  4. Simulation - um Ihr Design nach der Synthese zu überprüfen, da einige Aspekte von Verilog nicht synthetisierbar sind.
  5. Platzieren & Routen - mit den Xilinx ISE-Tools.
  6. Implementierung - Herunterladen des Designs auf das FPGA.
  7. Testen.

FPGA-Komponenten

Für die Verwendung der FPGA-Komponenten gibt es verschiedene Möglichkeiten, sie zu verwenden. Angenommen, Sie verwenden einen Verilog-Entwurfseintrag, können Sie die verschiedenen Komponenten entweder ableiten oder instanziieren .

Inferenz beinhaltet im Allgemeinen, dass das Synthesewerkzeug die besten zu verwendenden Komponenten basierend auf den von Ihnen benötigten Funktionen auswählt. Das beste Beispiel hierfür wäre das Entwerfen eines Addierers.

Dadurch q <= a + boder q = a + bSie können einen Addierer schließen. Beide schließen auf den Addierer, aber es gibt einen Unterschied, wann Sie die blockierende / nicht blockierende Syntax verwenden.

Bei der Instanziierung wird im Allgemeinen die genaue Bibliothekskomponente im Code aufgerufen. Einige Komponenten - wie das DCM - lassen sich im Code einfach nicht leicht ableiten. Sie können die ISE-Tools und -Beispiele verwenden, um mehr darüber zu erfahren.

Die eigentliche Liste der Komponenten selbst wird von Xilinx im Bibliothekshandbuch bereitgestellt .

Protip

Der beste Weg, dies zu lernen, besteht darin, mit kurzen Codebits zu experimentieren und sie durch die ISE-Synthese zu führen, um zu sehen, was sie ausspuckt. Es gibt auch viele Beispiele im ISE-Toolset.

Sybreon
quelle
5

Ihre absoluten Referenzen sind die Spartan 6-Benutzerhandbücher . Im Handbuch Clocking Resources (UG382) wird beispielsweise beschrieben, wie Sie die DCMs konfigurieren. Für Beispiele, wie der eigentliche Code aussieht, verfügt ISE über eine Datenbank. Öffnen Sie Sprachvorlagen (die Glühbirne in der Symbolleiste) und suchen Sie in der Sprache (VHDL oder Verilog) -> Primitive Instanziierung von Geräten -> Chipfamilie (Spartan-6) -> Taktkomponenten.

Spezifische Details zu Ihrer Karte sind bei Digilent erhältlich. Insbesondere benötigen Sie die UCF (die alle E / A benennt) und das Referenzhandbuch (in dem die Peripherie-Schaltkreise erläutert werden).

Die allgemeine Struktur Ihrer Sprache, einschließlich der Erstellung einer Komponente, wird wahrscheinlich besser aus Büchern und Beispielen übernommen. Ich habe Verilog nicht verwendet, daher habe ich keine konkreten Vorschläge. Die Vorlagen enthalten jedoch auch Ausschnitte verschiedener generischer Konstruktionen.

Yann Vernier
quelle
Spezialisieren Sie sich auf VHDL? In Bezug auf die UCF, warum sollte es wichtig sein, mit dem Digilent-Board zu arbeiten?
Kevin Boyd
1
Ich bin nicht als solches spezialisiert - habe Verilog einfach nicht studiert. Die UCF ist die Datei, die beschreibt, mit welchen Pins Ihre Ports verbunden sind, sowie die Taktanforderungen. Ohne sie werden die Pins zufällig zugewiesen, was nicht mit der vorhandenen Karte übereinstimmt.
Yann Vernier
Ich habe den Pin-Zuweisungsteil verstanden. Was ist mit den Taktanforderungen?
Kevin Boyd
1
Zeitliche Einschränkungen betreffen Dinge wie Taktfrequenz, Setup- und Haltezeiten. Sie erhalten die Informationen weiterhin in der Timing-Analyse. Wenn Sie jedoch die Anforderungen in der Einschränkungsdatei angeben, können die Tools erkennen, wenn sie fehlschlagen, und möglicherweise versuchen, Ihre Anforderungen zu erfüllen, wenn sie grenzwertig sind.
Yann Vernier
1

Für die Uhr verwenden Sie den DLL / PLL-Megacore.

Brian Carlton
quelle
Das spartanische 6 hat DCM und PLLs, DLL noch nicht gefunden. Nach dem Durchsuchen von Foren stellte ich fest, dass Xilinx über ein Tool namens Core Generator verfügt, das zum Generieren von Taktressourcen konfiguriert werden kann.
Kevin Boyd