Ich verwende einen Relatek Audio-Codec ALC5621 für einige benutzerdefinierte Audio-Processing-Anwendung. Ich benutze i2c Bit Banging, um die Kommunikation zwischen dem Codec und einem soc (cc1110) zu steuern. Beim Herausfinden des Entzerrerteils stieß ich auf ein Problem, , das wie folgt angegeben wird ---> Ein 16-Bit-Register, das einen Binäreingang akzeptiert, dessen Format ---> "2er-Komplement im Format 3.13 ist (Der Bereich ist von - 4 ~ 3.99) "Registergröße 16 Bit (15,0), wie kann ich in dieses Register Daten eingeben, zB: -4, -1 usw.?2`s Komplement in 3.13 Format (Der Bereich ist von -4 ~ 3.99) was bedeutet das?
Antwort
3.13-Format dargestellt in binärer Festkomma-Arithmetik Notation namens "Q" -Nummernformat.
Siehe auch: Fixed-point arithmetic
3.13 beschreibt eine Zahl mit 3 Integer-Bits und 13 Bruchbits, die als 16-Bit-Zweierkomplement-Integer gespeichert sind (Zitat Wikipedia).
Die Umwandlung eines in Q3.13 angegebenen Werts für den Festkommawert in einen "physischen" Gleitkommawert erfolgt durch Division des ganzzahligen Werts durch 2^13.
Die 16-Bit-Ganzzahl kann dargestellt werden als short C-Variable: short q;
Der "physikalische" (d.h. Spannung) Wert kann dargestellt werden als doppelt C Variable: double v;
short q; //Q3.13 integer format.
double v; //"physical" value (assuming voltage).
Konvertieren q v:
v = (double)q/(double)(1<<13);
Konvertieren v q:
q = (short)floor(v*(double)(1<<13) + 0.5); //Add 0.5 for rounding - round(x) = floor(x+0.5)
Beispiele:
q = -32768; //Minimum short range
//v = -32768/8192 = -4.0
q = 32767; //Maximum short range
//v = 32767/8192 = 3.9998779
v = -4.0;
//q = floor(-4.0*8192.0 + 0.5) = -32768
v = -1.0;
//q = floor(-1.0*8192.0 + 0.5) = -8192
Das hat wirklich geholfen. Danke @ Rotem, Du bist wirklich großartig –
- 1. Was bedeutet der Formatbezeichner% * s?
- 2. Was bedeutet% s in Python?
- 3. IIS cgi: was bedeutet "% s"% s
- 4. was bedeutet das char (* (* a [4])()) [5]?
- 5. Was bedeutet xhr.readystate === 4
- 6. Was bedeutet das "s!" Betreiber in Perl tun?
- 7. Was bedeutet das: s [s [1:] == s [: - 1]] tun in numpy?
- 8. Was bedeutet jedes Element in SVMLight Format
- 9. Was bedeutet das in JMeter laden? 100 in13.2s = 7.4/s
- 10. Was bedeutet (? S). * In Apache mod_rewrite RewriteRule?
- 11. Was bedeutet, wo S: neu() in C#
- 12. Was bedeutet der Bereich mit fromTemplateUrl?
- 13. Was bedeutet% (xyz) s Darstellung in Python
- 14. Was bedeutet das in Ruby?
- 15. Was bedeutet (.: Format) in der Ausgabe von Rake-Routen?
- 16. Was das richtige Format von y3 Signal ist
- 17. Was ist das Gegenteil von "Format"?
- 18. das Komplement DF Teilmenge
- 19. Was ist das Format von `* .ni.dll.aux` Dateien?
- 20. Was ist das TREC-Format?
- 21. Was bedeutet s/\ G/0/g?
- 22. Was ist das seltsame C-Code-Format?
- 23. Was bedeutet {:?} In einer Rust-Format-Zeichenfolge?
- 24. Was ist das Format der indischen Handy-Nummer
- 25. Was bedeutet der Typ "char (& (...)) [2]"?
- 26. Was ist der richtige Loop-Bereich
- 27. Was bedeutet s_i = s [i] - 'a'?
- 28. JavaScript keyCode ist veraltet. Was bedeutet das in der Praxis?
- 29. Was bedeutet "! S: ~% I%, 1!" == "" gemein?
- 30. Was bedeutet das Datumsformat von CCYYMMDD?
Ich verstehe dein Problem nicht. Könnten Sie präziser sein, vielleicht mit einem verständlicheren Beispiel? – ckruczek
Ich muss die Werte wie -4, + 3.99, -2, + 1.99 auf ein 16-Bit-Register im Codec anwenden, das Werte im 2er-Komplement im Format 3.13 akzeptiert, wie soll ich das anwenden? –