Tải bản đầy đủ (.pdf) (14 trang)

Báo cáo thí nghiệm thông tin số và truyền số liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (199.04 KB, 14 trang )

Báo cáo Thí nghiệm Thông tin số & Truyền số liệu
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN TỬ – VIỄN THÔNG

BÁO CÁO THÍ NGHIỆM

THÔNG TIN SỐ & TRUYỀN SỐ LIỆU

GVHD: Nguyễn Thanh Sơn
SVTH : Tổ 6
Nhóm : 09A+B

Đà Nẵng – 2009
- Trang 1 -


Báo cáo Thí nghiệm Thông tin số & Truyền số liệu

SINH VIÊN THỰC HIỆN
Tổ 6
TT
1
2
3
4
5
6

Họ và tên
Đặng Thị Nguyên Thảo


Nguyễn Thị Bảo Trâm
Đặng Thanh Quang
Trần Phước Thịnh
Trương Thị Kim Ngà
Champakham Amphavanh

Lớp
06DT1
06DT1
06DT1
06DT1
06DT2
06DT1

Nhóm
9B
9B
9A
9B
10A
10A

Ghi chú



NỘI DUNG BÁO CÁO
1. File PDF Báo cáo Thí nghiệm Thông tin số và Truyền số liệu: BaocaoTN.pdf
2. File MATLAB: lab4.m


- Trang 2 -


Báo cáo Thí nghiệm Thông tin số & Truyền số liệu

BÁO CÁO THÍ NGHIỆM THÔNG TIN SỐ VÀ TRUYỀN SỐ LIỆU
I. Mục đích thí nghiệm:
Thí nghiệm nhằm tìm hiểu:
- Mô phỏng hoạt động của hệ thống thông tin số có nhiễu.
- Mối quan hệ giữa tỉ số tín hiệu trên nhiễu SNR và xác suất lỗi.
- Mã điều khiển sửa lỗi có thể sửa bit lỗi và giảm xác suất lỗi với SNR cố định.
II. Phần lý thuyết :
1. Sơ đồ khối của CD player :

D/A

CODER

TX_CODED

ƒ

RX_CODED

SRC_CODED
D

DEST_CODED

Nhiễu


TRANSMITTER

DECODER

DEST_DECODED

RECEIVER

2. Các nguồn nhiễu ảnh hưởng đến hệ thống :
Trong CD player thì nguồn nhiễu có thể xuất phát từ các nguồn gốc sau đây:
- Lỗi bit trên mặt đĩa (do bị trầy xước, lỗi sao chép, …)
- Lỗi do chuyển động nhiệt của các electron.
- Lỗi lượng tử hóa
3. Mã khối Hamming (7,4):
3.1 Định nghĩa:
- Mã khối được đặc trưng bởi 2 số nguyên n và k, và một ma trận sinh hay đa thức sinh. Từ mã n
bit được tạo ra duy nhất từ k bit tin và (n-k) là số bit kiểm tra.
- Mã khối (7,4) có nghĩa là có 4 bit tin, ký hiệu bởi vector m, được mã hoá thành 7-bit được ký
hiệu bởi vector x, theo như bảng sau đây:
Vector tin m
Từ mã x
Vector tin m
Từ mã x
0000
0000000
1000
1101000
0001
1010001

1001
0111001
0010
1110010
1010
0011010
0011
0100011
1011
1001011
0100
0110100
1100
1011100
0101
1100101
1101
0001101
0110
1000110
1110
0101110
0111
0010111
1111
1111111
Với: x = m G (modulo 2)
3.2 Ma trận sinh G:
1
0

G=
1

1

1
1
1
0

0
1
1
1

1
0
0
0

- Trang 3 -

0
1
0
0

0
0
1

0

0
0
0

1


