Tải bản đầy đủ (.pdf) (82 trang)

HƯỚNG DẪN LẬP TRÌNH CHO DSPIC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.77 MB, 82 trang )

1
dsPic30F
-Biểu diễn số
03/12/2012
1
- dsPic30
F
03/12/2012 © NguyenDucKhoat Dr,-Ing.
2
2
– Quy tắckýhiệu đặcbiệt để biểudiễn các thông tin.
• Mộtmãgồm nhiềutự mã, mỗitừ mã có mộtký
hiệu
xác
định

biểu
diễn
cho
một
thông
tin
Mã ?
hiệu
xác
định

biểu
diễn
cho
một


thông
tin
.
– Dạng mã thông dụng: mã số nhị phân.
• Mỗitừ mã củamãsố nhị phân gồmmột dãy liên
tiếp các số hạng gọilàbit
• Mỗisố hạng chỉ có thể biểudiễnbằng hai chữ số 0
hoặc
1
03/12/2012 © NguyenDucKhoat Dr,-Ing.
3
hoặc
1
.
– Mộtmãnhị phân có độ dài n bit
• Biểudiễn cho 2
n
thông tin.
– Là những mã để biểu diễn các thông tin về lượng
Hệ đếm ?
– Một số N có thể biểu diễn ở nhiều hệ đếm khác
nhau ?
– Công thức tổng quát để biểu diễn số N?

