Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC BÁCH KHOA



BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH

ĐỀ TÀI 6: MÃ HAMMING

GV:

LỚP

NHÓM
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC BÁCH KHOA



BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH

ĐỀ TÀI 6: MÃ HAMMING

GV:

LỚP

NHÓM
* Thành viên nhóm:

Họ và tên MSSV
Mục lục
Chương I: CƠ SỞ LÝ THUYẾT....................................................................................... 4
1. Mã hóa kênh truyền ......................................................................................... 4
2. Mã Hamming .................................................................................................... 4
Chương II: CHƯƠNG TRÌNH MATLAB SỬA LỖI DÙNG MÃ HAMMING ...................... 8
1. Chương trình Matlab ....................................................................................... 8
2. Kết quả: ............................................................................................................. 9
Chương III: KẾT LUẬN ................................................................................................. 9
Tài liệu tham khảo .................................................................................................... 10
Chương I: CƠ SỞ LÝ THUYẾT
1. Mã hóa kênh truyền
Trong truyền dẫn, thông tin được truyền và nhận dưới dạng các bit, gồm các số 0
và 1. Tín hiệu truyền đi luôn bị ảnh hưởng bởi nhiễu. Sự có mặt của nhiễu gây nên hiện
tượng sai lệch thông tin: bit 0 thành bit 1 hoặc bit 1 thành bit 0. Lỗi này có thể xảy ra trên
một hoặc nhiều bit. Do đó kênh truyền cần được mã hóa để phía thu tín hiệu có thể phát
hiện và sửa lỗi.

Ý tưởng cơ bản của mã hóa kênh là nếu các bit phát qua kênh bị ảnh hưởng bởi
nhiễu thì mã hóa sẽ làm giảm ảnh hưởng của nhiễu đến các bit đó hơn. Nguyên tắc chung
là thêm một số bit dư vào dữ liệu gốc, phía thu tín hiệu sẽ dùng các bit này để phát hiện
và có thể sửa lỗi.

2. Mã Hamming
a. Lịch sử

Trong những năm thập niên 1940, làm việc tại Bell Labs trên máy tính Bell Model
V, một máy điện cơ dùng relay với tốc độ rất chậm, mất vài giây đồng hồ cho một chu kỳ
máy. nhập liệu được cho vào máy bằng những thẻ đục lỗ (punch cards) và hầu như máy
luôn luôn gây lỗi trong khi đọc. Trong những ngày cuối tuần, khi người điều khiển
không có mặt, mỗi khi có lỗi xảy ra, máy tính bỏ qua chương trình đang chạy và chuyển
sang công việc khác.

Hamming thường làm việc trong những ngày cuối tuần và ông ngày càng trở nên
bực tức mỗi khi ông phải khởi động lại các chương trình từ đầu, do chất lượng kém,
không đáng tin cậy của bộ máy đọc các thẻ đục lỗ. Trong những năm tiếp theo ông dồn
tâm lực vào việc xây dựng hàng loạt các thuật toán có hiệu quả cao để giải quyết vấn đề
sửa lỗi. Năm 1950, ông đã công bố một phương pháp mà hiện nay được biết đến là mã
Hamming.

4
Mã Hamming có thể phát hiện một bit hoặc hai bit bị lỗi. Một số mã Hamming phổ
biến là Hamming(11,7), Hamming(7,4), Hamming(8,7), Hamming(3,1).

b. Mã Hamming(7,4)

Một ví dụ của mã Hamming(7,4) :

Hamming(7,4) là một mô hình của một mã 7-bit, bao gồm 4 bit dữ liệu (3,5,6,7) và
3 bit chẵn lẻ (1,2,4), bit kiểm tra chẵn lẻ (parity) là bit được thêm vào chuỗi bit sao cho
tổng số bit 1 là chẵn (bit kiểm tra chẵn) hoặc lẻ (bit kiểm tra lẻ). Sự liên quan của các bit
dữ liệu với bit chẵn lẻ được biểu hiện bằng các phần của hình tròn gối lên nhau. Bit thứ
1 kiểm tra bit thứ (3, 5, 7), trong khi bit 2 kiểm tra bit (3, 6, 7). Lưu ý, các vị trị (1,2,4
v.v.) thực ra là vị trí 20 , 21 , 22 v.v.

