1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập lớn Mô phỏng hệ thống truyền thông

14 484 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 440,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài tập lớn Báo cáo cuối môn học Mô học Mô phỏng hệ thống truyền thông Học viện công nghệ bưu chính viễn thông PTIT D14VT Giảng viên: Ngô Thị Thu Trang Mô Phỏng mã hóa PCM Mô phỏng kênh AWGN Giải thích code Chạy và đưa ra kết quả Chương trình matlab

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA VIỄN THÔNG 1

BÀI TẬP LỚN

Môn: MÔ PHỎNG HỆ THỐNG TRUYỀN THÔNG

Giảng viên: Ngô Thị Thu Trang

Vũ Văn Cường – D14VT03 MSV- B14DCVT185

Hà Nội, 2017

Trang 2

Nội dung

I Nhiệm vụ 1 3

1 Chương trình mô phỏng 4

1.1 Tín hiệu đầu vào 4

1.2 Qúa trình nén 4

1.3 Quá trinh giải nén 5

1.4 Quá trình lượng tử hóa và mã hóa PCM 5

1.5 Giải mã PCM 5

1.6 Vẽ tín hiệu sau khi giải mã 6

1.7 Vẽ phổ 6

1.8 Xác định sai số 6

2 Chạy và đưa ra kết quả 6

2.1 Tín hiệu đầu vào 7

2.2 Quá trình nén 7

2.3 Mã hóa PCM 8

2.4 Giải mã PCM 9

2.5 Giải nén 9

2.6 Biểu diễn sai số 10

3 Nhận xét 10

II Nhiệm vụ 2 11

1 Chương trình mô phỏng 11

1.1 Chương trình chính 11

1.2 Bộ lọc butterwflt 12

1.3 Kênh AWGN 12

1.4 Bộ chuyển chuỗi bit thành mã đường AMI 12

2 Kết quả mô phỏng 13

Trang 3

I Nhiệm vụ 1

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:

s (t )=

k=1

3

A k cos ⁡(2 π f k(t+(−1 ) k+1 t2))

Với A k lần lượt là [1, 2, 1], f k lần lượt là 1000Hz,8000Hz,5000Hz

Cụ thể:

S (t )=1 cos ⁡¿

Sơ đồ khối quá trình nén luật µ(255) và điều chế PCM.

Các bước thực hiện:

Bước 1: Nén biên độ tín hiệu theo luật µ(255) Tần số lấy mẫu fs = 4fmax = 4.8000 = 32000(Hz).Ta được y(t) là tín hiệu nén của x(t)

Bước 2 : Lượng tử hóa đều tín hiệu vừa nén y(t) Với 8 bit/mức => ta sẽ có 2^8=256 mức

Bước 3 : Mã hóa các mức bằng phương pháp điều mã xung PCM Tín hiệu ra sau khi PCM là các khối code 8 bit

1 Chương trình mô phỏng

1.1 Tín hiệu đầu vào

function [x] = tinhieuvao(f1,f2,f3) %f1,f2,f3 tần số theo MSV ( MSV = 185)

fs=32000; % Tần số lấy mẫu bằng 4 lần tần số max ( max = 8000hz)

Tín

hiệu

tương

tự

Bộ nén

Bộ lượng

tử hóa

Bộ mã hóa

Chuỗi bit

Trang 4

t=0:Ts:3/f1;

x1=cos(2*pi*f1*(t+t.^2));

x2=2*cos(2*pi*f2*(t-t.^2));

x3=cos(2*pi*f3*(t+t.^2));

x=x1+x2+x3;

plot(t,x)

title( 'Tin Hieu Tuong Tu' );

xlabel( 'Time(s)' );

ylabel( 'Amplitude' );

grid on ;

1.2 Qúa trình nén

function [y,amax] = mulaw(x,mu) %Hàm nén

%x- Chuỗi tín hiệu đầu vào

%mu-Tham số nén của bộ nén mu=255.

%out-Chuỗi tín hiệu đầu ra của bộ nén

amax = max(abs(x)); % Biên độ cực đại của tín hiệu vào

xn = x/amax; % Chuẩn hóa tín hiệu vào

y = sign(x).*log(1+mu*abs(xn))/log(1+mu);

y = y*amax; %Tín hiệu ra

end

1.3 Quá trinh giải nén

function [ out ] = GiaiNen( in )

%Giải nén tín hiệu

%in Là tín hiệu đưa vào giải nén

%Sử dụng nén theo luật mu voi hệ số mu = 255

mu=255;

V = max(in); %Biên độ lớn nhất của tín hiệu

out = compand(in,mu,V, 'mu/expander' ); %Nen TH theo mu

end

1.4 Quá trình lượng tử hóa và mã hóa PCM

function [code,vq] = uniform_pcm(x,M)

