Tải bản đầy đủ (.pptx) (17 trang)

slide 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 (178.15 KB, 17 trang )

BÁO CÁO THÍ NGHIỆM THÔNG TIN SỐ VÀ TRUYỀN SỐ LIỆU
GVHD :
LÊ THỊ TRANG
SVTH :
NGUYỄN THỊ NGUYỆT
nhóm 14B

LÊ THỊ NGÂN
nhóm 15A



Mục đích thí nghiệm

Mô phỏng hoạt động của hệ thống thông tin số có nhiễu.

Sử dụng mã Hamming để phát hiện và sửa lỗi bit giảm xác suất lỗi.
Sơ đồ khối của hệ thống thông tin
MÃ HÓA KÊNH

Dùng mã Hamming

Mã Hamming được đặc trưng bởi 2 số nguyên n và k, ma trận sinh G, trong đó: k là từ mã, n là
độ dài từ mã, (n-k) là số bit kiểm tra.

Mã khối (7,4) có 4 bit tin ký hiệu vector m, được mã hóa bằng 7 bit được ký hiệu là vector x,
được biểu diễn theo bảng sau:
MÃ HÓA KÊNH
MÃ HÓA KÊNH

Ma Trận kiểm tra H và chuyển vị H


T
:

Ma trận sinh G:
MÃ HÓA KÊNH
Giải mã và sửa lỗi:

Sau khi vector từ mã đi qua hệ thống có nhiễu thì sẽ thu được: y= x+e (modulo 2).

Bên thu sẽ giải mã tạo lại bit ban đầu.Quá trình này sẽ tạo ra vector lỗi Syndrome S để xác
định bit lỗi:
S= y*H
T
(modulo 2)

MÃ HÓA KÊNH

Bảng quan hệ syndrome và vị trí bit lỗi:
Giá trị của syndrome sẽ cho biết vị trí hàng trong ma trận E có chứa lỗi bit tương ứng:
Các bước tiến hành thí nghiệm
1.
Tạo dãy bit nguồn ngẫu nhiên:
Dùng hàm “randn”.Ví dụ cho N=20
Code: Tx_signal=randn(1,N)
Tạo ra ngẫu nhiên 1 dãy dữ liệu 20 bit có giá trị
Sử dụng hàm để tạo ra chuỗi bit nhị phân 0,1
Code: for i=1:N
if Tx_signal(i) >0;
tx(i)=1;
else

tx(i)=0;
end
end
Tạo ra chuỗi bit có độ dài bằng Tx_signal nếu giá trị Tx_signal>0 thì giá trị
Tx tương ứng là 1 ngược lại là 0
Kết quả: tx=[0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 1]

2.
Mã hóa dãy bit nguồn sử dụng mã Hamming (7,4)
Đầu tiên nhóm các bit trong chuỗi bit tx thành các nhóm 4 bit tin. Các nhóm 4 bit tin này sẽ được mã hóa thành các nhóm 7 bit theo quy
luật mã hóa của mã Hamming (7,4). Mỗi nhóm 4 bit tin nhân với ma trận sinh G để tạo ra vector mã hóa có độ dài 7 bit.
Code: tx_encode = zeros(1, 7/4 * length(tx));
j=1;
for l=1:4:length(tx)
tx_encode(j:j+6)= x(l:l+3)*G;
tx_encode(j:j+6)=mod(tx_encode(j:j+6),2)
j=j+7;
end
Đầu tiên tạo ra dãy tx_encode có độ dài bằng 7/4 độ dài của dãy bit tx. Nhóm từng 7 bit của tx_encode sẽ bằng nhóm 4 bit tương ứng của
tx nhân với ma trận sinh G. Dùng hàm "mod" cho 2 để chuyển các giá trị được tính thành bit 0 hoặc 1.
Kết quả: N = 20 mã hóa tạo ra 35 bit
tx_encode = [0 1 1 0 1 0 0 1 1 0 1 0 0 0 1 0 0 0 1
1 0 0 1 1 1 0 0 1 0 0 0 1 1 0 1]
3. Điều chế tín hiệu dùng phương pháp BPSK(binary phase shift keying)
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 với biên độ sóng mang : A = [0.5, 1/sqrt(2), 1, sqrt(2), 2, 2*sqrt(2), 4,
4*sqrt(2)]; %bien do song mang
Đối với tín hiệu được mã hóa:
Code:
for k =1:length(A)
for i= 1:length(tx_encode)

if tx_encode(i)==1
t(i)= A(k);
else
t(i) = -A(k);
end
end
t có độ dài bằng tx_encode và mỗi giá trị của t tương ứng với:
- Nếu tx_encode = 1 thì t = A, ngược lại tx_encode = 0 thì t = -A
Tín hiệu không được mã hóa:
Code: for k=1:length(A)
for r=1:length(tx)
if tx(r)==1
t1(r)= A(k);
else
t1(r) = -A(k);
end
end
4.
Tạo nhiễu

Sử dụng hàm “randn” để tạo nhiễu ngẫu nhiên có chiều dài bằng chiều dài tín hiệu t được mã hóa .

Code: noise= randn(1,length(t));

Sử dụng hàm “randn” để tạo nhiễu ngẫu nhiên có chiều dài bằng chiều dài tín hiệu không được mã hóa .

Code: noise1= randn(1,N);
5.
Giải điều chế tín hiệu thu được


