BÀI TẬP LỚN Mô phỏng hệ thống truyền thông – D14VT Assignments on Simulation of Communication Systems Sinh viên thực hiện: Họ và tên: Nguyễn Thị Hương Mã SV: B14DCVT109 Lớp: D14VT02 I..
Trang 1BÀI TẬP LỚN
Mô phỏng hệ thống truyền thông – D14VT (Assignments on Simulation of Communication Systems)
Sinh viên thực hiện:
Họ và tên: Nguyễn Thị Hương
Mã SV: B14DCVT109
Lớp: D14VT02
I Nhiệm vụ 1
Quá trình chuyển đổi A/D (Điều chế xung mã PCM)
Mô phỏng quá trình PCM 8 bít cho tín hiệu tương tự, trong đó tín hiệu tương tự đầu vào được mô tả bởi công thức sau:
𝑠(𝑡) = ∑ 𝐴𝑘cos (2𝜋𝑓𝑘(𝑡 + (−1)𝑘+1𝑡2))
3
𝑘=1
với 𝐴𝑘 lần lượt là [1, 2, 1], 𝑓𝑘 = 109 kHz
1 Code Tín hiệu đầu vào
function [ st ] = TinHieu(fk,N)
t=0:(1/fk):N;
st=cos(2*pi*fk*(t+(t.^2)))+2*cos(2*pi*fk*(t-(t.^2)))+cos(2*pi*fk*(t+(t.^2))); plot(t,st);
title('Tin hieu tuong tu');
axis([0 N min(st)-1 max(st)+1]);
xlabel('Time(s)');
ylabel('Amplitude');
grid on;
end
Trang 22 Code Lấy mẫu tín hiệu
function [ st ] = LayMau(fk,fm,N)
t=0:(1/fm):N;
st=cos(2*pi*fk*(t+(t.^2)))+2*cos(2*pi*fk*(t-(t.^2)))+cos(2*pi*fk*(t+(t.^2)));
stem(t,st,'r');
title('Tin hieu lay mau fm=4*fk');
axis([0 N min(st)-1 max(st)+1]);
xlabel('Time(s)');
ylabel('Amplitude');
grid on;
end
Trang 33 Code Nén tín hiệu
function [out,V] = NenTH(in)
%Nen tin hieu truoc khi dua vao khoi luong tu hoá
%in la tin hieu dua vao
%Su dung nen theo luat mu voi he so mu = 255
mu=255;
V = max(in); %Bien do lon nhat tin hieu
out = compand(in,mu,V,'mu/compressor'); %Nen TH theo mu
end
4 Code Giải nén tín hiệu
function [ out ] = GiaiNen( in )
%Giai nen tin hieu
%in la tin hieu dua vao giai nen
%Su dung nen theo luat mu voi he so mu = 255
mu=255;
V = max(in); %Bien do lon nhat tin hieu
out = compand(in,mu,V,'mu/expander'); %Nen TH theo mu
end
5 Code Điều chế xung mã PCM
function [code,xq] = uniform_pcm(x,M)
% Uniform PCM encoding of a sequence
% x = input sequence
% M = number of quantization levels
% code = the encoded output
% xq = quantized sequence before encoding
Nb = log2(M);
Amax = max(abs(x));
Trang 4delta = 2*Amax/(M-1);
Mq = -Amax:delta:Amax;
Ml = 0:M-1;
xq = zeros(size(x));
xcode = xq;
for k = 1:M
ind = find(x > Mq(k)-delta/2 & x <= Mq(k)+delta/2);
xq(ind) = Mq(k);
xcode(ind) = Ml(k);
end
code = de2bi(xcode,Nb,'left-msb');
figure
stairs(xq,'r');
axis([0 length(xq) min(xq)-1 max(xq)+1]);
grid on;
6 Code Giải diều chế PCM
function [ dcode,xq ] = d_PCM( Amax,code,M )
dcode=bi2de(code,'left-msb');
[a,b]=size(dcode);
delta = 2*Amax/(M-1);
Mq = -Amax:delta:Amax;
xq = zeros(1,a*b);
for k = 1:length(xq)
xq(k)=Mq(dcode(k)+1);
end
figure
stairs(xq,'g');
axis([0 length(xq) min(xq)-1 max(xq)+1]);
grid on;
Trang 5end
Commamd Window
>> fk=109;
>> x=TinHieu(fk,1);
>> figure
>> xm=LayMau(fk,4*fk,1);
>> [out,V]=NenTH(x);
>> [code,xq] = uniform_pcm(out,256);
>>
>> [dcode,xq2]=d_PCM(V,code,256);
>> out2=GiaiNen(xq2);
>> figure
>> plot(out2);
>> grid
>> axis([0 length(out) min(out2)-1 max(out2)+1]);
>> error=((norm(x)-norm(out2))/sqrt(length(x)))^2;
>> sqnr = 20*log10(norm(x)-norm(x-out2));
Trang 6Tên các biến và giá trị
II Nhiệm vụ 2
1 Mô tả nhiệm vụ:
Mô phỏng hệ thống truyền dẫn số băng gốc cho tín hiệu được mã hóa PCM đã thực hiện trong nhiệm vụ 1 Mã đường lưỡng cực cho hệ thống mình mô phỏng:
- Mã đường CMI (Mã SV: B14DCVT109)
1.1 Code Đọc ma trận sau khi PCM (Chuyển ma trận mã thành vector mã)
function [ N,y ] = DocMaTran( x )
% N so bit ma hoa cho 1 mau
[a,N]=size(x);
y=zeros(1,a*N);
Trang 7k=1;
while(k<=a*N)
for i=1:a
for j=1:N
y(k)=x(i,j);
k=k+1;
end
end
end
end
1.2 Code Chuyển Vector mã thành mã đường CMI
Chuyển thành mã CMI có biên độ [-0.5, 0.5]
function y=cmicode(x)
% x la chuoi bit nhi phan dau vao
dk=0;
for i=1:length(x)
if (x(i)==1)
dk=dk+1;
if (mod(dk,2)==1)
y(2*(i-1)+1:2*i)=0.5;
else y(2*(i-1)+1:2*i)=-0.5;
end
else
y(2*(i-1)+1:2*i)=[-0.5 0.5];
end
end
1.3 Code Biểu diễn mã đường CMI
function [z]=dangsong(y,M)
% y la chuoi bit dau vao
% N la so mau tren 1 bit
N=M/2;
for t=0:length(y)*N-1
k=fix(t/N)+1;
z(t+1)=y(k);
Trang 8end
plot(z,'LineWidth',2);
axis([0 length(z) -0.6 0.6]);
grid on;
end
1.4 Code Bộ lọc Butterwflt
function y = butterwflt(x,n,B,Ts)
% Bo loc butterworth
% B - Bang thong bo loc
% Ts - Thoi gian lay mau
% n - Bac cua bo loc
% y - Dau ra bo loc
Ns = length(x);
% Mien tan so
f = [0:Ns/2-1 -Ns/2:-1]/(Ns*Ts);
Xf = fft(x);
Hf = 1./(1+(f./B).^(2*n)); % Ham truyen dat
Yf = Xf.*Hf;
% Chuyen thanh mien thoi gian
y = ifft(Yf);
end
1.5 Code Tạo dạng phổ tín hiệu
function [f,Pf] = spectrocal(t,x)
% t - time vector
% x - input samples
% f - frequency vector
% Pf - estimated PSD of x
Ns = length(x);
Ts = t(2)-t(1);
f = (-Ns/2:Ns/2-1)/(Ns*Ts);
Pf = fft(x,Ns);
Pf = fftshift(Pf)/Ns;
Pf = abs(Pf).^2;
End
1.6 Code Giải CMI
Trang 9function [ y ] = cmidcode( x,M )
% x chuoi can giai CMI
% M so mau tren 1 bit
s=0;
y=zeros(1,length(x)/M);
for i=1:length(y)
s=x((i-1)*100+(M/4))+x((i-1)*100+((3*M)/4));
if s==0
y(i)=0;
else
y(i)=1;
end
s=0;
end
end
1.7 Code Đọc Ma trận sau giải CMI
function [ y ] = DocMaTran2( x,Q )
N=log2(Q);
M=length(x)/N;
y=zeros(M,N);
k=1;
while(k<=length(x))
for i=1:M
for j=1:N
y(i,j)=x(k);
k=k+1;
end
end
end
end
Commamd Window
>> fk=109;
>> M=100;% Số mẫu mã hóa cho 1 bit
>> Q=256;% Số mức lượng tử
>> x=TinHieu(fk,1);
Trang 10>> figure
>> xm=LayMau(fk,4*fk,1);
>> [out,V]=NenTH(x);
>> [code,xq] = uniform_pcm(out,Q);
>> [N,y1]=DocMaTran(code);
>> y2=cmicode(y1);
>> y3=dangsong(y2,M);
>> yq=butterwflt(y3,2,244,0.5);
>> ynoisy1 = awgn(yq,1,'measured');
>> a=yq+ynoisy1;
>> yqz=butterwflt(a,2,244,0.5);
>> t=length(yqz);
>> A=zeros(1,t);
>> for i=1:t
if yqz(i)>0
A(i)=0.5;
else
A(i)=-0.5;
end
end
>> dcmi=cmidcode(A,M);
>> code2=DocMaTran2(dcmi,N);
>> [dcode,xq2]=d_PCM(V,code2,256);
>> out2=GiaiNen(xq2);
>> figure
>> plot(out2);
>> grid
>> axis([0 length(out2) -5 5]);
>> title('Tin hieu phia thu');
>> error=((norm(x)-norm(out2))/sqrt(length(x)))^2;
>> sqnr = 20*log10(norm(x)-norm(x-out2));
Trang 11Tín hiệu phía thu
Tên các biến và giá trị