% x = y – Đầu ra của bộ giải nén

% M = Số mức lượng tử M=32

% code = Mã đầu ra

% vq = Tín hiệu lượng tử trước khi mã hóa

Nb = log2(M);

Amax = max(abs(x));

delta = 2*Amax/(M-1);

Mq = -Amax:delta:Amax;

Ml = 0:M-1;

vq = zeros(size(x));

xcode = vq;

for k = 1:M

ind = find(x > Mq(k)-delta/2 & x <= Mq(k)+delta/2);

vq(ind) = Mq(k);

xcode(ind) = Ml(k);

end

code = de2bi(xcode,Nb, 'left-msb' ); % Chuyển các mức lượng tử thành

mã nhị phân

figure

stairs(vq, 'r' );

axis([0 length(vq) min(vq)-1 max(vq)+1]);

grid on ;

Trang 5

1.5 Giải mã PCM

function [ dcode,xq ] = d_PCM( Amax,code,M )

% Amax = amax- biên độ cực đại của tín hiệu vào

% code mã đầu vào bộ giải mã

% M mức lượng tử

% dcode mã đầu ra bộ giải mã

% xq tín hiệu lượng tử sau giải 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 ;

end

1.6 Vẽ tín hiệu sau khi giải mã

plot(out2);

grid

error=((norm(x)-norm(out2))/sqrt(length(x)))^2; %Sai số

sqnr = 20*log10(norm(x)-norm(x-out2)); % Tỷ số tín hiệu trên nhiễu

1.7 Vẽ phổ

f = [1000 8000 5000 ];

subplot(3,1,1);

[f,Xf] = spectrocal(t,x);

semilogy(f,Xf);grid; % Phổ của tín hiệu gốc

title( 'Pho tin hieu goc' );

subplot(3,1,2);

[f,Yf] = spectrocal(t,vq);

semilogy(f,Yf);grid; % Phổ tín hiệu lượng tử hóa

title( 'Pho tin hieu luong tu hoa' );

subplot(3,1,3);

[f,Zf] = spectrocal(t,xq2);

semilogy(f,Zf);grid; % phổ tín hiệu khôi phục

title( 'Pho tin hieu khoi phuc' );

1.8 Xác định sai số

fs=32000;

Ts=1/fs;

t=0:Ts:3/1000;

xq3 = invmulaw(vq,255);

xq3 = xq3*amax;

error = (x-xq3).^2; % Xác định sai số

plot(t,error); % Biểu diễn sai số

title( 'Sai so' , 'fontsize' ,13);

xlabel( 'time (s)' ); ylabel( 'error' );

Trong đó hàm invmulaw

function x = invmulaw(y,mu)

% The inverse of mu-law nonlinearity

% mu - mu constant

% y - compressed input

% x - expanded output

Trang 6

x = sign(y).*((1+mu).^abs(y)-1)/mu;

end

2 Chạy và đưa ra kết quả

Kết quả chương trình

2.1 Tín hiệu đầu vào

Chạy chương trình trong command window

Tín hiệu đầu vào

Trang 7

2.2 Quá trình nén

Kết quả sau khi nén

2.3 Mã hóa PCM

Tín hiệu sau khi mã hóa PCM

Trang 8

Tín hiệu sau lượng tử và tín hiệu gốc

2.4 Giải mã PCM

Trong đó: -

- dcode: mã đầu ra bộ giải mã

- xq2: tín hiệu lượng tử hóa sau khi được giải mã

2.5 Giải nén

Out2: Tín hiệu khôi phục lại

Vẽ tín hiệu sau khi giải nén

Trang 9

Tín hiệu sau khi giải nén

Tín hiệu sau khôi phục và tín hiệu gốc

2.6 Biểu diễn sai số

Sai số

Trang 10

3 Nhận xét

- Thực hiện mô phỏng ta thấy mã hóa PCM có tổn thất

- Sai số lớn khi biên độ tín hiệu thay đổi lớn, sai số nhỏ khi biên độ tín hiệu ít có

sự thay đổi

- Tín hiệu khôi phục có dạng tương tự tín hiệu gốc

II Nhiệm vụ 2

Sơ đồ hệ thống

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

Tín

hiệu

mã hóa

PCM

Mã đường AMI

Bộ Lọc Phát

Kênh AWGN

Tín Hiệu Sau Giải Mã

Trang 11

1 Chương trình mô phỏng

1.1 Chương trình chính

f1=1000; %Tần số ở các thành phần

f2=8000;

f3=5000;

fs=32000;

Ts=1/fs; % Vecto thời gian

t=0:Ts:3/f1;

x1=cos(2*pi*f1*(t+t.^2));

x2=2*cos(2*pi*f2*(t-t.^2));

