Παιδιά δεν υπάρχει κανένα πρόβλημα παρεξήγησης, μην το μπερδέψουμε.
Ίσως είναι και δική μας παράλειψη που σε αυτό το νήμα δεν δώσαμε, αναλυτικά το θέμα που μας απασχόλησε, με αποτέλεσμα να αφήσουμε κενά και ερωτηματικά.
Το ότι ανοίχτηκε ειδικό θέμα στο diyaudio, δεν ήταν υποτιμητικό προς αυτή την ελληνική κοινότητα, αλλά θεωρήσαμε ότι το θέμα ήταν άκρως εξειδικευμένο και ήθελε άτομα που να έχουν ψαχτεί ιδιαίτερα σε αυτό το ψηφιακό κομμάτι, το diyaudio τα έχει και όπως σωστά αναφέρει ο Κώστας (saganakis) επιλέγουν να μην μιλάνε αρκετές φορές.
Προσωπικά τα παιδιά που ασχολούμαστε με αυτό το πρότζεκτ, έχουμε βαρεθεί τη λογική κρυψίνιους και άλλα λόγια να αγαπιόμαστε από κακομαθημένους diy-ηδες, λες και όλοι αυτοί οι genius μάθανε με επιφοίτηση του Αγίου Πνεύματος.
Εάν θέλουμε να ωφελούμαστε, να προχωράμε, να μαθαίνουμε πρέπει να μοιράζουμε τη γνώση μας, όπως ακριβώς κάποιοι άλλοι τη μοίρασαν για να μάθουμε και εμείς.
Πάμε στο θέμα μας τώρα.
Εάν στο ΑΚdac το τροφοδοτήσεις με ένα απλό σήμα i2s, όλα πάνε υπέροχα και παίζει μια χαρά. Πρώιμες ακροάσεις με τη δοκιμαστική πλακέτα και σε δικά μας συστήματα και σε καλά συστήματα (όπως του Σέρκου) έδειξαν ότι πάει πολύ καλά. Μετρητικά δεν παρουσιάζεται κανένα θέμα και για του λόγου το αληθές νομίζω στις σελίδες 9 & 18 υπάρχουν συλλήψεις FFT που το αποδυκνείουν.
Στην τελική πλακέτα dac, επιλέχθηκε να μπει μία τεχνική flip-flop όπου το σήμα i2s επαναχρονίζεται (με σκοπό να μειωθεί το jitter), αυτό δεν είχε δοκιμαστεί πρωτύτερα στο AK και ειλικρινά δεν μπορούσαμε να ξέρουμε εκ των προτέρων ότι το ΑΚ θα είχε δυσλειτουργία με αυτή τη λύση.
Ποια ήταν η δυσλειτουργία που παρουσίαζε; Ακουστικά καμία και εάν δεν το βάζαμε σε FFT δεν θα το βλέπαμε ποτέ, μάλιστα μέλος του diyaudio μας είπε σε ελεύθερη μετάφραση "τι το ψιρίζετε...πάρα πολλές υλοποιήσεις έχουν τέτοια σχετικά θέματα και απλά δεν παρουσιάζονται", εμάς όμως μας έτρωγε το γιατί γινόταν αυτό.
Δηλαδή, όταν το βάζαμε στο FFT φαινόταν σαν να "ξεκλείδωνε" στιγμιαία το σήμα σε χρόνους που δεν είχαν σταθερή περιοδικότητα κάθε φορά που το μετρούσαμε, ανά δύο δεύτερα, ανά 8, ανά 13, ανά 22. Εκείνη τη στιγμή που εμφανιζόταν αυτός ο "λόξυγγας" όπως το λέγαμε μεταξύ μας ακουστικά δεν συνέβαινε τίποτα...
Ψάχνοντας το αίτιο, είδαμε στον παλμογράφο ότι το BCLK μετά το flip-flop, παρουσίαζε ένα επιπρόσθετο στιγμιαίο παράλληλο παλμό μαζί με το βασικό που είχε πλάτος γύρω στα 20ns και μάλιστα αυτός ο παλμός "φάντασμα" έμπλεκε στις υψηλές συχνότητες (352/384Κ) μέσα στους κανονικούς παλμούς με αποτέλεσμα να μην αναπαράγονται σωστά αρχεία δειγματοληψίας 352/384, ενώ δίχως το κύκλωμα επαναχρονισμού τέτοια θέματα δεν υπήρχαν.
Εδώ παρουσιάζεται αυτός ο παλμός φάντασμα σε αρχείο 44-48Κ
Εδώ σε ένα αρχείο 192Κ
Ο Δημήτρης έκανε μια ολόκληρη ανάλυση σε αναλυτή και είδε κάποια θέματα μετατόπισης του παλμού στο πέρασμα του χρόνου και προσπαθούσαμε να κατανοήσουμε το τι συμβαίνει για να δούμε το τι μπορεί να γίνει.
Υπήρξαν κάποιες προτάσεις από μέλη του diyaudio, κυρίως ένα μέλος (AIM65) μας ώθησε να δούμε το τι γίνεται εφαρμόζοντας μία καθυστέρηση στο σήμα BCLK μέσω RC έτσι ώστε να έρθουμε πιο κοντά στα όρια προδιαγραφών του ΑΚ τσιπ.
Για να μην το μακρυγορούμε είδαμε ότι ενώ με αυτόν τον τρόπο λύναμε κάποια εμφανίζονταν κάποια κ.ο.κ
Φαινόταν ότι το όλο θέμα γινόταν γιατί με απλά λόγια στο τραπέζι λειτουργούσαν δύο ρολόγια διαφορετικά (τα ρολόγια της αμανέρο και το ρολόι/ρολόγια του επαναχρονισμού) και αυτά δεν μπορούσαν με τίποτα να έρθουν σε συγχρονισμό, αυτό βέβαια γινόταν ακόμη εμφανέστερο σε υψηλές συχνότητες.
Αυτό το σημείο ήταν κομβικό να στραφούμε σε άλλη λύση και ευτυχώς η αμανέρο μας δίνει μέσω του προγραμματισμού της αυτή τη δυνατότητα, δηλ. να καταργήσουμε στην ουσία τα ρολόγια που υπάρχουν επάνω στην αμανέρο να τη φλασάρουμε σε slave mode αντί για master που φλασάρεται συνήθως και στην ουσία να της μεταφέρουμε από έξω το mclk έτοιμο και αυτή με αυτό το mclk να δημιουργεί τις δειγματοληψίες κατά τη μετατροπή σε i2s.
Κατά αυτόν τον τρόπο, λειτουργεί ένα ρολόι (προγραμματιζόμενο όπως το Si) ή δύο ρολόγια σε ζευγάρι τα οποία πέρνουν τις εντολές εναλλαγής από την ίδια την αμανέρο (έχει αυτή τη δυνατότητα) και το mclock από τα εξωτερικά και ανώτερα ρολόγια/ρολόι οδηγείται στην αμανέρο για να κάνει τη δουλειά της.
Οπότε, λύνεται και ο "λόξυγγας" και ο παλμός "φάντασμα" και όλα λειτουργούν και πάλι ρολόι και το κυριότερο το στάδιο flip-flop επιτελεί το έργο για το οποίο έχει δημιουργηθεί.
Προσωπικά, δεν ξέρω εάν αυτή η λύση σε slave mode επιτυγχάνεται και σε άλλες usb μοντούλες, στη CM6631A που είχα διαβάσει πρόσφατα το εγχειρίδιο της έλεγε ότι μπορεί να προγραμματιστεί σε slave mode αλλά το configuration fw που κυκλοφορεί δεν το επιτρέπει από ότι θυμάμαι.
Για όσους λοιπόν θέλουν οπωσδήποτε τον επαναχρονισμό θα πρέπει να περιμένουν...ήδη το έχουμε μοντάρει σε αυτή τη λύση που προτείνουμε και δουλεύει ρολόι. Απλά μας πιάνει το καλοκαίρι και θα έχουμε και τις διακοπές.
Για όσους δεν θέλουν να μπουν σε τέτοια διαδικασία και απλά θέλουν να βάλουν μια απλή μοντούλα usb->i2s να κάνουν τη δουλειά τους, η τωρινή έκδοση του AK dac κάνει μια χαρά τη δουλειά της απλά δεν θα κολλήσετε το προγραμματιζόμενο ρολόι Si και θα κάνετε bypass τις 6 θέσεις flip-flop όπως στη φώτο που είχα ανεβάσει...θα δείτε ότι έχω βάλει μικρά συρματάκια που κάνουν bypass στις θέσεις flip-flop (όχι τα κίτρινα καλώδια που είναι για το mclk).
Επίσης δεν θα χρειαστείτε να βάλετε και ένα LT-3042 με τα περιφερειακά του (φαίνονται στα αριστερά της εικόνας οι άδειες θέσεις) καθότι αυτή η τροφοδοσία είναι περιττή σε αυτήν την περίπτωση.
Και voila έχετε το dac σε πλήρη ετοιμότητα!