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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.