Gray Code to 7-Segment

Gast #3806834
Lesenswert?

Hi,
ich habe einen sehr speziellen Analog nach Digital Wandler entworfen, 
der einen 6-Bit-Gray-Code ausgibt.
Mit TTL-IC's wüsste ich, wie ich das auf einer 2-stelligen 
7-Segment-Anzeige  (00...63) ausgeben würde:

1. Zuerst mit 5 Stück 1/4 7486 XOR den Gray-Code nach Binär wandeln.
2. den Binär-Code nach 2 stellig BCD wandeln. Auch da gibt es ein IC, 
dessen Name mir im Moment entfleucht ist.
3. mit 2 Stück 7447 oder 7448 die 7-Segment-Anzeigen treiben.

Wie würde ich das in VHDL schreiben um es vielleicht in ein CPLD XC9572 
zu bringen?
Brauche ich da die drei Schritte, oder geht das in einem Rutsch?
Moderator (Firma: Titel) Persönliche Seite #3806894
Lesenswert?

Peter Zz schrieb:
> Mit TTL-IC's wüsste ich, wie ich das auf einer 2-stelligen
> 7-Segment-Anzeige  (00...63) ausgeben würde:
Recht viel Aufwand. Ich würde da ein 16 Bit EPROM mit den passenden 64 
Werten programmieren und die Anzeige direkt da anschließen...

Peter Zz schrieb:
> Wie würde ich das in VHDL schreiben
In etwa so:
1
   port (
2
     gray   : in std_logic_vector(5 downto 0),  -- 6 Eingangsbits
3
     zehner : out std_logic_vector(6 downto 0), -- 7 Bits für die Zehnerstelle
4
     einer  : out std_logic_vector(6 downto 0)  -- 7 Bits für die Einerstelle
5
   );
6

7
   process (gray) begin
8
      case gray is              --  abcdefg              abcdefg
9
         when "00000" => zehner <= "1111110"; einer <=  "1111110"; -- 00
10
         when "00001" => zehner <= "1111110"; einer <=  "0110000"; -- 01
11
         when "00011" => zehner <= "1111110"; einer <=  "1101101"; -- 02
12
         :
13
         when "10001" => zehner <= "0110000"; einer <=  "0110000"; -- 62
14
         when others  => zehner <= "0011111"; einer <=  "1111001"; -- 63
15
   end process;

> um es vielleicht in ein CPLD XC9572 zu bringen?
Kann sein, dass das gelingt, allerdings ist für ein CPLD die Tabelle 
schon recht groß...

Peter Zz schrieb:
> case kenn ich, aber LUT nicht.
LUT heißt Lookup Table. Ein RAM oder ein EPROM sind z.B. LUTs: immer 
wenn ich mit der selben Adress reinschaue bekomme ich das selbe 
zurück...
Gast #3806910
Lesenswert?

Lothar Miller schrieb:
> Und in VHDL
> Das passt alles

in ein XC9572?

Danke für den VHDL-Code.
Ist aber ein wenig viel Tipparbeit, dafür in einem Schritt. :-)
Das begünstigt wahrscheinlich die Optimierung?!

Kann man das in VHDL auch in 3 Schritten machen?
Würde das in drei Schritten eine Optimierung für ein XC9572 eher 
hilfreich sein oder hinderlich?
Kennt VHDL den Gray-Code?
Kennt VHDL bin to BCD?
Kennt VHDL 7-Segment?

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