Σχεδιασμός και Υλοποίηση Πρωτοκόλλου mac για Παθητικά Οπτικά Δίκτυα gpon




старонка11/25
Дата канвертавання24.04.2016
Памер2.32 Mb.
1   ...   7   8   9   10   11   12   13   14   ...   25

4.2 Περιγραφή του υλικού


Ο ελεγκτής MAC είναι υπεύθυνος για τη διαιτησία στο ρεύμα ανόδου, δηλαδή καθορίζει το πόσα byte και για ποιο χρονικό διάστημα μπορεί να μεταδώσει κάθε ΟΝU. Ως κριτήριο για τον καθορισμό αυτό λαμβάνονται οι παράμετροι που έχουν συμφωνηθεί με κάθε ΟΝU κατά τη διαδικασία ενεργοποίησής της καθώς επίσης και η κατάσταση της ουράς αναμονής στους προσωρινούς καταχωρητές κάθε ΟΝU. Η διαδικασία αυτής της δέσμευσης εύρους ζώνης για κάθε ΟΝU πραγματοποιείται στον ελεγκτή MAC που βρίσκεται στο ΟLT. Ο ελεγκτής αυτός κατασκευάζει το χάρτη εύρους ζώνης (bandwidth map), που περιέχει πληροφορίες για το πόσα byte και κάθε πότε μπορεί να μεταδίδει το κάθε ΟΝU, και το στέλνει σε όλα τα ΟΝU μέσω του πλαισίου καθόδου. Ο ελεγκτής MAC που βρίσκεται στο ΟΝU επεξεργάζεται το χάρτη εύρους ζώνης και κράτα μόνο την πληροφορία που αφορά εκείνο, και έτσι γνωρίζει το χρόνο καθώς και τη διάρκεια που μπορεί να μεταδώσει. Επίσης κάνει έλεγχο στους προσωρινούς καταχωρητές προκειμένου να δημιουργήσει την αναφορά που θα αποστείλει στον ελεγκτή του ΟLT για την κατάστασή τους.

4.3 Ο ελεγκτής ΜΑC στο ΟLT


Ο ελεγκτής Mac που βρίσκεται στο OLT είναι υπεύθυνος για την κατασκευή του BW map. Ο ελεγκτής MAC που βρίσκεται στο ΟLΤ θα υλοποιηθεί σε ένα FPGA Virtex II της Xilinx. Θα επικοινωνεί με τη μονάδα GLTP, η οποία είναι υπεύθυνη για την εκτέλεση των λειτουργιών του TC υποστρώματος, καθώς επίσης με τον ελεγκτή της μονάδας (On Board Controller – OBC). Η διάταξη των επιμέρους κυκλωμάτων στην πλακέτα του OLT φαίνεται στο σχήμα 30. Παρακάτω θα γίνει αρχικά η περιγραφή της διεπαφής του ελεγκτή με το κάθε ένα από τα δύο εξαρτήματα και κατόπιν η περιγραφή του ελεγκτή σε επίπεδο υλικού.



σχήμα 30 - Διεπαφές ελεγκτή MAC

4.3.1 Διεπαφή MAC - OBC


Η επικοινωνία του OBC με τον MAC πραγματοποιείται για την επίτευξη των ακόλουθων λειτουργιών

  • τη διαμόρφωση των AllocId

  • τον έλεγχο των μηνυμάτων PLOAM και μερικών ακόμη λειτουργιών σε χρονικό όριο της τάξης των ms ή sec.

  • τον έλεγχο και την δοκιμαστική λειτουργία του ελεγκτή MAC

Για την επικοινωνία των δύο ελεγκτών χρησιμοποιείται σειριακός τρόπος επικοινωνίας με συχνότητα ρολογιού 12,5MHz.

Διαμόρφωση των AllocId

Σύμφωνα με τις προδιαγραφές του υποστρώματος TC κάθε AllocId μπορεί να είναι οποιουδήποτε τύπου (1 – 4) και να ανήκει σε οποιοδήποτε ONU. Ο OBC είναι υπεύθυνος για τη διαμόρφωση των ενεργών AllocId, καθορίζοντας ένα σύνολο παραμέτρων : το ONU στο οποίο απευθύνεται, το είδος του TCONT, το μέγιστο και τον ελάχιστο αριθμό byte που επιτρέπεται να μεταδοθούν, το ελάχιστο και το μέγιστο διάστημα μεταξύ δύο επιτυχημένων μεταδόσεων και τη σημαία του FEC.



Έλεγχος λειτουργίας MAC

Για τον έλεγχο της σωστής λειτουργίας και την επιδιόρθωση λαθών θα υπάρχει ένας αριθμός καταχωρητών. Περιλαμβάνονται καταχωρητές για την αποθήκευση πληροφοριών σχετικά με τον αν είναι ενεργοποιημένο το DBA και καταχωρητές με πληροφορίες σχετικές με το DBA. Τέλος είναι δυνατή η λειτουργία επανεκκίνησης του ελεγκτή.


4.3.1 Διεπαφή MAC - GLTP


Στην παράγραφο αυτή θα αναλύσουμε την αλληλεπίδραση του GMAC με το GLTP2 εστιάζοντας στον τρόπο με τον οποίο γίνεται αυτή και στις πληροφορίες που ανταλλάσσουν τα δύο αυτά στοιχεία του δικτύου.

Το GMAC ετοιμάζει το πεδίο BW map του προς τα κάτω πλαισίου που αναθέτει το εύρος ζώνης στις ροές των ONU και το παρέχει στο GLTP2. Ενώ προς την αντίθετη κατεύθυνση το GLTP2 παρέχει στο GMAC τρεις πληροφορίες. Οι πληροφορίες αυτές είναι το DBA που περιλαμβάνεται στο προς τα άνω πλαίσιο και αποτελεί τις απαιτήσεις των διαφόρων ροών για ανάθεση εύρους ζώνης, τις αιτήσεις για να θέσουν τα ONU επικεφαλίδες PLOAM και PLSu και την ανάγκή για να υπάρξει διαδικασία αρχικοποίησης των παραμέτρων των ONU (ranging window). Στη συνέχεια θα αναφερθούμε σε κάθε μία κατεύθυνση ξεχωριστά αναλύοντας τις παραπάνω διαδικασίες.


4.3.1.1 Κατεύθυνση από το GMAC προς το GLTP2


Το πεδίο BW map του προς τα κάτω πλαισίου είναι μία σειρά από δομές πρόσβασης (access structures) των 8-bytes οι οποίες τοποθετούνται η μία μετά την άλλη. Ο αριθμός των δομών αυτών που τοποθετούνται σε κάθε προς τα κάτω πλαίσιο δεν είναι σταθερός και καθορίζεται από το πεδίο Blen του προς τα κάτω πλαισίου του οποίου η τιμή καθορίζεται από το GMAC. Ο ελάχιστος αριθμός δομών είναι ίσος με το 0 ενώ ο μεγαλύτερος είναι 256. Αυτό γίνεται αντιληπτό με το σκεπτικό αν θεωρήσουμε ότι όλα τα access structures ενός πλαισίου αναθέτουν το ελάχιστο δυνατό αριθμό bytes στις ροές που αναφέρονται, γεγονός που λαμβάνει χώρα κατά την καταγραφή πληροφοριών των ONU. Τότε αν βασιστούμε στην υπόθεση ότι για τις εφαρμογές φωνής σε πραγματικό χρόνο η καθυστέρηση στο σύστημα πρόσβασης είναι 3ms οδηγούμαστε στο συμπέρασμα ότι ο ελεγκτής MAC θα πρέπει να αναφέρεται σε κάθε ροή ανά τέσσερα πλαίσια. Συνεπώς σε κάθε πλαίσιο χωρούν access structures που αναφέρονται στο ένα τέταρτο των ροών και δεδομένου ότι στο GIANT το σύνολο των ροών είναι 1024 καταλήγουμε στο συμπέρασμα ότι το πολύ access structures για 256 ροές μπορούν να χωρέσουν στο πεδίο BW map ενός προς τα κάτω πλαισίου.

Τα πεδία από τα οποία αποτελούνται οι δομές πρόσβασης που έχουν εξεταστεί λεπτομερώς όσον αφορά στη λειτουργία τους στην ανάλυση της δομής του πλαισίου του δικτύου GIANT είναι τα εξής:



  • Το πεδίο AllocId καθορίζει μονοσήμαντα μία ροή και η τιμή του αποφασίζεται από τον ελεγκτή MAC.

  • Το πεδίο Flags καθορίζει τις επικεφαλίδες που θα πρέπει να συμπεριληφθούν από το κάθε ONU κατά την προς τα άνω εκπομπή. Αυτές είναι οι PLSu που αφορά σε μετρήσεις της ισχύος του ONU και τίθεται όταν δοθεί εντολή από το GLTP2 ενώ ο ελεγκτής MAC γνωρίζει ποιες ροές βρίσκονται σε ποια ΟΝU έτσι ώστε για δύο ροές που ανήκουν στο ίδιο ONU η επικεφαλίδα να σταλεί μία φορά, η DBRu που τίθεται από τον ελεγκτή MAC και στο GIANT λάμβανε την τιμή “00” όταν δεν πρέπει να σταλεί και “01” όταν πρέπει να σταλεί, η PLOAM που τίθεται από τον ελεγκτή MAC και τίθεται περιοδικά ανά τακτά χρονικά διαστήματα ή όταν ένα ΟNU ζητήσει να μεταδώσει ένα PLOAM μήνυμα και σημαία που δείχνει αν το μήνυμα είναι κωδικοποιημένο με FEC.

  • Τα πεδία δεικτών Start και Stop καθορίζουν σε bytes την αρχή και το τέλος της εκπομπής κάθε ροής. Στον καθορισμό αυτό συμπεριλαμβάνονται και οι επικεφαλίδες εκτός από την PLSu.

  • Το CRC μεριμνά για τη διόρθωση των λαθών.