5
Hình sau trình bày quá trình tạo mã Hamming(7,4) với bit kiểm tra chẵn;

* Sử dụng ma trận để tạo và giải mã Hamming(7,4):

Đối với mã Hamming (7,4), chúng ta sử dụng hai ma trận sau:

Để truyền gửi dữ liệu, ta nhóm các bit dữ liệu mà mình muốn gửi thành một vectơ.
Lấy ví dụ, nếu dữ liệu là "1011" thì vectơ của nó là:

6
Giả sử ta muốn truyền gửi dữ liệu trên, ta nhân He và p thu được r, r chính là dữ liệu
được mã hóa Hamming(7,4). Sau khi phép nhân hoàn thành, khác với cách giải thích ở
phần trước (các bit chẵn lẻ nằm ở vị trí 2k ), trật tự của các bit trong từ mã (codewords)
ở đây khác với cách bố trí đã nói (các bit dữ liệu nằm ở trên, các bit kiểm chẵn lẻ nằm ở
dưới).

Khi muốn thu dữ liệu, ta sẽ nhận Hd với r để kiểm tra có lỗi hay không:

Ta thu được một vectơ 3 phần tử, ta xem vectơ này là một số hệ nhị phân, đổi số
này từ hệ nhị phân thành số i trong hệ thập phân. Số i này chỉ ra lỗi xuất hiện ở bit thứ i
trong chuỗi 7 bit được truyền đi, trong ví dụ trên 0002 = 010 chỉ ra rằng chuỗi bit không
xảy ra lỗi khi truyền. Ví dụ trong trường hợp khác ta thu được các bit dư 1012 = 510 thì
ta biết rằng bit thứ 5 đã bị lỗi từ đó có thể sửa sai do 1 bit bị đảo lộn.

Sử dụng mã Hamming này và không thêm bit chẵn lẻ bổ sung thì ta phát hiện và
sửa được lỗi do 1 bit gây ra, tuy nhiên với lỗi do 2 bit gây ra thì ta không phát hiện được.

7
Chương II: CHƯƠNG TRÌNH MATLAB SỬA LỖI DÙNG MÃ
HAMMING
1. Chương trình Matlab
p_c = input('nhap du lieu can muon ma hoa:');
He = [1 0 0 0;...
0 1 0 0;...
0 0 1 0;...
0 0 0 1;...
0 1 1 1;...
1 0 1 1;...
1 1 0 1];
r_c = He*p_c';
r_c = mod(r_c,2);
fprintf('du lieu da duoc ma hoa: [');
fprintf('%g ', r_c);
fprintf(']\n');
r_e = input('nhap du lieu can kiem tra:');
Hd = [0 0 0 1 1 1 1;...
0 1 1 0 0 1 1 ;...
1 0 1 0 1 0 1];
check = Hd*r_e';
check = mod(check,2);
i = check(3)+check(2)*2+check(1)*4;
if i==0
fprintf('du lieu khong co loi\n');
else
r_e(i) = ~r_e(i);
fprintf('du lieu xay ra loi o bit thu %.0f\ndu lieu sau
khi sua loi: [',i);
fprintf('%g ', r_e);
fprintf(']\n');
end

8
2. Kết quả:

- Nhập dữ liệu gốc: 1 0 1 1 thu được dữ liệu mã hóa là: 1 0 1 1 0 1 0 => đúng yêu cầu
- Nhập dữ liệu cần kiểm tra lỗi: 1 0 0 1 0 1 0 (đổi bit thứ 3) => chương trình phát hiện và
sửa được lỗi.

Chương III: KẾT LUẬN


Vậy đề tài đã trình bày được cơ sở lý thuyết của mã Hamming, cách tạo mã Hamming,
xây dựng được chương trình tạo mã, phát hiện và sửa lỗi mã Hamming. Kết quả đúng
như lý thuyết đã đề cập

9
Tài liệu tham khảo

[1]. L. Garcia and C. Penland, MATLAB Projects for Scientists and Engineers, Prentice
Hall, Upper Saddle River, NJ, 1996, http://www.algarcia.org/fishbane/fishbane.html.

[2]. Mã hamming, Wikipedia, https://vi.wikipedia.org/wiki/M%C3%A3_Hamming

[3]. The MathWorks (2018), MATLAB Documentation,


https://www.mathworks.com/help/matlab/, Truy cập 08/12/2018

10

You might also like