Wie kann bitte dieses Shiften gemäss CounterX in einem Zug bei VHDL durchführen? 1 << CounterX[2:0] Danke. Gruss
1 | case (CounterX) is |
2 | when "000" => |
3 | out <= "00000001"; |
4 | when "001" => |
5 | out <= "00000010"; |
6 | when "010" => |
7 | out <= "00000100"; |
8 | when "011" => |
9 | out <= "00001000"; |
10 | when "100" => |
11 | out <= "00010000"; |
12 | when "101" => |
13 | out <= "00100000"; |
14 | when "110" => |
15 | out <= "01000000"; |
16 | when "111" => |
17 | out <= "10000000"; |
18 | when others => |
19 | out <= "00000000"; |
20 | end case; |
elegantere Methoden sind wohl noch möglich. obiges in einen process gepappt, dürfte zielführend sein... Gruss
1 << CounterX[2:0] würde ich als Dekoder ala output <= "00000001" WHEN input = "000" ELSE "00000010" WHEN input = "001" ELSE "00000100" WHEN input = "010" ELSE "00001000" WHEN input = "011" ELSE .... "10000000" WHEN input = "111" ELSE "XXXXXXXX"; machen. Wobei es vermutlich eine elegantere Lösung gibt...
bezzerwizzer schrieb: > peter schrieb: >> 1 << CounterX[2:0] > CounterX[2:0]<<1 > muss es heißen! Weder noch... Es wird hier offenbar nicht ein Wert um 1 geshiftet, sondern es wird eine 1 um einen Wert zwischen 0 und 7 geshiftet. Und ein Shift einer 1 um einen variablen Wert ist ein Multiplexer oder auch ein Binärdecoder. Was ist der Typ des Ergebnisses? Was passiert mit den restlichen Bits des Ergebnisvektors? In VHDL würde ich das als Prozess schreiben:
1 | Process (counterx) begin |
2 | Ergebnis <= x"00"; |
3 | Ergebnis(to_integer(counterx)) = '1'; |
4 | und process; |
:
Bearbeitet durch Moderator
Sepp schrieb: > 1 << CounterX[2:0] würde ich als Dekoder ala > > output <= "00000001" WHEN input = "000" ELSE > "00000010" WHEN input = "001" ELSE > "00000100" WHEN input = "010" ELSE > "00001000" WHEN input = "011" ELSE > .... > "10000000" WHEN input = "111" ELSE > "XXXXXXXX"; > > machen. Wobei es vermutlich eine elegantere Lösung gibt... Konstantes array 8x8bit deklarieren . MfG,
Oder 2**to_integer(counterx) rechnen. Oder eine Funktion schreiben. Wie gesagt: kommt auf den Zieltyp an...
So steht es in Verilog beim VGA-Text,mit deinem Vorschlag kommt die Darstellung vom Text durcheinander, nur Pixelsalat, keine Buchstaben. ----------------------- 1 << CounterX[2:0] ----------------------- Gruss
Hier ist die Verilog in der Zip. Die Ram/Rom-Inhalte sind als Textdatei fertig für ein Array in VHDL, muss noch der Type-Kopf reingesetzt werden. Ich steige da jetzt nicht mehr durch!!! Müsste doch für euch Spezialisten eine kleine Sache aus dem Handgelenk sein, das mal umzusetzen in VHDL. Da könnte man dann auch sehen welche Vorschläge von oben jetzt diese VGA-Text zum laufen bringt. Danke. Gruss
Vielleicht könnte Lothar das dann in seine VHDL-Sammlung mit aufnehmen? Da würde auch sein RS232 und Tastatur-Treiber im VGA-Text reinpassen um das ganze dann abzurunden. Danke. Gruss
peter schrieb: > Vielleicht könnte Lothar das dann in seine VHDL-Sammlung mit aufnehmen? Lass mal Winter werden. Jetzt ist gerade Erntezeit, da ist nicht viel über für Spielereien...
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.