So sehr IP dazu neigt, die Dinge einfacher zu machen, würde ich gerne mehr über Protokolle und Schnittstellen lernen, indem ich alles selbst mache (ich verstehe die Schwierigkeit der Aufgabe, und ich habe Ressourcen, die mir helfen, wie in Professoren und Büchern). Soweit ich weiß, ist es jedoch nahezu unmöglich (ohne Reverse Engineering), Hardwarefunktionen auf einem FPGA ohne IP zu verwenden. Ich habe online herumgestöbert und so gut wie nichts zu diesem Thema gefunden, da die Leute anscheinend selbstzufrieden mit der Verwendung von IP sind. Im Wesentlichen versuche ich, mehr Open-Source-HDL-Ressourcen zu finden, da es im Moment daran mangelt.
Bearbeiten: Um es kurz zu machen, ist es möglich, die IP des Herstellers zu umgehen, um fpgas zu programmieren?
Es kann ein Missverständnis darüber geben, was „IP“ bedeutet.
Es ist möglich, die Struktur eines FPGAs, also die programmierbaren LUTs und so weiter, von Grund auf zu programmieren. Die Bits und Gatter und Tabellen in einem Xilinx und einem Altera sind jedoch unterschiedlich und unterscheiden sich von Familie zu Familie, also ist es wie die Assembler-Codierung eines Mikros, sie alle haben einen unterschiedlichen Maschinencode auf niedriger Ebene. Ich glaube nicht, dass das irgendjemand tut, zumindest nicht kommerziell.
Es ist im Allgemeinen einfacher, VHDL zu verwenden und UND- und ODER- und Vektor-ADD-Zuweisungen zu schreiben und den Mapper dies in LUT-Einträge umwandeln zu lassen. Ich würde das nicht 'IP' nennen, ich würde diese Zusammenstellung nennen. Wenn Ihre VDHL, die NAND-Gatter und Latches impliziert, auf einen Altera-Compiler oder einen Xilinx-Compiler trifft, werden die LUT-Tabellen anders programmiert, da die Struktur unterschiedlich ist, aber die Low-Level-Funktion, die Sie in der VHDL beschrieben haben, wird gleich implementiert .
Wenn Sie die spezifische Hardware von Xilinx und Altera verwenden möchten, wie z. B. die Dual-Port-RAMs oder den 48x24-Multiplikator-Akkumulator, müssen Sie herstellerspezifische Primitive verwenden. Sie haben jedoch die volle Kontrolle darüber, wie Sie sich mit ihnen verbinden. Ich würde diese IP immer noch nicht anrufen.
Wenn Sie eine gepackte FFT, einen Downsampling-FIR-Filter oder einen Viterbi-Decoder oder den eingebetteten ARM verwenden möchten, der vom Anbieter für seine Architektur bereitgestellt oder lizenziert wird, unabhängig davon, ob es sich um eine kostenlose (mit den Tools) oder eine kostenpflichtige Lizenz handelt, das ist IP.
Es ist sicherlich möglich, FPGAs zu programmieren (mit und HDL) und nützliche Aufgaben auf FPGAs auszuführen, ohne IP-Blöcke von Drittanbietern zu verwenden - wenn Sie das gemeint haben. Sie müssen jedoch weiterhin die Synthesetools der Anbieter verwenden.
Synchrone Zustandsmaschinen usw., die in entsprechend strukturiertem VHDL geschrieben sind, lassen sich leicht auf den LUTs und Flip-Flops und Multiplexern in einer FPGA-Zelle synthetisieren, und Sie können diese Designs mithilfe einer Beschränkungsdatei (die in einem proprietären Format vorliegen wird) mit den IO-Pins verbinden.
Die Synthesewerkzeuge werden bestimmte Idiome in VHDL erkennen und automatisch auf andere Ressourcen auf dem Chip abbilden, z. B. unter Verwendung von globalen Taktsignalen, wo angemessen, und sogar ein arithmetisches Konstrukt in Pipeline-Struktur auf einen DSP abbilden, wo es angemessen ist.
Andererseits gibt es einige Ressourcen auf dem Chip, für die Sie vom Hersteller bereitgestellte Makros verwenden müssen, damit die Synthesewerkzeuge auf Hardware abgebildet werden können. Ein Beispiel ist die Verwendung einer PLL zum Erzeugen von Takten unterschiedlicher Phasen.
Natürlich können Sie jedes Schnittstellenprotokoll selbst implementieren. Wie, glauben Sie, wurden diese IPs überhaupt entwickelt?
Alles, was Sie brauchen, ist, bestimmte Spezifikationen sorgfältig zu studieren und alle Zustandsmaschinen gemäß der Dokumentation zu implementieren. Dann müssen Sie alle Ihre HDL-Konstruktionen mit Prüfständen verifizieren, die alle Eckfälle abdecken. Dann müssen Sie Ihre Logik so platzieren und routen, dass sie das erforderliche Timing für die erforderlichen Takte erfüllt. Der Anbieter von FPGA stellt automatische Tools für diese Aufgabe bereit, aber sehr häufig kann die Platzierung von Logikblöcken schwierig sein, um ein zufriedenstellendes Timing zu erreichen, und es kann eine große Raffinesse erforderlich sein, um die richtigen Timing-Einschränkungen für das Tool zu formulieren.
Sie müssen auch eine externe Umgebung entwerfen, um Ihre Schnittstelle unter realistischen Bedingungen zu betreiben, entweder virtuell (wiederum System-/Busmodelle) oder eine physische Betriebsumgebung haben, um die Funktionalität Ihrer Schnittstelle zu validieren.
Natürlich können Sie das alles alleine machen, und Sie werden nur ein paar Jahre brauchen, um all diese Aufgaben für jede moderne paketserialisierte Schnittstelle zu erledigen. Oder Sie können die Früchte der Arbeit mehrerer Jahre erfahrener Ingenieure nutzen, die dieses Design bereits durchgeführt und ihre Arbeit in eine Form von konfigurierbarem IP verpackt haben. Sie benötigen nur ein paar Wochen, um die externe Funktionsweise zu verstehen und das IP in Ihr Design einzubetten. Aber die IP kostet dich. Es ist jetzt Ihre Wahl.
Für Bemühungen auf dem Weg der Selbstgestaltung können Sie mit OpenCores.org beginnen .
Kommt drauf an welche Art von IP du meinst. Manches IP ist Soft-IP und unterscheidet sich nicht wirklich von einem Design in HDL, da es auf den LUTs auf dem FPGA lebt. Dieses Zeug können Sie selbst implementieren, aber es kann sehr komplex sein. Hard-IP hingegen existiert als dediziertes Silizium außerhalb der FPGA-LUTs. Üblicherweise handelt es sich dabei um Mischsignalkomponenten, wie beispielsweise in einer PLL oder einem Hochgeschwindigkeits-Serialisierer oder -Deserialisierer. Manchmal ist harte IP rein digital, wie im Fall eines harten CPU-Kerns, einer PCIe-Schnittstelle oder eines Ethernet-MAC. Wenn die harte IP gemischte Signalkomponenten enthält, ist es unmöglich, sie allein durch HDL zu ersetzen. Wenn der Kern rein digital ist, kann er komplexer sein, als er ersetzt werden könnte.
Jetzt gibt es gängige FPGA-Primitive wie Multiplikatoren, LUTs und Block-RAM, die tatsächlich mit ein bisschen reinem hdl abgeleitet werden können, anstatt eine explizite Instanziierung zu erfordern. Für Dinge wie Block-RAM und DSP-Slices kann dies ein sehr vernünftiger Ansatz sein.
Wenn Sie so etwas wie einen FIFO machen wollen, dann ja, Sie können Ihren eigenen rollen.
Wenn Sie nun bestimmte Hardware-Grundelemente wie BRAM, Multiplikatoren, PLLs usw. verwenden möchten, müssen Sie die vom Hersteller bereitgestellten Tools, Bibliotheken, IP und Schnittstellen verwenden.
Eugen Sch.
bisschen Spaß
Eugen Sch.
Ale..chenski
bisschen Spaß
Ale..chenski
Ale..chenski
Spannungsspitze