ΤΕΙ ΛΑΡΙΣΑΣ ΧΑΡΑΛΑΜΠΟΣ ΑΜΥΓΔΑΛΟΣ (Τ-1400) ΑΛΕΚΟΣ ΠΑΠΠΑΣ (Τ 1605) ΠΡΟΣΟΜΟΙΩΣΗ MONTE CARLO ΓΙΑ ΣΥΣΤΗΜΑ 8-DPSK
ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1. ΕΙΣΑΓΩΓΗ 1 2. ΠΛΑΙΣΙΟ ΑΝΑΦΟΡΑΣ 1 2.1 ΠΡΟΣΟΜΟΙΩΣΗ MONTE CARLO 1 2.2 ΣΥΣΤΗΜΑΤΑ DPSK 2 3. ΕΙΚΟΝΕΣ ΣΥΣΤΗΜΑΤΟΣ 4 3.1 ΕΝΔΕΙΚΤΙΚΟ ΜΟΝΤΕΛΟ ΠΡΟΣΩΜΕΙΩΣΗΣ 4 3.2 M FILES 4 3.2.1 GNGAUSS 5 3.2.2 QFUNCT 5 3.2.3 CM_DPSKE 5 3.2.4 CM_SM34 5 3.3 MATLAB SCRIPT 7 3.4 ΤΕΛΙΚΟ ΓΡΑΦΗΜΑ 8 4. ΣΥΜΠΕΡΑΣΜΑΤΑ ΑΠΟΤΕΛΕΣΜΑΤΑ 8 i
1. ΕΙΣΑΓΩΓΗ Σκοπός της άσκησης είναι η παραγωγή αποτελεσμάτων από μια προσομοίωση Monte Carlo για ένα σύστημα 8DPSK. Το επιθυμητό αποτέλεσμα θα μας δείξει την πιθανότητα σφάλματος ανάλογα με την ποιότητα του καναλιού, όπως αυτή μετριέται από τον λόγο E b /N o, δηλαδή τον λόγο της ενέργειας που απαιτείται για την αποστολή ενός bit δια την ενέργεια του θορύβου (Noise). 2. ΠΛΑΙΣΙΟ ΑΝΑΦΟΡΑΣ 2.1 Προσομοίωση Monte Carlo Οι μέθοδοι Μόντε Κάρλο είναι μια κατηγορία υπολογιστικών αλγορίθμων που στηρίζονται στην επαναλαμβανόμενη τυχαία δειγματοληψία για να υπολογίσουν τα αποτελέσματά τους. Οι μέθοδοι Μόντε Κάρλο χρησιμοποιούνται συχνά στις προσομοιώσεις φυσικών και μαθηματικών συστημάτων. Λόγω του όρι βασίζονται σε επαναλαμβανόμενους υπολογισμους και σε τυχαίους ή (ψευδοτυχαίους) αριθμούς, οι μέθοδοι Μόντε Κάρλο συνήθως εκτελούνται σε υπολογιστή. Οι μέθοδοι του Μόντε Κάρλο τείνουν να χρησιμοποιηθούν όταν είναι ανέφικτο ή αδύνατο να υπολογιστεί ένα ακριβές αποτέλεσμα με έναν ακριβή (ντετερμινιστικό) αλγόριθμο. Γενικά, δεν υπάρχει μία συγκεκριμένη μέθοδος Μόντε Κάρλο. Ο όρος, που δόθηκε από τους φυσικούς Στάνισλαβ Ούλαμ, Ενρίκο Φέρμι, Τζον βον Νιούμαν, και Νίκολας Μετρόπολις, περιγράφει μια μεγάλη και ευρέως χρησιμοποιούμενη κατηγορία προσεγγίσεων για την επίλυση των προβλημάτων. Η χρήση του 1
τυχαίου και η επαναλαμβανόμενη φύση της διαδικασίας είναι ανάλογες με τις δραστηριότητες που γίνονται σε ένα καζίνο, και συγκεκριμένο σε αυτό του Μόντε Κάρλο, όπου έπαιζε συχνά ο θείος του Ούλαμ. Οι προσεγγίσεις Μόντε Κάρλο ακολουθούν σε γενικές γραμμές ένα συγκεκριμένο σχέδιο: 1. Καθορίζεται μια περιοχή των πιθανών δεδομένων (inputs) 2. Τα δεδομένα παράγονται τυχαία εντός των επιτρεπόμενων ορίων 3. Εκτελούνται μεμονωμένοι ντετερμινιστικοί υπολογισμοί με τα παραχθέντα δεδομένα 4. Τα αποτελέσματα των μεμονωμένων υπολογισμών αθροίζονται και παράγουν το τελικό αποτέλεσμα. 2.2 Συστήματα DPSK Η Διαμόρφωση Μετατόπισης Φάσης (Phase-Shift Keying - PSK) είναι ένα ψηφιακό σχέδιο διαμόρφωσης που μεταβιβάζει τα στοιχεία με την αλλαγή, ή τη διαμόρφωση, η φάση ενός σήματος αναφοράς (το carrier wave). Οποιοδήποτε ψηφιακό σχέδιο διαμόρφωσης χρησιμοποιεί έναν πεπερασμένο αριθμό ευδιάκριτων σημάτων για να αντιπροσωπεύσει τα ψηφιακά στοιχεία. Το PSK χρησιμοποιεί έναν πεπερασμένο αριθμό φάσεων, όπου η κάθε μία αντιστοιχεί σε ένα μοναδικό σχέδιο δυαδικών bit. Συνήθως, κάθε φάση κωδικοποιεί έναν ίσο αριθμό bit. Ο αποδιαμορφωτής (demodulator), ο οποίος σχεδιάζεται συγκεκριμένα για το σετ συμβόλων που χρησιμοποιείται από το διαμορφωτή, καθορίζει τη φάση του λαμβανόμενου σήματος και την χαρτογραφεί στο σύμβολο που αντιπροσωπεύει, ανακτώντας έτσι τα αρχικά στοιχεία. Αυτό απαιτεί το δέκτη για να είναι σε θέση να συγκρίνει τη φάση του λαμβανόμενου σήματος με ένα σήμα αναφοράς. Εναλλακτικά, αντί τα σχέδια bit να ορίζουν την φάση του κύματος, μπορούν να την αλλάζουν κατά ένα διευκρινισμένο ποσό. Ο αποδιαμορφωτής διαβάζει έτσι την πληροφορία από τις αλλαγές στη φάση του λαμβανόμενου σήματος παρά από την ίδια την φάση. Αυτός ο τρόπος διαμόρφωσης ονομάζεται διαφορική διαμόρφωση μετατόπισης φάσης (DPSK - Differential), δεδομένου ότι εξαρτάται από τη διαφορά μεταξύ των διαδοχικών φάσεων. Το DPSK μπορεί να είναι πολύ πιο απλό στην εφαρμογή από συνηθισμένο PSK δεδομένου ότι δεν υπάρχει καμία ανάγκη για τον αποδιαμορφωτή να έχει ένα αντίγραφο του σήματος αναφοράς για να καθορίσει την ακριβή φάση του λαμβανόμενου σήματος. Αντίθετα όμως, παρουσιάζει το μειονέκτημα ότι κατά την ανταλλαγή, παράγει περισσότερες λανθασμένες αποδιαμορφώσεις. Οι ακριβείς απαιτήσεις του ιδιαίτερου σεναρίου υπό εξέταση καθορίζουν ποιο σχέδιο χρησιμοποιείται. 2
Πρόσθετα, τo DPSK λύνει το πρόβλημα των απλών PSK, και ιδιαίτερα των BPSK (Binary Δυαδικό) και QPSK (Quadrature Τετραπλό), όπου υπάρχει μια ασάφεια της φάσης εάν ο αστερισμός περιστρέφεται από κάποια επίδραση (π.χ. θόρυβος) στο κανάλι επικοινωνιών μέσω του οποίου διέρχεται το σήμα. Αυτό το πρόβλημα αντιμετωπίζεται με τη χρησιμοποίηση των στοιχείων για να αλλάξει παρά να τεθεί η φάση. 3
3. ΕΙΚΟΝΕΣ ΣΥΣΤΗΜΑΤΟΣ 3.1 Ενδεικτικό Μοντέλο Προσωμείωσης 3.2 M Files Ο παρακάτω κώδικας αφορά τα m-files που είναι απαραίτητα για την εκτέλεση της προσομοίωσης. Το παραπάνω γράφημα είναι ενδεικτικό του συστήματος και δεν χρησιμοποιείται κατά την προσομοίωση. Τα m-files πρέπει να ονομαστούν κατάλληλα (όνομα_συνάρτησης.m π.χ. gngauss.m) και να τοποθετηθούν στον ίδιο φάκελο. Στην συνέχεια, πρέπει να γραφτεί ο κώδικας του sript αρχείου (παράγραφος 3.3 σελίδα 7) και να αποθηκευτεί και αυτός σε m-file στον ίδιο φάκελο, ο οποίος θα πρέπει είτε να οριστεί σαν τρέχων φάκελος (Current 4
Directory) στο Matlab ή να προστεθεί στο PATH του Matlab. απαραίτητο για να λειτουργήσουν σωστά οι συναρτήσεις. εντολές στο script δίνουν ετικέτες στους άξονες. 3.2.1 gngauss Αυτό είναι Οι δύο τελευταίες function [gsrv1,gsrv2]=gngauss(m,sgma) % [gsrv1,gsrv2]=gngauss(m,sgma) % [gsrv1,gsrv2]=gngauss(sgma) % [gsrv1,gsrv2]=gngauss % GNGAUSS generates two independent Gaussian random variables with mean % m and standard deviation sgma. If one of the input arguments is missing, % it takes the mean as 0. % If neither the mean nor the variance is given, it generates two standard % Gaussian random variables. if nargin == 0, m=0; sgma=1; elseif nargin == 1, sgma=m; m=0; u=rand; % a uniform random variable in (0,1) z=sgma*(sqrt(2*log(1/(1-u)))); % a Rayleigh distributed random variable u=rand; % another uniform random variable in (0,1) gsrv1=m+z*cos(2*pi*u); gsrv2=m+z*sin(2*pi*u); 3.2.2 Qfunct function [y]=qfunct(x) % [y]=qfunct(x) QFUNCT evaluates the Q-function. % y = 1/sqrt(2*pi) * integral from x to inf of exp(-t^2/2) dt. % y = (1/2) * erfc(x/sqrt(2)). y=(1/2)*erfc(x/sqrt(2)); 3.2.3 cm_dpske function [enc_comp] = cm_dpske(e,m,mapping,sequence) % CM_DPSKE differentially encodes a sequence. % E is the average energy. M is the number of constellation points % and mapping is the vector defining how the constellation points are % allocated. Finally, sequence is the uncoded binary data sequence. k=log2(m); N=length(sequence); % if N is not divisible by k. append zerus,so that it is remainder=rem(n,k); if (remainder==0), for i=n+1:n+k-remainder, 5
sequence(i)=0; N=N+k-remainder; theta=0; % initially, assume that theta=0 for i=1:k:n index=0; for j=i:i+k-1, index=2*index+sequence(j); index=index+1; theta=mod(2*pi*mapping(index)/m+theta,2*pi); enc_comp((i+k-1)/k,1)=sqrt(e)*cos(theta); enc_comp((i+k-1)/k,2)=sqrt(e)*sin(theta); 3.2.4 cm_sm34 function [p]=cm_sm34(snr_in_db) % [p]=cm_sm34(snr_in_db) % CM_SM34 finds the probability of error for the given % value of snr_in_db, signal-to-noise ratio in db. N=10000; E=1; % energy per symbol snr=10^(snr_in_db/10); % signal-to-noise ratio sgma=sqrt(e/(4*snr)); % noise variance % Generation of the data source follows. for i=1:2*n, temp=rand; % a uniform random variable between 0 and 1 if (temp<0.5), dsource(i)=0; 6 % With probability 1/2, source output is "0." else dsource(i)=1; % With probability 1/2, source output is "1" % Differential encoding of the data source follows mapping=[0 1 3 2]; M=4; [diff_enc_output] = cm_dpske(e,m,mapping,dsource); % Received signal is then for i=1:n, [n(1) n(2)]=gngauss(sgma); r(i,:)=diff_enc_output(i,:)+n; % detection and the probability of error calculation numoferr=0; prev_theta=0; for i=1:n, theta=angle(r(i,1)+j*r(i,2)); delta_theta=mod(theta-prev_theta,2*pi); if ((delta_theta<pi/4) (delta_theta>7*pi/4)), decis=[0 0];
elseif (delta_theta<3*pi/4), decis=[0 1]; elseif (delta_theta<5*pi/4) decis=[1 1]; else decis=[1 0]; prev_theta=theta; % Increase the error counter, if the decision is not correct. if ((decis(1)~=dsource(2*i-1)) (decis(2)~=dsource(2*i))), numoferr=numoferr+1; p=numoferr/n; 3.3 Matlab Script echo on SNRindB1=0:2:12; SNRindB2=0:0.1:12; for i=1:length(snrindb1), smld_err_prb(i)=cm_sm34(snrindb1(i)); rate %signal-to- for i=1:length(snrindb2), SNR=exp(SNRindB2(i)*log(10)/10); noise ratio theo_err_prb(i)=2*qfunct(sqrt(snr)); symbol-error rate % Plotting commands follow semilogy(snrindb1,smld_err_prb,'*'); hold semilogy(snrindb2,theo_err_prb); xlabel('eb/n0'); ylabel('pb'); %simulated error %theoretical 7
3.4 Τελικό Γράφημα 4. ΣΥΜΠΕΡΑΣΜΑΤΑ ΑΠΟΤΕΛΕΣΜΑΤΑ Βάσει της γνωστής σε εμάς θεωρίας, το αποτέλεσμα της προσομοίωσης εμφανίζει πτώση της πιθανότητας σφάλματος όσο βελτιώνεται η ποιότητα του καναλιού (αυξάνεται δηλαδή του E b /N o ). Αυτό επιβεβαιώνεται από το γράφημα που προκύπτει από την εκτέλεση της προσομοίωσης. 8