Η μετάδοση του BW map από το GMAC προς το GLTP2 υλοποιείται με αποστολή των παρακάτω σημάτων

  • MAC_clk είναι το εσωτερικό ρολόι του FPGA που λειτουργεί στη συχνότητα των 77.76 ΜΗz.

  • BW_map_valid είναι το σήμα που δηλώνει στο GLTP2 ότι του στέλνεται ένα σωστό πεδίο BW map.

  • BW_map_data που είναι το σήμα που μεταφέρει την πληροφορία BW map και στέλνεται από το GMAC στο GLTP2 οργανωμένο σε λέξεις των 16-bit.

4.3.1.2 Κατεύθυνση από το GLTP2 προς το GMAC


Το GLTP2 στέλνει μέσω μίας παράλληλης διεπαφής στο GMAC τα μηνύματα DBA που αφορούν στις αιτήσεις των ροών των ONU για ανάθεση bytes για την προς τα άνω ζεύξη. Η πληροφορία που μεταφέρεται σχετίζεται με την επικεφαλίδα DBRu του προς τα άνω πλαισίου που περιέχει πληροφορίες για την κατάσταση κίνησης σε μία δεδομένη ροή. Η πληροφορία DBA μεταφέρεται στο GMAC σε δύο διαδοχικές λέξεις που η πρώτη περιέχει την ταυτότητα της ροής, δηλαδή τον μοναδικό αριθμό που την χαρακτηρίζει (AllocId) ενώ η δεύτερη λέξη αποτελείται από το reporting mode που για το GIANT έχει πάντα την τιμή 01 και απλά υπάρχει έτσι ώστε να είναι δυνατές οι μελλοντικές αναβαθμίσεις του δικτύου GIANT και από 8-bit που δείχνουν το μήκος της ουράς της δεδομένης ροής μετρημένο σε ομάδες των 48 bytes. Ο αριθμός των διαδοχικών μηνυμάτων DBA που μπορεί να αποθηκεύσει ο ελεγκτής MAC έτσι ώστε να τα εξυπηρετήσει είναι ίσος με 128.

Στην υλοποίηση της παραπάνω παράλληλης διεπαφής πρέπει να συμπληρώσουμε ότι το πεδίο διόρθωσης λαθών CRC ελέγχεται από το GLTP2 και ότι η αντιστοίχηση των επικεφαλίδων DBRu με τη ροή που τα έκπεμψε, δηλαδή την κατάλληλη πληροφορία DBA.

Η μετάδοση της πληροφορίας DBA μέσω της διεπαφής υλοποιείται με αποστολή των παρακάτω σημάτων


  • GLTP2_clk είναι το εσωτερικό ρολόι του FPGA που λειτουργεί στη συχνότητα των 77.76 ΜΗz.

  • DBA _valid είναι το σήμα που δηλώνει στο GMAC ότι του στέλνεται ένα σωστό πεδίο DBA.

  • DBA _bus που είναι το σήμα που μεταφέρει από το GLTP2 στο GMAC το μήνυμα DBA οργανωμένο σε δύο λέξεις που στέλνονται διαδοχικά.

To GLTP2 στέλνει μέσω μίας σειριακής διεπαφής στο GMAC σήματα τα οποία αφορούν στις αιτήσεις των ONU να εκπέμψουν μία επικεφαλίδα PLSu ή PLOAM και τις αιτήσεις για την ενεργοποίηση της διαδικασίας ranging κατά την οποία καθορίζεται το μήκος της χρονικής σχισμής μέσα στην οποία θα εκπέμπουν τα ONU καθώς και η ανάθεση σχισμών στα διάφορα ONU ώστε να μην σημειώνονται συγκρούσεις κατά τις εκπομπές των ONU. Στο σημείο αυτό πρέπει να συμπληρώσουμε ότι οι αιτήσεις για PLSu ή PLOAM φυλάγονται σε δύο πίνακες των 128 θέσεων. Επιπλέον για τα σήματα αυτά επιλέχθηκε η υλοποίηση σειριακής διεπαφής δεδομένου ότι η ενεργοποίηση τους δεν είναι πολύ συχνή και έτσι προτιμάται να πολυπλεχτούν σε ένα σήμα που οι πληροφορίες στέλνονται με την εξής σειρά. Πρώτα στέλνεται η πληροφορία για το αν θα πρέπει να ενεργοποιηθεί η διαδικασία ranging ακολουθεί η πληροφορία για την αίτηση ή όχι επικεφαλίδας PLOAM μετά η αντίστοιχη αίτηση για την επικεφαλίδα PLSu και τέλος η πληροφορία AllocId που μπορεί ανάλογα με τις προηγούμενες πληροφορίες να ερμηνευτεί ως εξής: αν έχει ζητηθεί από κάποιο ONU επικεφαλίδα PLOAM ή PLSu το πεδίο αυτό έχει τιμή από 0 έως 255 δείχνει ποιο ONU έκανε την αίτηση και αναφέρεται ως ONU-ID αντίθετα αν δεν έχει γίνει αίτηση για κάποια από τις δύο επικεφαλίδες το πεδίο αυτό δείχνει την πρώτη ροή για την οποία θα δημιουργηθεί ένα access structure αμέσως μετά τη λήξη της διαδικασίας ranging.

4.3.3 Περιγραφή υλικού


Ο ελεγκτής ΜΑC εσωτερικά έχει δυο ειδών μονάδες κυκλώματος. Τις μονάδες αποθήκευσης, οι οποίες είναι μνήμες που περιέχουν όλες τις παραμέτρους που είναι απαραίτητες για την κατασκευή του χάρτη εύρους ζώνης, και τις λογικές μονάδες κυκλώματος που είναι υπεύθυνες για την επεξεργασία των διαφόρων πληροφοριών και την κατασκευή του χάρτη εύρους ζώνης, σχήμα 31. Λειτουργικά μπορεί να χωριστεί σε δυο επίπεδα όπως φαίνεται στο σχήμα 32. Υπάρχουν μονάδες που υλοποιούν τη διεπαφή του ελεγκτή με τον OBC και τον GXTP και μονάδες που είναι υπεύθυνες για την κατασκευή του χάρτη εύρους ζώνης. Οι μονάδες που είναι υπεύθυνες για την κατασκευή του χάρτη εύρους ζώνης μπορούν να



σχήμα 31 - Μνήμες - Λογικά κυκλώματα



σχήμα 32 - Μονάδες διεπαφών - μονάδες κατασκευής χάρτη εύρους ζώνης

χωριστούν σε δυο κομμάτια, αυτό που αφορά το εγγυημένο εύρος ζώνης και αυτό που αφορά το επιπλέον εύρος ζώνης, όπως φαίνεται στο σχήμα 33. Το ένα μέρος είναι υπεύθυνο για την εξυπηρέτηση των Τ-CONT 1 και 2 ενώ το άλλο μέρος εξυπηρετεί τα T-CΟNT 3 και 4. Ο κύκλος λειτουργίας του ελεγκτή είναι 9720 χτύποι ρολογιού, όπου το ρολόι έχει συχνότητα 77,76 Μhz, και αντιστοιχεί σε ένα frame. Στη διάρκεια ενός frame κατασκευάζεται ο χάρτης εύρους ζώνης. Για την κατασκευή του χάρτη πρώτα ελέγχονται και εξυπηρετούνται τα Τ-CΌNT 1 και 2 και κατόπιν τα υπόλοιπα, εφόσον αυτό είναι δυνατό, δηλαδή υπάρχει περίσσεια εύρους ζώνης.

Παρακάτω αναλύεται η λειτουργία της κάθε μονάδας ξεχωριστά. Αρχικά αναλύουμε τις μονάδες μνήμης και κατόπιν τα λογικά κυκλώματα επεξεργασίας των δεδομένων.


σχήμα 33 - Μονάδες για εγγυημένο - επιπλέον εύρος ζώνης

4.3.3.1 Μονάδες μνήμης


Ο ελεγκτής MAC χρησιμοποιεί εσωτερικά τις ακόλουθες μονάδες μνήμης, για την αποθήκευση πληροφοριών :

  1. Τη μνήμη για την αποθήκευση των παραμέτρων δέσμευσης εύρους ζώνης και πληροφοριών σχετικές με το AllocId (bandwidth allocation parameters & allocΙD info – BAP memory). Το AllocId χρησιμοποιείται ως δείκτης για την ανάκτηση των πληροφοριών, αφού είναι μοναδικό και χαρακτηρίζει κάθε γραμμή του πίνακα αυτού, δηλαδή γίνεται αντιστοίχηση του αριθμού της γραμμής με το AllocId.

  2. Τη μνήμη request matrix, όπου αποθηκεύονται τα πεδία DBRu, που έχουν αποκωδικοποιηθεί από τη DBΑ Report RX και έχουν πολλαπλασιαστεί με 48 αφού υπολογίζονται ως byte. Το AllocId χρησιμοποιείται ως δείκτης για την ανάκτηση πληροφοριών.

  3. Δυο μνήμες που αποθηκεύουν σημαίες για τα Τ-CΟNT 3 και 4 ( Τ-CΟNT 3 /4 flag memory). Η σημαία είναι ένα bit που ανάλογα με την τιμή του, μηδέν ή ένα, δείχνει εάν έχει συμβεί ένα γεγονός ή όχι π.χ. η λήξη ενός μετρητή (timer). Στη συγκεκριμένη περίπτωση δείχνει εάν για κάποιο AllocId εκκρεμεί εξυπηρέτηση αίτησής του για εύρος ζώνης. Για κάθε AllocId υπάρχει μία σημαία σε κάθε πίνακα.

  4. Μνήμες τύπου FIFO (First In First Out). Οι μνήμες αυτές χρησιμοποιούνται για προσωρινή αποθήκευση δεδομένων προκειμένου να αποταμιευτεί χρόνος. Τέτοιες μνήμες, δύο, χρησιμοποιούμε για την αποθήκευση του χάρτη εύρους ζώνης, μία για την αποθήκευση των DBRu που δημιουργεί το DBΑ Report RX, και μία για τους MAX SDΙ μετρηtες που έχουν λήξει.

  5. Τέλος χρησιμοποιούμε και δύο μνήμες για την αποθήκευση των τιμών maxSDI και minSDI

