2013 wykl X2a po co i reprezid Nieznany

background image

2012-10-25

1

Procesory sygnałowe

Materiały ilustracyjne do wykładu.

Przygotowane z wykorzystaniem materiałów
firmy Texas Instruments

Dr Krzysztof Kardach

(ver. 7.3 luty 2012)

Część X2

Reprezentacja danych, trochę o

obliczeniach w ‘C5000 i nie tylko

K

2

Wykaz wykorzystanych materiałów



Bruno Pillard „An Introduction To Digital Signal Processors”;

„An Introduction To Digital Signal Processors”;

„An Introduction To Digital Signal Processors”;

„An Introduction To Digital Signal Processors”;

Uniwersytetu Sherbrooke

[

Wprowadzenie do DSP - procesor C5402 ]



TMS320C54x DSP Reference Set

TMS320C54x DSP Reference Set

TMS320C54x DSP Reference Set

TMS320C54x DSP Reference Set ---- Mnemonic Instruction Set

Mnemonic Instruction Set

Mnemonic Instruction Set

Mnemonic Instruction Set [materiały

podstawowe => Lista rozkazów procesorów rodziny C54xx ]



TMS320C54x

TMS320C54x

TMS320C54x

TMS320C54x Assembly Language Tools Users Guides

Assembly Language Tools Users Guides

Assembly Language Tools Users Guides

Assembly Language Tools Users Guides [materiały

uzupełniając

e => Jak używać asemblera procesorów C5000 ]



TMS320C54x DSP Reference Set

TMS320C54x DSP Reference Set

TMS320C54x DSP Reference Set

TMS320C54x DSP Reference Set ---- CPU and Peripherals

CPU and Peripherals

CPU and Peripherals

CPU and Peripherals [materiały

podstawowe => Opis CPU oraz peryferii procesorów rodziny C54xx ]



TMS320C54x DSP

TMS320C54x DSP

TMS320C54x DSP

TMS320C54x DSP Prgramers Guide

Prgramers Guide

Prgramers Guide

Prgramers Guide [materiały uzupełniające =>

Procesory DSP-przewodnik programisty Dokument formatu PDF

]



Peter Robinson TMS320 Algorithm

TMS320 Algorithm

TMS320 Algorithm

TMS320 Algorithm Debugging Techniques

Debugging Techniques

Debugging Techniques

Debugging Techniques; ; ; ; SPRA084



TMS320C54x Design Workshop

TMS320C54x Design Workshop

TMS320C54x Design Workshop

TMS320C54x Design Workshop –––– materiały firmy

materiały firmy

materiały firmy

materiały firmy Texas Instruments

Texas Instruments

Texas Instruments

Texas Instruments

2012-10-25

Procesory sygnałowe I / X1

2

K

2

background image

2012-10-25

2

Główne zagadnienia

• Przypomnienie kodowania liczb dla potrzeb przetwarzania

danych

• Sposoby kodowania zmiennoprzecinkowego IEEE 754

(nie zawsze

tak samo – uwaga dla TMS C30 inaczej)

• Porównanie / przeciwstawienie reprezentacji

całkowitoliczbowej i ułamkowej

• Jak usprawniać wynik - nasycanie i zaokrąglanie i ich realizacja
• „Zasilanie analogowe” w DSP
• Operacje bitowe – jak też można
• Dzielenie, mnożenie powiększonej precyzji
• Wsparcie zmiennego przecinka

2012-10-25

Procesory sygnałowe I / X1

3

K

2

Co głównie obliczamy?

2012-10-25

Procesory sygnałowe I / X1

4

Typowe operacje dla DSP

A = B*C + D

Multiply, Add, and Accumulate

E = F*G + A

..

.

Rozkaz MAC

3+5 = 8

+

0011

0101

1000

Add

Multiply

5*3 = 15

Dla typowych procesorów ~70
cykli procesora

Wykonanie MAC

0
1
0
1

x
x
x
x

8
4
2
1

0011
0011
0011
0011

x
x
x
x

0000

0011

0000

0011

=

5

3

Shift i suma
wielokrotna

Dla procesorów DSP typowo

1 cykl procesora

0101

* 0011

==========

0101

0101

0000

0000

==========

00001111

0000 1111 15

K

2

background image

2012-10-25

3

System binarny

2012-10-25

Procesory sygnałowe I / X1

5

 Cyfrowa reprezentacja liczb

 np. liczba 35 kodowana binarnie

 Każda liczba może być reprezentowana za pomocą 1 i 0 - binarnie

 126 dziesiętnie na kod binarny

K

2

Binarnie i HEX

