www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Wie implementiere ich eine Suchschleife ?


Autor: Hans-Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich will in einem RAM nach einem bestimmten Inhalt suchen.
Also eine For oder While-Schleife die bei positiver Suche (Gefunden !) 
vorzeitig abgebrochen wird bzw. am Ende des Speicherbeiches endet.
Falls gefunden soll die Adresse ausgegeben werden.
Benötige ich hierfür einen Zustandsautomaten oder nicht ?
Bin mir da nicht mehr sicher. Bin etwas konfus.
Wann muß ich einen Zustandsautomaten in VHDL bauen ?

Dank euch

Autor: lkmiller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Benötige ich hierfür einen Zustandsautomaten oder nicht?
Tja, nachdem sich die Geschichte auf mehrere Einzelschritte aufteilen 
lässt, z.B.
0) Alles vorbereiten, Adresse+Steuersignale zum RAM initilaisieren
1) Adresse ans RAM anlegen und RAM selektieren
2) Daten einlesen und RAM deselektieren
3) Daten vergleichen, wenn ungleich weiter bei 4, sonst 5
4) Adresse inkrementieren, wenn Adresse<Endadresse weiter bei 1, sonst 6
5) gefunden, fertig, aufräumen
6) nicht gefunden, fertig, aufräumen
Da sieht das Ganze doch nach einer/m Statemachine/Zustandsautomaten aus.

Natürlich könnte ich deine Aufgabe auch so hindrehen, dass ich ohne SM 
hinkomme, nur: im realen Leben hilft das gar nichts, da ist die Aufgabe 
nur sehr begrenzt umdefinierbar.

>Wann muß ich einen Zustandsautomaten in VHDL bauen?
Du musst State-Machines in VHDL bauen, wenn du VHDL programmierst.
Sonst musst du sie eben in Verilog oder SystemC oder sonstwas bauen oder 
auch malen.
Fazit ist aber: idR sind SM eine Methode, ein Design übersichtlich und 
leicht erweiterbar zu gestalten.

>Also eine For oder While-Schleife die bei positiver Suche...
Vergiss die for-Schleifen, wie du sie aus anderen Programmiersprachen 
kennst. Mit diesen Syntaxelementen wird bei VHDL nur ein wiederholtes 
Schreiben des Codes erspart.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.