BAP Memory

Η μνήμη BΑP περιέχει πληροφορίες για την ΟNU και το ΑllοcID, το είδος του Τ-CΟΝΤ, το ΤΒ και ορισμένες σημαίες. Πιο αναλυτικά κάθε γραμμή αντιστοιχεί σε ένα ΑllοcID, οπότε υπάρχουν 1024 γραμμές. Η κάθε γραμμή έχει 48 bits, τα οποία χρησιμοποιούνται ως εξής, όπως φαίνεται στο σχήμα 34:



  • bits 47 έως 40 : περιέχουν την ΟΝU στην οποία ανήκει το ΑllοcID. Το πεδίο αυτό δίνει τη δυνατότητα στον ελεγκτή να αναγνωρίσει τις ΑllοcID που ανήκουν σε μία ΟΝU καθώς επίσης βοηθάει σε λειτουργίες που έχουν σχέση μία ΟΝU π.χ. αποστολή PLSu και PLOAM.

  • bit 39 : περιέχει ένδειξή για το αν μια AllocId είναι NSR

  • bits 38 έως 36 : περιέχει το είδος του Τ-CΟΝΤ

  • bits 35 και 34 :περιέχει τη σημαία για το DBRu. Παρόλο που αρχικά χρησιμοποιείται μόνο ένα bit για τη σημαία αυτή, έχουν δεσμευτεί δύο για να αποφευχθούν αλλαγές σε τυχόν μελλοντική αναβάθμιση.

  • bit 33 : υποδεικνύει αν το ΑllοcID ανήκει σε ένα ΟΝU που έχει ενεργοποιημένο το FΕC

  • bit 32 : υποδεικνύει αν το αντίστοιχο ΑllοcID είναι ενεργοποιημένο

  • bits 31 έως 16 : περιέχει το μέγιστο ΤΒ. Η παράμετρος αυτή έχει υπολογιστεί και σταλεί στον ελεγκτή στη φάση ενεργοποίησης. Παρόλο που υπάρχουν 16 bit, ο μέγιστος αριθμός που μπορεί να περιέχεται είναι το 19440, όσο δηλαδή ολόκληρο το frame.

  • bits 15 έως 0 : περιέχει το ΤΒ που αντιστοιχεί στο επιπλέον εύρος ζώνης (surplus). Η παράμετρος αυτή έχει υπολογιστεί και σταλεί στον ελεγκτή στη φάση ενεργοποίησης.




σχήμα 34- Πεδία της BAP μνήμης

request matrix entity και μνήμες για τις σημαίες των Τ-CΟΝΤ 3 και 4 (flag_mem entity)

Στη request matrix αποθηκεύεται για κάθε ΑllοcID η τιμή του DΒRu πεδίου, αφού έχει αποκωδικοποιηθεί από τη λογική μονάδα DBA RX και πολλαπλασιαστεί με 48. Οι αιτήσεις για εξυπηρέτηση ροών TCONT 3 ικανοποιούνται πριν από αυτές με TCONT 4, κατά τη φάση εξυπηρέτησης του επιπλέον εύρους ζώνης. Για την αποφυγή διαβάσματος όλης της μνήμης και τη διάκριση μεταξύ TCONT 3 και TCONT 4, χρησιμοποιούνται δύο σημαίες. Έτσι έχουμε μια μνήμη τη request matrix και επιπλέον διατηρούμε δύο πίνακες με σημαίες, ένα για TCONT 3 και ένα για TCONT 4. αυτές υποδεικνύουν αν κάποιο AllocId έχει ζητήσει να εξυπηρετηθεί (σε αυτήν τη περίπτωση το bit που αντιστοιχεί στην AllocId ισούται με ένα). Οι σημαίες αυτές ομαδοποιούνται σε δεκαεξάδες για γρηγορότερη πρόσβαση και επεξεργασία, αφού θα έχουμε λιγότερες προσπελάσεις της μνήμης με τις σημαίες. Έτσι συνολικά έχουμε 64 διευθύνσεις, αφού για κάθε AllocId αντιστοιχεί μια σημαία (64x16 = 1024). Επιπλέον η προσπέλαση της μνήμης BAP αποφεύγεται κατά τον κύκλο εξυπηρέτησης του επιπλέον εύρους ζώνης και πραγματοποιείται κατά τη διάρκεια αποθήκευσης της αναφοράς από το DBA. Τα flag regions διαβάζονται και ενημερώνονται από την οντότητα sbw_ti και τα αντίστοιχα AllocId των ροών που πρόκειται να εξυπηρετηθούν στέλνονται στην sbw_tu.



bwfifo entity

Υπάρχουν δύο τέτοιες μνήμες. Στη μια αποθηκεύονται τα access structures από το asp για να τα επεξεργαστεί το crc_insertion entity και στην άλλη τα access structures αφού επεξεργαστούν από το crc_insertion και είναι έτοιμα για προώθηση από το bwmap_forwarder entity.



afifo_maxsdi entity

Η οντότητα αυτή είναι η ουρά FIFO στην οποία αποθηκεύονται τα AllocId που στέλνονται από την οντότητα gbw_ti και παραμένουν στην ουρά μέχρι να εξυπηρετηθούν. Η ουρά FIFO είναι ασύγχρονη έχει 1023 διευθύνσεις ενώ κάθε εγγραφή της έχει μήκος 10 bits όσα είναι και τα bits του AllocId δεδομένου ότι στο GIANT υλοποιούνται 1024 ροές που η κάθε μία χαρακτηρίζεται μονοσήμαντα από ένα AllocId.



afifo_dba entity

Η οντότητα αυτή είναι η ουρά FIFO στην οποία αποθηκεύονται οι λέξεις που δημιουργούνται από την οντότητα dba_rx και παραμένουν στην ουρά μέχρι να εξυπηρετηθούν. Η ουρά FIFO είναι ασύγχρονη έχει 127 διευθύνσεις ενώ κάθε εγγραφή της έχει μήκος 20 bits. Tα bits αυτά χωρίζονται σε δύο τμήματα το AllocId που είναι 10 bits και τα υπόλοιπα bits που αφορούν στην απαίτηση της δεδομένης ροής για εύρος ζώνης.


4.3.3.2 Λογικές μονάδες κυκλώματος


SPI2parallel entity

Το entity αυτό είναι υπεύθυνο για την επικοινωνία με τον OBC και την μετατροπή των σειριακών δεδομένων σε παράλληλα. Τα σήματα που δέχεται από τον OBC είναι :



  • ένα σήμα (1 bit) για το ρολόι, αφού η επικοινωνία γίνεται στα 12,5 MHz και όχι στα 77,5 MHz που λειτουργεί το υπόλοιπο FPGA.

  • ένα σήμα (1 bit) που υποδεικνύει ότι ο OBC θα στείλει δεδομένα

  • ένα σήμα (1 bit) που περιέχει τα δεδομένα που στέλνει ο OBC

Επιπλέον το SPI2parallel entity δέχεται ως είσοδο το ρολόι που έχει όλο το FPGA, με συχνότητα τα 77,5 MHz και ένα σήμα για επαναφορά (reset). Κάθε ακολουθία έγκυρων δεδομένων αποτελείται από τρεις ομάδες δεδομένων : την κωδική λέξη, τη διεύθυνση της μνήμης που θα αποθηκευτούν τα δεδομένα και τα δεδομένα. Η κωδική λέξη υποδεικνύει αν θα ακολουθήσει γράψιμο ή διάβασμα δεδομένων. Αν δεν υπάρχουν δεδομένα για αποστολή τότε τα αντίστοιχα bit δεδομένων θα είναι ίσα με ένα (1). Η μεταφορά δεδομένων γίνεται από το MSBit προς το LSBit.

Για την αποστολή δεδομένων προς τον OBC υπάρχει ένα σήμα (1 bit).

Τα δεδομένα που λαμβάνει από τον OBC τα προωθεί σε παράλληλη μορφή στο entity parallel_bus. Τα σήματα που στέλνει στο parallel_bus είναι :


  • ένα σήμα (1 bit) για την ενεργοποίηση του entity

  • ένα σήμα (1 bit) που υποδεικνύει αν πρόκειται για πράξη εγγραφής ή ανάγνωσης. Η ενεργοποίηση του σήματος ισοδυναμεί με εγγραφή

  • ένα σήμα (8 bit) που περιέχει τη διεύθυνση

  • ένα σήμα (8 bit) που περιέχει τα δεδομένα

parallel_bus entity

