Forum: FPGA, VHDL & Co. Rechtsrotation ror mit STD_LOGIC_VECTOR


von Dari (Gast)


Lesenswert?

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.

von Rick Dangerus (Gast)


Lesenswert?

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

von Thomas H. (mac4ever)


Lesenswert?

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

von Martin (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.