mn
Các số nguyên
03/12/2012 © NguyenDucKhoat Dr,-Ing.
4
)1(
00



==
+
=
k
k
k
k
k
k
RaRa
N
1 ,2,1,0

= Ra
k
Cơ số củahệđếm
3
mknn
aaaaaaaaN
−−−−
= ,,
21011
Hệ đếm
trong dãy số trên đặc trưng cho số hạng của công thức (1)
k
a
k
k

Ra
k
R
à ố ủ
03/12/2012 © NguyenDucKhoat Dr,-Ing.
5
Hệ s

k
R
gọi l
à
trọng s

c

a
k
a
– Hệ thập phân
Biể
diễ

N(
362
25
)
.9, 2,1,0,10
=
=

k
aR
Các hệ đếm thông dụng

Biể
u
diễ
ns

N
=
(
362
,
25
)
10
– Hệ nhị phân
Biể
diễ

N(
11011
01
)
21012
1010
10.510.210.210.610.3)25,362(
−−
++++==N

.1,0,2
=
=
k
aR
03/12/2012 © NguyenDucKhoat Dr,-Ing.
6

Biể
u
diễ
ns

N
=
(
11011
.
01
)
2
10
2101234
22
)25,27(
25.00120816
2.12.02.12.12.02.12.1)01.11011(
=
++++++=
++++++==

−−
N
4
Hệ cơ số 16 (Hexadecimal)



FEDCBAaR
k
,,,.,,,9, 2,1,0,16
=
=
Các hệ đếm thông dụng
Bi

udi

ns

N=(2B6)
16
Hệ cơ số 10 sang cơ số 2
10
012
16
)694(
16.616.1116.2)62(
=
++==
h

BN
Trong 173, 128 ? co 173 -128 = 45
45, 64 ? khon
g
,
g
iu n
g
u
y
en 45
1 (MSB
)
0
Most Significant Bit
03/12/2012 © NguyenDucKhoat Dr,-Ing.
7
gg gy
45, 32 ? co 45 - 32 = 13
13, 16 ? khong, giu nguyen 13
13, 8 ? co 13 - 8 = 5
5, 4 ? co 5 - 4 =
1, 2 ? khong, giu nguyen 1
1, 1 ? co 1 - 1 = 0
1
0
1
1
0
1 (LSB

)
Least Significant Bit
Hệ cơ số 10 sang cơ số 2
Các hệ đếm thông dụng
03/12/2012 © NguyenDucKhoat Dr,-Ing.
8
5
Hệ cơ số 16 va cơ số 2
Nhị phân
111001111010101011
Các hệ đếm thông dụng
Nhị

phân
111001111010101011
Nhóm nhị phân 0011 1001 1110 1010 1011
Dạng Hex 3 9 E A B
Cơ số 16 39EAB
03/12/2012 © NguyenDucKhoat Dr,-Ing.
9
Bảng chuyển đổi các hệ cơ số
Các hệ đếm thông dụng
03/12/2012 © NguyenDucKhoat Dr,-Ing.
10
6
– Bit = 1 vị trí nhị phân

Byte
=
1

đon
vị
gồm
8
Bit
Một số đơn vị cơ bản
Byte
1
đon
vị
gồm
8
Bit
– Word = 1 đon vị gồm 2 Byte (16 Bit)
– Double Word = 1 đon vị gồm 4 Byte (32 Bit)
– Kilobyte = 2
10
(=1024) Byte
03/12/2012 © NguyenDucKhoat Dr,-Ing.
11
– Megabyte = 2
10
Kilobyte (= 2
20
Byte)
– Gigabyte = 2
10
Megabyte (= 2
30
Byte)

– Terabyte = 2
10
Gigabyte (= 2
40
Byte)
Biểu diễn số
Digital Signal Processors
Fixed Point Floating Point
16 bit 32 bit 64 bit 64 bit
03/12/2012 © NguyenDucKhoat Dr,-Ing.
12
IEEE 754 Other
7
– Hai bit đặcbiệtcủamộtbyte(word)

bit

trọng
số
cao
nhất
(Most
Significan
Bit,
MSB)

bit
nằm
Biểu diễn số nguyên
bit


trọng
số
cao
nhất
(Most
Significan
Bit,
MSB)

bit
nằm
tận cùng bên trái (bit 15/7 đốivới word/byte)
• bit có trọng số nhỏ nhất (Least Significan Bit,LSB) là bit nằm
tận cùng bên phải(bit 0).
– Số nguyên không dấu (unsigned integers): có độ dài 8/16 bits -
(byte/word)
03/12/2012 © NguyenDucKhoat Dr,-Ing.
13
• Biểudiễn các đạilượng dương (địachỉ ônhớ,bộđếm…)
– Số nguyên có dấu (signed integers): số dương hoặcâm.

Bit

trọng
số
cao
nhất
MSB
được

dùng
để
biểu
diễn
dấu
của
Biểu diễn số nguyên

Bit

trọng
số
cao
nhất
MSB
được
dùng
để
biểu
diễn
dấu
của
số,
– MSB=1 biểudiễnsố âm,
– MSB=0 biểudiễnsố dương.
 Các số âm đượclưu trong VXL, VĐKdướidạng số bù hai.
03/12/2012 © NguyenDucKhoat Dr,-Ing.
14
8
Biểu diễn số

• SHORT INTEGER (-2
15
-+2
15
-1)

UNSIGNED SHORT INT (0
-
2
16
-
1)

UNSIGNED

SHORT

INT
.
(0

-
2
-
1)
03/12/2012 © NguyenDucKhoat Dr,-Ing.
15
Biểu diễn số
• INTEGER (-2
31

-+2
31
-1)

UNSIGNED INT (0
-
2
32
-
1)

UNSIGNED

INT
.
(0

-
2
-
1)
03/12/2012 © NguyenDucKhoat Dr,-Ing.
16
9
– Số bù 1
 Vd:
0000 1010
;(10)
10
Số bù 2 (2’s complement)

0000

1010
;(10)
10
1111 0101 ;(245)
10
số bù 1 của 10
10
– Số bù 2 là mộtsố nguyên nhận đượcbằng cách cộng 1 vào số
bù 1 của chính nó.
 Vd:
0000 1010 ;(10)
10
1111 0101
;(
245
)
10
số bù 1 của
(
10
)
10
03/12/2012 © NguyenDucKhoat Dr,-Ing.
17
;( )
10
()
10

+1
1111 0110 ;Số bù 2 của (10)
10
– Số dương
Biểu diễn số
03/12/2012 © NguyenDucKhoat Dr,-Ing.
18
10
– Số âm
 Cách tìm:
Mã bù 2
Biểu diễn số





2
– 2
n _
|X|
• Vd: biểu diễn nhị phân có độ dài 8 bits của số -1
-1=2
8
-1=256-1=(255)
10
=(11111111)
2

Chú ý: Mã bù 2 đượcsử dụng trong cấu trúc bên trong của

03/12/2012 © NguyenDucKhoat Dr,-Ing.
19
Chú

ý:





2

được

sử

dụng

trong

cấu

trúc

bên

trong

của


đơn vị xử lý toán học ALU của VXL, VĐK
Biểu diễn số
 Một số có độ dài n bits có 2
n
tổ hợp khác nhau
trong đó
– [0…2
n-1
-1] biểu diễn số dương
03/12/2012 © NguyenDucKhoat Dr,-Ing.
20
– [2
n-1
…2
n
-1] biểu diễn số âm
11
Biểu diễn số
Phần
số dương
Phần
số âm
Bit dấu
03/12/2012 © NguyenDucKhoat Dr,-Ing.
21
Biểu diến số âm, dương của số có độ dài 4bits
Biểu diễn số -dấu phẩy tĩnh
• Một số dấu phẩy tĩnh được biểu diễn:
– Một số nguyên (23457)
Mộthâ ố (0 75)


Một
p

n s


(0
.
75)
• Công thức ?
03/12/2012 © NguyenDucKhoat Dr,-Ing.
22
12
Biểu diễn số -dấu phẩy tĩnh
03/12/2012 © NguyenDucKhoat Dr,-Ing.
23
Sử dụng một ký hiệu dấu chấm ảo để biểu diễn một số thực. Dấu
chấm ảo được sử dụng trong từ dữ liệu để phân biệt và ngăn cách
giữa phần biểu diễn giá trị nguyên và một phần lẻ thập phân của
dữ liệu.
Biểu diễn số -dấu phẩy tĩnh
43 210 1 2
(011011 01) 1 2 1 2 0 2 1 2 1 2 0 2 1 2
N


==++++++
22
(011011.01)N =

03/12/2012 © NguyenDucKhoat Dr,-Ing.
24
22
10
(011011
.
01) 1
.
21
.
20
.
21
.
21
.
20
.
21
.
2
16 8 0 2 1 0 0.25
(27,25)
N
==++++++
=++++++
=
13
Biểu diễn số -dấu phẩy tĩnh
• Các họ VXL 16-bits các số nguyên biểu diễn trong

dải -32,768 ÷ 32,767
• Hạn chế :
– 320x200=70,000
– Tràn số

Giải quyết
03/12/2012 © NguyenDucKhoat Dr,-Ing.
25

Giải

quyết
– Định dạng Q (Q-format)
Biểu diễn số -dấu phẩy tĩnh
• Giải quyết

Đị
nh d

n
g

Q

(Q
-format
)
ị ạ gQ(Q
)
• Sử dụng trong các giải thuật DSP

• Q format=?
– Các số biểu diễn trong dải (-1, 1)
Tà ố ?
03/12/2012 © NguyenDucKhoat Dr,-Ing.
26

T
r
à
n s


?
• Phép nhân
• Phép cộng
14
Biểu diễn số -dấu phẩy tĩnh
• Q format=?

Đị
nh d

n
g
:
ị ạ g
• -1.0 ÷ 1 − 2
−(N-1)
: N số bits
• Q = “Quantity of fractional bits”

ố ằ ể ễ ố
03/12/2012 © NguyenDucKhoat Dr,-Ing.
27
• Các chữ s

đ

ng sau Q bi

u di

n s


bits được sử dụng cho biểu diễn phần
lẻ thập phân của số thực.
• Q format=?
– Qm.n

m bits: phần nguyên
Biểu diễn số -dấu phẩy tĩnh

m

bits:

phần

nguyên
• n bits : phần thập phân

• N = m + n + 1, số có dấu
– Ex:
• Số 16-bit (N=16) - Q2.13 format
– 2 bits phần nguyên
– 13 bits phần thập phân
1bitdấu(MSB)
03/12/2012 © NguyenDucKhoat Dr,-Ing.
28

1

bit

dấu

(MSB)
– Đặc biệt:
• Số nguyên 16-bit (N=16) => Q15.0 format
• Số thập phân 16-bit (N = 16) => Q0.15 format hay
Q.15 hoặc Q15
15
Biểu diễn số -dấu phẩy tĩnh
• Qm.n format:
b
b
b
b
b
b
• Cách tính:

n
o
N
N
N
N
N
N
bbbbb 2/)2 222(
1
3
3
2
2
1
1
+++++−






N
onnmnmn
b
b
b
b
b

b
N
111
.
1
−−++

Fixed Point
03/12/2012 © NguyenDucKhoat Dr,-Ing.
29
n
o
N
N
N
N
N
N
bbbbb
−−





+++++−= 2)2 222(
1
3
3
2

2
1
1
nl
N
l
l
m
N
bb


=


+−= 22
2
0
1
b’
s
b’
m
-
1
…b’
0
b
n
-

1
b
n
-
2
…b
0
Q m.n Format
Biểu diễn số -dấu phẩy tĩnh
s
m
1
0
n
1
n
2
0
-2
m
b’
s
+…+2
1
b’
1
+2
0
b’
0

+2
-1
b
n-1 +
2
-2
b
n-2
…+2
-n
b
0
Ex:
o
1110
-
Q3 0:
-
2
3
+2
2
+2
1
=
-
2
03/12/2012 © NguyenDucKhoat Dr,-Ing.
30
o

1110

Q3
.
0:

2
+

2
+

2
=

2
o 11.10 - Q1.2: -2
1
+ 2
0
+ 2
-1
= -2 + 1 + 0.5 = -0.5
o 1.110 - Q3 : -2
0
+ 2
-1
+ 2
-2
= -1 + 0.5 + 0.25 = -0.25

16
Biểu diễn số -dấu phẩy tĩnh
Giá trị Min và Max của số nguyên và dấu phẩy tĩnh 4-Bits
(Kuo & Gan)
03/12/2012 © NguyenDucKhoat Dr,-Ing.
31
Biểu diễn số -dấu phẩy tĩnh
Giá trị Min và Max của số nguyên và dấu phẩy tĩnh 16-Bits
(Kuo & Gan)
03/12/2012 © NguyenDucKhoat Dr,-Ing.
32
17
Biểu diễn số -dấu phẩy tĩnh
• Độ chính xác
• Sai lệch nhỏ nhất giứa hai số liên tiếp có độ dài N-bits.
Ex:
Q15.0 (integer) format => Độ chính xác = 1
Q15 format => Độ chính xác = 2
-15
• Sự cân bằng giữa giá trị biểu diễn và độ chính xác
03/12/2012 © NguyenDucKhoat Dr,-Ing.
33
Ex: N = 16 bits
Q15.0 => giá trị biểu diễn trong giải (-32,768 - 32,767);
bước nhảy (1)
Q15 => giá trị biểu diễn hẹp (-1 ÷ +1
-
);bước nhảy (2
-15
)

Biểu diễn số -dấu phẩy tĩnh
• Với số thập phân: -1 < a < 1
• Có thể biểu diễn a qua định dạng số
nguyên A (Q15) ?
• Với: -32768 < A < 32767
03/12/2012 © NguyenDucKhoat Dr,-Ing.
34
• Mối quan hệ giữa a và A ?
• A= a x 2
15
• a= A x 2
-15
18
Biểu diễn số -dấu phẩy tĩnh
• Ex:

a
=
075
a

0
.
75
• A= 0.75 x 2
15
=24576 - Q15
• 0. 110000000000000
03/12/2012 © NguyenDucKhoat Dr,-Ing.
35

15 bits sau dấu phẩy
Biểu diễn số -dấu phẩy tĩnh
Giá trị biểu diễn và độ chính xác của số 16-Bits (Kuo & Gan)
03/12/2012 © NguyenDucKhoat Dr,-Ing.
36
19
Biểu diễn số -dấu phẩy tĩnh
Hệ số xác định và giá trị biểu diễn (Kuo & Gan)
03/12/2012 © NguyenDucKhoat Dr,-Ing.
37
Biểu diễn số -dấu phẩy tĩnh
• Dấu phẩy tĩnh sử dụng trong các họ DSPs duới
dạng mã bù 2 cho các dạng Q formats
• Chương trình hợp ngữ Assembler chỉ làm việc với
các giá trị nguyên
• Chuyển đổi dấu phẩy tĩnh dạng Q format sang giá trị
nguyên như thế nào?
03/12/2012 © NguyenDucKhoat Dr,-Ing.
38
• Người lập trình làm việc với số dấu phẩy tĩnh trong
chương trình hợp ngữ assembly ra làm sao?
20
• Các bước:
• Step 1: Chuẩn hóa số thập phân trong vùng định dạng Q
Dấu phẩy tĩnh sang giá trị nguyên
mong muốn
• Step 2: Nhân với 2
n
• Step 3: Làm tròn
• Step 4: Viết dưới dạng nhị phân N bits.

• Ex: a= 3.5
1) (
-
4 < a < 4) format Q
2
.13;
03/12/2012 © NguyenDucKhoat Dr,-Ing.
39
1)