2012-10-25

Procesory sygnałowe I / X1

6

Dziesi

ę

tny 0,1,2,… ,9

Binarny

0,1

Hex 0,1,2,… ,9,A,B,C,D,E,F

16 Dec 0x10 Hex
20 Dec 0x14 Hex

 4 bity kodu binarnego są reprezentowane przez jeden znak hex

 Dec 26 na kody binarny i HEX

K

2

background image

2012-10-25

4

Liczby całkowite ze znakiem

2012-10-25

Procesory sygnałowe I / X1

7

 Kodowanie znak-moduł

Liczby całkowite ze znakiem (Signed Magnitude Integers)

K

2

Kodowanie z uzupełnieniem do dwóch – U2

(Two’s Complement Notation)

(dla reprezentacji 8-mio bitowej)

2012-10-25

Procesory sygnałowe I / X1

8

Dla liczb całkowitych;

K

2

background image

2012-10-25

5

Kodowanie z uzupełnieniem do dwóch – U2

c.d.

2012-10-25

Procesory sygnałowe I / X1

9

 Konwersja do kodowania U2

 Dodawanie liczb U2

K

2

Notacja stałoprzecinkowa

.

(Fx-Pt - Fixed-Point Notation)

2012-10-25

Procesory sygnałowe I / X1

10

Konwencja przyjęta w DSP

 Zakres liczb od –1 do 1
 Przecinek zawsze na zdefiniowanej, umownej pozycji np. q1i15
 Mnożenie ułamka przez ułamek zawsze da w wyniku ułamek i nie spowoduje przekroczenia

(no overflow) (np., 0.99 x 0.9999 = mniej niż 1)

 Ale dodawanie może spowodować przekroczenie!

Dlaczego takie założenia?

 DSP wykorzystuje bardzo intensywnie wielokrotne mnożenia
 Notacja Fx-Pt nie powoduje przekroczenia choć ogranicza dynamikę sygnału
 Niższy koszt – procesory stałoprzecinkowe są tańsze

Sposób realizacji w procesorach DSP?

 Większość procesorów DSP jest nadal 16 bitowych [ale mocno „idą” 32 bity!]
 Zakres reprezentowanych liczb całkowitych (-32 768, +32 767)

na 16 bitach

( -2 147 483 648, +2 147 483 647)

na 32 bitach

 Najpowszechniejszy format Fx-Pt na 16-bitach dla liczb ułamkowych to (i1q15) lub prościej Q15

Notacja - Q15 U2

Domyślny przecinek

K

2

background image

2012-10-25

6

Wartość liczb U2 w notacji QN

reprezentowanych na M+1 bitach.

(oznaczenie bitów [M,M-1, ...,1,0])

2012-10-25

Procesory sygnałowe I / X1

11

Konwersja z użyciem kalkulatora W

DEC









W

HEX

reprezentowaną kodowaną U2

na M+1 bitach z N bitami na część ułamkową

funkcja „fix” - część całkowita „w stronę zera”

(B = 0 lub 1)

K

2

Wartość liczb U2 w notacji IkQn (lub k.n)

reprezentowanych na M+1=k+n bitach.

(UWAGA! inne oznaczenia bitów [M,M-1, ...,1,0]

k.n c

zęść całkowita „I” k

bitów

,

” część ułamkowa „Q” n

bitów

)

2012-10-25

Procesory sygnałowe I / X1

12

Konwersja z użyciem kalkulatora W

DEC









W

HEX

kodowaną U2 na M+1 bitach gdzie „k” i „n”

odpowiednio liczby bitów na części całkowitą i ułamkową

funkcja „fix” - część całkowita „w stronę zera”

UWAGA! inna numeracja i oznaczenia bitów dla wyliczenia „k” i „n”!

K

2

background image

2012-10-25

7

Format i1q15 (albo inaczej Q15)

2012-10-25

Procesory sygnałowe I / X1

13

Zakres zmian reprezentacji Q15

Przykład przeliczeń dla Q15 ma HEX z użyciem kalkulatora

Sposoby omijania trudności obliczeń w zakresie +/- 1
 Skalowanie przed obliczeniami

2.0 x (0.5 x 0.45) = (0.2 x 0.5 x 0.45) x 10

 Rozbijanie obliczeń na składniki

= (0.5 x 0.45) + (0.5 x 0.45)

K

2

Format i3q13

2012-10-25

Procesory sygnałowe I / X1

14

Zakres zmian reprezentacji i3q13

Przykład przeliczeń dla i3q13 na HEX z użyciem kalkulatora

K

2

background image

2012-10-25