Το entity αυτό είναι υπεύθυνο για την εγγραφή δεδομένων που προέρχονται από τον OBC σε μνήμες. Η εγγραφή δε γίνεται άμεσα, άλλα μέσω του entity mem_initializer. Στο entity αυτό στέλνει τα εξής δεδομένα, τα οποία έχει πάρει από τον ΟΒC μέσω του SPI2parallel entity :

αν το AllocId είναι ενεργό (1 bit)

το AllocId (11 bit)

το MaxTB (16 bit)

το MinTB (16 bit)

το MaxSDI (13 bit)

το MinSDI (13 bit)

το ONU στο οποίο ανήκει το AllocId (8 bit)

το αν πρόκειται για NSR (1 bit)

το είδος του TCONT (3 bit)

το αν υποστηρίζει FEC το ONU αυτό (1 bit)

το αν θέλουμε να ενεργοποιήσουμε την κατάσταση αναφοράς (Report_mode(2 bit))

Το parallel_bus στέλνει σήματα ειδοποίησης στα entity mem_initializer και gbw_ti κάθε φορά που ενεργοποιείται ένα νέο AllocId. Επίσης επικοινωνεί με το entity onu_service στο οποίο στέλνει ένα σήμα (13 bit) όπου περιέχει το διάστημα που διαρκεί το PLOAM καθώς και αν είναι ενεργό ή όχι. Τέλος επικοινωνεί και με το entity bwmap_forwarder, στο οποίο στέλνει δύο σήματα, το ένα (16 bit) αφορά την καθυστέρηση αποστασιομέτρησης και το άλλο (5 bit) MAC_control.



mem_initializer entity

Το entity αυτό είναι υπεύθυνο για την εγγραφή δεδομένων στη μνήμη BAP και την μνήμη με τις minSDΙ τιμές. Το mem_initializer ενεργοποιείται από το parallel_bus entity στις ακόλουθες περιπτώσεις :



  1. Όταν ενεργοποιείται ένα AllocId. Στην περίπτωση αυτή γράφονται οι μνήμες BAP και minSDI.

  2. Όταν απενεργοποιείται ένα AllocId. Στην περίπτωση αυτή γράφεται μόνο η minSDI μνήμη.

  3. Όταν ενεργοποιείται ή απενεργοποιείται ένα ΟΝU. Στην περίπτωση αυτή ανανεώνονται οι εγγραφές στα διανύσματα active_ONU και FEC_enabled_ONU.Τα διανύσματα αυτά περιέχουν πληροφορίες για το ποια ΟΝU είναι ενεργά και ποια υποστηρίζουν FΕC αντίστοιχα, και διατηρούνται εσωτερικά στο entity.

Η πρόσβαση στην μnμη BAP γίνεται μέσω ενός arbiter. Αντίθετα στη μνήμη για τις minSDΙ τιμές η πρόσβαση γίνεται απευθείας. Επειδή όμως στη μνήμη αυτή έχει πρόσβαση και το entity sbw_ti, το οποίο έχει και μεγαλύτερη προτεραιότητα, πριν την προσπέλαση της μνήμης γίνεται έλεγχος αν χρησιμοποιείται από το sbw_ti. Αυτό επιτυγχάνεται μέσω του σήματος που στέλνει τη διεύθυνση το sbw_ti στη μνήμη. Όταν το σήμα αυτό είναι μηδέν τότε η μνήμη δε χρησιμοποιείται. Το mem_initializer είναι επίσης υπεύθυνο και για την παραγωγή του σήματος που υποδεικνύει την αρχή ενός νέου frame. Το σήμα αυτό διαρκεί για ένα παλμό ρολογιού και ενεργοποιείται κάθε 125 us.

arbiter entity

Το entity αυτό χρησιμοποιείται για τη διαιτησία στις προσπελάσεις μιας μνήμης, και συγκεκριμένα χρησιμοποιείται για τις μνήμες BAP, request matrix και ΤCΟΝΤ 3 και 4 μνήμες. Η προτεραιότητα των entity που έχουν πρόσβαση στις μνήμες φαίνεται στον πίνακα 9 :



ΒΑΡ μνήμη

Request matrix & ΤCΟΝΤ 3 και 4 μνήμες

gbw_ts

gbw_ts

sbw_ts

sbw_ts

asp

Flag scan logic

dba_rx

Update request matrix

οbc server

dba_rx




οbc server

Πίνακας 9 - Entity που έχουν πρόσβαση στις μνήμες

Για κάθε ένα από αυτά τα entity υπάρχουν τα ακόλουθα σήματα :



  • ένα σήμα που δηλώνει ότι θέλουμε να έχουμε πρόσβαση στη μνήμη (1 bit)

  • ένα σήμα που έχει τη διεύθυνση στην οποία θέλουμε να έχουμε πρόσβαση (12 bit)

  • ένα σήμα που δείχνει αν θέλουμε να διαβάσουμε ή να γράψουμε στη μνήμη (1 bit)

  • ένα σήμα που έχει τα δεδομένα εισόδου., εφόσον υπάρχουν

  • ένα σήμα που δείχνει ότι η αίτησή μας έχει εξυπηρετηθεί (1 bit)

  • ένα σήμα που περιέχει τα δεδομένα εξόδου, εφόσον υπάρχουν

Η διαιτησία επιτυγχάνεται ελέγχοντας τα σήματα που δηλώνουν αν κάποιο entity θέλει να έχει πρόσβαση στη μνήμη, και εξυπηρετώντας πάντα αυτό με τη μεγαλύτερη προτεραιότητα. Στη μνήμη ΒΑΡ δυνατότητα εγγραφής έχει μόνο ο οbc server. Τα entity gbw_ts και sbw_ts δε λειτουργούν ποτέ παράλληλα, οπότε έχουν την ίδια προτεραιότητα.

gbw_ts entity (guranteed bandwidth timers service)

To gbw_ts λειτουργεί μία φορά σε κάθε frame. Σκοπός του είναι ο υπολογισμός των byte που δικαιούται να στείλει κάποιο AllocId καθώς και η αποστολή διαφόρων πληροφοριών στο aspαπαραίτητες για την κατασκευή του access structure. Αρχικά διαβάζει από τη timers_fifo τους μετρητές που έχουν λήξει, δηλαδή ποια AllocId πρέπει να εξυπηρετήσει. Για κάθε AllocId που πρέπει να εξυπηρετηθεί διαβάζεται από τη ΒΑΡ μνήμη το Min TB, το ONU στο οποίο ανήκει, το είδος του TCONT καθώς και τις σημαίες FEC και DBRu. Επίσης διαβάζει από τη request matrix πόσα byte έχει ζητήσει να στείλει. Ο υπολογισμός των byte που δικαιούται να στείλει γίνεται ως εξής :

If TCONT 1 then Allocation_Bytes:=MinTB

Else /* T- CONT 2 */

If SR Alloc-ID then

If DBRu=01 then

Allocation Bytes := min{minTB, requests}+2

Else Allocation_Bytes:=min{minTB, requests}

End if;

Else /* NSR Alloc-ID */ Allocation bytes:=Min TB

End if

End if;

Πιο συγκεκριμένα αν πρόκειται για Τ-CΟΝΤ 1 τότε στέλνει byte ίσα με MinTB. Για Τ-CΟΝΤ 2 διακρίνουμε δύο περιπτώσεις. Αν το AllocId είναι SR τότε συγκρίνουμε την τιμή MinTB με την τιμή request που αντιστοιχεί στα byte που έχει ζητήσει να στείλει. Τα byte που δικαιούται να στείλει είναι ίσα με τη μικρότερη από τις δύο τιμές στην περίπτωση που το πεδίο DBRu δεν έχει τιμή 01 και προσαυξημένο κατά 2 αν το πεδίο DBRu είναι ίσο με 01. Αν το AllocId δεν είναι SR (ΝSR) τότε δικαιούται να στείλει Min TB byte. Η πρόσβαση στις δύο μνήμες για τη συλλογή δεδομένων γίνεται ταυτόχρονα για μεγαλύτερη ταχύτητα. Επίσης τo gbw_ts ανταλλάσσει πληροφορίες με το ΟΝU service για να διαπιστώσει αν για το ΟΝU που εξυπηρετεί πρέπει να σταλεί PLΟΑM πεδίο, και αν πρέπει στέλνει την πληροφορία αυτή στο asp. Τέλος στέλνει σήμα στο update request matrix για να ανανεώσει τη μνήμη request matrix. Στο asp οι πληροφορίες που στέλνει είναι : το allοcID, το OΝU, τα byte που είναι δεσμευμένα γι' αυτό το AllocId, αν πρόκειται για ΝSR, το FΕC Whole ONU reports (1) + reporting mode(2). Από το asp παίρνει την πληροφορία για το πόσα διαθέσιμα byte υπάρχουν.

sbw_ts entity

Ο sbw_ts εξυπηρετεί τα allοcID με Τ-CΟΝΤ τύπου 3 και 4, τα οποία προηγουμένως έχουν ελεγχθεί από το sbw_ti. Λειτουργεί όπως και το gbw_ts με τη διαφορά ότι τα allοcID δεν τα διαβάζει από κάποια fifο αλλά κατευθείαν από το sbw_ti. Επίσης δεν ελέγχει το ΟΝU service για να δει αν υπάρχει κάποιο PLΟΑΜ πεδίο. Τέλος στέλνει σήμα που σταματά τη λειτουργία του sbw_ti κάθε φορά που παίρνει ένα AllocId από αυτό έως ότου βεβαιωθεί ότι υπάρχουν και άλλα διαθέσιμα byte.


asp entity (Access Structure Preparation entity )