(

4

<

a

<

4)

format

Q
2
.13;

2) 3.5*2
13

= 28,672;
3) 11.1000000000000
13 bits sau dấu phẩy
Format Q15 trong DSP
Bit 15 Bits 14 - 0
Bi dấ
Mã bù 2
• Giá trị maximale:
– 0111 1111 1111 1111 = (2
15
-1) / 2
15
= 0,9999694824219
– 32767
Giá t ị ii l
Bi
t
dấ
u




2
03/12/2012 © NguyenDucKhoat Dr,-Ing.
40

Giá

t

r

m
i
n
i
ma
l
e:
– 1000 0000 0000 0000 = -1,0000000000000
– -32768
21

Ưu: không gây tràn khi thựchiện các
Format Q15 trong DSP

Ưu:

không

gây

tràn

khi

thực

hiện


các

phép nhân:
– Nếu x và y < 1 : x × y < 1
• Được sử dụng ?

03/12/2012 © NguyenDucKhoat Dr,-Ing.
41

Sử dụng Q15 khi DSP không h

trợ làm việc
trên số thực.
Format Q15 trong DSP
• Phiền toái:

Khi th

c hi

n
p

p
c

n
g

(

khôn
g
đún
g
đ

nh d

n
g

ự ệ ppộ g( g g ị ạ g
Q15).
– Lập trình phức tạp.
03/12/2012 © NguyenDucKhoat Dr,-Ing.
42
22
Format Q15
• Phép cộng
Cơ số 10 Format Q15 Chuyển đổi
0.5 + 0.05 = 0.55 16384 + 1638 =
18022
18022/32767 =
0.55
0.5 - 0.05 = 0.45 16384 - 1638 = 14746/32767 =
03/12/2012 © NguyenDucKhoat Dr,-Ing.
43
14746 0.45
Format Q15
• Phép nhân ( 2x0.5x0.45 = ?)

Cơ số 10 Format Q15 Chuyển đổi
0.5 × 0.45 =
0.225
16384 × 14746 =
241598464
7373 calcul
?
0.225 + 0.225 =
045
7373 + 7373 =
14746
14746/32767 =
045
03/12/2012 © NguyenDucKhoat Dr,-Ing.
44
0
.
45
14746
0
.
45

23
Format Q15
• Phép nhân
C
A
B
=

×
• Nếu A và B ở định dạng Q15:
(
)
(
)
CA B
A
B
=× ××
=
×
×
22
2
15 15
30
03/12/2012 © NguyenDucKhoat Dr,-Ing.
45
• C ở định dạng Q30
A
B
2
Format Q15
• Hai khả năng:

C ở format
Q
15:
Q

– C ở format Q31
()
CAB
AB
=×× ×
=××

22
2
30 15
15
03/12/2012 © NguyenDucKhoat Dr,-Ing.
46
()
CAB
AB
=×× ×
=××
22
2
30
31
24
Thuật toán chia
• Thực hiện phép chia:

u =
y
/v.
y

• Vấn đề:
– DSP không cho phép thực hiện phép chia!!!
03/12/2012 © NguyenDucKhoat Dr,-Ing.
47
Thuật toán chia
• Công thức tóan học thực hiện phép
tính 1/v:
tính

1/v:
– x[i] = x[i-1]×(2.0 - v×x[i-1]);
– Nếu v = a×2
e
:
• x[0]=1.0×2
-(e+1)
03/12/2012 © NguyenDucKhoat Dr,-Ing.
48
• Thực hiện phép nhân với y.
25
VD: u = 1234.0/123.4
• Tính 1/123.4
– 123.4 Î 0,9640625 × 2
7
Î e = 7
– x[0] = 1.0 × 2
-(7+1)
= 0,00390625
• x[1] = 0,005929565429688
• x[2] = 0,007520418180153


x[3]
=
0,008061740863126
03/12/2012 © NguyenDucKhoat Dr,-Ing.
49
x[3]

0,008061740863126
• x[4] = 0,008103510173419
• x[5] = 0,008103727708909
Exemple: u = 1234.0/123.4
• x[5] = 0,008103727708909

x[6] = 0 008103727714749

x[6]

=

0
,
008103727714749
• hay 1/123.4 = 0,008103727714749

Vậy u = 10 (chính xác !)
03/12/2012 © NguyenDucKhoat Dr,-Ing.
50

Vậy


u

=

10

(chính

xác

!)

×