Δίκτυα Καθοριζόμενα από Λογισμικό

Σχετικά έγγραφα
Μηχανική Μάθηση Hypothesis Testing

Ψηφιακή Οικονομία. Διάλεξη 11η: Markets and Strategic Interaction in Networks Mαρίνα Μπιτσάκη Τμήμα Επιστήμης Υπολογιστών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ψηφιακή Οικονομία. Διάλεξη 13η: Multi-Object Auctions Mαρίνα Μπιτσάκη Τμήμα Επιστήμης Υπολογιστών

Διοικητική Λογιστική

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ψηφιακή Οικονομία. Διάλεξη 10η: Basics of Game Theory part 2 Mαρίνα Μπιτσάκη Τμήμα Επιστήμης Υπολογιστών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ψηφιακή Οικονομία. Διάλεξη 8η: Producer Behavior Mαρίνα Μπιτσάκη Τμήμα Επιστήμης Υπολογιστών

Εισαγωγή στους Αλγορίθμους

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΑΛΛΗΛΟΓΡΑΦΙΑ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΗΝ ΑΓΓΛΙΚΗ ΓΛΩΣΣΑ

Εισαγωγή στους Αλγορίθμους

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ψηφιακή Οικονομία. Διάλεξη 7η: Consumer Behavior Mαρίνα Μπιτσάκη Τμήμα Επιστήμης Υπολογιστών

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

PRESENTATION TITLE PRESENTATION SUBTITLE

Δομές Δεδομένων Ενότητα 3

PRESENTATION TITLE PRESENTATION SUBTITLE

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Βάσεις Περιβαλλοντικών Δεδομένων

Εισαγωγή στους Αλγορίθμους

Διοικητική Λογιστική

Τεχνικό Σχέδιο - CAD

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

ΟΡΟΛΟΓΙΑ -ΞΕΝΗ ΓΛΩΣΣΑ

Μηχανολογικό Σχέδιο Ι

Τεχνολογία Λογισμικού

Μάρκετινγκ Αγροτικών Προϊόντων

Βάσεις Περιβαλλοντικών Δεδομένων

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΑΛΛΗΛΟΓΡΑΦΙΑ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΗΝ ΑΓΓΛΙΚΗ ΓΛΩΣΣΑ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ψηφιακή Οικονομία. Διάλεξη 9η: Basics of Game Theory Mαρίνα Μπιτσάκη Τμήμα Επιστήμης Υπολογιστών

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Instruction Execution Times

Διαφήμιση και Δημόσιες Σχέσεις Ενότητα 9: Σχέσεις διαφημιστή-διαφημιζόμενου

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Ψηφιακή Επεξεργασία Εικόνων

Δομές Δεδομένων Ενότητα 1

Τεχνολογία Πολιτισμικού Λογισμικού

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Εισαγωγή σε μεθόδους Monte Carlo Ενότητα 3: Δειγματοληπτικές μέθοδοι

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Εισαγωγή σε μεθόδους Monte Carlo Ενότητα 2: Ολοκλήρωση Monte Carlo, γεννήτριες τυχαίων αριθμών

Κβαντική Επεξεργασία Πληροφορίας

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

ΣΥΜΠΕΡΙΦΟΡΑ ΚΑΤΑΝΑΛΩΤΗ

Τεχνικό Σχέδιο - CAD

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Σχεδίαση Ολοκληρωμένων Κυκλωμάτων Μέρος Α-Ενότητα 5: Φωτολιθογραφία. Αγγελική Αραπογιάννη Τμήμα Πληροφορικής και Τηλεπικοινωνιών

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Στατιστική. 6 ο Μάθημα: Διαστήματα Εμπιστοσύνης και Έλεγχοι Υποθέσεων. Γεώργιος Μενεξές Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Ευφυής Προγραμματισμός

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Διδακτική Πληροφορικής

Εισαγωγή στους Υπολογιστές

Τηλεανίχνευση - Φωτογεωλογία και Μαθηματική Γεωγραφία Ενότητα 1: Τηλεανίχνευση - Ψηφιακή Ανάλυση Εικόνας

Εισαγωγή στην Πληροφορική

ΟΡΟΛΟΓΙΑ -ΞΕΝΗ ΓΛΩΣΣΑ

Τεχνικό Σχέδιο - CAD. Τόξο Κύκλου. Τόξο Κύκλου - Έλλειψη. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Δομές Δεδομένων Ενότητα 4

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΑΛΛΗΛΟΓΡΑΦΙΑ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΗΝ ΑΓΓΛΙΚΗ ΓΛΩΣΣΑ

ΟΡΟΛΟΓΙΑ -ΞΕΝΗ ΓΛΩΣΣΑ

European Constitutional Law

Σχεδίαση Ολοκληρωμένων Κυκλωμάτων Ενότητα Α-Κεφάλαιο 3: Οξείδωση του πυριτίου. Αγγελική Αραπογιάννη Τμήμα Πληροφορικής και Τηλεπικοινωνιών

Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΑΛΛΗΛΟΓΡΑΦΙΑ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΗΝ ΑΓΓΛΙΚΗ ΓΛΩΣΣΑ