8

Format zmiennoprzecinkowy IEEE 754

2012-10-25

Procesory sygnałowe I / X1

15

Wzór przeliczeniowy;

Przypadki szczególne;

e = exponent jest liczbą kodowaną na 8 bitach z przesunięciem -127
s = znak mantysy (s = 0 dodatni, s =1 ujemny)
f = ułamkowa część znormalizowanej mantysy; z założenia uzupełniana jest 1.0

(uwaga, ta 1-ka nie jest umieszczana w polu kodowania, jest domyślna)

IEEE 754 format zmiennoprzecinkowy- pojedyncza precyzja

Bit

jeśli 0 < e < 255

jeśli e = 255 i f < > 0 nie liczby

jeśli e = 0 i f = 0

jeśli e = 0 i f < >0 de-normalizowane

jeśli e = 255 i f = 0 nieskończoność

K

2

Liczby Flt-Pt IEEE 754 – przeliczenia

(1)

2012-10-25

Procesory sygnałowe I / X1

16

Wynik = 1,0E0 = 1 * 10

0

= 1

hex

3F 80 00 00

Bin

0011 1111 1000 0000 0000 0000 0000 0000

s = 0 zatem: X = +[01,f]

B

* 2

e-127

s 0111 1111 = se = 7Fh = 127

01,0 * 2

0

= 1,0

e = 127

f = 0

Wynik = 1,5E01 = 1,5 * 10

1

= 15

hex

41 70 00 00

Bin

0100 0001 0111 0000 0000 0000 0000 0000

s = 0 zatem: X = +[01,f]

B

* 2

e-127

s100 0000 1 => se = 82h = 130d
0111 ...

[01,111]

U2

f = 0,5 + 0,25 + 0,125 = 0,875

X = 01,875 x 2

3

= 15,0 dec

...

K

2

background image

2012-10-25

9

Liczby Flt-Pt IEEE 754 – przeliczenia

(2)

2012-10-25

Procesory sygnałowe I / X1

17

Wynik = -1,0E0 = -1 * 10

0

= -1

hex

BF 80 00 00

Bin

1011 1111 1000 0000 0000 0000 0000 0000

s = 1

zatem : X = - [01,f]

B

* 2

e-127

se => e = 0111 1111 = 7Fh = 127

-[01,0]

U2

* 2

0

= -1,0

e = 127

f = 0

Wynik = -1,5E01 = -1,5*10=-15

hex

C1 70 00 00

Bin

1100 0001 0111 0000 0000 0000 0000 0000

s = 1

zatem : X = - [01,f]

B

* 2

e-127

s1000 0010

se => e = 82h = 130d

f= 1110 0 ...

-01,f => -[01,1110]

B

= -( 1 + 0,5+0,25 + 0,125)

d

= -1,875

X = -[01,f]

B

* 2

e-127

= -[01,111]

B

* 2

3

X = -[01,f]

B

* 2

e-127

= -1,875 x 2

3

= -15,0

d

K

2

Liczby Flt-Pt IEEE 754 – przeliczenia

(3)

2012-10-25

Procesory sygnałowe I / X1

18

Zatem wynik = -2.0E0 = -2 * 10

0

hex

C0 00 00 00

Bin

1100 0000 0000 0000 0000 0000 0000 0000

s = 1 zatem:

X = - [01,f]

B

* 2

e-127

se => e = 80h = 128

X = -[01,f]

B

* 2

e-127

= -1 * 2

1

= -2.0

e = 128

f = 0

Dodawanie

15 + (-2.0) = 1,625 * 8 = 13 wymaga wyrównania wykładników (e)

i dodawania mantys

Mnożenie

1.5E01 x -2.0E00 = -3.0E01 = 30 wymaga dodawania wykładników

= C1 F0 00 00h

i mnożenia mantys [ ]

Dla procesora zmiennoprzecinkowego

K

2

background image

2012-10-25

10

Liczby Flt-Pt IEEE 754 – przeliczenia

(4)

2012-10-25

Procesory sygnałowe I / X1

19

K

2

Konwersja w odwrotnym kierunku;

W 





 flt-pt IEEE754

W = (-1)

^

s * 2^n * k gdzie k<2

n = int

(Flor)

(ln W / ln 2)

==> e = n +127 ==> HEX

==>

e

B8

k = W / 2^n

k – 1 = f

==> f * 2^23

==> HEX

==>

f

B23

W  W

flt-pt

= se

B8

f

B23

Przykład;

W = 26

s = 0

n = 4

n = 131

e

B8

= 1000 0011

k = 26 / 16 = 1,625

