Lưu dồ thuật toán lập trình

Một phần của tài liệu đồ án thực hiện bộ giải mã viterbi trên fpga (Trang 76 - 83)

Lưu đồ giải thuật chính của chương trình

Bắt đầu Cài đặt ban đầu

Dữ liệu vào

Tính 4 khoảng cách nhánh Liên kết với các khoảng

cách nhánh trước đó Cộng-So sánh-Lựa chọn Lưu trữ thông tin đường

Trellis cuối ? Truy hồi Dữ liệu ra Kết thúc Đ S

Khối cài đặt ban đầu thiết lập những thông số cho bộ mã giống như bên phần mã chập, đồng thời nhận các bit ngõ vào từ kênh truyền. Bảng trạng thái tiếp theo cũng được tính toán trước và lưu vào bộ nhớ ở khối này.

Sau đó, với mỗi xung bộ giải mã sẽ tính toán 4 khoảng cách nhánh Hamming hoặc Euclidean (gọi chung là khoảng cách), phụ thuộc vào chế độ quyết định cứng hay mềm đã lựa chọn ban đầu. Với mỗi trạng thái, khối Cộng-So sánh-Lựa chọn (ACS) tính toán hai khoảng cách đường, so sánh và lựa chọn ra đường có khoảng cách bé nhất. Tại thời điểm này, bộ giải mã cũng lưu lại các thông số tích lũy cho trạng thái.

Giống như mã chập, sơ đồ trellis được xây dựng, trên sơ đồ này, các điểm truyền được đánh dấu với các thông số tương tứng như thông số đường và trạng thái trước đó. Khi tất cả các bit vào đã được nhận, sơ đồ trellis đã xây dựng xong, tính toán tất cả các thông số tích lũy, dựa vào bẳng tích lũy bộ giữa mã tìm đường tồn tại, kết hợp giữa đường tồn tại và bảng trạng thái tiếp theo bộ giải mã sẽ tìm ra chuỗi bit ban đầu.

Hình 4.6: Lưu đồ giải thuật bộ giải mã Sau đây là lưu đồ chi tiết hơn cho bộ giải mã Viterbi

Tính Thông số nhánh Dữ liệu vào Cộng So sánh Lựa chọn Lưu trữ thông số đường

Truy hồi - Tìm đường tối ưu nhất

Vào 3 bit Quyết định cứng / mềm Tính khoảng cách Euclidean 3 bit 3 bit Chọn chế độ Mềm Cứng Vào 1 bit Tính khoảng cách Hamming 1 bit 1 bit

input0 input1 input0 input1

Quyết định cứng / mềm Chọn chế độ

Các khoảng cách

Dist_00 Dist_01 Dist_10 Dist_11

So Sánh

+ +

Lưu trữ thông số tích lũy

Trellits Cuối ?

Bộ nhớ lưu trữ trạng thái tiếp theo và ngõ ra Dữ liệu ra

Dữ liệu ra Truy hồi tìm đường tồn tại

S

Đ S

Trước khi thực hiện giải mã, bộ giải mã phải được cài đặt chế độ quyết định cho giải mã từ bên ngoài. Với mỗi chế độ, sẽ có cách tính khoảng cách nhánh khác nhau, Hamming (tương ứng với quyết định cứng) hay Euclidean (tương ứng với quyết định mềm).

Khối tính khoảng cách Hamming

Lượng tử 1bit 1 bit vào Lượng tử 1bit 1 bit vào 1 b it Bit chuẩn

Giống nhau ? Giống nhau ?

Khoảng cách = 0 Đ Khoảng cách = 1 S Khoảng cách = 0 Khoảng cách = 1 Đ S + Khoảng cách Hamming 1 b it

Hình 4.8: Lưu đồ tính khoảng cách Hamming

Như đã trình bày trong phần trước, các bit nhận được ở bộ thu sẽ được lượng tử với 1 bit, khoảng cách Hamming được tính dựa trên sự khác nhau giữa bit thu được và bit chuẩn tương ứng 00, 01, 10, 11. Sau khi qua khối tính khoảng cách Hamming, kết quả được đưa đến khối ACS để tìm ra đường tồn tại.

Theo sơ đồ trên, mặc dù khối cộng có 4 ngõ vào, tuy nhiên tại 1 thời điểm, chỉ có 2 ngõ vào tương ứng với giá trị khi so sánh sự giống nhau của bit thu được và bit chuẩn.

Khối tính khoảng cách Euclidean

Lượng tử 3 bit (Y) 1 bit vào

Lượng tử 3 bit (Y) 1 bit vào 3 b it 3 b it Bit chuẩn (X) + Khoảng cách Euclidean (X – Y )(X – Y ) (X – Y )(X – Y )

Hình 4.9: Lưu đồ giải thuật tính khoảng cách Euclidean