Tín hiệu thu được sẽ bằng tín hiệu được điều chế cộng với nhiễu đường truyền::
rx_encode = t + noise; % tin hieu thu = tin hieu phat ma hoa + nhieu
rx_uncode = t1 + noise1; %tin hieu thu = tin hieu phat khong ma hoa + nhieu
Ở bước này bên thu sẽ khôi phục tín hiệu tương tự thành 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ế.
Code: for i= 1:length(rx_encode)
if rx_encode(i)>=0
rx(i)=1;
else
rx(i)=0;
end
end
Nếu rx_encode(i)>=0 thì tín hiệu giải điều chế là bit 1, ngược lại là bit 0.

Tương tự khôi phục lại tín hiệu không mã hóa:
Code: for l= 1:length(rx_uncode)
if rx_uncode(l)>=0
rx1(l)=1;
else
rx1(l)=0;
end
end
Nếu rx_uncode(i)>=0 thì tín hiệu giải điều chế là bit 1, ngược lại là bit 0.

Kết quả: rx1 = [ 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 1 1]
So sánh tín hiệu thu không mã hóa với tín hiệu vào ta thấy bit thứ 19 bị lỗi khác với tín hiệu vào .
6.
Giải mã tín hiệu

Quá trình giải mã ngược lại với mã hóa, dãy bit nhận được sẽ được nhóm thành 7 bit, để khôi phục lại 4 bit tin. Để áp dụng được khả năng giải mã
sửa lỗi Hamming thì cần phải các định có lỗi xảy ra hay không bằng cách sử dụng ma trận kiểm tra H. Nếu có xuất hiện lỗi bit thì dùng Syndrome mà

nó tạo ra để xác định bit lỗi và sữa lỗi.
Code: j=1; % giai ma
for l = 1:7:length(rx) % nhom tung 7bit cua rx
s=mod(rx(l:l+6)*Ht,2); %nhan tung nhom 7bit voi ma tran H
s1=bin2dec(int2str(s)); %chuyen doi nhi phan
e= E(s1+1,:); % vector loi can tim
Y=mod(rx(l:l+6)+e,2); % vector 7bit sau khi duoc sua loi
Rx_decode(j:j+3)=Y(4:7); % giai ma duoc 4 bit tin
j=j+4;
end
Kết quả:
Rx_decode = [0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 1]
So sánh kết quả giữa 20 bit tín hiệu được mã hóa trùng với 20 bit tín hiệu vào. Giải mã đã đáp ứng được tín hiệu mong muốn ở đầu thu.
Trả lời câu hỏi:
Sau khi mã hóa và giải mã với mã Hamming (7,4) mà vẫn còn lỗi là do mã Hamming(7,4) có lỗi thì chỉ chỉnh
sửa được lỗi trong trường hợp xảy ra một lỗi.Trường hợp phát hiện hai lỗi trở lên thì bị trùng triệu chứng với
trường hợp một bit lỗi nào đó hoặc trùng triệu chứng không lỗi nên không thể sửa lỗi được.
7.
Tính xác suất lỗi bit

Tính BER, BER1 lần lượt là vector xác suất lỗi trong trường hợp mã hóa và không mã hóa. Đầu tiên tính số bit lỗi giữa tín hiệu phát và thu trong 2 trường
hợp: Code: Er(k) = sum(abs(tx-Rx_decode)); %so bit loi ma hoa
Er1(k) = sum(abs(tx-rx1)); %so bit loi khong ma hoa
Tỷ lệ bit lỗi: Code: BER(k) = Er(k)/N ; %ty le loi bit
BER1(k) = Er1(k)/N ;
Công suất tín hiệu trên nhiễu: SNR(k) = 10*log10(A(k)^2/2);
Nhận xét hiệu quả của việc mã hóa: a. Lỗi sinh ra khi không mã hóa lớn hơn khi mã hóa
b Hiệu quả của việc mã hóa nhằm giảm bit lỗi trong quá trình truyền tín hiệu chịu tác động bởi nhiễu.
Lần lượt thực hiện với các chiều dài bit N = 10000, N = 100000, N = 200000
Ta thấy kết quả tín hiệu thu được không chỉ phụ thuộc vào giá trị biên độ A mà còn phụ thuộc vào chiều dài của bit thông tin: Với cùng chiều dài dòng dữ liệu

thì xác suất lỗi sẽ giảm khi giá trị A tăng lên vì khi tăng A thì biên độ của xung truyền đi tăng lên lúc đó quá trình truyền nhiễu cộng vào sẽ không ảnh hưởng
nhiều đến tín hiệu nên khi thu được sẽ không bị đảo bit. Còn với A bé thi khi truyền nhiễu cộng vào bị ảnh hưởng nhiều nên khi thu được có thể bị đảo bit gây
ra lỗi bit so với tín hiệu gốc.
Xét trường hợp độ dài bit là 10000,100000 và 200000 ta thấy với dòng dữ liệu dài hơn thì số bit lỗi nhiều hơn nhưng tỷ lệ bit lỗi so với chiều dài dòng dữ liệu
sẽ bé hơn nên xác suất gây lỗi bé hơn. Như vậy xác suất lỗi của dòng bit 200000 sẽ bé hơn so với dòng bit là 100000 và dòng bit 100000 có xác suất lỗi bé
hơn so với dòng bit 100

×