Binär => Thermometer-Code

OP #2833062
Lesenswert?
• ▲
▼
Hallo zusammen,

ich möchte gerne einen binären Code in den Thermometer-Code
wandeln.

Gibt es da effektive und platzsparende Algorithmen, die das machen?

Oder muss ich mir anhand des digitalen Wertes meinen Thermometer-Vektor
händisch zusammenbauen, oder gar eine LUT verwenden?

Bei ein paar Bit mag das ja noch gehen... aber bei höheren Bitzahlen 
wird es dann schon wieder schwierig...

z.B. 4bit binär => 15bit Thermometer-Code
1
0000 - 000000000000000
2
0001 - 000000000000001
3
0010 - 000000000000011
4
0011 - 000000000000111
5
0100 - 000000000001111
6
0101 - 000000000011111
7
0110 - 000000000111111
8
0111 - 000000001111111
9
1000 - 000000011111111
10
1001 - 000000111111111
11
1010 - 000001111111111
12
1011 - 000011111111111
13
1100 - 000111111111111
14
1101 - 001111111111111
15
1110 - 011111111111111
16
1111 - 111111111111111

Vielen Dank!
Andi
OP #2833212
Lesenswert?
• ▲
▼
Hallo,

MaWin schrieb:
> Nö, nur einem 64-bit Prozessor verwenden.
Wenn das wirklich der Grund ist, habe ich scheinbar keinen...

> Aber wieso konnten schon 8 bit Prozessoren problemlos bis 65536 zählen ?
Das weiß ich nicht, aber ich hoffe, du wirst es mir erzählen? :)

Muss ich wohl den Umweg über signed/unsigned gehen... mmpf...
Moderator (Firma: Titel) Persönliche Seite #2833258
Lesenswert?
• ▲
▼
Das geht beliebig breit. Ich hätte da mal diesen Vorschlag zu Anregung:
1
signal i : std_logic_vector(6 downto 0);  -- 64 Stellen
2
signal o : std_logic_vector(63 downto 0); 
3
:
4
:
5
 process (i) 
6
 variable h : std_logic_vector(63 downto 0); 
7
 begin
8
   for k in 0 to 63 loop
9
     if k>=to_integer(unsigned(i)) then  h(k) := '0';
10
     else                                h(k) := '1';
11
     end if;
12
   end loop;
13
   o <= h;
14
 end process;

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