Einige Hinweise, wie Sie mit dem Schreiben von VHDL beginnen können

Ich mache gerade einige Tutorials und lese einige Bücher darüber, wie man VHDL schreibt. Da ich neugierig bin und mit praktischen Tutorials besser lerne, werde ich mit der Umsetzung meiner Projekte beginnen, die mir in Zukunft gute Dienste leisten werden.

Für mein erstes echtes Projekt versuche ich, eine arctgFunktion gefolgt von einer Aggregationsoperatorfunktion zu implementieren.

Ich will das Rad nicht neu erfinden und nicht weiter verwirren lassen und stelle hier folgende Fragen:

  1. Die Ganzzahl zum Fließen und umgekehrt mit den Bits der Mantisse, des Exponenten und der Ganzzahl ist notwendig, oder? Gibt es keine Website, auf der Leute solche Dinge bereits implementiert und mit der Community geteilt haben?
  2. Ich habe irgendwo gesehen, dass das Paket math_realbereits eine ARCTANFunktion hat, die ein akzeptiert, REALvon dem ich denke, dass es ein Float ist. So:

    2.1. Ist das synthetisierbar? Wenn nicht, warum ist es überhaupt codiert?

    2.2. Wenn alles von Float in Integer konvertiert werden muss, um zwischen Funktionen übergeben zu werden, warum ARCTANakzeptiert REALund nicht eine ganze Zahl?

Echte Mathematik / Typen sind nicht synthetisierbar. Es sei denn, Sie haben ein herstellerspezifisches Smart-Synthese-Tool, das dafür geeignet ist. Es wurde wie viele nicht synthetisierbare Sachen codiert - für Simulation und Tests.
Diese Funktionen sind also nur ein Teil von Tests, um die Funktion, die man machen muss, mit einer nicht synthetisierbaren Version davon zu vergleichen, nur zur Simulation und zum Vergleich, oder?
Ja und nein. Der No-Teil - er dient auch zur Simulation der Teile des Systems, die noch nicht implementiert sind, aber echte Berechnungen durchführen sollen.
"opencores" hat eine Bibliothek, die Sie vielleicht nützlich finden.
Ok, danke für die Antworten Jungs. @pjc50 Ich bin bereits auf diese Website gestoßen, aber der Registrierungsprozess dauert eine Weile (einige Tage). Damit Integer schweben und umgekehrt, was buchstäblich jeder in seinen Projekten tut, muss ich alles von Grund auf neu machen?
Vielleicht würde eine Fixpunktmathematik für Ihre Bedürfnisse ausreichen.
Wenn Sie anfangen, etwas Neues zu tun, und denken: „Ich muss diese gesamte Infrastruktur von Grund auf neu bereitstellen“, dann verwenden Sie wahrscheinlich nicht das richtige Tool für den Job oder haben das falsche erste Projekt für das Tool ausgewählt. Ich nenne es das 'Reitst du das Pferd in die Richtung, in die es geht?' Frage, es ist viel einfacher, es so zu fahren als seitwärts oder rückwärts. FPGAs zeichnen sich durch digitale Logik, Vergleiche, Speicherung und ganzzahlige Mathematik aus. DPS-ICs werden in der Regel für Mathematik mit reellen Zahlen verwendet. Suchen Sie für die ARCTAN-Funktion nach CORDIC (Wikipedia), das ist die natürliche FPGA-Implementierung und arbeitet mit ganzen Zahlen.
"buchstäblich jeder tut": Sie wären überrascht, wie weit Sie ohne es kommen können.
Ja, das ist ein sehr guter Rat, an den ich nicht gedacht habe. Da arctgich zum Erstellen der Funktion anscheinend CORDIC benötige, werde ich prüfen, ob das mit fixed_point möglich ist
Oh okay ... Vielleicht habe ich eine falsche Vorstellung davon. Ich dachte daran, alles in Gleitkommazahlen zu konvertieren und so weiter, aber vielleicht schaffe ich es, alles mit ganzen Zahlen zu machen. Das Problem wird sein, wenn ich aus einer Datei lesen muss, double floatswas mein ultimatives Ziel im VHDL-Projekt ist
FPGA kann Datei nicht lesen. Wahrscheinlich verstehen Sie das endgültige Ziel nicht vollständig.
Ich weiß, wenn ich sage, dass die Datei zu Simulationszwecken dient. Am Ende sollen Daten von Sensoren ausgelesen werden.
Für die Simulation können Sie also einfach einen simulierten Übersetzer schreiben. Die Frage ist, welches Format die Sensordaten haben

Antworten (1)

VHDL-2008 verfügt über synthetisierbare Festkomma- und Gleitkommabibliotheken, ieee.math_realdie außerdem ausschließlich für die Simulation bestimmt sind. Sie können das Float-Paket mit einer beliebigen Breite von Mantisse und Exponent instanziieren oder die vordefinierten Float-Typen (ungefähr IEEE P754) verwenden. Das Festkommapaket ist eine bessere Wahl für DSP und erzeugt normalerweise kleinere Hardware.

Diese Bibliotheken sollten Frage (1) für Sie erledigen.

Zu Frage 2)

  1. Der math_realARCTAN wird zur Simulation verwendet, nicht zur Synthese.
  2. Die Frage macht keinen Sinn, da Sie Realwerte an und von Funktionen übergeben können.