x3=cos(2*pi*f3*(t+t.^2));

x = x1+x2+x3;

mu = 255; % Hệ số nén

M = 32; % Số mức lượng tử

[y,amax] = mulaw(x,mu); % Nén biên độ

[code,yq] = uniform_pcm(y,M); % Lượng tử hóa PCM

code1 = code'; % Chuyển vị

code2 = reshape(code1,1,length(t)*5); % Chuyển sang vectow hàng

[t,y,code3] = amicode(code2,1e6,430, 'NRZ' ); % Chuyển chuỗi bit qua mã đường AMI

yp = butterwflt(y,2,0.2,1/28); % Tín hiệu qua bộ lọc butterwflt

SNRdB =[1 3 6]; % SNR tính theo dB

for i=1:3

SNR(i) = 10^(SNRdB(i)/10); % SNR tinh theo lần

varn(i) = var(code2)/SNR(i);

end

yNoise1 = addnoise(code2,varn(1)); % Tín hiệu + Nhiễu SNR = 1 dB

yNoise2 = addnoise(code2,varn(2)); % Tín hiệu + Nhiễu SNR = 3 dB

yNoise3 = addnoise(code2,varn(3)); % Tín hiệu + Nhiễu SNR = 6 dB

yt1 = yNoise1 > 1/2; % Ngưỡng quyết định là 1/2

yt2 = yNoise2 > 1/2; % Ngưỡng quyết định là 1/2

yt3 = yNoise3 > 1/2; % Ngưỡng quyết định là 1/2

BER1 = sum(xor(yt1,code2)); % BER tại SNR= 1 dB

BER2 = sum(xor(yt2,code2)); % BER tại SNR= 3 dB

BER3 = sum(xor(yt3,code2)); % BER tại SNR= 6 dB

1.2 Bộ lọc butterwflt

function y = butterwflt(x,n,B,Ts)

% B – Băn thông bộ lọc

% Ts – Tần số lấy mẫu

% n - filter order

% y – Chuỗi đầu ra

Ns = length(x);

f = [0:Ns/2-1 -Ns/2:-1]/(Ns*Ts);

Xf = fft(x);

Hf = 1./(1+(f./(2*pi*0.7*B)).^(2*n));

Yf = Xf.*Hf;

y = ifft(Yf);

end

1.3 Kênh AWGN

function yNoise = addnoise(yClean,VarN)

% This function adds Gaussian noise into

% the input signal.

% yClean - the input signal

% VarN - the variance of noise

% yNoise - the noisy signal output

if (isreal(yClean))

yNoise = yClean + sqrt(VarN)*randn(size(yClean));

Trang 12

yNoise = yClean + sqrt(VarN/2)*(randn(size(yClean))

+j*randn(size(yClean)));

end

1.4 Bộ chuyển chuỗi bit thành mã đường AMI

function [t,y,code] = amicode(d,R,Ns,type)

% d – chuỗi dữ liệu

% R – tốc độ dữ liệu

% Ns – Tổng số mẫu biểu diễn

% t – vector thời gian

% y – vector mẫu đầu ra

% type – kiểu mã (NRZ - 'NRZ' or RZ - 'RZ')

Tb = 1/R; % chu kỳ bit

Nb = length(d); % số lượng bit

Timewindow = Nb*Tb;

ts = Timewindow/(Ns-1); % vecto thời gian lấy mẫu

t = 0:ts:Timewindow; % vecto thời gian

y = zeros(size(t)); % vecto mẫu đầu ra

code = [];

if nargin <=3

type = 'NRZ' ;

end

s = 1;

for k = 1:Nb

if d(k) == 0 % nếu là bit 0

code(k) = 0; % biểu diễn là 0

else % nếu là bit 1

s = s+1;

if mod(s,2)==0 % bit chẵn thì được biểu diễn là 1

code(k) = 1;

else % bit lẻ được biểu diễn là -1 đan xen nhau

code(k) = -1;

end

end

end

for k = 1:Ns

n = fix(t(k)/Tb)+1;

if n >= Nb

n = Nb;

end

switch (type)

case 'NRZ'

y(k) = code(n);

case 'RZ'

if mod(t(k),Tb)<=Tb/2

y(k) = code(n);

else

y(k) = 0;

end

end

end

y(end)=0;

2 Kết quả mô phỏng

Trang 13

Nhận xét:

Tín hiệu thu được số lỗi bit ứng với từng SNR trên kênh truyền là:

BER= 59 tại SNR = 1dB

BER= 31 tại SNR= 3 dB

BER= 9 tại SNR = 6 dB

Nhận xét: SNR càng lớn tức tín hiệu thu được ít nhiễu thì tỷ lệ lỗi bit càng giảm và ngược lại

Ngày đăng: 04/05/2018, 09:22

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w