Το asp είναι υπεύθυνο για τη δημιουργία των δομών πρόσβασης (access structure) για κάθε είδος Τ- CΟΝΤ. Επικοινωνεί με τρία entity : τους δύο timers service που του δίνουν πληροφορία για το πόσα byte δικαιούται κάθε AllocId και το ΟΝU service που του ζητά να ενσωματώσει μηνύματα PLSu και PLOAM. Aπό το ts (gbw_ts ή sbw_ts) λαμβάνει το AllocId, τα byte που δικαιούται και τις σημαίες (FΕC, DBRu κ.τ.λ.) και από το ΟΝU service τις πληροφορίες σχετικά με το PLSu ή το PLOAM πεδίο. Με αυτά τα δεδομένα δημιουργεί τους δείκτες αρχής και τέλους για κάθε AllocId και τα bit σχετικά με τα πεδία PLSu και PLOAM. Σε κάθε frame πρώτα εξυπηρετεί τις αιτήσεις του ΟΝU service, κατόπιν τα AllocId που έρχονται από το gbw_ts και τέλος εφόσον υπάρχουν διαθέσιμα byte εξυπηρετεί τα AllocId από το sbw_ts. Τα πεδία που αποτελούν ένα access structure, όπως περιγράψαμε και στο κεφάλαιο τρία, είναι (σχήμα 35) :





σχήμα 35 - Πεδία του access structure

Όταν αρχίζει το frame τόσο ο δείκτης της αρχής όσο και του τέλους δείχνουν στο ίδιο σημείο το μηδέν. Κάθε φορά που λαμβάνει πληροφορίες για κάποιο νέο AllocId συγκρίνει το ΟΝU που ανήκει με το ΟΝU του προηγούμενου allοcID, ώστε στην περίπτωση που είναι ίδιο να μην βάλει PLOu πεδίο και χαθεί εύρος ζώνης. Το PLOu πεδίο μπαίνει μόνο όταν έχουμε ένα allοcID που ανήκει σε διαφορετικό ΟΝU από το προηγούμενό του. Στην αρχή του κάθε frame τα διαθέσιμα byte είναι 19440 και κάθε φορά που προσθέτουμε πληροφορία ο μετρητής με τα διαθέσιμα byte μειώνεται. Η πληροφορία με τα διαθέσιμα byte στέλνεται και στα timers service entities, ώστε να γνωρίζουν αν είναι δυνατή η εξυπηρέτηση άλλου allοcID. Το granted bandwidth timers service εξυπηρετεί ένα νέο allοcID όταν τα διαθέσιμα byte είναι περισσότερα από τα allocation byte. Το surplus bandwidth timers service ελέγχει αφενός αν τα διαθέσιμα byte είναι περισσότερα από τα allocation byte και αφετέρου αν τα διαθέσιμα byte είναι περισσότερα από ένα κατώφλι. Το κατώφλι αυτό είναι 9 byte, έτσι ώστε να είναι δυνατή η μεταφορά μιας επικεφαλίδας GΕM και τεσσάρων επιπλέον byte. Το ONU service entity ενεργοποιείται κάθε φορά που οι timers service ειδοποιούν ότι θα δημιουργηθεί ένα νέο access structure, και στέλνει τις PLSu και PLOAM σημαίες που πρέπει να τοποθετηθούν. Αν κάποια από αυτές τις σημαίες είναι ενεργοποιημένη, προστίθεται η αντίστοιχη επικεφαλίδα και ο δείκτης τέλους μετατρέπεται ανάλογα.

Το asp μόλις δημιουργήσει το access structure, τα εφτά από τα οχτώ byte, το στέλνει στο entity CRC_insertion για να τοποθετηθεί το αντίστοιχο πεδίο (ένα byte). Τέλος σε περίπτωση που ειδοποιηθεί από το BWmap forwarder entity κάνει εισαγωγή των κατάλληλων access structures για αίτηση κοινοποίησης (broadcast request).

update_reqmat entity

Το update_reqmat entity είναι υπεύθυνο για την ανανέωση των εγγραφών της request matrix. Λαμβάνει από το timers service, και από τα δύο gbw – sbw, το AllocId, τα byte που δόθηκαν σε αυτό και το είδος του TCONT, και γράφει στην request matrix την τιμή “req_data_in - allocation bytes”, δηλαδή τα byte που είχε ζητήσει το αντίστοιχο AllocId μείον αυτά που του δόθηκαν, οπότε είναι αυτά που απομένουν να του δοθούν. Σε περίπτωση που το είδος του TCONT είναι 3 ή 4 αν εξυπηρετηθούν όλα τα byte που είχε ζητήσει το αντίστοιχο AllocId τότε η αντίστοιχη σημαία γίνεται μηδέν.



bwmap_forwarder entity

Το entity αυτό είναι υπεύθυνο για την προώθηση του χάρτη πρόσβασης στο GLTP2 και τον έλεγχο της σιωπηλής περιόδου (silent period). Το χάρτη πρόσβασης που προωθεί σε κάθε frame το διαβάζει από τη bwmapFIFO και ισοδυναμεί με αυτόν που δημιουργήθηκε κατά το προηγούμενο frame.



Bwmap_fifo_mux entity

Το entity αυτό είναι υπεύθυνο για τη διαιτησία πρόσβασης στη BWmap FIFO. Στη μνήμη αυτή έχουν πρόσβαση το CRC_insertion entity και το BWmap_forwarder entity. Κατά τη διάρκεια ενός frame αν το CRC_insertion entity γράφει στη μία FΙFΟ το πλαίσιο Ν τότε το BWmap_forwarder entity διαβάζει το πλαίσιο Ν-1 από την άλλη FΙFΟ, δηλαδή αυτό που δημιουργήθηκε στο προηγούμενο frame. Η επιλογή ανάμεσα στις δύο μνήμες καθορίζεται από το asp.



crc_insertion entity

Το crc_insertion entity λαμβάνει από το asp τα 7 byte του allocation structure και υπολογίζει το CRC 8. Κατόπιν γράφει τη νέα δομή, allocation structure με CRC, στη Bwmap_fifo.



gbw_ti entity

Η οντότητα gbw_ti εκτελεί τον έλεγχο των προς τα κάτω μετρητών που υλοποιούν τα χρονόμετρα που αφορούν στο μέγιστο επιτρεπτό διάστημα μεταξύ δύο διαδοχικών εκπομπών μίας δεδομένης ροής στην οποία ανατίθεται εγγυημένο εύρος ζώνης. Το μέγιστο αυτό επιτρεπτό διάστημα συμβολίζεται ως MPI και συνεπώς οι μετρητές αυτοί αναφέρονται ως MPI timers (ή maxSDI timers). Οι MPI timers έχουν αρχικά μία τιμή η οποία έχει προσυμφωνηθεί κατά την ενεργοποίηση της ροής και η τιμή αυτή μειώνεται σε κάθε παλμό ρολογιού κατά ένα. Όταν ο μετρητής αυτός για μία δεδομένη ροή μηδενιστεί τότε η ροή αυτή θα πρέπει να εξυπηρετηθεί και για το λόγο αυτό το AllocId της ροή στέλνεται σε μία ουρά FIFO και αναμένει για εξυπηρέτηση ενώ η τιμή του μετρητή επανατίθεται στην αρχικά προσυμφωνημένη τιμή του. Στην υλοποίηση του GMAC στο GIANT χρησιμοποιούνται δύο μνήμες των 1024 θέσεων, όσες συνολικά και οι ροές, για την αποθήκευση των τιμών αυτών. Στη μία μνήμη αποθηκεύεται σε κάθε παλμό του ρολογιού η τρέχουσα τιμή του μετρητή ενώ στην άλλη η αρχική προσυμφωνημένη τιμή για κάθε ενεργοποιημένη ροή. Οι ενεργοποιημένες ροές είναι αυτές που εξετάζονται και συνεπώς εξυπηρετούνται ενώ οι υπόλοιπες ροές είναι δυνατό να ενεργοποιηθούν ανά πάσα στιγμή γεγονός που ισοδυναμεί με το να γραφούν οι κατάλληλες τιμές στις δύο μνήμες και στη συνέχεια να λαμβάνουν μέρος κανονικά στη διαδικασία.

Η διαδικασία ελέγχου των μνημών και η αρχικοποίηση όπου απαιτείται διαρκεί όσο είναι ο χρόνος αποστολής ενός πλαισίου και επαναλαμβάνεται περιοδικά. Στο χρόνο αυτό η οντότητα είναι δυνατό να βρίσκεται στις παρακάτω διακριτές καταστάσεις:

IDLE: έχει ολοκληρωθεί ο έλεγχος της μνήμης και δεν έχει παρέλθει χρόνος ίσος με τον χρόνο αποστολής ενός πλαισίου. Αν ενεργοποιηθεί μία νέα ροή,δηλαδή ένα νέο AllocId, πραγματοποιείται μετάβαση στην κατάσταση WRITE_NEW_ALLOCID ενώ αν παρέλθει χρόνος ίσος ίσος με τον χρόνο αποστολής ενός πλαισίου από την αρχή του ελέγχου της τότε πραγματοποιείται μετάβαση στην FETCH_FROM_MEMORY.

FETCH_FROM_MEMORY: γίνεται αίτηση στις μνήμες ώστε αυτές να στείλουν δεδομένα και στη συνέχεια πραγματοποιείται μετάβαση στην κατάσταση WAIT_MEM_RESPONSE.

