Professional Documents
Culture Documents
Truyền số liệu & mạng
Truyền số liệu & mạng
HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ
---------------o0o---------------
Ngõ vào tùy mức điện áp, bit 1 đảo thì đảo trạng thái.
Code:
function y_NRZ_I = NRZ_I(clk,t)
y_NRZ_I = zeros(1,length(t));
if clk(1) == 0
y_NRZ_I(1:100) = -1;
else
y_NRZ_I(1:100) = 1;
end
for i = 2:length(clk)
if clk(i) == 1
y_NRZ_I((i-1)*100+1:(i-1)*100+100) = -y_NRZ_I((i-1)*100);
1
else
y_NRZ_I((i-1)*100+1:(i-1)*100+100) = y_NRZ_I((i-1)*100);
end
end
y_NRZ_I(length(t)) = y_NRZ_I(length(t)-1);
end
2. Mã đường dây NZ
2
2.2 Chạy code và kết quả mô phỏng mã đường dây NRZ-I.
Code:
function y_RZ = RZ(clk,t)
y_RZ = zeros(1,length(t));
for i = 1:length(clk)
if clk(i) == 1
y_RZ(100*(i-1)+1:100*(i-1)+50) = -1;
y_RZ(100*(i-1)+51:100*(i-1)+100) = 0;
else
y_RZ(100*(i-1)+1:100*(i-1)+50) = 0;
y_RZ(100*(i-1)+51:100*(i-1)+100) = 1;
end
end
y_RZ(length(t)) = y_RZ(length(t)-1);
end
3
3. Mã đường dây AMI
Code:
function y_AMI = AMI(clk,t)
y_AMI = zeros(1,length(t));
for i = 1:length(clk)
if clk(i) == 1
y_AMI(100*(i-1)+1:100*(i-1)+100) = 1;
y1 = -1;
break;
end
end
for i = i+1:length(clk)
if clk(i) == 1
y_AMI(100*(i-1)+1:100*(i-1)+100) = y1;
y1= -y1;
end
end
y_AMI(length(t)) = y_AMI(length(t)-1);
end
4
Kết quả mô phỏng
Code:
function y_HDB3 = HDB3(clk,t)
y_HDB3 = AMI(clk,t);
a = 0;
for i = 1:length(clk)
%Dem 4 bit 0
if clk(i) == 0
a = a + 1;
else
a = 0;
end
%Ket thuc dem
if a == 4
a = 0;
5
y_HDB3(100*(i-1)+1:100*(i-1)+100) = y_update;%V
break;
end
if y_HDB3(100*(i-1)+1) ~= 0
y_update = y_HDB3(100*(i-1)+1);
end
end
b = 0;
for i = i+1:length(clk)
if clk(i) == 1
b = b + 1;
y_HDB3(100*(i-1)+1:100*(i-1)+100) = -y_update;
end
if clk(i) == 0
a = a + 1;
else
a = 0;
end
if a == 4
a = 0;
if rem(b,2) == 0
y_HDB3(100*(i-3-1)+1:100*(i-3-1)+100) = -y_update;%B
y_HDB3(100*(i-1)+1:100*(i-1)+100) = y_HDB3(100*(i-3-1)+1);%V
else
y_HDB3(100*(i-3-1)+1:100*(i-3-1)+100) = -y_update;%B
end
end
if y_HDB3(100*(i-1)+1) ~= 0
y_update = y_HDB3(100*(i-1)+1);
end
end
y_HDB3(length(t)) = y_HDB3(length(t)-1);
end
6
Kết quả mô phỏng:
Không hiệu quả bằng NRZ. Mỗi thành phần tín hiệu biểu diễn chỉ 1 bit. Máy thu phải
phân biệt được 3 mức tín hiệu. Cần công suất cao hơn 3dB với cùng xác suất lỗi bit.
Code:
function y_B8ZS = B8ZS(clk,t)
y_B8ZS = AMI(clk,t);
a = 0;
for i = 1:length(clk)
%Dem 8 bit 0
if clk(i) == 0
a = a + 1;
else
a = 0;
end
%Ket thuc dem
7
if a == 8
a = 0;
y_B8ZS(100*(i-4-1)+1:100*(i-4-1)+100) = y_update;%V1
y_B8ZS(100*(i-3-1)+1:100*(i-3-1)+100) = -y_update;%B1
y_B8ZS(100*(i-1-1)+1:100*(i-1-1)+100) = -y_update;%V2
y_B8ZS(100*(i-1)+1:100*(i-1)+100) = y_update;%B2
end
if y_B8ZS(100*(i-1)+1) ~= 0
y_update = y_B8ZS(100*(i-1)+1);
end
if clk(i) == 1
y_HDB3(100*(i-1)+1:100*(i-1)+100) = -y_update;
end
end
y_B8ZS(length(t)) = y_B8ZS(length(t)-1);
end
Kết quả mô phỏng:
8
6. Code xuất ảnh xung
clear;clc;close all;
%t?o xung Clock:
clk = [0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0];
t = 0:0.01:length(clk);
y = xung_clock(clk,t);
%NRZ-I:
y_NRZ_I = NRZ_I(clk,t);
%RZ:
y_RZ = RZ(clk,t);
%AMI:
y_AMI = AMI(clk,t);
%HDB3:
y_HDB3 = HDB3(clk,t);
%B8ZS:
y_B8ZS = B8ZS(clk,t);
%ve xung:
subplot(2,1,1);
plot(t,y,'r-','LineWidth',3);
axis([0 length(clk) -1.5 1.5]);
title('Xung Clock');
axis on;hold on;
for i = 1:length(clk)
plot([i i],[-1.5 1.5],'black--');
hold on;
end
subplot(2,1,2);
plot(t,y_RZ,'r-','LineWidth',3);
axis([0 length(clk) -1.5 1.5]);
title('RZ');
axis on;hold on;
for i = 1:length(clk)
plot([i i],[-1.5 1.5],'black--');
hold on;
end