Forum: FPGA, VHDL & Co. 8 Bit Binär in Hex für 7 Segment Anzeige


von fred (Gast)


Lesenswert?

Hi Zusammen,

wie realisiert man eine Typenumwandlung für die Anzeige eines 8 Bit 
Werts in Hex?

Gibt es dafür eine Funktion? Man muss doch nicht alle möglichen 
Varianten einzeln definieren, oder?
1
segment: process(DOUT)
2
      begin
3
        case DOUT is
4
          when "00000000" => DIG_0 <= x"00";        
5
          when "00000001" => DIG_0 <= x"01";        
6
          when "00000010" => DIG_0 <= x"02";        
7
          .
8
          .
9
          .
10
          .
11
          when "11111111" => DIG_0 <= x"FF";              
12
        end case;      
13
      end process;


Viele Grüße,

fred

von Urmel aus dem Eis (Gast)


Lesenswert?

Doch muss man, sind auch nur 10 Stück.

von fred (Gast)


Lesenswert?

doch wohl eher 256, oder sehe ich das falsch?

von Ralf (Gast)


Lesenswert?

Du brauchst für einen 8-Bit-Wert in hexadezimaler Schreibweise zwei 
Stellen, also 2x 4-Bit ('0' - 'F'). Somit sind es sechzehn Varianten, 
das ganze mal zwei, also für die beiden Anzeigen.

Ralf

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

fred schrieb:
> Gibt es dafür eine Funktion? Man muss doch nicht alle möglichen
> Varianten einzeln definieren, oder?
> segment: process(DOUT)
>       begin
>         case DOUT is
>           when "00000000" => DIG_0 <= x"00";
>           when "00000001" => DIG_0 <= x"01";
>           when "00000010" => DIG_0 <= x"02";
>           .
>           .
>           when "11111111" => DIG_0 <= x"FF";
>         end case;
>       end process;
Diesen Code könntest du ohne jede Funktionseinschränkung so abkürzen:
1
DIG_0 <= DOUT;


Oder packen wirs mal anders an:
1
         case DOUT is
2
           when "00000000" => DIG_0 <= x"00";        
3
           when "00000001" => DIG_0 <= x"01";        
4
           when "00000010" => DIG_0 <= x"02";        
5
           when "00000011" => DIG_0 <= x"03";        
6
           when "00000100" => DIG_0 <= x"04";        
7
           when "00000101" => DIG_0 <= x"05";        
8
           when "00000110" => DIG_0 <= x"06";        
9
           when "00000111" => DIG_0 <= x"07";        
10
           when "00001000" => DIG_0 <= x"08";        
11
           when "00001001" => DIG_0 <= x"09";
12
           when "00001010" => DIG_0 <=
13
           when "00001011" => DIG_0 <=
Aufgabe: schreib die letzten 2 Zeilen fertig...

fred schrieb:
> wie realisiert man eine Typenumwandlung für die Anzeige eines 8 Bit
> Werts in Hex?
Du willst vermutlich eine BCD-Darstellung (Stichwort für Google) des 
Binärwerts.
Nimm eine Tabelle:
http://www.lothar-miller.de/s9y/categories/44-BCD-Umwandlung

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.