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

thiết kế và thực hiện bộ mã chập trên tms320c6414 dsk

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 (3.15 MB, 37 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH

BÁO CÁO TỔNG KẾT
ĐỀ TÀI KH&CN CẤP TRƯỜNG

THIẾT KẾ VÀ THỰC HIỆN BỘ MÃ CHẬP
TRÊN TMS320C6414 DSK
S

K

C

0

0

3

9

5

9

MÃ SỐ: T2011 - 17

S KC 0 0 3 3 9 7


Tp. Hồ Chí Minh, 2011


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH

BÁO CÁO TỔNG KẾT

ĐỀ TÀI KH&CN CẤP TRƯỜNG

THIẾT KẾ VÀ THỰC HIỆN BỘ MÃ CHẬP TRÊN
TMS320C6414 DSK
MÃ SỐ : T2011 – 17

Chủ nhiệm đề tài : ĐẶNG PHƯỚC HẢI TRANG

THÀNH PHỐ HỒ CHÍ MINH - 2011


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

CHƢƠNG 1

MỞ ĐẦU
1.1 Cơ sở khoa học và thực tiễn của đề tài
Tín hiệu truyền trong môi trường luôn luôn chịu tác động của nhiễu, hệ thống
nào thực hiện được công việc tách tín hiệu ra khỏi nhiễu một cách hoàn hảo thì hệ
thống đó càng tối ưu. Người ta thực hiện việc tách nhiễu ra khỏi tín hiệu bằng cách
thêm vào tín hiệu các bit dư, công việc đó chính là quá trình mã hóa kênh.

Nếu ngay khi nhận được tín hiệu, ta tiến hành giải mã ngay thì hiệu quả giải
mã không cao. Thay vào đó, chúng ta nên đánh giá độ tin cậy khi giải mã bit 0 bit 1
dựa trên tín hiệu thu được. Những thông tin thể hiện độ tin cậy đó sẽ so sánh với
những bit thông tin lân cận, từ đó sẽ giải mã được thông tin gốc. Thế nhưng công
việc này sẽ rất phức tạp, đặc biệt là khi độ dài các thanh ghi dịch của bộ tạo mã tăng
lên.
Thuật toán Viterbi làm giảm độ phức tạp đó thông qua việc kết hợp các quyết
định mềm để quyết định xem chuỗi thông tin nào giống với chuỗi thông tin phát đi
nhất. Thuật toán này đã được chứng minh là cho kết quả giống với kết quả của
phương pháp giải mã tối ưu với độ phức tạp cao.
1.2 Mục đích của đề tài
Thuật toán Viterbi được sử dụng hầu hết trong các hệ thống thông tin di động
tế bào, thông tin trên tàu vũ trụ hay các tên lửa dẫn đường. Sau này, các hệ thống
thông tin quân sự cũng như các mạng thông tin số như các tuyến truyền dẫn viba
hay hệ thống thông tin di động GSM, CDMA đều dùng thuật toán này để giải mã
mã xoắn. Nhằm mục đích tìm hiểu và thực hiện bộ mã chập trên DSK, đồng thời
khai thác kit này cho các môn thực tập, người thực hiện đã chọn đề tài này làm đề
tài nghiên cứu khoa học.
1.3 Nhiệm vụ và giới hạn của đề tài
Đề tài này không đi sâu vào các ứng dụng của thuật toán Viterbi mà chỉ tập
trung vào việc nghiên cứu thuật toán Viterbi thiết kế và thực hiện bộ mã chập trên
DSK. Nội dung chính của đề tài gồm:

-1-


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

 Tìm hiểu cơ sở lý thuyết về thuật toán Viterbi.
 Mô phỏng giải mã Viterbi trên Matlab.

 Thiết kế bộ giải mã Viterbi bằng ngôn ngữ C.
 Cài đặt thiết kế lên kit.
Kết quả đề tài có thể được ứng dụng trong thông tin vệ tinh, Wimax, CDMA…
1.4 Phƣơng pháp nghiên cứu
 Mô phỏng bằng phần mềm Matlab.
 Thiết kế giải mã Viterbi bằng C.
 Thực hiện trên kit DSK.

-2-


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

CHƢƠNG 2

CƠ SỞ LÝ THUYẾT
2.1 Lý thuyết thuật toán Viterbi
2.1.1. Mã hóa kênh trong hệ thống thông tin

Hình 2.1: Sơ đồ khối tổng quát của một hệ thống thông tin số.
Mã hóa gồm mã hóa nguồn và mã hóa kênh. Mã hóa nguồn nhằm mục đích đơn
giản hóa nguồn tin, tức là loại bỏ những thông tin cần thiết. Mã hóa kênh nhằm mục
đích giảm thiểu xác suất sai khi thông tin truyền qua kênh truyền.
Việc giảm xác suất sai dựa vào việc phát hiện sai và sửa sai có thể dẫn đến việc tăng
tỷ số SNR, nhờ đó giảm công suất và tiết kiệm được năng lượng, thuận lợi hơn cho
việc bảo mật, trãi phổ và tăng độ chính xác của thông tin nhận.
Lý thuyết mã hóa đại số được chia ra làm 2 loại mã chính:
 Mã khối.
 Mã Trellis.
Mã Trellis hay còn gọi là mã chập (kết hợp) được sử dụng trong các modem dải tần

âm (V.32, V.17, V.34) và trong các điện thoại di động GSM, cũng như trong các
thiết bị truyền thông của quân đội vũ trang và trong các thiết bị truyền thông với vệ
tinh.

-3-


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

Thuật toán Viterbi là một thuật toán tối ưu nhất được dùng để giải mã các mã chập.
2.1.2. Cấu trúc của bộ mã chập
Một bộ mã tích chập đưa các bit kiểm tra vào chùm bit dữ liệu thông qua việc sử
dụng các thanh ghi dịch như hình sau:

Hình 2.2 : Bộ mã tích chập có các bit ngõ vào xi và các bit được mã hóa ở ngõ ra ci
Các bit được đưa vào thanh ghi dịch và các bit ngõ ra được tính bằng cách cộng
modulo 2 của các bit vào với nội dung của thanh ghi dịch.
Gọi k là số bit thông tin ngõ vào song song và n là số bit mã hóa ngõ ra song song
tại cùng thời điểm, thì tốc độ mã hóa r của bộ mã chập được định nghĩa là: r = k/n
Chiều dài bắt buộc K đối với mã chập là K = m+1, với m là số ô nhớ lớn nhất trong
bất cứ bộ thanh ghi dịch nào.
Tương ứng với mỗi tốc độ mã hóa (các bộ mã đơn giản), người ta cũng đã thử
nghiệm và chọn ra chỉ một số đa thức sinh cho hiệu quả mã hóa cao để sử dụng.
Giá trị chuỗi đầu ra kênh không chỉ phụ thuộc vào k bit thông tin đầu vào hiện tại
mà còn phụ thuộc vào (m-1)k bit trước đó, và được gọi là mã chập (n,k,m).
Trong hình sau, một mã có tốc độ mã hóa r=2/3, kích cỡ bộ nhớ lớn nhất m=3,
chiều dài bắt buộc K=4.

-4-



Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

Hình 2.3 : Bộ mã hóa tích chập có k=1, n=2, r=1/2, m=2, K=3
Sơ đồ trạng thái:

Hình 2.4: Biểu diễn bằng sơ đồ trạng thái.
Sơ đồ hình lƣới:

-5-


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

Sơ đồ hình cây:
00
00

00

00
11

00

10

00
10
11


0

01

10
01

11

00
11
10

1

01
00

11

00

10

10
01
01

01


11
10

11

Hình 2.6 : Sơ đồ hình cây của bộ mã (2,1,2) .
2.2 Giải mã mã tích chập Viterbi
Thuật toán giải mã Viterbi là một trong hai loại thuật toán giải mã được sử dụng với
bộ mã hóa mã chập- một loại khác đó là giải mã tuần tự.
Ưu điểm của thuật toán giải mã Viterbi là nó có thời gian giải mã ổn định. Điều đó
rất tốt cho việc thực thi bộ giải mã bằng phần cứng. Nhưng yêu cầu về sự tính toán
của nó tăng theo hàm mũ như là một hàm của chiều dài ràng buộc, vì vậy, trong
thực tế, người ta thường giới hạn chiều dài ràng buộc của nó K = 9 hoặc nhỏ hơn.
Người ta sử dụng 2 loại giải mã mã tích chập: giải mã quyết định mềm và giải mã
quyết định cứng.
Giải mã quyết định cứng sử dụng lượng tử hóa 1 bit trên các giá trị kênh nhận được.
Giải mã quyết định mềm sử dụng lượng tử hóa nhiều bit trên các giá trị kênh nhận
được. Giải mã quyết định mềm lý tưởng thì các giá trị kênh nhận được được sử
dụng trực tiếp trong bộ giải mã kênh và lượng tử hóa không xác định.

-6-


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

Hình 2.7: Giải mã quyết định cứng và quyết định mềm.
2.2.1. Thuật toán Viterbi quyết định cứng
Trong mã tích chập, chuỗi ngõ vào bị xoắn lại thành chuỗi mã hóa c. Chuỗi c sẽ
được phát qua kênh nhiễu và chuỗi nhận được là chuỗi r.

Thuật toán Viterbi sẽ ước đoán khả năng xãy ra lớn nhất cho ra chuỗi y từ chuỗi
nhận được r, sao cho xác suất p(r/y) là lớn nhất. Chuỗi y phải là một trong những
chuỗi mã hóa cho phép chứ không phải là chuỗi tùy ý.
Cho một mã tích chập có tốc độ r, các ngõ vào của bộ mã hóa k bit song song và các
ngõ ra n bit song song tại mỗi thời điểm. Chuỗi ngõ ra là:
x = [ xo1 , xo2 , …, xok , x11 ,…, x1k ,…, xL+m+11 ,…, xL+m+1k ]

(2.1)

và chuỗi mã hóa là:
c = [ co1 , co2 , …, con , c11 ,…, c1n ,…, cL+m+11 ,…, cL+m+1n ]

(2.2)

Trong đó, L là chiều dài của chuỗi tin ngõ vào, m là chiều dài lớn nhất của bộ thanh
ghi dịch. Ta phải thêm vào đuôi của chuỗi tin gõ vào m bit 0 để cho bộ mã hóa tích
chập trở về trạng thái tất cả zero. Bộ mã hóa phải bắt đầu và kết thúc tại trạng thái
tất cả zero.
Chỉ số bên dưới là chỉ số thời gian, chỉ số bên trên là số ngõ vào hoặc số ngõ ra
song song tại 1 thời điểm.
Các chuỗi nhận được r và chuỗi ước đoán y được mô tả như sau:
r = [ ro1 , ro2 , …, ron , r11 ,…, r1n ,…, rL+m+11 ,…, rL+m+1n ]

-7-

(2.3)


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK


và y = [ yo1 , yo2 , …, yon , y11 ,…, y1n ,…, yL+m+11 ,…, yL+m+1n ]

(2.4)

Thuật toán Viterbi chọn chuỗi y sao cho p(r/y) là lớn nhất. Giả sử kênh không nhớ,
tức là quá trình nhiễu tác động lên 1 bit độc lập với quá trình nhiễu tác động lên các
bit khác. Như vậy, xác suất tập hợp các sự kiện độc lập tương ứng với tích xác suất
của các sự kiện riêng lẽ. Vì vậy:

p(r y ) 

L  m 1


i 0

p(r

1
i



y ). p(ri y )... p(ri y ) 
1
i

2

2

i

n

n
i

L  m 1


i 0

 n

  p(ri j yij ) 


 j 1

(2.5)

Biểu thức này gọi là hàm có khả năng xãy ra của y với chuỗi r nhận được.
Việc ước đoán p(r/y) lớn nhất cũng là lg[p(r/y)] lớn nhất, vì các hàm logarit là các
hàm tăng dần đều. Như vậy:

lg p(r y ) 

L  m 1



i 0

n

j
j
lg
p
(
r
y
)

i
i 
j

1



(2.6)

Vì thao tác trên các tổng dễ dàng hơn trên các hàm lg, nên một metric bit được định
nghĩa như sau:
M ( rij / yij ) = a [ lg p( rij / yij ) + b]

(2.7)

Trong đó, a và b được chọn trước để cho metric bit là một số nguyên dương nhỏ

nhất. Các giá trị a và b được định nghĩa cho kênh hệ thống nhị phân (BSC) hay giải
mã quyết định cứng.

Hình 2.8: Kênh hệ thống nhị phân BSC, trong đó p là xác suất chéo.
Thông thường a và b được chọn như sau:
a

1
và b = - lg (1 - p)
lg ( p)  lg (1 p)

(2.8) (2.9)

-8-


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

Kết quả metric bit là:
M ( rij / yij ) =

1
[ lg p( rij / yij ) - lg (1 - p)]
lg( p)  lg (1 p)

(2.10)

Ta thấy, p( rij / yij ) chỉ nhận giá trị là p hoặc (1-p).
Bảng 2.1: Các giá trị metric bit thông thường
M ( rij / yij )


Bit nhận ri(j) = 0

Bit nhận ri(j) = 1

0

1

1

0

Bit được giải mã
yi(j) = 0
Bit được giải mã
yi(j) = 1

Metric bit này biểu diễn ước lượng của các bit giải mã và các bit nhận được. Như
vậy, điều này liên quan đến khoảng cách Hamming và metric này được gọi là metric
của khoảng cách Hamming. Vì vậy thuật toán Viterbi chọn chuỗi mã y qua Trellis
có ước lượng (khoảng cách) Hamming nhỏ nhất liên quan đến chuỗi nhận được.
Ngoài ra, ta có thể a và b theo cách khác:
a

1
lg (1 p)  lg ( p)

(2.11)


và b = - lg (p)

(2.12)

Kết quả metric bit theo cách 2 là:
M ( rij / yij ) =

1
[ lg p( rij / yij ) - lg (p)]
lg (1 p)  lg ( p)

(2.13)

Bảng 2.2: Các giá trị metric bit thông thường (theo cách 2)
M ( rij / yij )
Bit được giải mã
yi(j) = 0
Bit được giải mã
yi(j) = 1

Bit nhận ri(j) = 0

Bit nhận ri(j) = 1

1

0

0


1

-9-


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

Trường hợp 2, thuật toán Viterbi chọn chuỗi mã hóa y qua Trellis có ước lượng
(khoảng cách) Hamming lớn nhất đối với chuỗi nhận được r.
Từ metric bit, ta có thể định nghĩa được metric đường:

M (r y ) 

L  m 1


i 0

n

j
j
M
(
r
y
)

i
i 

j

1



(2.14)

Metric nhánh thứ k:
n

M (rk y k )   M (rkj y kj )

(2.15)

j 1

Metric đường từng phần thứ k:

n

M (r y )   M (ri yi )   M (ri j yij )
i 0
i 0  j 1

k

k

k


(2.16)

Metric nhánh thứ k chỉ ra việc ước lượng chọn một nhánh từ biểu đồ Trellis, metric
đường từng phần thứ k chỉ ra việc ước lượng chọn chuỗi bit được mã hóa từng phần
y tới chỉ số thời gian k.
Như vậy, thuật toán Viterbi quyết định cứng HDVA có thể được thực hiện thông
qua các bước sau:
Gọi Sk,t là trạng thái trong biểu đồ Trellis tương ứng với sk tại thời điểm t. Mỗi trạng
thái trong Trellis được gán một giá trị là V(Sk,t).
Bước 1:
Khởi tạo t = 0.
Khởi tạo V(S0,0) = 0 và các V(Sk,t) khác bằng .
Bước 2:
Cho t = t + 1.
Tính các metric đường từng phần cho tất cả đường đi đến trạng thái Sk tại
thời điểm t.
Đầu tiên, tìm metric nhánh thứ t:

- 10 -


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

n

M (rt yt )   M (rt j ytj )

(2.17)


j 1

n

Metric này được tính theo khoảng cách Hamming  r
j 1

t

j

 ytj

(2.18)

Tiếp theo, tìm Metric đường từng phần thứ t:

n

M (r y )   M (ri yi )   M (ri j yij )
i 0
i 0  j 1

t

t

t

theo công thức sau: V(Sk,t-1) + M(rt / yt)


(2.19)
(2.20)

Bước 3: Lấy V(Sk,t) đến metric đường từng phần “tốt nhất” là trạng thái Sk tại thời
điểm t.
Bước 4: Lưu trữ metric đường từng phần và các đường trạng thái.
Bước 5: Làm lại bước 2 tới khi t = L+m+1.
2.2.2. Thuật toán Viterbi quyết định mềm
Có 2 phương pháp thực hiện thuật toán Viterbi quyết định mềm. Phương pháp thứ
nhất dùng metric khoảng cách Euclidean thay cho metric khoảng cách Hamming,
các bit nhận được sẽ được xử lý bằng lượng tử hóa nhiều mức. Phương pháp thứ hai
sử dụng metric tương quan trong đó các bit nhận được cũng được xử lý bằng lượng
tử hóa nhiều mức.
2.2.2.1. Phƣơng pháp 1
Thuật toán Viterbi quyết định mềm cũng giống như thuật toán Viterbi quyết định
cứng ngoại trừ khoảng cách Euclidean bình phương được sử dụng thay cho khoảng
cách Hamming.
Thuật toán Viterbi quyết định mềm SVDA1 có thể thực hiện như sau:
Gọi Sk,t là trạng thái trong biểu đồ Trellis tương ứng với sk tại thời điểm t. Mỗi trạng
thái trong Trellis được gán một giá trị là V(Sk,t)..
Bước 1:
Khởi tạo t = 0.

- 11 -


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

Khởi tạo V(S0,0) = 0 và các V(Sk,t) khác bằng .

Bước 2:
Cho t = t + 1.
Tính các metric đường từng phần cho tất cả đường đi đến trạng thái Sk tại
thời điểm t.
n

Đầu tiên, tìm metric nhánh thứ t :

M (rt yt )   M (rt j ytj )

(2.17)

j 1

 r
n

Metric này được tính theo khoảng cách Euclidean

j 1

t

j

 yt

j




2

(2.21)

Tiếp theo, tìm Metric đường từng phần thứ t:

n

M (r y )   M (ri yi )   M (ri j yij )
i 0
i 0  j 1

t

t

t

(2.19)

theo công thức sau: V(Sk,t-1) + M(rt / yt)

(2.20)

Bước 3: Lấy V(Sk,t) đền metric đường từng phần “tốt nhất” là trạng thái Sk tại thời
điểm t.
Bước 4: Lưu trữ metric đường từng phần và các đường trạng thái.
Bước 5: Làm lại bước 2 tới khi t = L+m+1.
2.2.2.2. Phƣơng pháp 2

Hàm khả năng xãy ra được biểu diễn bằng hàm mật độ xác suất Gauss:

1
( ri j  yij
p(ri yi ) 
e
N 0
j

j

Eb )2 / N0

(2.22)

Trong đó, Eb là năng lượng nhận được bit của từ mã và N0 là mật độ phổ nhiễu một
phía. Bit nhận được là biến ngẫu nhiên Gauss có trung bình y i
là N0/2
Hàm lg của khả năng xãy ra là:

- 12 -

j

Eb và phương sai


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

lg p(r y ) 


L  m 1


i 0


n
 L m1  n (ri j  yij Eb ) 2
j
j
 lg N 0 
 lg p(ri yi )    
N
j

1
i

0
j

1
0




(2.23)


Từ đó, metric bit được định nghĩa là M (rij / yij) = rij . yij

(2.24)

Thuật toán Viterbi quyết định mềm phương pháp này cũng giống như thuật toán
Viterbi quyết định cứng ngoại trừ sự tương quan của rij và yij được sử dụng thay cho
khoảng cách Hamming.
Thuật toán Viterbi quyết định mềm SDVA2 có thể thực hiện như sau:
Gọi Sk,t là trạng thái trong biểu đồ Trellis tương ứng với sk tại thời điểm t. Mỗi trạng
thái trong Trellis được gán một giá trị là V(Sk,t).
Bước 1:
Khởi tạo t = 0.
Khởi tạo V(S0,0) = 0 và các V(Sk,t) khác bằng .
Bước 2:
Cho t = t + 1.
Tính các metric đường từng phần cho tất cả đường đi đến trạng thái Sk tại
thời điểm t.
Đầu tiên, tìm metric nhánh thứ t .
n

M (rt yt )   M (rt j ytj )

(2.17)

j 1

n

Metric này được tính theo sự tương quan của rt(j) và yt(j) là


r
j 1

t

j

. yt j

(2.25)

Tiếp theo, tìm Metric đường từng phần thứ t.

n

j
j
M (r y )   M (ri yi )   M (ri yi )
i 0
i 0  j 1

t

t

t

theo công thức sau: V(Sk,t-1) + M(rt / yt)

(2.19)

(2.20)

- 13 -


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

Bước 3: Lấy V(Sk,t) đến metric đường từng phần “tốt nhất” là trạng thái Sk tại thời
điểm t.
Bước 4: Lưu trữ metric đường từng phần và các đường trạng thái.
Bước 5: Làm lại bước 2 tới khi t = L+m+1.
2.2.3 Ƣu nhƣợc điểm của thuật toán Viterbi

2.2.3.1 Ƣu điểm
 Thuật toán Viterbi là thuật giải mã có nhớ nên việc giải mã có độ chính xác
cao.
 Tốc độ xử lí của bộ giải mã Viterbi cao hơn nhiều so với bộ giải mã tuần tự vì
ở cùng một thời điểm, bộ giải mã Viterbi giải quyết hết tất cả các nhánh còn
bộ giải mã tuần tự chỉ chọn ngẫu nhiên một nhánh nên nó sẽ mất thời gian nếu
sự lựa chọn trước đó là không đúng.
2.2.3.2 Nhƣợc điểm
 Thuật toán giải mã Viterbi dựa trên thuật giải mã giống nhau lớn nhất (MLMaximum likelihood), thuật toán này lại phải dựa trên các nguyên lý sau để
việc giải mã được chính xác:
o Lỗi xảy ra phải không thường xuyên, xác suất lỗi phải nhỏ.
o Xác suất lỗi kép phải thấp hơn nhiều so với lỗi 1 bit, do đó lỗi phải
được phân bố một cách ngẫu nhiên.
Do vậy, với kênh truyền có xác suất lỗi lớn và thường xuyên, lỗi nhiều bit liên
tiếp thì hiệu quả của việc giải mã sẽ không như mong muốn.
 Thuật toán giải mã Viterbi sử dụng bộ nhớ để ghi lại các trạng thái và thông
số metric nên cần có bộ nhớ cho bộ giải mã, bộ giải mã càng phức tạp thì

dung lượng bộ nhớ càng lớn.

 Không thích hợp với các mã có chiều dài ràng buộc dài và tỉ số S/N lớn (chỉ
thích hợp với bộ giải mã tuần tự).

- 14 -


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

CHƢƠNG 3

MÔ PHỎNG GIẢI MÃ VITERBI BẰNG MATLAB
3.1 Giới thiệu
Với đề tài này, để mô phỏng quá trình mã hóa, truyền tín hiệu trên kênh truyền có
nhiễu và sử dụng thuật toán Viterbi để giải mã hóa, người thực hiện đề tài đã sử
dụng các hàm có sẵn trong Matlab để thực hiện. Để dễ dàng hơn cho việc quan sát
và trình bày, tác giả đã sử dụng giao diện đồ họa GUI để mô phỏng thuật giải
Viterbi. Quá trình mô phỏng sẽ được trình bày rõ ràng trong phần sau.
Tín hiệu sau khi được số hóa thành các bit, các bit này được đưa đến bộ mã hóa mã
chập. Sau khi được mã hóa, tín hiệu (các bit) được truyền trên kênh truyền có nhiễu,
ở đây tác giả chỉ xét nhiễu Gauss trắng. Tín hiệu đã bị thay đổi bởi nhiễu được thu
và giải mã nhờ bộ giải mã Viterbi. Nhờ thuật toán Vỉterbi, tín hiệu được giải mã sẽ
gần giống nhất với tín hiệu ban đầu.

- 15 -


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK


3.2 Lƣu đồ mô phỏng
Bắt đầu

Ngõ vào

Xác
định các
thông số
mã hóa

Mã hóa chập

Cộng nhiễu

Chọn
chế độ

Quyết
định
cứng

Quyết
định
mềm

Lượng tử 1
bit

Lượng tử 3
bit


Giải mã cứng

Giải mã mềm

Ngõ ra

Vẽ BER

Kết thúc

Hình 3.1: Lưu đồ mô phỏng.

- 16 -


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

Khối ngõ vào: gồm hai lựa chọn cho việc tạo tín hiệu ngõ vào. Thứ nhất là tạo bit
ngẫu nhiên theo số lượng bit nhập từ người dùng bằng cách sử dụng hàm rand của
Matlab, và thứ hai là nhập trực tiếp chuỗi bit vào.
Khối mã hóa chập: thực hiện mã hóa tích chập chuỗi bit ngõ vào với các dữ liệu
được cài đặt: tốc độ mã, chiều dài ràng buộc, xây dựng Trellis, các đa thức sinh
tương ứng (g0, g1, g2)…
Tín hiệu sau khi mã hóa tích chập sẽ qua khối cộng nhiễu để mô phỏng cho việc tín
hiệu bị can nhiễu khi truyền trên kênh truyền. Tín hiệu bị cộng nhiễu Gauss với
thông số SNR đã xác định trước.
Tín hiệu sau khi được cộng nhiễu được đưa đến bộ thu, tại đây tín hiệu được lượng
tử trước khi sử dụng thuật toán Viterbi để giải mã. Tùy vào kiểu quyết định mà sử
dụng cách lượng tử khác nhau, điều này được chọn tại khối chọn chế độ.

Tín hiệu sau khi giải mã Viterbi sẽ kết hợp với tín hiệu ngõ vào để vẽ đường BER .
3.4 Hình ảnh về chƣơng trình mô phỏng

Hình 3.2: Sơ đồ bộ mã chập.

- 17 -


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

Hình 3.3: Giao diện chương trình mô phỏng 2.

Hình 3.4: Nhập bit ngẫu nhiên – Quyết định mềm.

- 18 -


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

Hình 3.5: BER của quyết định mềm.

Hình 3.6: Nhập bit ngẫu nhiên – Quyết định cứng.

- 19 -


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

Hình 3.7: BER của quyết định cứng.


Hình 3.8: So sánh BER của cả quyết định cứng và mềm.
Nhận xét:
 Với cùng một số lượng bit vào như nhau thì giải mã quyết định cứng sẽ có số
bit sai nhiều hơn so với giải mã quyết định mềm. Bởi vì giải mã quyết định

- 20 -


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

mềm sử dụng lượng tử hóa nhiều bit, do đó nó tạo độ tin cậy khi giải mã cao
hơn so với giải mã quyết định mềm chỉ sử dụng lượng tử 1 bit.
 Tỷ số tín hiệu/nhiễu SNR càng cao thì kênh truyền càng ít nhiễu, khi đó, giải
mã quyết định cứng và mềm sẽ cho kết quả giải mã là gần như nhau. Trong
hình 3.10, khi tỷ số tín hiệu trên nhiễu > 8.5dB thì BER của quyết định cứng
và mềm giống như nhau.
 Đường BER của giải mã quyết định mềm luôn nằm thấp hơn đường BER của
giải mã quyết định cứng. Điều đó có nghĩa là với cùng một tỷ số Eb/No thì giải
mã quyết định mềm luôn có BER nhỏ hơn so với giải mã quyết định cứng. Do
đó, xác suất sai bit sẽ nhỏ hơn. Trong hình 3.10, tại tỷ số Eb/No = 5dB, BER
của quyết định mềm là 10-4 trong khi BER của quyết định cứng gần bằng 102.5

 Vì giải mã quyết định mềm sử dụng lượng tử nhiều bit nên bộ nhớ cần để lưu
trữ cho việc giải mã quyết định mềm sẽ lớn hơn nhiều so với khi giải mã
quyết định cứng.

- 21 -


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK


CHƢƠNG 4

THỰC HIỆN THUẬT GIẢI VITERBI TRÊN DSK
4.1 Giới thiệu Kit TMS320C6416 DSK
Bộ kit TMS320C6416 được gọi tắt là C6416, thuộc họ C6x là sản phẩm của hãng
Texas Intrusment, 32 bit DSP. Đây là kit DSP với bộ vi xử lý có chức năng đặc biệt
trong tính toán số học chuyên sâu, có ứng dụng rộng rãi từ xử lý ảnh đến thông tin
di động, camera số, MP3…
Đồng thời, sự kết hợp của chip DSP, CCS (Code Composer Studio) và các phần
cứng khác hình thành nên bộ DSK này (DSP Starter Kit).
Kit này hoạt động ở tần số 225MHz và có các thông số sau:
 16 Mbytes SDRAM, bộ nhớ ngoài 32 bit EMIF.
 Bộ nhớ flash 512 Kbytes, giao diện 8 bit (có thể là 256 Kb).
 Bộ nhớ 4 Kbytes cho lưu trữ dữ liệu L1D.
 Bộ nhớ 4 Kbytes cho lưu trữ chương trình L1P.
 Bộ nhớ L2 với 256 Kbytes.
 Một bộ codec AIC23 16 bit stereo với tốc độ 12 MHz, tần số lấy mẫu từ 8
Khz đến 96 KHz.
 4 LED và các switch DIP cho CPLD.
 Cấu hình phần mềm phù hợp với CPLD.
 Mở rộng khả năng kết nối với card bên ngoài.

- 22 -


Thiết kế và thực hiện bộ mã chập trên TMS320C6416 DSK

Hình 4.1: Cấu trúc bộ kit TMS320C6416.
4.2 Kiến trúc thiết kế

Cấu trúc bộ giải mã được chia làm 2 khối: khối BMP xử lý các trạng thái Metric và
khối TRB truy ngược về trước.

Hình 4.2: Cấu trúc bộ giải mã.
Khối BMP (Branch Metric processing) xử lý các dữ liệu ngõ vào, sử dụng giải thuật
cây Trellis để tìm đường tồn tại tốt nhất. BMP bao gồm 3 khối nhỏ:
 BMC (Branch Metric Calculation) tính toán các nhánh Metric từ dữ liệu vào
trên cơ sở cây Trellis.
 ACS (Add Compare Select) tính toán việc cộng vào, so sánh và lựa chọn
đường tốt nhất.
 SUR (Survivor) lưu nhánh Metric tốt nhất.

- 23 -


×