257 Werte 1 byte

Gast #4983372
Lesenswert?
• ▲
▼
moin!

ich habe einen relativ langen Vektor (u_tmp) der unterschiedlich weit 
benutzt wird. Dessen Wert möchte ich entwicklungsbegleitend auf einer 
8bit Schnittestelle ausgeben. Dafüt gibt es einen 8 bit Vektor 
oslv_byte.
1
signal u_tmp  : unsigned(24 downto 0);
2
oslv_byte   : out  STD_LOGIC_VECTOR (7 downto 0);
Die Länge von u_tmp habe ich in einer Konstanten i_width.


Jetzt kann ich ja die oberen 8bits ab der msb-Stelle einfach auf den 8 
bit Vektor ausschneiden. Also so zuweisen:
1
oslv_byte <=  std_logic_vector(u_tmp( (i_width-1) downto (i_width-8)))
Mein Problem ist aber der Wertebereich. u_tmp ist das Ergebnis eines 
sinc3 Filters und geht z.B. von 0..512. Also ist am oberen Ende nur das 
MSB besetzt. Schneide ich nur die höchsten 8 bits aus, dann habe reicht 
der 8bit Wertebereich halt nur von 0..128.

257 Werte in ein Byte.

Habe das dann so gemacht:
1
oslv_byte <=  std_logic_vector(u_tmp( (i_width-2) downto (i_width-9))) when u_tmp(i_width-1) = '0' else (others=>'1');
Dadurch ist oben natürlich das ganze nichtlinear, was sich ja auch nicht 
vermeiden lässt es wird ja irgendwie auch der Wertebereich gestaucht.

Meine Frage:

wie würdet ihr das Problem lösen? Obere 8 bit abschneiden und halben 
Wertebereich in der 8bit-Welt in Kauf nehmen? Oder gibt es eine runde 
Lösung

herzlichen Dank!
Beitrag #4983396 wurde von einem Moderator gelöscht.
#4983406
Lesenswert?
• ▲
▼
zu Besuch schrieb:
> Mein Problem ist aber der Wertebereich. u_tmp ist das Ergebnis eines
> sinc3 Filters und geht z.B. von 0..512. Also ist am oberen Ende nur das
> MSB besetzt. Schneide ich nur die höchsten 8 bits aus, dann habe reicht
> der 8bit Wertebereich halt nur von 0..128.
>
> 257 Werte in ein Byte.

bist du dir sicher mit den Wertebereichen?

ich hätte eher 0..127 bzw. 0..255 angenommen. durch was /wann entsteht 
der zusätzliche MSB-Wert ?


zu Besuch schrieb:
> 257 Werte in ein Byte.

aha. oha.
Gast #4983663
Lesenswert?
• ▲
▼
"
ich hätte eher 0..127 bzw. 0..255 angenommen. durch was /wann entsteht
der zusätzliche MSB-Wert ?"

Wenn ich in mein sinc3 Filter ein Signal gebe, was konstant 1 ist, also 
maximal groß, dann ist dies das Ergebnis.
Also wenn ich nach 
http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=sbaa094 
eine Dezimierung von z.B. 8mache, dann ist der Ausgangsvektor 10bit 
breit mit nur dem MSB gesetzt. Als Wert dann 512.

Vorzeichen sehe ich dabei eigentlich nicht denn ich verstehe ie Funktion 
so, dass ja eben unsigned arithmetik mit Überlauf ausgenutzt wird.

Wenn MaWin da etwas konkreter helfen kann, wäre das natürlich sehr 
hilfreich.

Danke
Gast #4984354
Lesenswert?
• ▲
▼
zu Besuch schrieb:
> Mein Problem ist aber der Wertebereich. u_tmp ist das Ergebnis eines
> sinc3 Filters und geht z.B. von 0..512. Also ist am oberen Ende nur das
> MSB besetzt. Schneide ich nur die höchsten 8 bits aus, dann habe reicht
> der 8bit Wertebereich halt nur von 0..128.

Das Ausgangssignal von deinem Filter ist hoffentlich stetig. Wenn du 
also das oberste Bit weg lässt, wird jede Änderung des (ehemaligen) 
obersten Bit als harter Sprung in den Wert, der sich aus den unteren 
8Bit ergibt, sichtbar. Bis auf eine Uneindeutigkeit lässt sich das also 
gut rekonstruieren, wenn die Werte sich stetig ändern.

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.