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
Trang 1BÁ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
S 0 9
S KC 0 0 3 3 9 7
Trang 2THÀNH PHỐ HỒ CHÍ MINH
BÁO CÁO TỔNG KẾT
ĐỀ TÀI KH&CN CẤP TRƯỜNG
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
TMS320C6414 DSK
Trang 3CHƯƠ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:
Trang 4 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
Trang 5CHƯƠ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
Trang 6Thuậ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
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
Trang 7Hì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:
Trang 800
11 00
10
01 10
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
Trang 9Hì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 ] (2.3)
Trang 10và 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:
1
) (
) (
) (
).
( )
(
m L i
n j
j i
j i
m L
i
n i
n i i
i i
r p y
r
p
(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 )
(
lg
m L i
n j
j i
j
i y r p y
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:
) 1 ( lg
a
và b = - lg (1 - p) (2.8) (2.9)
Trang 11Kết quả metric bit là:
M ( rij / yij ) =
)1(lg)lg(
1
p
p [ lg p( rij / yij ) - 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 Bit được giải mã
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:
) ( lg )
Bit được giải mã
Trang 12Trườ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 L i
n j
j i
j
i y r M y
j k k
j i
j i k
i
i i
k
y r M y
r M y
) (
)
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)
Trang 13j t t
j t
j
t y r
j i
j i t
i
i i
t
y r M y
r M y
) (
)
theo công thức sau: V(S k,t-1 ) + M(r t / y t ) (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
Trang 14j t t
r M
1
) (
j t
j
t y r
j i
j i t
i
i i
t
y r M y
r M y
) (
)
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:
0 2
/)(
0
1 )
j i
j i
e N
Trang 152 1
lg )
( )
( lg )
(
lg
m L
j i m
j
N
E y r y
r p y
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)
j t t
j t
j
t y r
1. (2.25)
Tiếp theo, tìm Metric đường từng phần thứ t
j i
j i t
i
i i
t
y r M y
r M y
) (
)
theo công thức sau: V(Sk,t-1) + M(rt / yt) (2.20)
Trang 16Bướ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.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 Maximum 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:
(ML-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ự)
Trang 17và 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
Trang 183.2 Lưu đồ mô phỏng
Hình 3.1: Lưu đồ mô phỏng
Chọn chế độ
Quyết định cứng
Quyết định mềm
Xác định các thông số
mã hóa
Mã hóa chập
Cộng nhiễu
Lượng tử 1 bit
Lượng tử 3 bit
Giải mã mềm Giải mã cứng
Vẽ BER
Ngõ ra
Ngõ vào Bắt đầu
Kết thúc
Trang 19Khố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
Trang 20Hì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
Trang 21Hì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
Trang 22Hì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
Trang 23mề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 10-2.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