Κβαντική Επεξεργασία Πληροφορίας

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Αρχεία και Βάσεις Δεδομένων

Ανάκτηση Πληροφορίας

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Διοίκηση Ολικής Ποιότητας & Επιχειρηματική Αριστεία Ενότητα 1.3.3: Μεθοδολογία εφαρμογής προγράμματος Ολικής Ποιότητας

Αλγόριθμοι και πολυπλοκότητα Bucket-Sort και Radix-Sort

Ιστορία της μετάφρασης

Μάρκετινγκ Αγροτικών Προϊόντων

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

Μάρκετινγκ. Ενότητα 2: Αξία για τους Πελάτες

Transcript:

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δίκτυα Καθοριζόμενα από Λογισμικό Exercise Session 4: Introduction to GNU Radio Τμήμα Επιστήμης Υπολογιστών

Introduction into GNU Radio Manolis Surligas surligas@csd.uoc.gr Computer Science Department, University of Crete November 16, 2014 Introduction into GNU Radio 1 / 24

Outline 1 GNU Radio 2 The GNU Radio Companion 3 Block Types 4 IO Signatures 5 Creating a GNU Radio block 6 Compile GNU Radio from source Introduction into GNU Radio 2 / 24

GNU Radio GNU Radio is the most widely used SDR software Open source, active development community The platform provides basic signal and other processing units Easy to expand and develop custom modules-plugins Critical operations C/C++ Components bindings Python Python wrappers for C/C++ functions/methods using SWIG Introduction into GNU Radio 3 / 24

GNU Radio Block: processing unit performing a specific task arbitrary number of I/O ports each port: specific data type (float, integer,... ) One thread per block Flowgraph: program scenario with the connected blocks Introduction into GNU Radio 4 / 24

The GNU Radio Companion GNU Radio ships together with a set of commonly used Signal Processing blocks It provides a GUI IDE called GNU Radio Companion (GRC) GRC offers: Drag and drop functionality for inserting blocks Point and click block connections On the fly, data type and size validation for the connected blocks Block parameters can easily configured via a pop-up window GRC greatly reduces time and code lines required to build up an SDR application Introduction into GNU Radio 5 / 24

Block Types Blocks are classified depending their input - output ratio Synchronous blocks (1:1) Equal number of input and output items are consumed and produced respectively Decimation Blocks (N:1) Fixed ratio of input-output items Input items are a fixed multiple of output items Interpolation Blocks (1:N) is the exact opposite of decimation blocks Block Most generic block type Arbitrary number of input and output items Developers should inherit this block type only if the above are not suitable Introduction into GNU Radio 6 / 24

IO Signatures Each block may have and arbitrary number of input and output ports Each port has a size and data type Only blocks with ports of equal size and data type can be connected Blocks with only output ports are called sources Sinks are blocks with input ports only Introduction into GNU Radio 7 / 24

IO Signatures Each block may have and arbitrary number of input and output ports Each port has a size and data type Only blocks with ports of equal size and data type can be connected Blocks with only output ports are called sources Sinks are blocks with input ports only Note! Internally, input and output ports are implemented as buffers, where items are read and stored respectively Introduction into GNU Radio 7 / 24

IO Signatures Input and output ports are declared at the block constructor using the gr::io signature API Prototypes gr :: io_signature :: make (min, max, size ) gr :: io_signature :: make2 (min, max, size1, size2 ) gr :: io_signature :: make3 (min, max, size1, size2, size3 ) min specifies the minimum number of ports max specifies the maximum number of ports size is the size of the port Introduction into GNU Radio 8 / 24