f = k – 1 = 0,625

f = 5 242 880

f

B23

= 101 0000 0000 0000 0000 0000

W

flt-pt

= se

B8

f

B23

= 0100 0001 1101 0000 0000 0000 0000 0000 = 0x41D 0000

Format zmiennoprzecinkowy

• Normalizacja mantysy kodowanej binarnie

Korekta polegająca na przesunięciu bitów w lewo (w stronę
starszych bitów) tak by

– Dla dodatnich liczb

najstarsza znacząca 1-ka przeszła na pierwszą pozycję na lewo od

przecinka;

[01,f]

B

– Dla niektórych DSP (np. C3x) stosowano kodowanie U2

stąd dla ujemnych liczb

najstarsze znaczące 0 przeszło na pierwszą pozycję na lewo od

przecinka

[10,f]

U2

– Zobacz działanie rozkazów EXP i NORM

2012-10-25

Procesory sygnałowe I / X1

20

K

2

background image

2012-10-25

11

Exponent Encoder

2012-10-25

Procesory sygnałowe I / X1

21



Obliczenia exponentu w jednym cyklu ( zakres [ -8, +31 ] )



Wynik jako wartość U2 w rejestrze T

ALU

A

B

EXPONENT

ENCODER

6

T

exp

A ; 1 cykl dla exp

...!!!...

norm A ; 1 cykl normowania

-8

0

15 16

31



Uwaga: rozkaz NORM nie może być kolejnym po rozkazie EXP

K

2

Użycie zmiennego przecinka

2012-10-25

Procesory sygnałowe I / X1

22

LD

@e1,T

LD

@m1,TS,A

LD

@e2,T

ADD

@m2,TS,A

LD

@e3,T

ADD

@m3,TS,A

2*N RAM & Cycles

LD

@e,T

LD

@m1,TS,A

ADD

@m2,TS,A

ADD

@m3,TS,A

N+1 RAM & Cycles

Blokowy zmienny przecinek

e

m1

m2

m3

Pełen zmienny przecinek

Pełen zmienny przecinek

Pełen zmienny przecinek

Pełen zmienny przecinek

e1 m1

e2 m2

e3 m3

K

2

background image

2012-10-25

12

Zakresy wartości

2012-10-25

Procesory sygnałowe I / X1

23

Zakresy reprezentowanych liczb

 Zakres wartości liczb zmiennoprzecinkowych (Flt-Pt) jest bardzo duży
 Relacje

 Największa Flt-Pt = ~ Największa całkowita Fx-Pt

(32b)

x (1.5 x 10

29

)

 Największa Flt-Pt = ~Największa c.liczb. Fx-Pt

(16b)

x (1.03 x 10

34

)

K

2

Fx-Pt

(16b/32b)

w porównaniu z Flt-Pt

(32b)

2012-10-25

Procesory sygnałowe I / X1

24

Zestawmy...



Urządzenia DSP są projektowane z użyciem zarówno procesorów Fx-Pt jak i Flt-Pt



Fx-Pt zwykle wykorzystują procesory 16-to bitowe, np. TMS320C54xx, TMS320C62xx



Flt-Pt zwykle używają procesorów 32 - bitowych, np. TMS320C3x, TMS320C67xx



Procesory Flt-Pt dysponują zwykle pełną listą rozkazów operacji stałoprzecinkowych



Flt-Pt są zwykle łatwiejsze do programowania (arytmetyka)



Fx-Pt mogą emulować operacje Flt-Pt programowo (dłuższy czas operacji)

K

2

background image

2012-10-25

13

Reprezentacja ułamkowa

2012-10-25

Procesory sygnałowe I / X1

25

0100

* 1101

00000100

0000000

000100

00100

??00110100

Wartość ułamka

-1 1/2 1/4 1/8

(1/2)*(-3/8)

(-3/16)

1000b (-1) … 0111b (~+1 = 1 – 1/8)



Przykł. Oper.



Wynik?



Obsługa rozszerzenia znakowego:



Zakres?



Jaka wartość jest zawarta w akumulatorze?



Gdzie jest przecinek? Q3*Q3=Q6…

SSBX SXM

;sign-extension mode ON

RSBX SXM

;sign-extension mode OFF



Jaka jest „szerokość” pamięci?

Pam

xxxx

K

2

uwaga!!



Musimy pamiętać o rozszerzeniu znakowym

0100

* ...1111101

000000000100

00000000000

0000000100

000000100

00000100

... ...

...111111110100

ACC

1111 0100

Eliminacja nadmiarowego bitu

2012-10-25

Procesory sygnałowe I / X1

