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


von Hans-Werner (Gast)


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

von lkmiller (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.