Umwandlung 16-Bit-Vektor nach 8-Bit-Vektor??

Gast #1968881
Lesenswert?

Hallo allerseits,

ich würde gerne den Inhalt eines 16-Bit-Vektors mittels Terminal am PC 
anzeigen. Dazu habe ich Uart im FPGA eingebaut (Code von Lothar Miller). 
Ich will jetzt nicht Vektor->BCD->ASCII Umwandlung machen. Es geht nur 
darum, den 16-Bit-Vektor ungefähr zu sehen, zur Kontrolle. Dazu würde 
ich den Vektor in ein 8-Bit-Vektor (also Byte) umwandeln und das Byte 
als Zeichen über ser. Schnittstelle an PC schicken und dort hexadezimall 
in einem Terminal anzeigen.

Das Problem ist noch, den 16-Bit-Wert in ein 8-Bit-Zeichen für den Uart 
hineinzubekommen. Wie kann man so eine Umwandlung machen? Ich habe da an 
so eine Möglichkeit gedacht, allerdings weiß ich nicht ob es 
synthesefähig ist und ob dabei das passiert was ich will:
1
signal receive_buff  : std_logic_vector(15 downto 0);
2
signal tx_data_s     : std_logic_vector(7 downto 0);
3
.
4
.
5
.
6
-- Umwandlung
7
tx_data_s <= std_logic_vector(to_unsigned(to_integer(unsigned(receive_buff)),8));
Gast #1968920
Lesenswert?

> Nein, um alle Bits des Vektors.

naja, so stimmt es natürlich nicht, weil 8-Bit-Wert viel ungenauer ist. 
Ich meine der Wert des 16-Bit-Vektors soll umskaliert im 8-Bit-Vektor 
erscheinen.

16-bit(hex)    --->    8-bit(hex)

 0000          --->      00
 1000          --->      10
 FFFF          --->      FF
Gast #1968935
Lesenswert?

> Du willst also nur die 8 MSB?

mmm, nein. Ich kanns irgendwie nicht erklären was ich meine. Also wenn 
der 16-bit-vektor zur Hälfte "belegt" ist, dann soll auch 8-Bit-Vektro 
zur Hälfte belegt sein, das Gleiche gilt auch bei einem Viertel, Achtel 
und allen denkabaren Verhältnissen. Ich hoffe, dass das jetzt 
verständlich ist!
Moderator (Firma: Titel) Persönliche Seite #1969053
Lesenswert?

noips schrieb:
> Ich hoffe, dass das jetzt verständlich ist!
Nein.

Aber ich meine, dass du da einen kapitalen Denkfehler hast:
Du wirst sowieso einen Genaugkeitsverlust bekommen, denn die Information 
von 16 Bits passt ganz einfach nicht in 8 Bits...

> Ich kanns irgendwie nicht erklären was ich meine.
Probiers und fülle die Tabelle aus:
 0000          --->      00
 0080          --->
 00FF          --->
 0180          --->
 1000          --->      10
 1001          --->
 1000          --->
 2000          --->
 8000          --->
 8001          --->
 8181          --->
 FFFF          --->      FF
Gast #1969059
Lesenswert?

noips schrieb:
>> Nein, um alle Bits des Vektors.
>
> naja, so stimmt es natürlich nicht, weil 8-Bit-Wert viel ungenauer ist.
> Ich meine der Wert des 16-Bit-Vektors soll umskaliert im 8-Bit-Vektor
> erscheinen.
>
> 16-bit(hex)    --->    8-bit(hex)
>
>  0000          --->      00
>  1000          --->      10
>  FFFF          --->      FF

Du willst also die "oberen" 8 Bits von deinem 16 bit Vektor ! Damit hat 
dir Lothar die Lösung schon verraten.
Gast #1969117
Lesenswert?

Erstmal Danke für eure Antworten!!

> Aber ich meine, dass du da einen kapitalen Denkfehler hast:

Ich meine nicht.

> Du wirst sowieso einen Genaugkeitsverlust bekommen, denn die Information
> von 16 Bits passt ganz einfach nicht in 8 Bits...

Das ist mir ja klar. Genau das habe ich hier gemeint:

noips schrieb:
>> Nein, um alle Bits des Vektors.
>
> naja, so stimmt es natürlich nicht, weil 8-Bit-Wert viel ungenauer ist.
Gast #1969153
Lesenswert?

Ich probiere es mal so:

Bekannt ist das 16-Bit-Ergebnis einer AD-Wandlung von einem anlogen Wert 
mit 16-Bit-Wandler.

Gesucht ist der 8-Bit-Wert, den ein 8-Bit-Wandler bei gleichem analogen 
Wert ausgeben würde.

Das 8-Bit-Wandler nicht so fein auflöst wie der 16-Bit verstehe ich 
schon. Aber, wie gesagt, es geht mir um eine grobe Darstellung.
Gast #1969164
Lesenswert?

noips schrieb:
> Bekannt ist das 16-Bit-Ergebnis einer AD-Wandlung von einem anlogen Wert
> mit 16-Bit-Wandler.
>
> Gesucht ist der 8-Bit-Wert, den ein 8-Bit-Wandler bei gleichem analogen
> Wert ausgeben würde.

Das wären dann die oberen 8 Bit.

Stells dir so vor, für jede ungenaue Stufe des 8-bit-ADCs hätte der 
genaue ADC 256 Abstufungen (8bit).
:-)
Moderator (Firma: Titel) Persönliche Seite #1969167
Lesenswert?

>> Aber ich meine, dass du da einen kapitalen Denkfehler hast:
> Ich meine nicht.
Oh, doch.... :-o

noips schrieb:
> Gesucht ist der 8-Bit-Wert, den ein 8-Bit-Wandler bei gleichem analogen
> Wert ausgeben würde.
Wenn beide AD-Wandler den selben Messbereich haben (z.B. o..5V), dann 
sind das die 8 MSB.
Nur kann eben der 16-Bit ADC kleine Änderungen noch besser aufteilen. 
Das sind die 8 LSB.
Gast #1969228
Lesenswert?

OK, überredet :-)

Ich sehe meinen Fehler jetzt. Ich habe die AD-Wandlung mit der 
13-Segment-Kennlinie in digitaler Form verwechselt. Da durfte man nicht 
einfach so die unteren Bits weglassen. Aber da ist die Kennlinie auch 
nicht linear.

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