Hallo. Ich habe in meinem Beleg folgende Aufgabe: Ich soll 4 Dezimalzahlen einlesen, die ich zyklisch rotieren lassen soll und auf eine 4 * 7-Segment-Anzeige anzeigen lassen soll. Das Problem besteht hierbei in der Rotation der 4 Zahlen. Zahl 1 soll in Segment 1 angezeigt werden, Zahl 2 in Segment 2, Zahl 3 in Segment 3 und Zahl 4 in Segment 4. Mit Hilfe eines Bits sollen dann die 4 Zahlen auf der Anzeige zum Rotieren gebracht werden. Wie kann ich diese Rotation realisieren? Danke für Hilfe. Dari.
Vielleicht in einer State Machine? Schreib Dir mal alle Eingänge und alle Ausgänge auf. Dann überlegst Du Dir, welche/wieviele Zustände die Ausgänge einnehmen sollen. Und im letzten Schritt fällt Dir ein, welcher Eingang, welchen Zustandswechsel verursacht. Rick
Geht noch viel einfacher ... muss nicht zwingend eine FSM werden.
1 | signal z1,z2,z3,z4 : std_logic_vector(3 downto 0); |
2 | signal rotation_vec: std_logic_vector(15 downto 0); |
3 | |
4 | process(clk) |
5 | begin
|
6 | if rising_edge(clk) |
7 | rotation_vec<=rotation_vec(3 downto 0) & rotation_vec(15 downto 4); |
8 | end if; |
9 | end process; |
10 | |
11 | z1<=rotation_vec(15 downto 12); |
12 | z2<=rotation_vec(11 downto 8); |
13 | z3<=rotation_vec( 7 downto 4); |
14 | z4<=rotation_vec( 3 downto 0); |
Im Prinzip einfach alle 4 Zahlen in einen großen Vector legen und dann um die Bitbreite ( hier 4 ) nach rechts shiften .... fertig
hi, eine Idee wäre auch noch bei Multiplex-Betrieb der 4 ziffern einfach die Ansteuerung der 4 Stellen so ändern, dass sich ein Rotationseffekt ergibt.
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.