WAIT_MEM_RESPONSE: λαμβάνονται οι τιμές για την τρέχουσα και την προσυμφωνημένη τιμή του MPI timer για μία δεδομένη ροή. Αν η ροή η οποία εξετάζεται είναι ενεργοποιημένη και η τιμή που διαβάζεται είναι ίση με ένα τότε ο μετρητής με την τρέχουσα τιμή επανατίθεται στην τιμή του άλλου μετρητή και πραγματοποιείται μετάβαση στην κατάσταση SEND_TO_FIFO. Αν η τιμή είναι διάφορη του ενός τότε η τιμή μειώνεται κατά ένα και πραγματοποιείται μετάβαση στην κατάσταση SEND_TO_MEM. Αν η ροή δεν είναι ενεργοποιημένη έχουμε μετάβαση στην κατάσταση RELEASE.

SEND_TO_MEM: γράφεται η κατά ένα μειωμένη τιμή πίσω στην μνήμη που κρατά τις τρέχουσες τιμές των MPI timers. Η επόμενη κατάσταση είναι η RELEASE.

SEND_TO_FIFO: γράφεται το AllocId της ροής της οποίας ο MPI timer έφτασε το ένα στον προηγούμενο κύκλο (δηλαδή τώρα εάν δεν είχε επανατεθεί θα είχε την τιμή μηδέν) σε μία ουρά FIFO για να εξυπηρετηθεί. Η επόμενη κατάσταση είναι η RELEASE.

RELEASE: πραγματοποιείται μετάβαση στην κατάσταση WRITE_NEW_ALLOCID αν έχει ενεργοποιηθεί νέα ροή αλλίως η υπό εξέταση διεύθυνση των μνημών αυξανεται κατά ένα και μεταβαίνουμε στην κατάσταση FETCH_FROM_MEMORY ενώ αν αυτή είναι η 1023 έχουν εξεταστεί όλες οι θέσεις μνήμης και έχουμε μετάβαση στην κατάσταση IDLE.

WRITE_NEW_ALLOCID: γράφεται στις μνήμες η αρχικά συμφωνημένη τιμή του MPI timer γα τη δεδομένη ροή. Η διεύθυνση των μνημών στην οποία θα γίνει η εγγραφή είναι αυξημένη κατά ένα από τη διεύθυνση της τελευταίας ενεργοποιημένης ροής ενώ αν όλες οι θέσεις της μνήμης είναι γραμμένες τότε η εγγραφή αρχίζει πάλι από τη διεύθυνση μηδέν. Η επόμενη κατάσταση είναι η IDLE.



dba_rx entity

Η οντότητα dba_rx λαμβάνει από το GLTP2 τις αιτήσεις των ροών για ανάθεση εύρους ζώνης (dba reports) και τις στέλνει σε μία ουρά FIFO έτσι ώστε να εξυπηρετηθούν. Οι αιτήσεις αυτές φθάνουν στην οντότητα αυτή σε δύο διαδοχικές λέξεις που η πρώτη αποτελεί το AllocId της ροής και η δεύτερη περιέχει πληροφορία σχετική με τις απαιτήσεις της ροής για εύρος ζώνης. Σε μία λέξη της FIFO αποθηκεύεται όλη η πληροφορία που αφορά σε μία δεδομένη αίτηση από μία ροή. Το τμήμα της κάθε λέξης της FIFO που αναφέρεται στις απαιτήσεις της ροής για εύρος ζώνης είναι μη γραμμικά κωδικοποιημένο και για το λόγο αυτό αποκωδικοποιείται ενώ στη συνέχεια πολλαπλασιάζεται επί 48 αν δεν έχει κωδικοποιηθεί η πληροφορία αυτή από το ONU κατά FEC ενώ επί 51 και προστίθεται 16 αν έχει κωδικοποιηθεί η πληροφορία κατά FEC και η τιμή που προκύπτει που ισούται με τα bytes που επιθυμεί η ροή να εκπέμψει αποθηκεύεται στον πίνακα (request matrix) που κράτα τις αιτήσεις για εύρος ζώνης που εκκρεμούν για όλες τις ροές. Στις λέξεις που κρατούνται στις FIFO γίνεται και μία επιπλέον λειτουργία, συγκεκριμένα ελέγχεται με βάση τα στοιχεία που κρατούνται για όλες τις ροές στον bap matrix αν το AllocId που μεταφέρουν ανήκει σε ροή που υλοποιεί υπηρεσίες τύπου TCONT 3 ή 4 και αν κάτι τέτοιο συμβαίνει στέλνονται σήματα ώστε να τεθούν τα κατάλληλα flags που αφορούν στην εξυπηρέτηση των ροών του τύπου αυτού με το επιπλέον εύρος ζώνης.

Με βάση τα παραπάνω η οντότητα μπορεί να βρίσκεται σε δύο διακριτές καταστάσεις όσον αφορά στην υποδοχή των αιτήσεων των ροών για ανάθεση εύρους ζώνης και οι μεταβάσεις γίνονται ανά παλμό ρολογιού:

WAIT_FOR_ALLOC_ID: η οντότητα περιμένει και παραμένει στην κατάσταση αυτή μέχρι να λάβει την πρώτη από το ζεύγος λέξεων που αφορούν στις αιτήσεις των ροών και αυτή η λέξη μεταφέρει το AllocId μιας δεδομένης ροής. Όταν ολοκληρωθεί η λήψη της πρώτης λέξης μεταβαίνει η οντότητα στην κατάσταση WAIT_FOR_DBA_REPORT.

WAIT_FOR_DBA_REPORT: η οντότητα περιμένει τη δεύτερη λέξη που αναφέρεται στην αίτηση μίας δεδομένης ροής για ανάθεση εύρους ζώνης. Οι λέξεις που λαμβάνονται στα δύο αυτά βήματα συγχωνεύονται σε μία λέξη και αποθηκεύονται στη FIFO.

Όσον αφορά την επικοινωνία με τον request matrix η οντότητα βρίσκεται κάθε χρονική στιγμή σε μία από τις παρακάτω καταστάσεις και οι μεταβάσεις γίνονται ανά παλμό ρολογιού:

READ_FROM_FIFO: δίνεται σήμα στην FIFO ώστε να διαβαστεί μία λέξη της και η οντότητα μεταβαίνει στην κατάσταση WAIT_FIFO_RD_ACK.

WAIT_FIFO_RD_ACK: στέλνεται η λέξη από την FIFO και όταν αυτή ληφθεί τότε γίνεται επεξεργασία του τμήματος της λέξης που αφορά στην αίτηση έτσι ώστε να προκύψει η μη κωδικοποιημένη λέξη. Όταν η διαδκασία ολοκληρωθεί πραγματοποιείται μετάβαση στην κατάσταση WAIT_FEC_ACK.

WAIT_FEC_ACK: η οντότητα αναμένει να φτάσει η λέξη του bap matrix που αφορά στη δεδομένη ροή και όταν αυτό γίνει με επιτυχία πραγματοποιείται μετάβαση στην κατάσταση PREPARE_REQUEST_VALUE.

PREPARE_REQUEST_VALUE: γίνεται επεξεργασία του τμήματος της λέξης που αφορά στην αίτηση έτσι ώστε να προκύψει ο αριθμός των bytes της αίτησης που θα πρέπει να ανατεθούν στη δεδομένη ροή που αποτελεί και την τιμή που γράφεται στη συνέχεια στον request matrix. Η οντότητα στη συνέχεια μεταβαίνει στην κατάσταση WRITE_REQMAT.

WRITE_REQMAT: γράφεται η λέξη στον request matrix αφού πρώτα ληφθεί μεριμνα σχετικά με τις λέξεις που είναι κωδικοποιούνται κατά FEC και η οντότητα μεταβαίνει στην κατάσταση WAIT_FOR_REQMAT_ACK.

WAIT_FOR_REQMAT_ACK: στέλνονται κατάλληλα σήματα που πιστοποιουν ότι η εγγραφή στον request matrix έγινε σωστά και πραγματοποιείται μετάβαση στην κατάσταση READ_FROM_FIFO ώστε να διαβαστεί επόμενη λέξη από την FIFO

Όσον αφορά την επικοινωνία με τον bap matrix η οντότητα βρίσκεται κάθε χρονική στιγμή σε μία από τις παρακάτω καταστάσεις και οι μεταβάσεις γίνονται ανά παλμό ρολογιού:

READ_FROM_FIFO: εξάγεται η πληροφορία που μεταφέρεται σε μία λέξης της ουράς FIFO και στέλνεται στον bap matrix η διεύθυνση ώστε να διαβαστεί η κατάλληλη εγγραφή που περιέχει τις πληροφορίες για τη δεδομένη ροή.Με την όλοκλήρωση της λειτουργίας αυτής η οντότητα μεταβαίνει στην κατάσταση WAIT_FOR_BAP_ACK.

WAIT_FOR_BAP_ACK: φτάνει η εγγραφή στην οντότητα και ελέγχεται αν η ροή στην οποία αφορά υλοποιεί υπηρεσίες τύπου TCONT 3 ή 4 και εάν είναι ενεργοποιημένη. Αν ισχύει αυτό και επιπλέον έχει ολοκληρωθεί ολοκληρωθεί η εγγραφή στον πίνακα request matrix τότε μεταβαίνουμε στην κατάσταση TC_READ, διαφορετικά η οντότητα θα πρέπει να τεθεί σε κατάσταση αναμονής και για το λόγο αυτό μεταβαίνει στην κατάσταση WAIT_UPDATE_REQMAT.

TC_READ: διαβάζονται γραμμή προς γραμμή οι μνήμες που έχουν αποθηκευμένα τα flags που αφορούν στις ροές τύπου TCONT 3 ή 4 και η οντότητα μεταβαίνει στην κατάσταση TC_WRITE.