Báo cáo Thí nghiệm Thông tin số & Truyền số liệu
3.3 Ma trận kiểm tra H:
1 0 0 1 0 1 1 
H = 0 1 0 1 1 1 0
0 0 1 0 1 1 1
3.4 Giải mã sửa lỗi:
- Sau khi vector từ mã đi qua một hệ thống có nhiễu thì vector nhận được sẽ là:
y = x + e (modulo 2)
Bên thu sẽ giải mã để tái tạo lại các bit tin ban đầu. Quá trình này sẽ tạo ra vector syndrome s để
xác định bit lỗi:
s = y HT (modulo 2)
Với HT là ma trận chuyển vị của ma trận H ở trên:
1 0 0 
0 1 0 


0 0 1 


H T = 1 1 0 
0 1 1 



1 1 1 
1 0 1 



-

-

Bảng quan hệ giữa Syndrome và vị trí bit lỗi :
Syndrome
000
100
010
001
110
011
111
101

Vị trí bit lỗi
0000000
1000000
0100000
0010000
0001000
0000100
0000010

0000001

-

Giá trị thập phân của syndrome sẽ cho biết vị trí hàng trong ma trận E có chứa vị trí bit lỗi
tương ứng:
0 0 0 0 0 0 0 
0 0 1 0 0 0 0 


0 1 0 0 0 0 0 


0 0 0 0 1 0 0

E=
1 0 0 0 0 0 0


0 0 0 0 0 0 1 
0 0 0 1 0 0 0 


0 0 0 0 0 1 0

-

Khi đó: y(corrected) = y + e (modulo 2) = x + e + e (modulo 2) = x
- Trang 4 -



Báo cáo Thí nghiệm Thông tin số & Truyền số liệu
III.
Các bước tiến hành thí nghiệm :
1. Bước 1: Tạo dãy bit nguồn chưa mã hóa : SRC_Uncoded
- Dùng hàm ”randn” để tạo ra dãy số ngẫu nhiên
• Code:
data = randn(1,bits);
• Ý nghĩa: tạo ngẫu nhiên 1 dãy dữ liệu có bits giá trị
- Sử dụng hàm để tạo ra vector hàng SRC_Uncoded từ data, giả sử đây chính là một dãy bit của
một đoạn nhạc được ghi trên CD hoặc là gửi đến một máy tính khác qua modem. ”sign”
• Code:
for i = 1:length(data)
SRC_Uncoded(i)=sign(data(i));
if(SRC_Uncoded(i)<0)
SRC_Uncoded(i)=0;
end
end

Ý nghĩa: SRC_Uncoded có độ dài bằng data, SRC_Uncoded sẽ có giá trị là 1 nếu giá trị
data tương ứng lớn hơn 0 và ngược lại thì SRC_Uncoded sẽ có giá trị 0.
⇒ Như vậy, ta đã tạo ra được vector hàng SRC_Uncoded có chiều dài là bits.
Với (Avect=2;bits=10000;)ta có 20 giá trị đầu tiên của dãy SRC_Uncoded là :
1
0
1
1
1
1
0

1
1
1 0
1
1
0
0
1
1
1
1
0


2. Bước 2: Mã hoá dãy bit nguồn SRC_Uncoded thành dãy bit SRC_Coded
- Áp dụng mã Hamming đối với dãy bit SRC_Uncoded để tạo ra dãy bit SRC_Coded
- Đầu tiên nhóm các bit trong vector SRC_Uncoded thành các nhóm 4 bit. Các nhóm 4 bit này sẽ
được mã hóa thành các nhóm 7 bit theo qui luật mã hóa như sau: mỗi nhóm 4 bit được gọi là
một vector tin m, ta lấy vector tin m này nhân với ma trận sinh G để tạo ra vector mã hóa x có
độ dài 7 bit.
• Code :
SRC_Coded = zeros(1, 7/4*length(SRC_Uncoded));
j = 1;
for k = 1:4:length(SRC_Uncoded)
SRC_Coded(j:j+6)=SRC_Uncoded(k:k+3)*G;
SRC_Coded(j:j+6)=mod(SRC_Coded(j:j+6),2);
j=j+7;
end