26

 Jak korygujemy nadmiarowy „bit znaku”?

| F * F | < 1, ale co z F + F?

 Zachować 1.110b =(-1/4) do pamięci

0100

x 1101

00000000100

0000000000

000000100

00000100

0000100

……………………

...11111110100

ACC

1111 0100

Pam.

1110

Wartość ułamka

-1 1/2 1/4 1/8

STH A,1,*AR0

;

RĘCZNIE

SSBX FRCT

;

AUTOMAT

STH A,*AR0

-ALBO-

 By określić zawartość akumulatora dla zadanej wartości ułamkowj np. 0.707

 Należy wyznaczyć

 -32768 = 8000h => -1 32767 = 7FFFh => ~+1 = 1-LSB

a0 (.int 32768*707/1000)

HEX

 ustawienie bitu FRCT uruchamia automat.

przesunięcie wyniku mnożenia o 1b w lewo

K

2

background image

2012-10-25

14

Obsługa przepełnienia w trakcie dodawania

2012-10-25

Procesory sygnałowe I / X1

27



F + F może być > 1, zatem jak to obsłużyć?

1. Użyj Guard Bits (pozwolą na co najmniej 128 dodawań ze znakiem)

Jak postępować z wynikiem na ponad 32-bitach?

2. W systemach bez wzmocnienia (Ku=1) czasowe przepełnienie

jest dopuszczalne. Wynik pozostaje dopasowany do wejścia.

3. W systemach z wzmocnieniem (Ku>1), nie ma gwarancji

uniknięcia przepełnienia AH | AL.

(t.zn. Wynik zajmie więcej niż 32-bity).

A

lub

B

39

Guard

32

31

High

16

15

Low

0

Bity „

Bity „

Bity „

Bity „Guard

Guard

Guard

Guard”””” zwiększą zakres dynamiki Q15 z

zwiększą zakres dynamiki Q15 z

zwiększą zakres dynamiki Q15 z

zwiększą zakres dynamiki Q15 z +/

+/

+/

+/----1

1

1

1 do

do

do

do +/

+/

+/

+/----12

12

12

127777

K

2

4. Trzeba odpowiednio przygotować właściwy odbiór wyniku!

Obliczenia w Q15

2012-10-25

Procesory sygnałowe I / X1

28

• Mnożenie jest bezpieczne-

dla |a| i |b| ≤ 1 a*b ≤ 1

• Dodawanie już grozi przekroczeniem
• Najpowszechniejsza formuła to suma iloczynów

• Ale nawet jeśli końcowy wynik |y| ≤ 1

to wyniki pośrednie mogą wykroczyć poza zakres
założonej reprezentacji

Zatem jak przygotować obliczenia by były OK?

Sprawdzać zachowanie obliczeń dla najgorszego przypadku

Gdy konieczne rozważać możliwość „pełniejszego zachowania” wyników pośrednich

A gdy trzeba szukać innej reprezentacji lub arytmetyki

K

2

background image

2012-10-25

15

Nasycanie

[Saturation]

2012-10-25

Procesory sygnałowe I / X1

29

Są dwa sposoby obsługi nasycania dla A i B:



Ręczny:

użycie rozkazu SAT src ;(„nasyca” A lub B)



Auto:

nasycanie przy zapamiętaniu

(„nasyca” tylko wartość odsyłaną do pamięci)

SAT A

;

Ręcznie

STH A,*AR1

-ALBO-

LD #0,DP

;

Automat

ORM #1,@PMST ;SST=1

STH A,*AR0

0

-1

+1

Przed

Po

71 2345 6789

F8 1234 5678

00 7FFF FFFF

FF 8000 0000

PMST = Processor Mode Status Reg.

Co jeśli nie chcemy użyć bitów ochrony ( guard bits)?



SAT ustawia bity nasycenia (OVA lub OVB) jeśli wystąpi przepełnienie



SST nie wpływa na OVx czy zawartość akumulatora

K

2

Zaokrąglanie

[Rounding]

2012-10-25

Procesory sygnałowe I / X1

30

1.53

0.50

2.03

2.

Jak zaokrąglić do najbliższej całkowitej ?
- Dodaj 0.50
- Weź rezultat i ...
- „ogranicz wynik” (do całkowitej)



Zaokrąglanie w ACC możemy uzyskać w niektórych rozkazach

(przez automatyczne dodanie 8000h (odp. ½) do akumulatora):



Przykład:

RPTZ A,#98

MAC *AR2+,*AR3+,A

MACR *AR2,*AR3,A

STH A,*(y)

