1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Homework Help: BER output problem for Radio over Fiber system/Optical Comm

  1. Apr 22, 2010 #1
    Hi guys, this is my first work in optical and first simulation in matlab. I am sorry if there is mistake and im really new to this.

    Here is what I did, im simulation an entire Radio Over Fiber system with Matlab, linear system.

    Let me insert my code first,
    Code (Text):
     
    %*****************************Defining constant parameter****************
    %Rb = 1e+6; %bit rate
    %Tb = 1/Rb; %bit duration / period
    Num_bits = 1e4; %number of bits

    nsamp = 20; %samples per symbols
    %Tsamp = Tb/nsamp; %sampling rate, fsamp = 20MHz.
    a = 0.2; %channel attenuation, dB/km
    L = 20; % Length of fiber
    Gain = 10; %Gain in dB

    %*****************************Filter definations************************

    snr_dB=0:20; %SNR in dB from 0 to 20

    SNR=10.^(snr_dB./10); %SNR in linear scale

    Tx_filter = ones(1,nsamp); %transmitter filter, in terms of
    % h(t),match filter
    Rx_filter = fliplr(Tx_filter/nsamp); % receiver filter (matched filter),
    % flip from left to right to make
    % it h(T-t), match filter

    Tx_OOK = randint(1,Num_bits); % randomly generating 1 and 0 in a
    % row of matrix for 1000
    % column,basically ON-OFF keying
    % with random bits


    %*****************************Channel input*****************************
    Tx_OOKin = 0+Tx_OOK; % Tx+with power, 0dBm,ideal.

    %*****************************Channel properties************************

    Txch = Tx_OOKin -(a*L); %Signal in channel, deducting with
    %channel attenuation=4dB

    Txout = 10.^(Txch./10); %Changing back the signal to linear
    %scale

    Tx_signal = rectpulse(Txout,nsamp); % generate rectpulse for nsamp time
    % per symbol


    %*****************************Receiver**********************************
    for i=1:length(snr_dB)
    Rx_signal = awgn(Tx_signal,snr_dB(i)+3-10*log10(nsamp),'measured');



    %*****************************Match filtering***************************
    MF_out = conv(Rx_signal,Rx_filter); %equivalent to y(t)=x(t)*h(t)

    MF_out_downsamp = MF_out(nsamp:nsamp:end); %sampling and hold



    %try without truncation

    %*****************************Thresholding*******************************

    Rxth = zeros(1,Num_bits); %Reset receiver before thresholding

    Rxth(find(MF_out_downsamp>0.45))=1; %value above 0.45 equivalent to one
    %at the receiver, thresholding.

    %*****************************BER CALC**********************************
    ber(i) = biterr(Tx_OOK,Rxth); %Matlab function for ber
    %******************Theoritical BER CALC**********************************
    ber_pr(i) = Qfunct(sqrt(SNR(i))); %theoritical for ber
    end

    figure;
    semilogy(snr_dB,ber,'b'); %Simulation
    hold on;
    semilogy(snr_dB,ber_pr,'r');
    xlabel('SNR(dB)');
    ylabel('BER');[/CODE]

    Above is my entire code, the part i bold, i dun really get the idea, i took it from my friend cause at the receiver part, i dont really have an idea of how to receive the signal for at least with 10 different SNR rate and plot BER. My friend used the Match filter, but i dont really have the exact idea how match filter works.

    The Tx_filter and Rx_filter part i got it where we flip the entire input from transmitter and at the receiver. which is h(t) from transmitter becomes h(-t).

    I have uploaded the output and the blue line on the plot is the output that i got
     

    Attached Files:

  2. jcsd
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook

Can you offer guidance or do you also need help?
Draft saved Draft deleted