Ý nghĩa:

+ Đầu tiên ta khởi tạo dãy SRC_Coded độ dài 7/4 độ dài của dãy bit SRC_Coded
+ Nhóm từng 7 bit của SRC_Coded và gán cho nó giá trị là nhóm 4 bit tương ứng của
SRC_Uncoded nhân với ma trận sinh G
+ Dùng hàm ”mod” cho 2 để chuyển các giá trị tính được thành bit 0 hoặc 1.
- Kết quả sau khi mã hóa: trường hợp (Avect=2;bits=10000;)ta có 35 bit đầu tiên của dãy
SRC_Coded đã được tạo ra từ 20 bit đầu của SRC_Uncoded là :
1
0
0
1
0
1
1
0
0
0
1
1
0
1
0
0
0
1
1
0
1
0
1
1

1
0
0
1
0
1
0
1
1
1
0
⇒ Kết quả này hoàn toàn phù hợp với bảng mã ở phần Lý thuyết đã đưa ra.
- Trả lời câu hỏi:
Có giả thiết cho rằng như ở trên ta mã hoá từng nhóm 4 bit nên có thể là dòng dữ liệu này mô
phỏng cho một hế thống nguồn chỉ tạo ra các nibbles dữ liệu (=4 bit). Tuy nhiên nếu dòng dữ liệu
vào là byte (hay 2-byte word) thì vẫn không có sự khác biệt nào. Vì khi mã hoá theo từng nibble
như vậy, sau khi giải mã ta sẽ khôi phục lại được các nibble đó của dòng dữ liệu chỉ gồm byte hoặc
là từ 2-byte. Do đó, dữ liệu vẫn được đảm bảo.


- Trang 5 -


Báo cáo Thí nghiệm Thông tin số & Truyền số liệu
3. Bước 3: Điều chế : TX_Uncoded và TX_Coded
- Tiếp theo ta điều chế tín hiệu TX_Uncoded và TX_Coded sử dụng phương pháp BPSK, binary
phase-shift keying
- Mục đích: chuyển dãy tín hiệu rời rạc thành tín hiệu liên tục để truyền đi.
• Code : TX_Uncoded
for i = 1:length(SRC_Uncoded)

if SRC_Uncoded(i)== 1
TX_Uncoded(i)=+A;
else
TX_Uncoded(i)=-A;
end
end

TX_Coded
for i = 1:length(SRC_Coded)
if SRC_Coded(i)== 1
TX_Coded(i)=+A;
else
TX_Coded(i)=-A;
end
end

Ý nghĩa:
+ TX_Uncoded có độ dài bằng SRC_Uncoded và mỗi giá trị của TX_Uncoded tương ứng
với SRC_Uncoded quy ước sau:
SRC_Uncoded = 0 → TX_Uncoded = -A
SRC_Uncoded = 1 → TX_Uncoded = +A
+ Thực hiện tương tự, ta cũng có dãy TX_Coded từ dãy SRC_Coded.
Kết quả ứng với trường hợp (Avect=2;bits=10000;)20 giá trị đầu tiên của TX_Uncoded
đã tạo ra là :
2 -2
2
2
2
2 -2
2

2
2 -2
2
2 -2 -2
2
2
2
2 -2


-

4. Bước 4: Tạo nhiễu
- Sử dụng hàm ”randn” để tạo ra tín hiệu nhiễu ngẫu nhiên có chiều dài bằng chiều dài của
dãy bit TX_Uncoded.
• Code :
noise = randn(1,length(TX_Uncoded));
• Ý nghĩa :
tạo tín hiệu nhiễu với độ dài bằng độ dài TX_Uncoded.
-

-

Kết quả ứng với trường hợp (Avect=2;bits=10000;)20 giá trị
TX_Uncoded đã tạo ra là :
-0.3523
-0.0651
-2.0183
0.8706
-1.9353

