1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

37 296 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 3,15 MB

Nội dung

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 1

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

S 0 9

S KC 0 0 3 3 9 7

Trang 2

THÀ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 3

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:

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 5

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

Trang 6

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

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 7

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:

Trang 8

00

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 9

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 ] (2.3)

Trang 10

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:

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 11

Kế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 12

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 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 13

j 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 14

j 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 15

2 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 16

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.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 17

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

Trang 18

3.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 19

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

Trang 20

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

Trang 21

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

Trang 22

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

Trang 23

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 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

Ngày đăng: 04/09/2016, 14:37

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. Nguyễn Hữu Phương, Xử lý tín hiệu số, NXB ĐHQG Tp.HCM Sách, tạp chí
Tiêu đề: Xử lý tín hiệu số
Nhà XB: NXB ĐHQG Tp.HCM
[2]. Nguyễn Minh Khánh Ngọc, luận văn thạc sĩ, ĐHBK TpHCM, 2009, 86 trang TIẾNG NƯỚC NGOÀI Sách, tạp chí
Tiêu đề: luận văn thạc sĩ
[3]. John Proakis, Digital Communications (Chapter 8-Block and Convolutional Channel Codes), McGraw-Hill Science/ Engineering/ Math, 4th, 2000 Sách, tạp chí
Tiêu đề: Digital Communications (Chapter 8-Block and Convolutional Channel Codes)
[4]. Fu Hua Huang, Evaluation of Soft Output Decoding for Turbo Codes(chapter 2_convolution codes), Master's Thesis, 1997 Sách, tạp chí
Tiêu đề: Evaluation of Soft Output Decoding for Turbo Codes(chapter 2_convolution codes)
[5] Mr. Chip Fleming, A Tutorial on Convolutional Coding with Viterbi Decoding, Spectrum Applications, 2006 Sách, tạp chí
Tiêu đề: A Tutorial on Convolutional Coding with Viterbi Decoding
[6] Wei Chen, RTL implementation of Viterbi decoder, Master’s thesis performed in Computer Engineering, 2006 Sách, tạp chí
Tiêu đề: RTL implementation of Viterbi decoder
[7] Rulph Chassaing, DSP and Aplications with the C6713 and C6416 DSK, Wiley- Interscience, 2005 Sách, tạp chí
Tiêu đề: DSP and Aplications with the C6713 and C6416 DSK

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w