background image

Na tle poprawy kolokwium DSP, kurs ETEK00043W  

 

E00-49a/b 

PON 15-19

 

 

K

2013-01-19 15:09

 

1 / 2 

COŚ DZIWNEGO W INTERPRETACJI KONWERSJI;  

Było pytanie, które prowadziło do konwersji na HEX U2, i2q4 liczby -0.09375, która była wynikiem 

mnożenia dwóch liczb. Kodowanie miało być wykonane najpierw na 6-ciu bitach krótkiego rejestru, a 

potem wynik podany w formie, w jakiej wystąpi w 12-bitowym akumulatorze tego „uproszczonego 6-

cio bitowego procesora”. I tu pojawiły się zadziwiające odpowiedzi w rodzaju „przekroczenie 

zakresu…” czy „nie mieści się w reprezentacji…”.  

Przyznam, że podważa to wiarę w rozumienie spraw, ale spróbujmy „rozebrać” problem;  

1.  U2, 12q4 pozwala kodować liczby z zakresu <-2, +1,9375>. Skąd zatem podejrzenie o 

„przekroczeniu zakresu” ?. Przecież ta wartość jest z pobliża zera, zatem ze środka 

reprezentowanego przedziału wartości liczb. (patrz ilustracja w p.3b.) 

2.  A teraz bliżej do kodowania.  -0,09375 * 2^4 = -1,5  i używając np. kalkulatora konwersja  

=na HEX=> 0x3F, czyli 11 111.  Jednak, ponieważ wartość wypada dokładnie w środku 

pomiędzy bitami akceptowalna jest również odpowiedź 0x3E (albo też zapis odpowiednio 

0xFF lub 0xFE) 

3.  I parę słów bliższego objaśnienia by nie zarzucono skrótów i ogólników  

a.  LSB dla tego kodowania wynosi 2^-4 = 1/16 = 0,0625 

b.  Zatem mamy układ „na pionowo ustawionej osi liczbowej”  

(bo tak wygodniej zmajstrować tabelkę ) 

DEC 

BIN 

HEX 

 

Uwagi 

+1,9375  01 1111 

0x1F 

 

+MAX 

… 

… 

 

 

 

 

 

 

 

 

… 

… 

 

 

 

+0,0625  00 0001 

0x01 

 

+1 LSB 

00 0000 

 

 

-0,0625  11 1111 

0x3F 

 

-1 LSB  

 

<-------- 

?  -0.09375 

To wartość w środku 

-0,125 

11 1110 

0x3E 

 

-2 LSB 

… 

… 

 

 

 

 

 

 

 

 

… 

… 

 

 

 

-2 

10 0000 

0x80 

 

-MAX  
 

c.  Nasza kodowana wartość trafia idealnie w środek między bitami, zatem każda uwaga 

o „kłopocie z rozdzielczością” jest zasadna  

d.  Nie są zaś umotywowane uwagi o „niemożliwości reprezentacji”, bo przecież w 

rzeczywistości, choćby przetwarzania A/C, do rzadkości należy „trafienie idealnie w 

background image

Na tle poprawy kolokwium DSP, kurs ETEK00043W  

 

E00-49a/b 

PON 15-19

 

 

K

2013-01-19 15:09

 

2 / 2 

bit”. To typowa sytuacja kwantyzacji, kiedy trzeba podjąć decyzję, któremu bitowi 

przypisać ten poziom. Stąd też akceptacja dwóch możliwych odpowiedzi. 

4.  No i wreszcie problem „jak ten wynik mnożenia będzie wyglądał w „długim” akumulatorze”?.  

a.  Oczywiście i tutaj nie ma problemu z „przekroczeniem zakresu”, no bo skąd? 

b.  Akumulator ma więcej bitów, więc również powinien zmniejszyć się (a może nawet 

zniknąć) problem małej rozdzielczości. (Taka jest zresztą motywacja wykorzystania 

wydłużonych akumulatorów w DSP) 

c.  Mnożymy przez siebie liczby q4 * q4, zatem wynik będzie q8 (niedowiarkom 

proponuję przypomnienie sobie sposobu wyznaczania położenia przecinka przy 

mnożeniu „pisemnym” dziesiętnych liczb ułamkowych) 

d.  Zatem -0,09375 * 2^8 = -24 (znika problem ułamka LSB!)  i trafiamy idealnie w bit, co 

daje w efekcie   =na HEX=> 0xFE8, czyli 1111 1110 1000B 

Mam nadzieję, że nieco wyprostowałem te mylne interpretacje.