Zazwyczaj zaokrąglanie
stosuje się tylko dla
wyniku ostatniej operacji

(ile ogniw ma ten filtr?)

MAC[R] MAS[R] LD[R] RND

MACA[R] MASA[R] MPY[R]

K

2

Jak testować i porównywać bity?

background image

2012-10-25

16

Porównanie i test bitu (to w c54xx)

CMPM

Smem,#Kod

Jeśli Smem = #Kod, to TC = 1

BITF

Smem,#K

Jeśli Smem bitfield określone przez #K są 1’s, to TC = 1

BIT

Xmem,bit

Jeśli Xmem bit =1, TC =1

BITT

Smem

Jeśli Smem bit określony by T jest = 1, to TC =1

BIT mem, Bit_code

LD #Bit_code, T

BITT mem



Użycie rozkazów BIT albo BITT :



Można nawiązać do klasycznej numeracji przez:

BITM .macro mem,bit_no

BIT mem,15-bit_no

.endm

Use:

BITM @x,5

Ma

Ma

Ma

Makkkkro

ro

ro

ro

BIT5

.set 15-5

BIT @x,BIT5

BC pmad,TC

Podstawienie

Podstawienie

Podstawienie

Podstawienie

15

0

0

15

Pam

Bit_no

Bit_code

...

...

n

n

TC

11

4

K

2

Jakie operacje logiczne można wykonywać?

<=albo=>

2012-10-25

Procesory sygnałowe I / X1

31

Inne operacje arytmetyczne

Operacje bez-znakowe służą mnożeniu czynników reprezentowanych na > 16-bitów,
EXP/NORM są użyteczne w obliczeniach zmiennoprzecinkowych

LDU

Ładuj bez znaku

MPYU

Mnóż (Unsigned * Unsigned)

MACSU

MAC (Signed * Unsigned)

ABS

Wyznacz moduł

NEG

Zaneguj - 2’s complement

CMPL

1’s complement

EXP

T = (liczba „znakowych” 1’ lub 0’) - 8

NORM

dst = src << T

PMST

SMUL

If

OVM/FRCT/SMUL

= 1,

-1*-1 saturated to 00.7FFFFFFFh

K

2

2012-10-25

Procesory sygnałowe I / X1

32

background image

2012-10-25

17

Long Multiply Routine

2012-10-25

Procesory sygnałowe I / X1

33

STM

#X0,AR2

STM

#Y0,AR3

LD

*AR2,T

;

T = x0

MPYU

*AR3+,A

;

A = ux0*uy0

STL

A,@W0

;

w0 = ux0*uy0

LD

A,-16,A

;

A = A>>16

MACSU

*AR2+,*AR3-,A

;

A += y1*ux0

MACSU

*AR3+,*AR2,A

;

A += x1*uy0

STL

A,@W1

;

w1 = A

LD

A,-16,A

;

A = A>>16

MAC

*AR2,*AR3,A

;

A += x1*y1

STL

A,@W2

;

w2 = A-lo

STH

A,@W3

;

w3 = A-hi

K

2

X1

X0

*

Y1

Y0

X1*Y0 X0*Y0

Y1*X1 X0*Y1

Dzielenie

(1)

2012-10-25

Procesory sygnałowe I / X1

34

K

2

RPT

#15

SUBC

*Ar1, B

reszta

iloraz

AH

AL

Ograniczenia; Dzielna >= Dzielnika

Dzielna, Dzielnik > 0

Dzielnik

Dzielna

-

AH

AL

ALUo

==========

SUBC

Smem, src

;rozkaz odejmowania warunkowego

Dzielnik , Dzielna

(w pamięci) , (w A lub B)

(src) – ((Smem) << 15) ---> ALUo

jeśli ALUo < 0

to (src) << 1 ---> src

albo ((ALUo) << 1) + 1 ---> src

Działanie:

background image

2012-10-25

18

Dzielenie

(2)

2012-10-25

Procesory sygnałowe I / X1

35



Zatem ‘C54x na podzielenie dodatnich liczb 16-bitowych potrzebuje 16 cykli



‘C54x używa instrukcji „1-cyklowego 1-bitowego dzielenia”:

warunkowego odejmowania - SUBC

Smem, src



Realizując ją w trybie repetycji 16-to krotnie wykona 16-bitowe dzielenie



Ale wymaga działań uzupełniających; przygotowania dzielenia

i uzupełnienia znakiem operacji



SUBC działa jedynie na operandach

unsigned,

dlatego program wymaga:



Prologu



Porównuje znaki operandów wejściowych



Jeśli są jednakowe planuje dodatni iloraz



