Hallo, Als Eingang von meiner Schaltung habe ich einen String, der 11 bit gross ist. Die ersten 5 Bits darstellen eine Adresse, und die anderen 6 Bits Nutzdaten Ich habe 32 Blöcke, jeder Block hat sein eigener Adresse(5Bit). Wie kann ich eine State Maschine mit verilog Programmieren, die die empfangene Adresse mit den Blöcken Adresse vergleicht ,den Block mit den richtigen Adresse auswählen , und die 6 Bit Nutzdaten in diesem Block speichern. Vielen Dank im Voraus Walter
Wenn ich dich richtig verstehe dann liegen die 11 bit parallel am Eingang an? Dann benötigst du eigentlich keine State Machine. Das ist eine typische Anwendung für einen Demultiplexer. Die 5 Adressbits wählen den Ausgang -- hier die Blöcke -- aus. Die 6 bit Nutzdaten werden auf den Eingang des Demultiplexers gegeben und dann entsprechend der Adresse auf den jeweiligen Block geschaltet.
Vielen Dank für deine schnelle Antwort! Ja das ist was ich tun soll.Aber wie kann ich das mit verilog programmieren, ich kann mir das nicht Hardwaremässig vorstellen.
Einen Demultiplexer würde ich jetzt mit einem Case statement machen:
1 | case(addr) |
2 | 0: block0 = in_data; |
3 | 1: block1 = in_data; |
4 | 2: block2 = in_data; |
5 | etc. |
Das ist nicht ganz vollständig, aber ich glaube es gibt dir einen Start und du kannst von da an weiter machen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.