Hallo VHDL - Experten,
ich habe nachfolgendes Problem (bzw. stehe absolut auf dem Schlauch) bei
der Umsetzung in VHDL. Evtl. kann mir hier jemand mit seiner Expertise
eine Hilfestellung geben ;)
- Ich habe eine Variable 1 (Spannungswert aus ADC)
- Diese möchte ich mit einer Variable 2 (oberes Spannungslimit)
vergleichen
- Sobald Variable 2 überschritten ist, möchte ich dies an einem Portpin
(P1) anzeigen (Portpin 1 soll von high nach low)
- Dieser Portpin (P1) soll erst wieder nach high gehen, wenn Variable 2
abzüglich einer Hysterese (HysVariable 3) unterschritten wird.
Im Voraus schon mal vielen Dank für eure Hilfe. Beste Grüße Mike
Wo liegt das Problem? Die Bedingungen für Setzen und Löschen des
Ausgangs sind doch klar, die kann man einfach so hinschreiben. Wenn
keine der beiden zutrifft, ändert sich nix. Das kriegt der VHDL-Compiler
schon hin.
Mike schrieb:> - Ich habe eine Variable 1 (Spannungswert aus ADC)> - Diese möchte ich mit einer Variable 2 (oberes Spannungslimit) vergleichen
Ich bin mir nicht sicher, ob du verstanden hast, was Variablen ind VHDL
sind. Evtl. solltest du in deinem Text besser den Begriff "Wert" statt
"Variable" verwenden.
Dann ist der Begriff Variable wieder für das frei, was er in VHDL
bedeutet. Sieh mal den Beitrag "Variable vs Signal" an
und denk so lange drüber nach, bis du ihn verstanden hast.
> Evtl. kann mir hier jemand mit seiner Expertise eine Hilfestellung geben
1. Wie würdest du diese "Schaltung" in Hardware aufbauen? Zeichen eine
Skizze davon, so mit Komparator usw...
2. Wenn du davon ein Bild hast (wenigstens im Kopf), dann beschreibe
dieses mit der HardwareBESCHREIBUNGSsprache VHDL.
3. Verwende Signale. Du brauchst keine Variablen für diese Aufgabe.
> bei der Umsetzung in VHDL.
Fang doch einfach mal oben mit dem üblichen "libraries ieee;" an. Und
dann kommen die verwendeten Bibliotheken (die std_logic_1164 und die
numeric_std reichen hier). Dann die Entity mit der Portliste, dann die
Architecture. Und dort rein kommen ein paar Zeilen Code und fertig. Dann
das Ganze in den Simulator zum Überprüfen.
Mir graust es vor diesem Neu-FPGA-Programmierern. Das hat doch mit VHDL
nichts zu tun. Das ist pure Denke. Hätten die (wie wir) mit OPVs und
Komparatoren angefangen, wüssten sie, wie das zu bauen ist.
Gustl B. schrieb:> Alles Gute alles Liebe.
Schon wieder? Und was lernt der Fragesteller dadurch? Vor allem zum
Thema Eigeninitiative?
Mal ganz davon abgesehen, daß dein Komparator nur in der Theorie bzw.
Testbench sauber läuft. In einer REALEN Schaltung fängst du dir mit
reiner Kombinatorik hier schöne Probleme ein, denn deine Komparatoren
erzeugen in der REALEN Welt schöne Glitches. Ich bin mir im Moment
auch nicht ganz sicher, ob hier wirklich ein RS-FlipFlop synthetisiert
wird, bin schon lange aus VHDL raus . . .
Die Namensgebung deiner EingangsSIGNALE ist maximal ungünstig! Denn wie
Lothar schon bemerkte, sollte, nein MUSS der Fragesteller sich mal
dringend den Unterschied zwischen einem Signal und einer Variable in
VHDL klar machen.
Außerdem, was soll die doppelt gemoppelte Abfrage der unteren
Schaltschwelle? Noch so eine pädagogische Glanzleistung . . .
Falk B. schrieb:> Schon wieder? Und was lernt der Fragesteller dadurch? Vor allem zum> Thema Eigeninitiative?
Mihi Pulpo, ich kann es einfach nicht lassen.
Falk B. schrieb:> denn deine Komparatoren erzeugen in der REALEN Welt schöne Glitches.
Möglich. Kann auch sein, dass die egal sind. Mit Takt ist schöner aber
davon schrieb der TO nichts.
Falk B. schrieb:> doppelt gemoppelte Abfrage
Nein, das stimmt nicht.
Falk B. schrieb:> pädagogische Glanzleistung
Kann man finden wie man will. Der TO sieht jetzt wie es grob
funktioniert, sein Lehrer wird mit dieser Lösung aber nicht zufrieden
sein. Der TO muss also nochmal ran und das umbauen.
Markus W. schrieb:> Hätten die (wie wir) mit OPVs und> Komparatoren angefangen, wüssten sie, wie das zu bauen ist.
Ich habe auch nicht mit OPV und Komparatoren angefangen...
Ich denke es gibt viele Weg um zu guten FPGA-Designs zu kommen.
Duke
Hallo zusammen,
vielen Dank an lkmiller, -gb- für die Hilfestellung und Ratschläge. Ich
habe mich nochmal genauer informiert und einiges nochmal nachgelesen und
es dann auch mit einer 2fachen if - Abfrage und Vergleich hinbekommen ;)
Es war nach nochmaliger, sauberer Vorüberlegung dann doch nicht so
schwer ;)
Wie gesagt ich bin recht neu auf dem Gebiet und möchte erste Schritte
starten und mir das Ganze langsam aneignen (ich stamme aus dem
Themengebiet der analogen Schaltungsentwicklung.... OPV's etc. sind mir
daher mehr als geläufig ;)
Aber schon iwie krass, wie unfreundlich und persönlich hier manche
gleich werden..... ist wohl wie überall heutzutage..... im anonymen
Internetbashing sind viele recht groß und stark. Schade.
Allen anderen nochmal vielen Dank für die Hilfe und ein schönes
Wochenende!
Mike schrieb:> Aber schon iwie krass, wie unfreundlich und persönlich hier manche> gleich werden.
Da war doch nichts persönlich (eher nur resigniert) und keiner hat dein
Auto zerkratzt. Du solltest dir da unbedingt eine dickere Haut zulegen,
sonst regst du dich nur unnötig über Nebenschauplätze auf.
> Es war nach nochmaliger, sauberer Vorüberlegung dann doch nicht so schwer
Sag ich ja.
> und es dann auch mit einer 2fachen if - Abfrage und Vergleich hinbekommen
Und jetzt musst du dich unbedingt über das bereits erwähnte Thema
"Glitches" aufschlauen. Denn das wird mit Sicherheit dafür sorgen, dass
dieses Design gar nicht oder wenigstens nicht zuverlässig funktioniert.
Und ein Tipp: sieh dir nach der Synthese den RTL-Schaltplan deiner
Beschreibung an. Dann kannst du auch gleich sehen, ob der Synthesizer
mit deiner Beschreibung klar kommt und erkannt hat, welche Schaltung du
damit gemeint hast.
Gustl B. schrieb:> Falk B. schrieb:>> doppelt gemoppelte Abfrage>> Nein, das stimmt nicht.
OK, mein Fehler, du prüfst gegen Unterlauf. Im Prinzip richtig,
praktisch wird das ein Heidenaufwand mit 3 echten Komparatoren und einem
Subtrahierer, der dann praktisch viel Spaß bereitet ;-)
Einer der vielen Gründe, warum man hier besser einfach 2 Schaltschwellen
von außen vorgibt. Das spart deutlich Aufwand.
Duke Scarring schrieb:> Markus W. schrieb:>> Hätten die (wie wir) mit OPVs und>> Komparatoren angefangen, wüssten sie, wie das zu bauen ist.> Ich habe auch nicht mit OPV und Komparatoren angefangen...> Ich denke es gibt viele Weg um zu guten FPGA-Designs zu kommen.
Es geht hier aber doch nicht um gutesFPGA-Design sondern eher darum,
wie das überhaupt gelöst wird und da bin ich nach wie vor der Ansicht,
dass das Verständnis für Hardware / Logik nötig ist. Wenn das aber
vorhanden ist, ist die Formulierung in VHDL ein Klacks. Das sehe ich bei
allen älteren Ingenieuren, die Elektronik gelernt haben und dann zum PLD
gekommen sind. Die "Neuen" die direkt in Software anfangen, haben
überhaupt keinen Plan, was in der Elektronik passieren muss und lösen
das rein abstrakt.
Und:
Zum "guten FPGA" gehört, daß das FPGA-spezifische- nämlich die digitale
Taktung mit einbezogen wird in die Lösung, weil es sich sonst auch mit
einem DIFF-Input-Buffer machen ließe, d.j. die super simple Mathe muss
getaktet und in eine Elektronik verwandelt werden, damit die Aufgabe
gelöst ist. Das ist aber nicht der Fall. Es wurde nur die Mathe
hingeschrieben und dies auch nicht vom TE, obwohl die Trivial ist ..
... jedenfalls, wenn man Komparatoren gebaut hat und sie verstanden hat.
Daran hapert es.
Das ist dann aber die Sorte, die einem im Job begegnet und sich rühmt,
"auch mal was mit FPGAs gemacht zu haben" dann den Projektleiter macht
und einfache Lösungen hinterfragt, weil sie sie nicht verstehen und
deshalb lieber einen teuren Core einkaufen.
Falk B. schrieb:> Einer der vielen Gründe, warum man hier besser einfach 2 Schaltschwellen> von außen vorgibt. Das spart deutlich Aufwand.
In dem Punkt muss ich widersprechen: Es gibt einen Grund, warum solche
Vergleiche im FPGA laufen sollen und nicht im UC, wo die Schaltschwellen
ja auch auch berechnet werden müssten. Der Grund ist offensichtlich
"Tempo" für Schnellabschaltung etc. Und dann lässt man alle Rechnungen
lieber im FPGA machen und gibt bandbreitenfreundlich möglichst wenige
Parameter mit. Da die Hystere meistens vom Rauschen abhängt, wird die
einmal ins Register geschrieben und ab dann nur noch die Schaltschwelle
nachgeführt.
>Gustl B. schrieb:>> Alles Gute alles Liebe.>Schon wieder? Und was lernt der Fragesteller dadurch?
Wo genau siehst du in der Fragestellung einen Hinweis darauf, dass er
etwas lernen wollte?
Mike schrieb:> bei> der Umsetzung in VHDL.
Ich rate dazu, sich erst einmal ein gutes Buch zu kaufen und das
durchzuarbeiten. Meistens wissen die Autoren um die vielen Fallstricke
einer neuen Sprache und bringen genug Beispiele. Dabei sind die ganzen
grundlegendene Bausteine wie solche Vergleiche, alle erdenklichen Formen
von Schleifen und andere Probleme ausreichend vielfältig behandelt und
die Lernenden sind auf einem Minimalstand.
Sich selber solche Dinge beizubringen ist für weniger Begabte eine
Ochsentour.
Markus W. schrieb:> Das sehe ich bei> allen älteren Ingenieuren, die Elektronik gelernt haben und dann zum PLD> gekommen sind.
Bei diesen Ingenieuren sehe ich häufig den heftigen Einsatz von
Schaltplänen mit hunderten Leitungen auf den kümmerlichen
Tools der Hersteller, wo es fünf Zeilen VHDL auch getan hätten.
Duke