Khi chế độ lựa chọn là quyết định mềm thì bộ giải mã sẽ tính toán khoảng cách Euclidean thay cho khoảng cách Hamming. Lý thuyết về việc tính toán khoảng cách Euclidean đã được trình bày ở phần trước.

Kết quả tính toán khoảng cách Hamming hay Euclidean đều được lưu vào 1 biến duy nhất tương ứng với bit chuẩn (00, 01, 10, 11). Các giá trị này được so sánh với nhau để tìm ra khoảng cách có giá trị nhỏ nhất. Các thông số liên quan đến giá trị nhỏ nhất này được lưu trữ bào bộ nhớ để phục vụ cho quá trình truy hồi sau này.

Khối trạng thái tiếp theo

Khi vừa cấp nguồn, bộ giải mã sẽ thực hiện tính toán và lưu trữ một bảng bao gồm các giá trị của ngõ ra và giá trị tiếp theo tương ứng với tất cả các giá trị ngõ vào. Bảng này gọi là bảng trạng thái tiếp theo. Bảng trạng thái tiếp theo được sử dụng kết hợp với giá trị của đường tối ưu để tìm ra chuỗi bit ban đầu.

Việc tạo ra các giá trị tiếp theo giống như tạo mã chập cho các giá trị ngõ vào được cho trước. Các giá trị này nằm ở các vị trí đã được xác định, để bộ giải mã có thể truy cập đến một cách chính xác để tìm ra bit ngõ vào chính xác.

Bảng trạng thái tiếp theo của bộ mã được sử dụng trong bài báo cáo này được xác định như sau:

Bảng 4.4: Bảng trạng thái tiếp theo

Previous State

INPUT 0 INPUT 1

Next State Output Bit Next State Output Bit

00 00 00 10 11 01 00 11 10 00 10 01 01 11 10 11 01 10 11 01 Khối tính khoảng cách nhánh Vào 3 bit Tính khoảng cách Euclidean 3 bit 3 bit Vào 1 bit Tính khoảng cách Hamming 1 bit 1 bit

input0 input1 input0 input1

Quyết định cứng / mềm Chọn chế độ

Các khoảng cách

Dist_00 Dist_01 Dist_10 Dist_11

Hình 4.10: Lưu đồ khối tính khoảng cách nhánh

Tương ứng với mỗi cặp bit vào, bộ giải mã tính ra 4 khoảng cách nhánh tương ứng với các cặp bit chuẩn 00, 01, 10, 11.

Khối cộng so sánh lựa chọn + Dist_00 Bảng thông số tích lũy + Dist_11 < 0 1

Hình 4.11: Lưu đồ khối ACS

Khoảng cách nhánh tại trrạng thái hiện tại được cộng dồn với giá trị đã tích lũy trước đó trên cùng đường đi của sơ đồ trellis. Sau khi cộng, bộ giải mã sẽ so sánh 2 kết quả cộng trên, giả sử tại thời điểm này, hai kết quả này bằng nhau, bộ so sánh sẽ tiếp tục dịch lên một trạng thái và tiến hành so sánh lần thứ hai, lúc này bộ giải mã sẽ tìm ra giá trị nhỏ nhất, từ đó bộ so sánh truy ngược lại và xác định giá trị lựa chọn ở trạng thái trước. Giá trị sau khi được lựa chọn sẽ được lưu vào bảng tích lũy, bảng này sẽ phục vụ cho việc tìm đường tồn tại sau này.

Khối truy hồi

Tăng trạng thái lên 1

So sánh các khoảng cách nhánh tích lũy trong trạng

thái Trạng thái 0

Trạng thái cuối ? Lưu lại khoảng cách nhỏ

nhất

S

Đ

Đường tối ưu nhất

Từ trạng thái đầu tiên, khối truy hồi sẽ so sánh các giá trị trong bảng tích lũy để tìm ra đường tồn tại tối ưu nhất.

Khối giải mã

Bảng trạng thái tiếp theo

Đường tối ưu nhất

Giống nhau ?

Dữ liệu ra

Bộ đếm

Bit 0 vào Trạng thái tiếp theo Bit 1 vào

Hình 4.13: Lưu đồ khối giải mã

Sau khi qua khối truy hồi, bộ giải mã đã tìm được đường tồn tại. Bộ giải mã sẽ tiến hành so sánh giá trị tiếp theo của đường tồn tại tại thời điểm hiện tại với giá trị của đường tồn tại tại thời điểm sau một trạng thái. Với mỗi lần so sánh, bộ giải mã sẽ thử với một trong hai bit vào là 0 hay 1, so sánh sự giống nhau tương ứng với giá trị vào là 0 hay 1, bộ giải mã sẽ xác định được bit được mã hóa ban đầu ở khối phát là 0 hay 1.

Sau khi hoàn thành so sánh tất cả các trạng thái, bộ giải mã đã xác định được chuỗi bit ban đầu.

Một phần của tài liệu đồ án thực hiện bộ giải mã viterbi trên fpga (Trang 76 - 83)