-1.3341
-0.3318
-0.1216
0.8147
-0.9353
-0.1565
0.3706
2.1644
-0.4792
-0.4437
1.0424
0.3744
-0.4300
1.5192
-1.2724
Kết quả ứng với trường hợp (Avect=2;bits=10000;)35 giá trị
TX_Coded là :
0.1356
0.1030
0.5155
0.8807
-0.4785
0.7491 -0.2994 -0.9914
0.9222
0.7642
-0.4548 -1.5414
0.4495 -1.1081
0.9412
0.4134 -1.9976 -1.1263 -0.7549
-0.1229

-1.8075 -0.9063
0.8070
0.7001
1.1902
- Trang 6 -

đầu tiên của nhiễu đối với

đầu tiên của nhiễu đối với
0.8674
2.0945
-2.0847
0.0754
-0.5155

1.6484
-0.7597
0.1513
-1.3739
0.5092


Báo cáo Thí nghiệm Thông tin số & Truyền số liệu
- Sử dụng hàm ”hist” để vẽ biểu đồ nhiễu. Biểu đồ này sẽ cho biết có bao nhiêu mẫu nhiễu
xuất hiện trong một dải giá trị
• Code :
if A_index == 1
figure;
hist(noise, 20)
Noise_histogram_values = hist(noise, 20);

title('Noise diagram');
end

-

• Ý nghĩa : Xuất ra biểu đồ các mẫu nhiễu.
Tín hiệu thu được: cộng thêm nhiễu vào tín hiệu
RX_Coded = TX_Coded + noise;
• Code :
RX_Uncoded = TX_Uncoded + noise;

-

-

-

Kết quả ứng với trường hợp
là :
1.6477
-2.0651
0.0647
0.6659
2.8147
1.0647
4.1644
-2.4792
2.3744
1.5700


(Avect=2;bits=10000;)20 giá trị đầu tiên của RX_Uncoded
-0.0183
-2.3318
-2.1565
-2.4437
3.5192

2.8706
1.8784
2.3706
3.0424
-3.2724

Kết quả ứng với trường hợp (Avect=2;bits=10000;)20 giá trị đầu tiên của RX_Coded là :
2.1356 -1.8970 -1.4845
2.8807 -2.4785
2.8674
3.6484
-1.2509 -2.2994 -2.9914
2.9222
2.7642
0.0945
1.2403
-2.4548 -3.5414 -1.5505
0.8919
2.9412 -4.0847
2.1513
-1.5866
0.0024
0.8737

1.2451 -2.1229 -1.9246
0.6261
-3.8075
1.0937 -1.1930
2.7001
3.1902
1.4845 -1.4908
So sánh RX_Uncoded và TX_Uncoded ở bước 3:
Từ kết quả trên ta thấy :
RX_Uncoded = TX_Uncoded + Nhiễu
Kết quả này cũng hoàn toàn tương tự cho RX_Coded và TX_Coded.

5. Bước 5 : Giải điều chế để tạo dãy bit DEST_Uncoded và DEST_Coded
- Ở bước này, bên thu sẽ khôi phục tín hiệu tương tự trở lại thành các tín hiệu rời rạc thông qua
bộ chuyển đổi A/D gọi là bộ giải điều chế. Tức là các bit dữ liệu từ tín hiệu RX nhận được
chuyển đổi thành dãy tín hiệu DEST.
- Sử dụng bộ detector có mức ngưỡng là 0V để khôi phục bit dữ liệu : Nếu RX>= 0 thì giải điều
chế được DEST là bit 1, RX<0 giải điều chế được DEST là bit 0.
- Tạo ra DEST_Uncoded từ RX_Uncoded :
for i = 1:length(RX_Uncoded)
• Code:
DEST_Uncoded(i)=sign(RX_Uncoded(i));
if(DEST_Uncoded(i)<0)
DEST_Uncoded(i)=0;
end
end

