Upload
nguyen-ngoc-tu
View
233
Download
0
Embed Size (px)
Citation preview
Viterbi decoder Nguyễn Ngọc Tú
Viterbi decode
Nội dung:I. Giới thiệuII. Lý thuyết giải thuật III. Thiết kế IV. Nhận xét , đánh giá
Viterbi decode
Nội dung:I. Giới thiệuII. Lý thuyết giải thuật III. Thiết kế IV. Nhận xét , đánh giá
Viterbi decode
• Viterbi là giải thuật giải mã tích chập được nhà bác học Andrew James Viterbi công bố và phân tích từ năm 1967.
Viterbi decode
• Thuật toán viterbi được sử dụng tại hầu hết các hệ thông thông tin trên vũ trụ , tên lửa dẫn đường và các hệ thống TTDĐ tế bào
Viterbi decode
• Ưu điểm : giảm bớt tính toán , ngắn gọn , bảo mật , có khả năng sửa sai …
• Nhược : chỉ dùng trong kênh ít nhiễu , chỉ sửa được số lỗi < số bộ đệm …
Viterbi decode
Nội dung:I. Giới thiệuII. Lý thuyết giải thuật III. Thiết kế IV. Nhận xét , đánh giá
Viterbi decode
• Thuật toán viterbi dựa vào việc tìm đường đi có khả năng nhất
Viterbi decode
• Một bộ giải mã viterbi chỉ giải mã được cho 1 bộ mã hóa tích chập.
• Thuật toán dựa trên việc tính toán so sánh khoảng cách hamming giữa từ mã và các trạng thái của bộ mã hóa tích chập.
Viterbi decode
Nội dung:I. Giới thiệuII. Lý thuyết giải thuật III. Thiết kế IV. Nhận xét , đánh giá
Viterbi decode
Bộ lặp mã chập với chiều dài cưỡng bức K = 3 , tốc độ k/n = ½
Viterbi decode
• Sơ đồ khối :
top-block diagram
textHamming ACS Save path
clk
rst
in Sig_out
Viterbi decode
sơ đồ khối với các tín hiệu vào ra
hamming savepathACS
Kch_aa[1:0]
Kch_ab[1:0]
Kch_bc[1:0]
Kch_bd[1:0]
Kch_ca[1:0]
Kch_cb[1:0]
Kch_dc[1:0]
Kch_dd[1:0]
Kch_aa[1:0]
Kch_ab[1:0]
Kch_bc[1:0]
Kch_bd[1:0]
Kch_ca[1:0]
Kch_cb[1:0]
Kch_dc[1:0]
Kch_dd[1:0]
Path_a[8:0]Path_a[8:0]
Path_b[8:0]Path_b[8:0]
Path_c[8:0]Path_c[8:0]
Path_d[8:0]Path_d[8:0]
Clk
Clk Clk
RstRst
Rst
In[1:0]
Sig_out[5:0]
Viterbi decode
Khối hamming
hamming
Kch_aa[1:0]
Kch_ab[1:0]
Kch_bc[1:0]
Kch_bd[1:0]
Kch_ca[1:0]
Kch_cb[1:0]
Kch_dc[1:0]
Kch_dd[1:0]
Clk
Rst
In[1:0]
Viterbi decode
Giải thuật :
Nhập đầu vào
Tính toánkch_aa <= temp1[1]+temp1[0];kch_ca <= temp2[1]+temp2[0];kch_ab <= temp3[1]+temp3[0];kch_cb <= temp4[1]+temp4[0];kch_bc <= temp5[1]+temp5[0];kch_dc <= temp6[1]+temp6[0];kch_bd <= temp7[1]+temp7[0];kch_dd <= temp8[1]+temp8[0];
Đưa tín hiệu ra
temp1 <= in^c_aa;temp2 <= in^c_ca;temp3 <= in^c_ab;temp4 <= in^c_cb;
temp5 <= in^c_bc;temp6 <= in^c_dc;temp7 <= in^c_bd;temp8 <= in^c_dd;
Viterbi decode
Mô phỏng :
Viterbi decode
Khối ACS
ACS
Kch_aa[1:0]
Kch_ab[1:0]
Kch_bc[1:0]
Kch_bd[1:0]
Kch_ca[1:0]
Kch_cb[1:0]
Kch_dc[1:0]
Kch_dd[1:0]
Path_a[8:0]
Path_b[8:0]
Path_c[8:0]
Path_d[8:0]
Viterbi decode
Giải thuật : Start
End
d_aa<d_ca
p_a <= d_aa;path_a[6:1] <= path_a[5:0];
p_a <= d_ca;path_a[6:1] <= path_c[5:0];
d_aa = kch_aa + p_a;d_ca = kch_ca + p_c;
Viterbi decode
Mô phỏng
Viterbi decode
Khối savepath
savepath
Path_a[8:0]
Path_b[8:0]
Path_c[8:0]
Path_d[8:0]
Clk
Rst
Sig_out[5:0]
Viterbi decode
Giải thuật Start
End
count == 11
sig_out [5:0] <= path_a[8:2];
count <= count + 1
Viterbi decode
Mô phỏng
Viterbi decode
Nội dung:I. Giới thiệuII. Lý thuyết giải thuật III. Thiết kế IV. Nhận xét , đánh giá
Viterbi decode
1. Nhận xét:Đến chu kì thứ 12 sau khi nhập đầu vào sẽ cho ra đầu
ra Chỉ sửa sai được 1 bit lỗiChỉ giải mã được cho 1 bộ mã tích chậpChưa giải quyết được vấn đề tràn bộ nhớ
Viterbi decode
2. Kinh nghiệm thu được : Kiến thức về bộ giải mã viterbi Các bước thiết kế Sử dụng các thuật toán hợp lý Cách test , ghép nối các module Sử dụng phần mềm
Ý kiến đóng góp & hỏi đáp
The endThank you for listenning