Creating a GNU Radio block Lets create our first GNU Radio block hello_world_block :: hello_world_block ( const size_t param1, const double param2, int * other_params ) /* Block type and name */ : sync_block (" hello_world ", /* Input : exactly one input of complex numbers */ io_signature :: make (1,1, sizeof ( gr_complex )), /* Outputs : exactly 2 output ports of float numbers */ io_signature :: make (2,2, sizeof ( float ))), /* Normal C ++ constructor initialization */ d_param1 ( param1 ), d_param2 ( param2 + param1 ), d_other_params ( other_params ) { // Other C ++ stuff } Introduction into GNU Radio 9 / 24

Implement software processing After creating and initializing the block, the actual data processing should be implemented Depending the block type, the appropriate inherited method should be implemented work() for synchronous, decimation and interpolation blocks general work() for basic blocks Introduction into GNU Radio 10 / 24

Implement software processing work() and general work() are automatically called by the GNU Radio scheduler when enough input and output items are available Developers should perform the appropriate processing with the available input items and produce the corresponding output If the method state should be saved for a future invocation, the class (private) members should be used Introduction into GNU Radio 11 / 24

The work() method Prototype int work ( int noutput_items, gr_vector_const_void_star & input_items, gr_vector_void_star & output_items ); noutput items indicates the number of items that are available at the output port(s). Due to the fixed relation between the available input and output ports of synchronous (1:1), decimation (N:1) and interpolation (1:N) blocks, the available input items are derived from the noutput items parameter Introduction into GNU Radio 12 / 24

The work() method Prototype int work ( int noutput_items, gr_vector_const_void_star & input_items, gr_vector_void_star & output_items ); input items is a vector of pointers to buffers that contain the data of each input port The minimum and maximum size of the vector is specified by the min, max value of the I/O input signature of the constructor The actual size depends on the number of connected input ports Introduction into GNU Radio 13 / 24

The work() method Prototype int work ( int noutput_items, gr_vector_const_void_star & input_items, gr_vector_void_star & output_items ); output items is a vector of pointers to buffers where the output items can be stored The minimum and maximum size of the vector is specified by the min, max value of the I/O output signature of the constructor The actual size depends on the number of connected output ports Introduction into GNU Radio 14 / 24

The work() method Prototype int work ( int noutput_items, gr_vector_const_void_star & input_items, gr_vector_void_star & output_items ); As item the entity with the specified size at the I/O signature is considered The return value of this method, informs the scheduler about the items produced and consequently, consumed during the method invocation Introduction into GNU Radio 15 / 24

The general work() method Prototype int general_work ( int noutput_items, gr_vector_int & ninput_items, gr_vector_const_void_star & input_items, gr_vector_void_star & output_items ); general work() method should be implemented when a basic block type is used The noutput items, input items and output items parameters have the same purpose with those of work() method Introduction into GNU Radio 16 / 24

The general work() method Prototype int general_work ( int noutput_items, gr_vector_int & ninput_items, gr_vector_const_void_star & input_items, gr_vector_void_star & output_items ); ninput items is a vector of integers, with each element to contain the number of the available input items of the corresponding input port Produced items are reported to the scheduler with the return value Consumed input items are reported using the consume() or consume each() methods Introduction into GNU Radio 17 / 24

The general work() method Prototype int general_work ( int noutput_items, gr_vector_int & ninput_items, gr_vector_const_void_star & input_items, gr_vector_void_star & output_items ); /* * * @ how_ many_ items items consumed from input port * @which_input */ void consume ( int which_input, int how_many_items ); /* * * @ how_ many_ items items consumed from all the input * ports of the current block */ void consume ( int how_many_items ); Introduction into GNU Radio 18 / 24

Retrieve input and output buffers Input and output buffers of the corresponding input and output ports are retrieved from input items and noutput items respectively Both input items and noutput items have void * data type They can be cast to the data type used at the constructor of the block For our example: int work ( int noutput_items, gr_vector_const_void_star & input_items, gr_vector_void_star & output_items ) { const gr_complex * in = ( const gr_complex *) input_items [0]; float * out0 = ( float *) output_items [0]; float * out1 = ( float *) output_items [1]; /* Rest of the code */ } Introduction into GNU Radio 19 / 24

Compile GNU Radio from source Before trying to compile the GNU Radio several packets should be installed cmake cppuint boost and dev files fftw3 and dev files python swig numpy Doxygen Cheetah and python-cheetah gsl and dev files qt4 qwt and dev files pyqt pyqwt wxpython python-lxml WxWidgets audio-oss and dev files portaudio and dev files Introduction into GNU Radio 20 / 24

Compile GNU Radio from source Grab the source code from https://www.gnuradio.org For the purpose of this course, a custom GNU Radio version will be provided with a set of examples Before compiling, the appropriate Makefiles should be produced using the CMake tool cd gnuradio_dir mkdir build cd build cmake - DCMAKE_BUILD_TYPE = Debug.. Introduction into GNU Radio 21 / 24

Compile GNU Radio from source Gnuradio enabled components # ############################# * python - support * testing - support * volk * doxygen * sphinx * gnuradio - runtime * gr - ctrlport * gr - blocks * gnuradio - companion * gr - fec * gr - fft * gr - filter * gr - analog * gr - digital * gr - dtv * gr - atsc * gr - channels * gr - noaa * gr - pager * gr - qtgui * gr - trellis * gr - utils * gr - video - sdl * gr - vocoder * gr - fcd * gr - wavelet * gr - wxgui make make After cmake, in order to get a fully functional GNU Radio instance, components of the left column should be enabled To compile and install GNU Radio execute inside the build/ directory: install Introduction into GNU Radio 22 / 24

Resources Check the sample code of the gr-hy436 GNU Radio module http://www.gnuradio.org http://gnuradio.org/doc/doxygen/index.html Introduction into GNU Radio 23 / 24

Questions Introduction into GNU Radio 24 / 24

Τέλος Ενότητας

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Κρήτης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Σημειώματα

Σημείωμα αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση, Όχι Παράγωγο Έργο 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-nd/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί..

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Κρήτης, Ξενοφώντας Δημητρόπουλος. «Δίκτυα Καθοριζόμενα από Λογισμικό. Exercise Session 4: Intro to GNU Radio». Έκδοση: 1.0. Ηράκλειο/Ρέθυμνο 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: http://www.csd.uoc.gr/~hy436/