Jeśli są różne przewiduje negację (NEG) ilorazu



Usuwa znaki operandów wejściowych



Wykonania bez-znakowego dzielenia



Epilogu



Ustawia znak odpowiedni do wyniku prologu.

K

2

RPT

#15

SUBC

*Ar1, B

Procedura dzielenia

2012-10-25

Procesory sygnałowe I / X1

36

LD

@den,16,A

MPYA

@num

B = num*den (tells sign)

ABS

A

Usuń znak mianownika

STH

A,@den

LD

@num,A

ABS

A

Usuń znakt licznika

16 powtórzeń (iteracji)

1-bitowe dzielenie

XC

1,BLT

Jeśli wynik ma być ujemny

NEG

A

Zmień znak

STL

A,@quot

Zachowaj wynik dzielenia

K

2

RPT

#15

SUBC

@den,A

background image

2012-10-25

19

1. Jak unika się przekroczenia dla operacji mnożenia?

2. Jak postępuje się z przekroczeniem w trakcie dodawania?

3. Jakie bity procesora należy ustawić dla obliczeń na liczbach

ułamkowych ze znakiem ?

4. Jak procesor zaokrągla liczby?

5. Czy operacje Boolowskie są możliwe tylko na akumulatorach?

6. Co realizuje rozkaz “bit @y, 5” ?

Powtórzenie

K

2

2012-10-25

Procesory sygnałowe I / X1

37

1. Jak unika się przekroczenia dla operacji mnożenia?

2. Jak postępuje się z przekroczeniem w trakcie dodawania?

3. Jakie bity procesora należy ustawić dla obliczeń na liczbach

ułamkowych ze znakiem ?

4. Jak procesor zaokrągla liczby?

5. Czy operacje Boolowskie są możliwe tylko na akumulatorach?

6. Co realizuje rozkaz “bit @y, 5” ?

Powtórzenie

Poprzez użycie arytmetyki ułamkowej

Nasycanie: SAT lub SST(bit) OR pracując bez wzmocnienia OR OVM=1

SXM=1 by chronić bity znaku, FRCT=1 dla eliminacji nadmiarowych bitów znaku,

OVM=0 by umożliwić użycie bitów „guard”

Dodaje 8000h do akumulatora po wykonaniu operacji.

Kopiuje do bitu TC 10-ty bit komórki pamięci o adresie DP:@y

Nie. ANDM/ORM/XORM działają bezpośrednio na pamięci danych

K

2

2012-10-25

Procesory sygnałowe I / X1

38

background image

2012-10-25

20

Warto przemyśleć i zapamiętać

2012-10-25

Procesory sygnałowe I / X1

39

• Kod wagowy
• Reprezentacja HEX, BIN
• Reprezentacja liczb całkowitych i ułamkowych

stałoprzecinkowa Fx-Pt
Zmiennoprzecinkowa Flt-Pt
(IEEE i TMS)

• Możliwości i zakresy reprezentacji
• Reprezentacja liczb dodatnich i ujemnych

• Rozszerzenie znakowe (Rola SXM)

• Korekcja wyniku mnożenia l. ułamkowych

• Rola i miejsce bitu FRCT

• Rola i zadania bitów GUARD akumulatora

• Nasycanie wyniku i jego realizacja - SAT

• Rola i znaczenie bitów OVM, OVA, OVB

• Zaokrąglanie wyniku i jego konsekwencje

• Przebieg operacji dzielenia

• Mnożenie podwójnej precyzji

• ...

• Sposoby realizacji operacji na bitach
• Operacje logiczne i ich realizacja
• Przesunięcia i rotacje
• Realizacja operacji dzielenia w DSP
• Arytmetyka rozszerzonej dokładności
• Zmienny przecinek w stałoprzecinkowym DSP
• Reprezentacja liczb ujemnych
• Reprezentacja liczb dodatnich
• Reprezentacja liczb całkowitych
• Reprezentacja liczb niecałkowitych
• Kodowanie U2 - uzupełnienia do dwóch
• Kodowanie znak Z - Mod - moduł
• Kodowanie Q15
• Konwersje kodów

HEXBIN
DECBIN
DECHEX
U2 Z-Mod
DEC  Flt-Pt IEEE
DEC  Flt-Pt TMS...

K

2

cd. Dodatki 1

• „Ku podniesieniu świadomości” ....

2012-10-25

Procesory sygnałowe I / X1

40

K

2

background image

2012-10-25

21

Format zmiennoprzecinkowy dla TMS C3x

(C3x Floating-Point Format)

2012-10-25

Procesory sygnałowe I / X1