WAIT_UPDATE_REQMAT: η οντότητα παραμένει σε αυτή την κατάσταση μέχρι να ολοκληρωθεί η εγγραφή στον πίνακα request matrix και στη συνέχεια μεταβαίνει στην κατάσταση TC_READ.

TC_WRITE: τίθονται τα κατάλληλα flags και στέλνονται για αποθήκευση στις μνήμες που κρατούν τα flags (flag regions) και πραγματοποιείται μετάβαση στην κατάσταση WAIT_FOR_TC_ACK.

WAIT_FOR_TC_ACK: η οντότητα περιμένει να πιστοποιηθεί ότι η εγγραφή στα flag regions πραγματοποιήθηκε με επιτυχία και στη συνέχεια μεταβαίνει στην κατάσταση READ_FROM_FIFO για να διαβάσει την επόμενη λέξη που θα επεξεργαστεί.

mux_dba entity

Η οντότητα mux_dba μεσολαβεί μεταξύ της οντότητας dba_rx και των flag regions των ροών που υλοποιούν υπηρεσίες τύπου TCONT 3 και 4. Στέλνει την κατάλληλη διεύθυνση στα δύο flag regions και το σήμα ενεργοποίησης στο κατάλληλο από αυτά ανάλογα με το είδος υπηρεσιών που υλοποιεί η υπό εξέταση ροή. Επιπλέον προς την αντίθετη κατεύθυνση δέχεται τα δεδομένα από το flag region και τα προωθεί στην οντότητα dba_rx.



sbw_ti entity

Η λειτουργία της οντότητας sbw_ti αφορά στο επιπλέον εύρος ζώνης δηλαδή τα διαθέσιμα bytes του προς τα άνω πλαισίου αφού έχει ανατεθεί το εγγυημένο εύρος ζώνης στις ροές που υλοποιούν υπηρεσίες τύπου TCONT 1 και 2. Οπότε η λειτουργία του αφορά στις ροές που υλοποιούν υπηρεσίες τύπου TCONT 3 ή 4 και ξεκινά όταν φτάσει κατάλληλο σήμα από την οντότητα asp που δηλώνει ότι η ανάθεση του εγγυημένου εύρος ζώνης ολοκληρώθηκε και αφού πρώτα έχει ολοκληρωθεί από την οντότητα sbw_tu η ενημέρωση των τιμών των μετρητών που υλοποιούν τα χρονόμετρα που αφορούν στο ελάχιστο επιτρεπτό διάστημα μεταξύ δύο διαδοχικών εκπομπών μίας δεδομένης ροής και ονομάζονται mPI timers, ενώ σταματά όταν τα επιπλέον bytes των οποίων ο αριθμός από πλαίσιο σε πλαίσιο διαφέρει εξαντληθούν. Η λειτουργία της οντότητας αυτής συνίσταται στον έλεγχο των flag regions που αντιστοιχούν στις ροές TCONT 3 και 4 με βάση τον αλγόριθμο round robin. Αρχικά εξετάζεται το flag region για τις ροές τύπου TCONT 3 και στην συνέχεια το αντίστοιχο για τις ροές τύπου TCONT 4 εφόσον κατά την εξέταση των ροών τύπου TCONT 3 δεν εξαντληθεί το επιπλέον εύρος ζώνης. Εύρεση flag το οποίο έχει τιμή ένα σημαίνει ότι για την ροή στην οποία αντιστοιχεί θα πρέπει να εξεταστεί ο προς τα κάτω μετρητής που υλοποιεί και αν αυτός έχει την τιμή μηδέν τότε ο μετρητής επαναρχικοποιείται στην προσυμφωνημένη για την παράμετρο αυτή τιμή κατά τη φάση της ενεργοποίησης και το AllocId της ροής αυτής αποστέλλεται στην οντότητα sbw_ts που είναι από εκεί και πέρα υπεύθυνη ώστε να αναθέσει εύρος ζώνης στην ροή. Η sbw_ts δέχεται το AllocId που της υποδεικνύει η sbw_ti, το εξετάζει και αναθέτει στη ροή εύρος ζώνης και στον χρόνο αυτό η sbw_ti παραμένει ανενεργή και αρχίζει τη λειτουργία της πάλι όταν δεχτεί κατάλληλο σήμα απο την sbw_ts που δηλώνει ότι το επιπλέον εύρος ζώνης δεν εξαντλήθηκε. Με βάση τα παραπάνω γίνεται αντιληπτό ότι η λειτουργία της οντότητας sbw_ti είναι δυνατό να σταματήσει επίσης όταν ληφθεί σήμα από την οντότητα sbw_ts ότι ανατέθηκε όλο το επιπλέον εύρος ζώνης.

Όσον αφορά στην επικοινωνία με τα flag region η οντότητα βρίσκεται κάθε χρονική στιγμή σε μία από τις παρακάτω καταστάσεις που αν και είναι διακριτές για τις ροές τύπου TCONT3 και TCONT4 λόγω της ομοιότητάς τους εξετάζονται ανά ζεύγη, ενώ οι μεταβάσεις μεταξύ των καταστάσεων γίνονται ανά παλμό ρολογιού:

TC3_FLAGS_FETCH ή TC4_FLAGS_FETCH: η οντότητα κάνει αίτηση στο κατάλληλο region flag για να της σταλούν τα flags και στη συνέχεια η οντότητα μεταβαίνει στην κατάσταση TC3_FLAGS_STORE ή TC4_FLAGS_STORE αντίστοιχα.

TC3_FLAGS_STORE ή TC4_FLAGS_STORE: αποθηκεύονται τα flags που στέλνονται με σκοπό να ελεγχθεί ποια από αυτά έχουν την τιμή ένα και στη συνέχεια η οντότητα μεταβαίνει στην κατάσταση TC3_FLAGS_INSPECTION ή TC4_FLAGS_INSPECTION αντίστοιχα.

TC3_FLAGS_INSPECTION ή TC4_FLAGS_INSPECTION: εξετάζονται τα flags ένα προς ένα και για όσα βρεθούν να έχουν την τιμή ένα αποθηκεύται το AllocId που του αντιστοιχεί και στη συνέχεια η οντότητα μεταβαίνει στην κατάσταση TC3_FLAGS_NEXT ή TC4_FLAGS_NEXT αντίστοιχα.

TC3_FLAGS_NEXT ή TC4_FLAGS_NEXT: στέλνεται σήμα να ξεκινήσει η εξέταση των flags που αφορούν σε ροές τύπου TCONT4 αν ολοκληρώθηκε αυτή των TCONT3 αλλιώς στέλνεται σήμα που δηλώνει ότι ολοκληρώθηκε ο έλεγχος των flag regions.

Όσον στους mPI (ή minSDI) timers υπάρχουν δύο μνήμες των 1024 θέσεων, όσες συνολικά και οι ροές. Στη μία μνήμη αποθηκεύεται οι τρέχουσες τιμές των mPI timers ενώ στην άλλη οι αρχικές προσυμφωνημένες τιμές για τις ροές. Η οντότητα σχετικά με την επικοινωνία με τις μνήμες αυτές περνά από τις παρακάτω καταστάσεις

FETCH_MINSDI: ζητούνται από τις μνήμες με βάση το AllocId η τρέχουσα και η προσυμφωνημένη τιμή του mPI timer μίας δεδομένης ροής. και η οντότητα μεταβαίνει στην κατάσταση WAIT_TIMERS.

WAIT_TIMERS: μηδενίζονται τα σήματα που σχετίζονται με την αποστολή της διεύθυνσης στη μνήμη για να αποφευχθεί εμπλοκή με τη λειτουργία της οντότητας mem initialiser και η οντότητα μεταβαίνει στην κατάσταση STORE_MINSDI.

STORE_MINSDI: αποθηκεύονται προσωρινά οι τιμές που λαμβάνονται από τις μνήμες και η οντότητα μεταβαίνει στην κατάσταση CHECK_MINSDI.

CHECK_MINSDI: αν η τρέχουσα τιμή του mPI timer της υπό εξέταση ροής είναι μηδέν, η ροή είναι ενεργοποιημένη και η οντότητα sbw_ts που αναθέτει το εύρος ζώνης δεν είναι απασχολημένη τότε το AllocId της ροής προωθείται στην sbw_ts και η οντότητα μεταβαίνει στην κατάσταση RELEASE_ALLOCID αλλιώς αν είναι απασχολημένη η sbw_ts στην STALLED.

RELEASE_ALLOCID: τα σήματα προς την οντότητα sbw_ts μηδενίζονται ώστε η αίτηση για εξυπηρέτηση μίας δεδομένης ροής να γίνει μόνο μία φορά και η οντότητα μεταβαίνει στην κατάσταση EXTRA_RELEASE.

EXTRA_RELEASE: η κατάσταση αυτή εισάγεται ώστε να δημιουργηθεί καθυστέρηση για να επιτευχθεί συγχρονισμός των διαδικασιών.

Στη συνέχεια αναφερόμαστε στις καταστάσεις που η οντότητα είναι ανενεργή και που η λειτουργία της έχει σταματήσει

IDLE: η οντότητα είναι ανενεργή και περιμένει σήμα που δηλώνει την ολοκλήρωση της ανάθεσης του δεσμευμένου εύρους ζώνης για να αρχίσει τη λειτουργία της. Όταν φτάσει το σήμα μεταβαίνει στην κατάσταση TC3_FLAGS_FETCH.

STALLED: η οντότητα απενεργοποιείται όσο η sbw_ts εξυπηρετεί μία ροή ή τα επιπλέον bytes εξαντληθούν, όταν σταλούν τα σήματα για να ενεργοποίηση η οντότητα μεταβαίνει στην TC3_FLAGS_INSPECTION ή TC4_FLAGS_INSPECTION.