-

Tương tự, tạo ra DEST_Coded từ RX_Coded :

• Code:
for i = 1:length(RX_Coded)
DEST_Coded(i)=sign(RX_Coded(i));
if(DEST_Coded(i)<0)
DEST_Coded(i)=0;
end
end

- Trang 7 -


Báo cáo Thí nghiệm Thông tin số & Truyền số liệu
-

Với (Avect=2;bits=10000;)ta có 20 giá trị đầu tiên của dãy DEST_Uncoded là :
1
1
0
1
1
1
0
1
1
0
0
1
1
0
0

1
1
1
1
0
So sánh DEST_Uncoded với tín hiệu ban đầu SRC_Uncoded, nhiễu và nhận xét:
Ta thấy, trong 20 bit đầu tiên của DEST_Uncoded thì bit thứ 3 là khác so với dữ liệu nguồn
SRC_Uncoded. Mẫu nhiễu thứ 3 là nguyên nhân gây ra lỗi ở nơi thu. Tại vị trí bit thứ 3, phát đi
là TX_Uncoded : 2. Do xuất hiện nhiễu âm lớn là : – 2.0183 nên tín hiệu thu trở thành 2 –
2.0183 = – 0.0183. Do đó, bit này ban đầu phải là 1, nhưng sau khi cộng nhiễu thì sẽ cho ra bit
0, do đó khi thu gây ra lỗi tại bit này.

6. Bước 6: Giải mã tạo ra DEST_Decoded
- Đây là quá trình giải mã, ngược lại với bước 2 (mã hóa), tức là dãy bit nhận được sẽ được
nhóm thành các nhóm 7 bit, để khôi phục lại 4 bit tin. Tuy nhiên, để áp dụng được khả năng
giải mã sửa lỗi của mã Hamming thì cần xác định được có lỗi bit xảy ra hay không bằng cách
sử dụng ma trận kiểm tra parity H. Nếu có xuất hiện bit lỗi thì dùng syndrome mà nó tạo ra để
xác định bit lỗi và sửa nó. Như vậy, giai đoạn này sẽ làm nhiệm vụ sửa lỗi và khôi phục vector
tin tức.
j = 1;
• Code :
for k = 1:7:length(DEST_Coded)
% Compute syndrome
syndrome=mod(DEST_Coded(k:k+6)*HT,2);
% Compute error index in the table based on syndrome
synd_int = bin2dec(int2str(syndrome));
e = E(synd_int+1,:);
% Reconstruct an original signal by adding error
% to the received signal
corrected_y = mod(DEST_Coded(k:k+6)+ e,2);

DEST_Decoded(j:j+3) = corrected_y(4:7);
j = j + 4;
end

-

• Ý nghĩa:
+ Đầu tiên nhóm từng 7 bit của DEST_Coded rồi tính syndrome bằng cách nhân từng nhóm 7
bit với ma trận HT (chuyển vị của ma trận kiểm tra H), sau đó lấy modulo 2.
+ syn_int : số thập phân tương ứng với chuỗi bit triệu chứng syndrome vừa tìm được, trong đó:
int2str(syndrome) : chuyển vector syndrom sang chuỗi nhị phân.
bin2dec
: chuyển chuỗi nhị phân sang số thập phân.
→ khi đó, chỉ số (index) của vector lỗi tương ứng với triệu chứng syndrome là syn_int + 1 (vì
chỉ số vector lỗi từ 1 đến 8, syn_int có giá trị từ 0 đến 7)
+ e : là vector lỗi cần tìm, được xác định bằng cách lấy vector hàng trong ma trận lỗi E, với
chỉ số hàng là syn_int+1.
+ corrected_y : vector 7 bit sau khi đã được sửa lỗi từ vector 7 bit (k → k+6) trích từ dòng bit
chưa giải mã DEST_Coded.
+ Cuối cùng là giải mã để được 4 bit tin trong dòng bit được giải mã DEST_Decoded bằng
cách tách lấy 4 bit cuối của vector 7 bit corrected_y (bit 4 đến 7).
Với (Avect=2;bits=10000;)ta có 20 giá trị đầu tiên của dãy DEST_Decoded là :
1
1
0
1
1
1
0
1

