%-------------------------------------------------------------------------- % Výuková podpora přemětu Modulované signály %-------------------------------------------------------------------------- % Program OFDM MODULACE %-------------------------------------------------------------------------- % % Výpočet a grafické vykreslení modulovaného vysokofrekvenčního signálu % pomocí digitální OFDM modulace (Orthogonal Frequency Dimension Multiplexing) % Digitální OFDM Modulace je aplikována na již modulovaný signál, resp. % komplexní obálku signálu modulovanou QPSK digitální modulací. % % Volitelný modulační (informační) signál a vysokofrekvenční nosná % % Počet možných stavů zvolené modulace QPSK m(t) je 4 % Počet subnosných OFDM modulace je 4 % % VŠB - Technická univerzita Ostrava % Fakulta elektrotechniky a informatiky % Katedra měřicí a řídicí techniky % 17.listopadu 15 % Ostrava - Poruba % 708 33 % % Vypracoval Zdeněk Macháček 2010 %-------------------------------------------------------------------------- %-------------------------------------------------------------------------- % Vyčištění všech proměnných paměti a uzavření všech grafických oken clear all; close all; %-------------------------------------------------------------------------- % Specifikace časového průběhu-čas t[s] a nosné frekvence fc[Hz]RF signálu f_c=500; % nosná frekvence vysokofrekvenčního RF signálu cas = 0.5; % čas průběhu simulace pocet_bodu=10; %počet bodů v čase během jedné periody fc deltat=1/(f_c*pocet_bodu); % zanedbatelný časový okamžik t=0:deltat:cas-deltat; % časový průběh T_m = 0.1; % perioda informačního signálu m(t) %-------------------------------------------------------------------------- % Definování a výpočet digitálního modulačního signálu m(t) % v daném časovém okamžiku periody dvoubitové číslo reprezentující m(t) data = zeros(1,5); t1=0:deltat:T_m-deltat; data(1) = 0; m1(1:length(t1))=data(1); t2=T_m:deltat:2*T_m-deltat; data(2) = 1; m2(1:length(t2))=data(2); t3=2*T_m:deltat:3*T_m-deltat; data(3) = 2; m3(1:length(t3))=data(3); t4=3*T_m:deltat:4*T_m-deltat; data(4) = 3; m4(1:length(t4))=data(4); t5=4*T_m:deltat:cas-deltat; data(5) = 0; m5(1:length(t5))=data(5); m_t = [m1 m2 m3 m4 m5]; % modulační signál m(t) %-------------------------------------------------------------------------- % QPSK modulace - definování a výpočet modulovaného signálu resp. komplexní obálky g(t) % amplitudova modulacni slozka R_t = konstanta % fazova modulacni slozka Theta_t = změna stavu - posun o pi/2 R_t=0.2; % Amplitudová modulační složka for i=1:length(m_t) if m_t(i)==0 Theta_t(i) = pi/4; % Fázová modulační složka 45 stupnu elseif m_t(i)==1 Theta_t(i) = 3*pi/(4); % Fázová modulační složka 135 stupnu elseif m_t(i)==2 Theta_t(i) = 5*pi/(4); % Fázová modulační složka 225 stupnu elseif m_t(i)==3 Theta_t(i) = 7*pi/(4); % Fázová modulační složka 315 stupnu end; R(i) = R_t; end; %-------------------------------------------------------------------------- % OFDM modulace - definování a výpočet pásmového signálu v(t) % Postupně je načteno 5 period resp. stavů, dat informačního signálu ve % formě komplexní obálky již modulovaného signálu QPSK modulací v základním % frekvenčním pásmu. Takto načtený modulovaný signál je dále modulován % rozložením jednotlivých dat do 5 subnosných frekvenčních pásem, které % jsou vzájemně ortogonální. % Načtená fázová modulační složka Theta(t) resp. hodnota komplexní obálky g(t) % modulovaného QPSK signálu n-tého přijatého stavu, hodnoty informačního signálu % v definované periodě T_m. Theta_t_OFDM = zeros(1,5); % inicializace pole fázové modulační složky Theta(t) Theta_t_last = 0; % minulá hodnota fázové modulační složky Theta(t) i2 = 1; % index přijatého stavu, hodnoty informačního signálu for i1=1:length(m_t) if (Theta_t(i1)~=Theta_t_last) Theta_t_OFDM(i2) = Theta_t(i1); % načtení hodnoty fázové modulační složky modulovaného QPSK signálu Theta_t_last = Theta_t(i1) % uložení minulé hodnoty fázové modulační složky Theta(t) i2 = i2 + 1; % zvýšení pořadí načítaného stavu, hodnoty informačního signálu end; end; N_subnosna = 5; % počet subnosných (stavů zasílaných v jednom časovém okamžiku (periodě T_m)) Ts = T_m; % perioda načítaných hodnot, stavů informačního signálu m(t) f_1=1/(N_subnosna*Ts); % frekvence 1.subnosné na kterou se posune zasílaný modulovaný signál g(t) f_2=2/(N_subnosna*Ts); % frekvence 2.subnosné na kterou se posune zasílaný modulovaný signál g(t) f_3=3/(N_subnosna*Ts); % frekvence 3.subnosné na kterou se posune zasílaný modulovaný signál g(t) f_4=4/(N_subnosna*Ts); % frekvence 4.subnosné na kterou se posune zasílaný modulovaný signál g(t) f_5=5/(N_subnosna*Ts); % frekvence 5.subnosné na kterou se posune zasílaný modulovaný signál g(t) % Modulovany pásmový signál OFDM modulací z modulovaného QPSK signalu g(t) v zakladnim pasmu v_t=R_t.*cos(2*pi*(f_c+f_1)*t+Theta_t_OFDM(1))+R_t.*cos(2*pi*(f_c+f_2)*t+Theta_t_OFDM(2))+R_t.*cos(2*pi*(f_c+f_3)*t+Theta_t_OFDM(3))+R_t.*cos(2*pi*(f_c+f_4)*t+Theta_t_OFDM(4))+R_t.*cos(2*pi*(f_c+f_5)*t+Theta_t_OFDM(5)); %-------------------------------------------------------------------------- %Výpočet frekvenčního spektra pásmového signálu pomocí funkce algoritmu FFT N=length(v_t); % počet hodnot pásmového signálu v(t) v_f = (fftshift(fft(v_t)))./N; % komplexní vektor frekvenčního spektra v(t) k=-N/2:N/2-1; % pomocný výpočet symetrického pole osy x f = k.*pocet_bodu*f_c./N; % výpočet x-ové osy - frekvence f[Hz] V_amp = abs(v_f); %amplitudové frekvenční spektrum v(t) V_vykon = V_amp.^2; %výkonové frekvenční spektrum v(t) % Je-li nulová hodnota amplitudy na dané frekvenci je také fáze = 0 for q=1:N if ((abs(real(v_f(q))) < 1e-3) && (abs(imag(v_f(q))) < 1e-3)) v_f(q)=0; end; end; V_faze = angle(v_f); %fázové frekvenční spektrum v(t) %-------------------------------------------------------------------------- % GRAFY - ZOBRAZENÍ SIGNÁLŮ V ČASOVÉ OBLASTI - OFDM modulace a QPSK modulace %-------------------------------------------------------------------------- % Vykreslení grafického časového průběhu modulačního signálu figure; subplot(4,1,1); plot(t,m_t); title('Modulacní digitální signál m(t)'); ylabel('m(t)'); xlabel('t[s]'); grid on; %-------------------------------------------------------------------------- % Vykreslení grafického časového průběhu pásmového (modulovaného) signálu subplot(4,1,2); plot(t,v_t); title('OFDM modulace - Pásmový signál v(t) vytvořený z modulovaného QPSK signálu - komplexní obálky g(t)'); ylabel('v(t)'); xlabel('t[s]'); grid on; %-------------------------------------------------------------------------- % Vykreslení grafického časového průběhu amplitudové modulacní slozky R(t) subplot(4,1,3); plot(t,R) xlabel('t[s]') % Popis x-ove osy ylabel('R(t)') % Popis y-ove osy title('QPSK modulace - Amplitudová modulacní slozka R(t)') % Popis grafu grid on; %-------------------------------------------------------------------------- % Vykreslení grafického časového průběhu fázové modulacní slozky Theta(t) subplot(4,1,4); plot(t,Theta_t) xlabel('t[s]') % Popis x-ove osy ylabel('\Theta(t)') % Popis y-ove osy title('QPSK modulace - Fázová modulacní slozka \Theta(t)') % Popis grafu grid on; %-------------------------------------------------------------------------- % GRAFY - ZOBRAZENÍ SIGNÁLŮ VE FREKVENČNÍ OBLASTI - OFDM modulace %-------------------------------------------------------------------------- %vykresleni amplitudového frekvenčního spektra figure; subplot(3,1,1); stem(f,V_amp) xlabel('f[Hz]') ylabel('^F^R|W_m|') grid on; title('OFDM modulace - Amplitudové frekvencni spektrum pasmoveho (modulovaneho)signalu v(t)') %-------------------------------------------------------------------------- %vykresleni fázového frekvenčního spektra subplot(3,1,2); stem(f,V_faze) xlabel('f[Hz]') ylabel('\Theta_m') grid on title('OFDM modulace - Fazove frekvencni spektrum pasmoveho (modulovaneho)signalu v(t)') %-------------------------------------------------------------------------- %vykresleni výkonového frekvenčního spektra subplot(3,1,3); stem(f,V_vykon) xlabel('f[Hz]') ylabel('^F^R|P_m|') grid on title('OFDM modulace - Vykonove frekvencni spektrum pasmoveho (modulovaneho)signalu v(t)') %-------------------------------------------------------------------------- % GRAFY - ZOBRAZENÍ KONSTELACE MODULACE - IQ DIAGRAM pro QPSK modulaci %-------------------------------------------------------------------------- %Výpočet a vykreslení konstelace modulace pásmového signálu figure; m_t_last = -1; for i=1:length(m_t) if (m_t(i) ~= m_t_last) x = R.*cos(Theta_t); % soufázová modulační složka y = R.*sin(Theta_t); % kvadraturní modulační složka osax=[0,x(i)]; osay=[0,y(i)]; plot(osax,osay) hold on stem(x(i),y(i),'-wo','LineWidth',0.1,'MarkerEdgeColor','b','MarkerFaceColor','w','MarkerSize',8) m_t_last = m_t(i); if m_t(i)==0 text(x(i),y(i),' data m(t)=0') elseif m_t(i)==1 text(x(i),y(i),' data m(t)=1') elseif m_t(i)==2 text(x(i),y(i),' data m(t)=2') elseif m_t(i)==3 text(x(i),y(i),' data m(t)=3') end; end; end; xlabel('x soufázová modulacní slozka (in-phase axis)') ylabel('y kvadraturní modulacni slozka (quadrature axis)') grid on title('Konstelacní diagram (IQ diagram) - QPSK modulovaná komplexní obálka g(t)')