Μάθημα: «Ψηφιακή Επεξεργασία Ήχου» Διάλεξη 5 η : «Επεξεργαστές με Μνήμη (Mέρος Ι)» Φλώρος Ανδρέας Επίκ. Καθηγητής Από προηγούμενο μάθημα... Η επεξεργασία του ψηφιακού σήματος υλοποιείται μέσω κατάλληλου αλγορίθμου Σήμα εισόδου Αλγόριθμος επεξεργασίας Σήμα εξόδου Παράμετροι ελέγχου Ακουστική - Οπτική αναπαράσταση Ακουστική - Οπτική αναπαράσταση
Από προηγούμενο μάθημα Επεξεργασία δυναμικής περιοχής Αναπαράσταση μεταβολής πλάτους ενός δείγματος G: το κέρδος πλάτους = - 2 x() Αναπαράσταση πρόσθεσης σημάτων G Χ y()=gx() =G - 2-2 - 2 x () x 2 () + y()=x ()+x 2 () 2-2 Στα προηγούμενα μαθήματα... Φίλτρο απλού κέρδους Κανονικοποίηση / ormalizatio (peak & RMS) Συμπίεση / compressio - Limitig ιόγκωση / expasio Noise gatig Εφφέ παραμόρφωσης κιθάρας Rig modulator Stereo tremolo effect Εφφέ τύπου Fade I/ut και Crossfadig Balace / Amplitude paig Mixig 2
Περιγραφή αλγορίθμων επεξεργασίας σημάτων Αναπαράσταση καθυστέρησης ενός δείγματος η περίοδος δειγματοληψίας - 2 x() y()=x(-) - 2 3 Για την υλοποίηση τέτοιων αλγορίθμων επεξεργασίας απαιτείται η χρήση μνήμης Τί είναι μνήμη συστήματος; Ηλεκτρονικά κυκλώματα τα οποία διατηρούν τιμές δεδομένων ιαδικασία εγγραφής στη μνήμη Memory Write ή Push ιαδικασία ανάγνωσης από τη μνήμη Memory Read ή Pop Buffer: μνήμη προσωρινής αποθήκευσης δεδομένων Write Read # #2... #N -> ιευθύνσεις μνήμης 3
Οργάνωση της μνήμης: Βασικές έννοιες Η έννοια του bit, byte και word... ή sample στην περίπτωσή μας Μονάδες μέτρησης της μνήμης Byte B (= 8 Bits) Kilo Kilobyte KB = 24 Byte Mega Megabyte MB = 24 Kilobyte Giga Gigabyte GB = 24 Megabyte erra errabyte B = 24 Gigabyte Peta Petabyte PB = 24 errabyte Exa Exabyte EB = 24 Petabyte Zetta Zettabyte ZB = 24 Exabyte Yota Yotabyte YB = 24 Zettabyte 4
Βασικές δομές buffer μία σύνοψη Πίνακες (arrays) Αποθήκευση ομοειδών στοιχείων Η αναφορά σε ένα στοιχείο γίνεται μέσω του δείκτη (idex) του πίνακα Π.χ. Α[2] Βασικό χαρακτηριστικό: η διάσταση του πίνακα Βασικές δομές buffer H στοίβα Στοίβα - σωρός (stack) Τα δεδομένα αποθηκεύονται το ένα μετά το άλλο Μπορεί να διαβαστεί/προσπελαστεί μόνο το τελευταίο που προστέθηκε ομή LIF (Last I First ut) Υλοποίηση με χρήση μονοδιάστατου πίνακα ενός μόνο δείκτη (stack poiter sp) είχνει πάντα το τελευταίο στοιχείο που προστέθηκε 5
Βασικές δομές buffer Η στοίβα (συν.) Βασικές πράξεις και λειτουργίες Empty(): επιστρέφει αληθές εάν η στοίβα είναι άδεια, ψευδές αλλιώς Push(a): προσθέτει το a στην κορυφή της στοίβας Pop(): προσπελάζει (αφαιρεί) το τελευταίο στοιχείο από τη στοίβα op(): προσπελάζει την τιμή του τελευταίου στοιχείου (χωρίς να το αφαιρέσει από την στοίβα) Βασικές δομές buffer H ουρά Ουρά (queue) Τα δεδομένα εισάγονται σειριακά Το ένα μετά το άλλο Η πρόσβαση γίνεται με την ίδια σειρά εισαγωγής Το παλαιότερα εγγεγραμμένο στοιχείο είναι αυτό που πρόκειται να διαβαστεί ομή FIF First I First ut Υλοποίηση με Μονοδιάστατο πίνακα ύο δείκτες (head poiter και tail poiter) 6
Βασικές δομές buffer H ουρά (συν.) head poiter (hp) δείχνει το πρώτο στοιχείο της ουράς Αυτό που πρόκειται να διαβαστεί trail poiter (tp) δείχνει το τελευταίο στοιχείο της ουράς Στην επόμενη θέση θα γίνει η επόμενη εγγραφή Βασικές πράξεις και λειτουργίες Equeue(a): Προσθήκη του στοιχείου a Dequeue(): Προσπέλαση και αφαίρεση του πρώτου στοιχείου (στη θέση hp) Βασικές δομές buffer H ουρά (συν.) Dequeue() Equeue(a), Equeue(b) 7
Ένα απλό παράδειγμα Καθυστέρηση ενός δείγματος Η έξοδος έχει Ν+ Sigle delay buffer ή Pure delay filter δί δείγματα ( παραπάνω από την είσοδο) Απουσία εισόδου έχουμε έξοδο Είσοδος x() Έξοδος y() 2 5 2-4 5 - -4 - Θεωρούμε ότι αρχικά η μνήμη είναι «φορτωμένη με (αρχική κατάσταση) Παράδειγμα #2 Καθυστέρηση δύο δειγμάτων Η έξοδος έχει Ν+2 δί δείγματα (2 παραπάνω από την είσοδο) Είσοδος x() 2 5-4 - 2 5-4 - Έξοδος y() 2 5-4 - 8
Βασικές δομές buffer: Ο κυκλικός buffer Circular buffer Πρόκειται για την εικονική αναπαράσταση μίας ουράς σε κυκλική μορφή R W Βασικές δομές buffer: Ο κυκλικός buffer (συν.) R Αρχική κατάσταση x()=5, y()= W W x(2)=2, y(2)= 2 5 5 W R R x(3)=8, y(3)=5 R R x(3)=9, y(3)=2 8 2 8 2 5 9 5 W W 9
Βασικές δομές buffer: Ο κυκλικός buffer (συν.) Ειδικές περιπτώσεις Εάν ο W δείκτης προχωράει γρηγορότερα από τον R Π.χ. Λόγω μειωμένης ταχύτητας επεξεργασίας η έξοδος αργεί να «παραχθεί» Buffer overflow Εάν ο W δείκτης προχωράει πιό αργά από τον R Buffer uderru Π.χ. Λόγω αυξημένης ταχύτητας επεξεργασίας και κακού συγχρονισμού Buffer uderru Παράδειγμα συστήματος επεξεργασίας με μνήμη - 2 x() x(-) x(-2).3 Χ.2 Χ. Χ ουστικό σήμα Κρο + y()=.3x()+.2x(-)+.x(-2) Κρουστική απόκριση.3.2. - 2 3
Παράδειγμα #3 Ποιά θα είναι η έξοδος του προηγούμενου συστήματος για 2 x() x(-) x(-2).3 Χ.2 Χ. Χ + y()=.3x()+.2x(-)+.x(-2) Κώδικας παράδειγμα: Example_SimpleSystem.m Παράδειγμα #4 Απλή μονάδα καθυστέρησης DelayLie=zeros(,); x() y() for =::legth(x).4.4 y()=x()+g*delaylie();.2.2 DelayLie=[x();DelayLie(:-)]; ed.8.8.6.4.6.4 x() + y().2.2 2 4 6 8 2 2 4 6 8 2 τ Χ τ=2, g=.5 DelayLie()=x(-τ) g Κώδικας παράδειγμα: Example_SimpleDelay.m
ΤΕΛΟΣ (για σήμερα...) www.ioio.gr/~floros/ 2