1
0
1
1
1
0
0
1
1
1
1
0
So sánh với dòng bit nguồn SRC_Uncoded: 20 bit đầu của DEST_Decoded hoàn toàn trùng
với 20 bit đầu của SRC_Uncoded ⇒ giải mã thành công.
- Trang 8 -


Báo cáo Thí nghiệm Thông tin số & Truyền số liệu
- Trả lời câu hỏi: Tại sao vẫn còn bit lỗi khi dùng mã khối Hamming (7,4) ?
Xét toàn bộ dòng bit trong trường hợp được mã hóa và giải mã thì kết quả nơi nhận có ít lỗi
hơn so với khi không mã hóa. Tuy nhiên, sau khi đã mã hóa và giải mã với mã khối Hamming
(7,4) thì vẫn tồn tại 1 số lỗi nhất định. Nguyên nhân là do đây là mã Hamming (7,4) nên nếu
nhóm 7 bit có lỗi thì chỉ sửa được lỗi trong trường hợp xảy ra 1 bit lỗi. Trường hợp có 2 bit lỗi
trở lên thì bị trùng triệu chứng với trường hợp xảy ra 1 bit lỗi nào đó hoặc trùng triệu chứng
không có lỗi nên sẽ không thể sửa lỗi được.
7. Bước 7: Tính xác suất lỗi
- Gọi pr_error_un, pr_error_en lần lượt là vector xác suất lỗi trong trường hợp không mã
hóa, mã hóa.
- Trong đó, mỗi phần tử trong pr_error_un, pr_error_en là xác suất lỗi tương ứng với các giá trị
của biên độ tín hiệu truyền đi A trong vector biên độ tín hiệu Avect. Vậy, pr_error_un,

pr_error_en có độ dài bằng độ dài vector Avect.
- Gọi uncoded_errors, coded_errors lần lượt là tổng số lỗi của dòng bit thu trong trường hợp
không mã hóa, mã hóa trong mỗi trường hợp biên độ A.
- Cơ sở và mã code tính uncoded_errors và coded_errors :
+ Tính uncoded_errors:
Ta xor 2 vector SRC_Uncoded và DEST_Uncoded bằng cách cộng 2 vector với nhau
sau đó lấy modulo 2, kết quả là 1 vector có bit là 1 tại vị trí SRC_Uncoded và
DEST_Uncoded có bit khác nhau, và ngược lại
Sau đó ta tính tổng các giá trị trong vector tổng modulo 2 đó, giá trị thu được chính là
số lỗi bit.
+ Tính coded_errors:
Ta cũng làm tương tự như tính uncoded_errors cho 2 dòng bit SRC_Coded và
DEST_Coded để thu được coded_errors.
• Code:
uncoded_errors = sum(mod(SRC_Uncoded+DEST_Uncoded,2));
coded_errors = sum(mod(SRC_Uncoded+DEST_Decoded,2));

-

Cơ sở và mã code tính pr_error_un và pr_error_en :
+ Với mỗi trường hợp của biên độ A, ta thêm 1 phần tử xác suất lỗi vào 2 vector trên.
+ Đối với vector pr_error_un :
uncoded_errors
Với mỗi giá trị A, ta thêm 1 phần tử xác suất lỗi có giá trị là
vào cuối
length ( data )
vector pr_error_un đã có sẵn.
+ Đối với vector pr_error_en :
coded_errors
vào cuối

Với mỗi giá trị A, ta thêm 1 phần tử xác suất lỗi có giá trị là
length ( data )
vector pr_error_un đã có sẵn.
• Code:
pr_error_un=[pr_error_un, uncoded_errors/length(data)];
pr_error_en=[pr_error_en, coded_errors/length(data)];