41

Wzory przeliczeniowe

Przypadek szczególny

e = exponent jest liczbą U2 ze znakiem kodowaną na 8 bitach

(wsp. skalowania)

s = znak mantysy (s = 0 dodatni, s =1 ujemny)
f = ułamkowa część mantysy kodowanej U2 (po normalizacji nie zawiera

1-ki na lewo od przecinka, jest ona domyślna!)

TMS format zmiennoprzecinkowy- pojedyncza precyzja

Bit #

Exponent (e)

Hex U2.

00

01

7F

FF

80

Dec

1

127

-1

-128

0

K

2

Liczby Flt-Pt TMS – przeliczenia

(1)

2012-10-25

Procesory sygnałowe I / X1

42

Wynik = 1.0E0 = 1 * 10

0

= 1

hex

00 00 00 00

Bin

0000 0000 0000 0000 0000 0000 0000 0000

s = 0 stosujemy wzór 1 : X = [01.f]

B

* 2

e

01.0 * 2

0

= 1.0

e = 0

f = 0

Wynik = 1.5E01 = 1.5 * 10

1

= 15

hex

03 70 00 00

Bin

0000 0011 0111 0000 0000 0000 0000 0000

s = 0 stosujemy wzór 1 : X = [01.f]

B

* 2

e

0011

e = 3

0111 ...

[01.111]

U2

f = 0.5 + 0.25 + 0.125 = 0.875

X = 01.875 * 2

3

= 15.0 dec

...

K

2

background image

2012-10-25

22

Liczby Flt-Pt TMS – przeliczenia

(2)

2012-10-25

Procesory sygnałowe I / X1

43

Wynik = -2,0E0 = -2 * 10

0

= -2

hex

00 80 00 00

Bin

0000 0000 1000 0000 0000 0000 0000 0000

s = 1

stosujemy wzór 2 : X = -2 + [0,f]

B

* 2

e

[10,0]

U2

* 2

0

= -2,0

e = 0

f = 0

Wynik = -3,1E01 = -3,1*10=-31

hex

04 88 00 00

Bin

0000 0100 1000 1000 0000 0000 0000 0000

s = 1

stosujemy wzór 2 : X = -2 + [0,f]

B

* 2

e

0100

e = 4

1000 1000

s0,f = [10,0001]

U2

= -2 + 0 + 0,0625 = -1,9375

X = [s0,f]

U2

* 2

e

= [10,0001]

U2

* 2

4

X = -2 + [0,f]

B

* 2

e

= -1,9375 * 2

4

= -31,0 dec

...

K

2

Jeszcze trochę o zmiennym przecinku TMS

2012-10-25

Procesory sygnałowe I / X1

44

Zatem wynik = -1.5E0 = -1.5 * 10

0

hex

00 C0 00 00

Bin

0000 0000 1100 0000 0000 0000 0000 0000

s = 1 Stosujemy wzór 2: X = ( -2.0 + [0.f]

B

) * 2

e

( -2.0 + 0.5 ) * 2

0

= -1.5

e = 0

f = 0.1

Dodawanie

15 + (-2.0) = 1,625 * 8 = 13 wymaga wyrównania wykładników (e)

i dodawania mantys

Mnożenie

1.5E01 * -2.0E00 = -3.0E01 = 30 wymaga dodawania wykładników

= 03 A0 00 00h

i mnożenia mantys

Dla procesora zmiennoprzecinkowego

K

2


Wyszukiwarka

Podobne podstrony:
Kanalizacja dlaczego i po co cz Nieznany
Kanalizacja dlaczego i po co cz Nieznany (2)
2013 01 15 ustawa o srodkach pr Nieznany
7 Wykl 7 str 4 tab 1 N 5 id 612 Nieznany (2)
2013 w05 DMA HWI 2013zid 28362 Nieznany
Jak sie poruszac po naszym kurs Nieznany
Po co nam socjologia
I PO CO BIERZMOWANIE
MiTE wykL,ad 7 8 wersja 01 id 3 Nieznany
23965 Przewodnik po prawie int Nieznany
PIF2 2007 Wykl 09 Dzienne id 35 Nieznany
Czy należy być logicznym i po co
po co zyjesz
PŁwSL I 2013 wykł 9 C, Szkoła, Semestr 5, Przepływ ładunków w systemach logitycznych, Fijał - wykład
PŁwSL I 2013 wykł 9 A, Szkoła, Semestr 5, Przepływ ładunków w systemach logitycznych, Fijał - wykład
2013 06 07 10 04id 28349 Nieznany (2)

więcej podobnych podstron