Οντότητα sbw_tu

Η οντότητα sbw_tu ενημερώνει τη μνήμη στην οποία φυλάγονται οι τρέχουσες τιμές των μετρητών mPI timers που υλοποιούν τα χρονόμετρα που αφορούν στο ελάχιστο επιτρεπτό διάστημα μεταξύ δύο διαδοχικών εκπομπών μίας δεδομένης ροής. Η ενημέρωση αφορά στις τιμές των θέσεων της μνήμης στις οποίες φυλάγονται μετρητές οι οποίοι δεν έχουν μηδενιστεί και η αντίστοιχη ροή είναι ενεργή. Αν ο μετρητής έχει μηδενιστεί η οντότητα δεν αλλάζει τη μηδενική τιμή δεδομένου ότι για την επαναρχικοποίηση υπεύθυνη είναι η οντότητα sbw_ti ενώ αν η ροή είναι ενεργή γεγονός που γίνεται αντιληπτό από τα δύο σημαντικότερα bits της κάθε εγγραφής της μνήμης η τιμή του μετρητή μειώνεται κατά ένα. Με κάθε ενεργή ροή η οντότητα ασχολείται τρεις κύκλους ρολογιού ενώ με κάθε ανενεργή δύο κύκλους. Αυτό έχει ως συνέπεια η οντότητα να είναι ενεργή κατά τη δημιουργία κάθε προς τα κάτω πλαισίου για χρόνο ίσο με 2048 συν τον αριθμό των ενεργών ροών κύκλους ρολογιού δεδομένου ότι το σύνολο των ροών είναι 1024. Κατά τη διάρκεια της λειτουργίας της οντότητας καμία άλλη οντότητα δεν έχει πρόσβαση στη μνήμη και συγκεκριμένα στην οντότητα sbw_ti στέλνεται σήμα για να την ενημέρωση από ποια χρονική στιγμή της επιτρέπεται να διαβάσει τις τρέχουσες τιμές των mPI timers.

Κατά τη λειτουργία της που περιγράψαμε παραπάνω η οντότητα βρίσκεται σε κάποια από τις παρακάτω διακριτές καταστάσεις:

IDLE: παραμένει η οντότητα μέχρι να δεχθεί σήμα που την ενημερώνει ότι αρχίζει η διάθεση του επιπλέον εύρους ζώνης και όταν αυτό συμβεί μεταβαίνει στην κατάσταση στέλνει στη μνήμη τη διεύθυνση της εγγραφής της που θέλει να διαβάσει FETCH_FROM_MEMORY.

FETCH_FROM_MEMORY: η οντότητα στέλνει στη μνήμη τα κατάλληλα σήματα για να της στείλει την πληροφορία.

WAIT_MEM_RESPONSE1: η οντότητα αναμένει την πληροφορία, η κατάσταση αυτή έχει εισαχθεί για να υλοποιηθεί η απαιτούμενη για τον κατάλληλο συγχρονισμό καθυστέρηση.

WAIT_MEM_RESPONSE2: η οντότητα λαμβάνει την τιμή του μετρητή και αν αφορά σε ενεργοποιημένη ροή τότε μειώνει την τιμή κατά ένα αν η τιμή δεν είναι μηδέν αλλιώς την αφήνει αμετάβλητη.

SEND_TO_MEM: η νέα τιμή στέλνεται στην κατάλληλη διεύθυνση της μνήμης.

gxtp_sif entity

Η οντότητα αυτή είναι η σειριακή διεπαφή μέσω της οποίας γίνεται η επικοινωνία μεταξύ του GMAC και του GLTP2. Συγκεκριμένα η διεπαφή μετατρέπει τη σειριακή πληροφορία που προορίζεται για το GMAC σε παράλληλη και την προωθεί προς αυτό. Η πληροφορία αφορά σε ενεργοποίηση διαδικασίας διαπραγμάτευσης των παραμέτρων των ONU (ranging procedure), τις αιτήσεις των ONU να εκπέμψουν επικεφαλίδες PLSu και PLOAM και το AllocId της ροής. Τα τμήματα της πληροφορίας που έρχονται με την προαναφερθείσα σειρά μετατρέπονται σε ξεχωριστά σήματα και προωθούνται στις κατάλληλες μονάδες του GMAC για εξυπηρέτηση. Συγκεκριμένα τα τμήματα της πληροφορίας που αφορούν στις επικεφαλίδες προωθούνται στην οντότητα ONU_service που είναι από εκεί και πέρα υπεύθυνη ώστε να τις αποθηκεύσει και στη συνέχεια να τις στείλει προς εξυπηρέτηση. Τα τμήματα αυτά συνοδεύονται από το AllocId που σε αυτή την περίπτωση έχει τιμή από 0 έως 127 δεδομένου ότι αίτηση για επικεφαλίδες κάνουν τα ONU και όχι οι επιμέρους ροές τους συνεπώς το AllocId αναφέρεται στην οντότητα αυτή ως ONUId. Ενώ η αίτηση για ranging procedure αποθηκεύεται ώστε να εξυπηρετηθεί στη συνέχεια.

Σημαντικό σημείο στη λειτουργία της οντότητας είναι ότι μεριμνά ώστε να συγχρονιστεί το ρολόι του GMAC με αυτό που λειτουργεί το GLTP2 ώστε να είναι δυνατή η επικοινωνία των δύο κυκλωμάτων.

onu_service entity

Η οντότητα onu_service η οποία ξεκινά να λειτουργεί όταν της σταλεί κατάλληλο σήμα από την οντότητα asp είναι υπεύθυνη για να ενημερώνει την asp για το πώς θα πρέπει να θέσει τα flags που αναφέρονται στις επικεφαλίδες PLSu και PLOAM που θα εκπέμψουν τα ONU στο προς τα άνω πλαίσιο ενώ παράλληλα ανάλογα με τις τιμές των flags ενημερώνει την asp για το πόσα bytes δαπανηθούν από το κάθε ONU που θα αποτελούν τις επικεφαλίδες αυτές έτσι ώστε να υπολογιστούν από τα συνολικά bytes που θα αφορούν σε ωφέλιμη πληροφορία και να φτιάξει της κατάλληλες δομές πρόσβασης (access structures). Οι επικεφαλίδες αυτές εκπέμπονται από τα ONU και είναι δυνατό να ζητήσουν τα ίδια τα ONU να εκπέμψουν μία ή και τις δύο επικεφαλίδες αυτές γεγονός για το οποίο ενημερώνεται η οντότητα μέσω του gxtp_sif. Επιπλέον όσον αφορά στις επικεφαλίδες PLOAM, τα ONU υποχρεούνται να εκπέμπουν περιοδικά κάθε ένα προκαθορισμένο χρονικό διάστημα επικεφαλίδα PLOAM. Το χρονικό διάστημα αυτό καθορίζεται από την τιμή ενός μετρητή του οποίου η τιμή μειώνεται σε κάθε κύκλο ρολογιού και όταν ο μετρητής μηδενιστεί στέλνεται κατάλληλο σήμα στην οντότητα asp που την ενημερώνει ότι τα ONU θα πρέπει να στείλουν επικεφαλίδα PLOAM. Είναι σημαντικό να αναφέρουμε ότι τόσο οι έκτακτες αιτήσεις για επικεφαλίδα PLOAM που αφορούν στις ακανόνιστες αιτήσεις των ONU όσο και οι τακτικές που αφορούν στην περιοδική διαδικασία εξυπηρετούνται όταν μηδενιστεί ο παραπάνω μετρητής.

Οι αιτήσεις PLSu και PLOAM ανεξάρτητα από που προέρχονται φυλάγονται εσωτερικά στην οντότητα σε δύο καταχωρητές, ένα για κάθε είδος επικεφαλίδας, των 128 θέσεων όπου κάθε θέση αντιστοιχεί σε ένα ONU. Όταν σε μία θέση είναι αποθηκευμένη η τιμή ένα σημαίνει ότι εκκρεμεί αίτηση και θα πρέπει να εξυπηρετηθεί. Οι θέσεις εξετάζονται μία προς μία και δημιουργείται το κατάλληλο ζεύγος bits για κάθε ONU το οποίο προωθείται στην οντότητα asp με το κατάλληλο ONUΙd, που είναι το AllocId απλά αναφέρεται έτσι δεδομένου ότι αναφερόμαστε σε λειτουργία που αφορά στα ONU και όχι στις ροές ενώ έχει τιμή από 0 έως 127 δεδομένου ότι 128 είναι το σύνολο των ONU. Η αποστολή συνοδεύεται με τον αριθμό των bytes που θα πρέπει να δαπανηθούν για τις επικεφαλίδες αυτές για το δεδομένο ONU ανάλογα αν και τι επικεφαλίδες θα εκπέμψει το ONU και με την ύπαρξη ή όχι κωδικοποίησης FEC που οδηγεί σε περαιτέρω δαπάνη bytes. Όταν αποσταλεί η πληροφορία που αφορά στα flags στην οντότητα asp τότε η πληροφορία αυτή δεν είναι πλέον χρήσιμο να κρατιέται στην onu_service και οι τιμές των θέσεων των καταχωρητών που στάλθηκαν για εξυπηρέτηση τίθενται μηδέν έτσι ώστε να φιλοξενήσουν μελλοντικές αιτήσεις.

1   ...   7   8   9   10   11   12   13   14   ...   25


База данных защищена авторским правом ©shkola.of.by 2016
звярнуцца да адміністрацыі

    Галоўная старонка