-

Tính SNR:
+ SNR là vector tỉ số tín hiệu trên nhiễu, ứng với mỗi giá trị của A, ta thêm 1 phần tử có giá
trị 10lg (A^2/2) vào cuối vector SNR đã có sẵn.
• Code:
SNR=[SNR,10*log10(A^2/2)];

- Trang 9 -


Báo cáo Thí nghiệm Thông tin số & Truyền số liệu
-

Với (Avect=2;bits=10000;)giá trị của SNR, uncoded_errors và coded_errors là :
A = 2.000, SNR =
Uncoded Errors =

-

3.01 dB
232,
Coded Errors =


Với (Avect=1;bits=10000;)giá trị của SNR, uncoded_errors và coded_errors là :
A = 1.0000, SNR = -3.01 dB
Uncoded Errors = 1592,
Coded Errors =

-

872

Với (Avect=sqrt(2);bits=200000;)giá trị của SNR, uncoded_errors và coded_errors
là :
A = 1.4142, SNR = 0.00 dB
Uncoded Errors = 16024,
Coded Errors =

-

1354

Với (Avect=2;bits=200000;)giá trị của SNR, uncoded_errors và coded_errors là :
A = 2.0000, SNR = 3.01 dB
Uncoded Errors = 4481,
Coded Errors =

-

41

8933


So sánh và nhận xét hiệu quả của việc mã hóa:
+ Lỗi sinh ra khi không mã hóa lớn hơn so với khi mã hóa.
+ Như vậy hiệu quả của việc mã hóa là nhằm giảm bit lỗi trong quá trình truyền tín hiệu do
những tác động bởi nhiễu.

8. Bước 8: Lặp lại thí nghiệm với các giá trị khác nhau của A và đưa ra các nhận xét, kết luận:
- Cụ thể ở đây ta làm thí nghiệm với các giá trị của A là:
Avect=[0.5,1/sqrt(2),1,sqrt(2),2,2*sqrt(2),4];

-

Lần lượt thực hiện với bits = 10000 và bits = 200000
Trả lời câu hỏi:
a) Giá trị của kết quả không những phụ thuộc vào giá trị của A mà ta chọn mà còn phụ
thuộc vào chiều dài của dòng dữ liệu. Cụ thể là:
Kết quả cho thấy, với cùng chiều dài dòng dữ liệu thì xác suất lỗi sẽ giảm khi A tăng lên.
Bởi vì khi tăng giá trị của A, tức là tăng biên độ xung truyền đi, lúc đó qua quá trình
truyền nhiễu cộng vào sẽ không ảnh hưởng nhiều đến giá trị biên độ so với khi giá trị A
bé; nghĩa là với giá trị A bé thì nhiễu cộng vào có thể gây đảo dấu biên độ, và khi giải
điều chế, tại đó sẽ cho ra bit có giá trị ngược lại so với giá trị gốc, còn với A lớn thì nhiễu
khó làm đảo dấu biên độ hơn.
Xét 2 trường hợp độ dài bit là 10000 và 200000, xác suất lỗi trong trường hợp bits =
200000 nhỏ hơn trường hợp bits=10000. Vì nhiễu trên đường truyền gây ra một số lỗi đối
với dòng dữ liệu được truyền đi, mà nhiễu thường không kéo dài và những ảnh hưởng lớn
thì chỉ tác động ở vài thời điểm. Chính vì vậy, với dòng bit càng dài thì tuy tổng số lỗi sẽ
nhiều lên, nhưng tỉ lệ lỗi so với độ dài dòng dữ liệu càng bé nên xác suất gây lỗi sẽ bé.
b) Mô phỏng với các thông số không sinh ra lỗi thì vô ích:
Vì thực tế, tín hiệu khi truyền qua bất kì hệ thống nào cũng có lỗi do nhiễu tác động. Do
đó, việc mô phỏng thực chất là để xem xét giải pháp nào truyền thông tin là tốt nhất, có

