Shiften in VHDL.

Gast #3826683
Lesenswert?

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
Gast #3826686
Lesenswert?

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...
Moderator (Firma: Titel) Persönliche Seite #3826692
Lesenswert?

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;
Gast #3826701
Lesenswert?

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,
Gast #3827092
Lesenswert?

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
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren