Đồ án Đi sâu phân tích các phương pháp điều chế số sử dụng khóa dich pha PSK

Các hệ thống thông tin số hiện đang phát triển rất mạnh mẽ trên toàn thế giới và đã thay thế hầu hết các hệ thống thông tin tương tự. Để đáp ứng ngày càng tốt hơn những nhu cầu về chất lượng dịch vụ, sự phong phú của các dịch vụ, hạ giá thành, đặc biệt là số lượng thuê bao đang tăng nhanh các nhà nghiên cứu đã áp dụng rất nhiều kỹ thuật và một trong số đó là kỹ thuật điều chế số. Mặc dù có nhiều phương thức điều chế số, nhưng việc phân tích các phương thức điều chế này chủ yếu tuỳ thuộc vào dạng kiểu điều chế và tách sóng. Để hiểu rõ hơn về các loại điều chế cũng như cách thức hoạt động của các loại điều chế đặc biệt là điều chế khóa dịch pha ( phasing Shift Keying ) nên em đã chọn đề tài “Đi sâu phân tích các phương pháp điều chế số sử dụng khóa dich pha PSK”. Sau một thời gian tìm hiểu và cùng với sự hướng dẫn của các thầy giáo trong tổ bộ môn và thầy giáo TS. Lê Quốc Vượng trực tiếp hướng dẫn, đến nay em đã hoàn thành đồ án này với nội dung gồm ba chương: Chương I: Tổng quan về lý thuyết điều chế số tín hiệuChương II: Đi sâu phân tích các loại điều chế khóa dịch pha PSKChương III: Mô phỏng một số loại điều chế khóa dich pha Em xin bày tỏ lòng cảm ơn tới các thầy giáo đã giúp đỡ để em có thể hoàn thành đồ án tốt nghiệp này.

doc10 trang | Chia sẻ: banmai | Lượt xem: 2494 | Lượt tải: 5download
Bạn đang xem nội dung tài liệu Đồ án Đi sâu phân tích các phương pháp điều chế số sử dụng khóa dich pha PSK, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CHƯƠNG TRÌNH MÔ PHỎNG 1. Chương trình mô phỏng truyền dẫn BPSK % Chương trình của H.Harada and T.Yamamura, %************************ Phần chuẩn bị ************************ sr=256000.0; % Tốc độ symbol ml=1; % Số mức điều chế br=sr.*ml; % Tốc độ truyền dữ liệu bit (trong trường hợp này bằng tốc độ symbol) nd = 10; % Số ký hiệu (symbol) phỏng trong mỗi vòng lặp ebn0=3; % Eb/N0 IPOINT=8; % Số mẫu %*************************** Bộ lọc *************************** irfn=21; % Các vòi của bộ lọc alfs=0.5; % Hệ số Roll-off [xh] = hrollfcoef(irfn,IPOINT,sr,alfs,1); %Hệ số bộ lọc phát [xh2] = hrollfcoef(irfn,IPOINT,sr,alfs,0); %Hệ số bộ lọc thu %************************* Bắt đầu tính toán********************* nloop=100; % Số vòng mô phỏng noe = 0; % Số lỗi dữ liệu nod = 0; % số dữ liệu truyền for iii=1:nloop %************************* Dữ liệu đầu ************************* data=rand(1,nd)>0.5; % rand: hàm đã được xây dựng %*********************** Bộ sinh dữ liệu ************************ data1=data.*2-1; [data2] = oversamp( data1, nd , IPOINT) ; data3 = conv(data2,xh); % conv: hàm đã được xây dựng %************************ Attenuation Calculation *************** spow=sum(data3.*data3)/nd; attn=0.5*spow*sr/br*10.^(-ebn0/10); attn=sqrt(attn); %******************* Kênh nhiễu đa đường (Fading) **************** [ifade,qfade]=sefade(data3,zeros(1,length(data3)),itau,dlvl,th1,n0,itnd1,now1,length(data3),tstp,fd,flat) %******************* Nhiễu trắng cộng (AWGN) ******************* inoise=randn(1,length(data3)).*attn; % randn: hàm đã được xây dựng data4=data3+inoise; data5=conv(data4,xh2); % conv: hàm đã được xây dựng sampl=irfn*IPOINT+1; data6 = data5(sampl:8:8*nd+sampl-1); %********************** Giải điều chế BPSK ******************** demodata=data6 > 0; %*********************** Tốc độ lỗi bit (BER) ******************** noe2=sum(abs(data-demodata)); % sum: hàm đã được xây dựng nod2=length(data); % length: hàm đã được xây dựng noe=noe+noe2; nod=nod+nod2; fprintf('%d\t%e\n',iii,noe2/nod2); plot(data1) title('Du lieu truyen BPSK') gtext('Bien do') gtext('t') hold on figure; plot(data2) hold on figure; plot(data3) hold on figure; plot(data4) end % for iii=1:nloop %********************** kết quả mô phỏng *********************** ber = noe/nod; fprintf('%d\t%d\t%d\t%e\n',ebn0,noe,nod,noe/nod); fid = fopen('BERbpsk.dat','a'); fprintf(fid,'%d\t%e\t%f\t%f\t\n',ebn0,noe/nod,noe,nod); fclose(fid); gtext('Bien do') gtext('t') %******************** Kết thúc chương trình ********************** 2. Chương trình mô phỏng pha BPSK clc A=1; M=2; for i=1:M Teta_m =2*pi*(i-1)/M; x=A*cos(Teta_m); y=A*sin(Teta_m); plot(x,y,'m:*','LineWidth',6) title('Do thi sao voi M=2') xlabel('A*cos(Teta_m)') ylabel('A*sin(Teta_m)') axis([-1.3 1.3 -1.3 1.3]); hold on end u=-1.3:0.001:1.3; v=0; hold on plot(u,v,'b') hold on plot(v,u,'b') hold on grid on gtext('01') 3. Chương trình mô phỏng truyền dẫn QPSK % Chương trình của H.Harada and T.Yamamura %****************** Phần chuẩn bị ***************************** sr=256000.0; % Tốc độ ký hiệu ml=2; % ml:Số mức điều chế (BPSK:ml=1, QPSK:ml=2, 16QAM:ml=4) br=sr .* ml; % Tốc độ truyền dữ liệu nd = 10; % Số ký hiệu trong mỗi vòng mỗi vòng mô phỏng ebn0=3; % Eb/N0 IPOINT=8; % Số mẫu %**************************** Bộ lọc ************************** irfn=21; % Số vòi của bộ lọc alfs=0.5; % Chỉ số Roll-off [xh] = hrollfcoef(irfn,IPOINT,sr,alfs,1); %Hệ số bộ lọc phát [xh2] = hrollfcoef(irfn,IPOINT,sr,alfs,0); %Hệ số bộ lọc thu %************************ Bắt đầu tính toán ********************** nloop=100; % Số vòng mô phỏng noe = 0; % Số dữ liệu lỗi nod = 0; % Số dữ liệu đã truyền for iii=1:nloop %*********************** Bộ sinh dữ liệu ************************ data1=rand(1,nd*ml)>0.5; % rand: Hàm đã được xây dựng %************************* QPSK Modulation ******************** [ich,qch]=qpskmod(data1,1,nd,ml); [ich1,qch1]= compoversamp(ich,qch,length(ich),IPOINT); [ich2,qch2]= compconv(ich1,qch1,xh); %********************* Attenuation Calculation ******************* spow=sum(ich2.*ich2+qch2.*qch2)/nd; % sum: Hàm đã được xây dựng attn=0.5*spow*sr/br*10.^(-ebn0/10); attn=sqrt(attn); % sqrt: Hàm đã được xây dựng %****************** Nhiễu trắng cộng (AWGN) ******************** [ich3,qch3]= comb(ich2,qch2,attn);% Thêm nhiễu trắng cộng [ich4,qch4]= compconv(ich3,qch3,xh2); syncpoint=irfn*IPOINT+1; ich5=ich4(syncpoint:IPOINT:length(ich4)); qch5=qch4(syncpoint:IPOINT:length(qch4)); %********************* giải điều chế QPSK ********************** [demodata]=qpskdemod(ich5,qch5,1,nd,ml); %********************* Tốc độ lỗi bit (BER) ********************** noe2=sum(abs(data1-demodata)); % sum: Hàm đã được xây dựng nod2=length(data1); % length: Hàm đã được xây dựng noe=noe+noe2; nod=nod+nod2; fprintf('%d\t%e\n',iii,noe2/nod2); % fprintf: Hàm đã được xây dựng plot(data1) title('Du lieu truyen QPSK') hold on Figure; plot(ich1) title('Dữ liệu vượt nhịp kênh I') figure; plot(qch1) title('Dữ liệu vượt nhịp kênh Q') figure; plot(ich4) title('Tín hiệu thu kênh I') plot(qch4) title('Dữ liệu vượt nhịp kênh Q') end % for iii=1:nloop gtext('Bien do') gtext('t') %*********************** Kết quả mô phỏng ********************** ber = noe/nod; fprintf('%d\t%d\t%d\t%e\n',ebn0,noe,nod,noe/nod); % fprintf: Hàm đã được xây dựng fid = fopen('BERqpsk.dat','a'); fprintf(fid,'%d\t%e\t%f\t%f\t\n',ebn0,noe/nod,noe,nod); % fprintf: Hàm đã được xây dựng fclose(fid); %**************** Kết thúc chương trình mô phỏng ****************** 4. Chương trình mô phỏng Pha QPSK clc A=1; M=4; Teta=pi/M; for i=1:M Teta_m =Teta+2*pi*(i-1)/M; x=A*cos(Teta_m); y=A*sin(Teta_m); plot(x,y,'m:*','LineWidth',6) title('Pha QPSK') xlabel('A*cos(Teta_m)') ylabel('A*sin(Teta_m)') axis([-1.3 1.3 -1.3 1.3]); hold on end gtext('00') gtext('01') gtext('11') gtext('10') u=-1.3:0.001:1.3; v=0; hold on plot(u,v,'b') hold on plot(v,u,'b') hold on grid on 5. Một số hàm được thiết lập thêm trong quá trình mô phỏng : 1.function [iout,qout] = comb (idata,qdata,attn) %****************** Các giá trị ************************* % idata : Dữ liệu vào Ich % qdata : Dữ liệu vào Qch % iout Dữ liệu ra Ich % qout Dữ liệu ra Qch % attn : attenuation level caused by Eb/No or C/N %***************************************************** iout = randn(1,length(idata)).*attn; qout = randn(1,length(qdata)).*attn; iout = iout+idata(1:length(idata)); qout = qout+qdata(1:length(qdata)); 2. function [iout, qout] = compconv(idata, qdata, filter) % **************************************************************** % idata : dãy dữ liệu ich % qdata : Dãy dữ liệu qch % filter : vòi lọc coefficience iout = conv(idata,filter); qout = conv(qdata,filter); 3.function [iout,qout] = compoversamp( idata, qdata , nsymb , sample) iout=zeros(1,nsymb*sample); qout=zeros(1,nsymb*sample); iout(1:sample:1+sample*(nsymb-1))=idata; qout(1:sample:1+sample*(nsymb-1))=qdata; 4.function [xh] = hrollfcoef(irfn,ipoint,sr,alfs,ncc) %****************** Các giá trị ************************* % irfn : Số ký hiệu bộ lọc sử dụng % ipoint : Số mẫu trong 1 ký hiệu % sr : Tốc độ ký hiệu % alfs : Hệ số Roll-off % ncc : 1 –Bộ lọc phát 0 – Bộ lọc thu % ***************************************************** xi=zeros(1,irfn*ipoint+1); xq=zeros(1,irfn*ipoint+1); point = ipoint; tr = sr ; tstp = 1.0 ./ tr ./ ipoint; n = ipoint .* irfn; mid = ( n ./ 2 ) + 1; sub1 = 4.0 .* alfs .* tr; % 4*alpha*R_s for i = 1 : n icon = i - mid; ym = icon; if icon == 0.0 xt = (1.0-alfs+4.0.*alfs./pi).* tr; % h(0) else sub2 =16.0.*alfs.*alfs.*ym.*ym./ipoint./ipoint; if sub2 ~= 1.0 x1=sin(pi*(1.0-alfs)/ipoint*ym)./pi./(1.0-sub2)./ym./tstp; x2=cos(pi*(1.0+alfs)/ipoint*ym)./pi.*sub1./(1.0-sub2); xt = x1 + x2; % h(t) plot((1:length(xh)),xh) else % (4alphaRst)^2 = 1plot((1:length(xh)),xh) xt=alfs.*tr.*((1.02.0/pi).*cos(pi/4.0/alfs)+(1.0+2.0./pi).*sin(pi/4.0/alfs))./sqrt(2.0); end % if sub2 ~= 1.0 end % if icon == 0.0 if ncc == 0 % Trong trường hợp thu xh( i ) = xt ./ ipoint ./ tr; % Sự chuẩn hóa elseif ncc == 1 % Trong trường hợp phát xh( i ) = xt ./ tr; % Sự chuẩn hóa else error('ncc error'); end % if ncc == 0 end % for i = 1 : n

Các file đính kèm theo tài liệu này:

  • docchuong trinh2.doc
  • docchuong trinh.doc
  • docDUNG.doc
  • docnumber one.doc
  • docxnumber one.docx
  • docnumber two2.doc
  • docxnumber two.docx