xác suất lỗi ít nhất, nên một mô phỏng cho xác suất lỗi là 0 thì không thể nói lên được
phương pháp truyền thông tin đó là tốt hay xấu vì điều này hoàn toàn không có trong thực
tế.
Theo đồ thị trong 2 trường hợp bits = 10000 và bits = 200000, ta thấy xác suất lỗi trong
trường hợp bits = 10000 là trong khoảng 10-4 đến 10-3 (lớn hơn 10-4 ), còn xác suất lỗi
trong trường hợp bits = 200000 là trong khoảng 10-5 đến 10-4 ( lớn hơn 10-5 ).
⇒ Kết quả này hợp lý với những phân tích trên.
c) Độ dài của dòng dữ liệu để mô phỏng được xác suất lỗi là 10-7
Dựa vào 2 trường hợp chọn độ dài dòng dữ liệu (bits) ở trên, ta có thể ước tính độ dài
dòng bit để mô phỏng xác suất lỗi 10-7 là 100.000.000. Lúc đó xác suất lỗi khoảng 10-8
đến 10-7
- Trang 10 -


Báo cáo Thí nghiệm Thông tin số & Truyền số liệu
9 . Bước 9: Vẽ đồ thị:
9.1 Trường hợp Avect=2; bits=10000:
9.1.1 Biểu đồ giá trị nhiễu :
Noise diagram
1400

1200

1000

800

600

400


200

0
-4

-3

-2

-1

0

1

2

3

4

9.1.2 Đồ thị quan hệ giữa SNR và xác suất lỗi:
BPSK vs. (7,4) Hamming Code performance

-1

Probability of Decoder Error

10


-2

10

-3

10

2

2.5

3

3.5
Eb/No [dB]

- Trang 11 -

4

4.5


Báo cáo Thí nghiệm Thông tin số & Truyền số liệu
9.2
Trường hợp Avect=[0.5,1/sqrt(2),1,sqrt(2),2,2*sqrt(2),4]; bits=10000:
9.2.1 Biểu đồ giá trị nhiễu :
Noise diagram

1600
1400
1200
1000
800
600
400
200
0
-4

-3

-2

-1

0

1

2

3

4

9.2.2 Đồ thị quan hệ giữa SNR và xác suất lỗi :
BPSK vs. (7,4) Hamming Code performance


0

Probability of Decoder Error

10

-1

10

-2

10

-3

10

-10

-8

-6

-4

-2
0
Eb/No [dB]


- Trang 12 -

2

4

6

8


Báo cáo Thí nghiệm Thông tin số & Truyền số liệu
9.3
Trường hợp Avect=[0.5,1/sqrt(2),1,sqrt(2),2,2*sqrt(2),4]; bits=200000:
9.3.1 Biểu đồ giá trị nhiễu :
4

4

Noise diagram

x 10

3.5
3
2.5
2
1.5
1
0.5

0
-5

-4

-3

-2

-1

0

1

2

3

4

5

9.3.2 Đồ thị quan hệ giữa SNR và xác suất lỗi
BPSK vs. (7,4) Hamming Code performance

0

10


-1

Probability of Decoder Error

10

-2

10

-3

10

-4

10

-5

10

-10

-8

-6

-4


-2

0
Eb/No [dB]

- Trang 13 -

2

4

6

8

10


Báo cáo Thí nghiệm Thông tin số & Truyền số liệu
- Chú thích: Đường màu xanh là trường hợp không mã hóa, màu đỏ là trường hợp mã hóa
9.4 Nhận xét :
- Dựa vào đồ thị đã vẽ ta thấy, xác suất lỗi sẽ giảm khi tăng biên độ tín hiệu truyền đi hoặc tăng
độ dài dòng dữ liệu.

---THE END---

- Trang 14 -




×