USB -> XMOS -> Asynchronous I2S FIFO -> Buffalo

Μιας και ο περισσότερος κόσμος κινείται πλέον προς τα άυλα μέσα, έχει ανάψει για τα καλά το θέμα της μεταφοράς του σήματος από το transport (PC / Squeezebox / whatever) στο DAC.

Για την περίπτωση του PC, στο diyaudio.com αυτή την εποχή παίζει πολύ η λύση USB -> πλακέτα με XMOS -> πλακέτα Asynchronous I2S FIFO -> Βουβάλι.

Συγκεκριμένα:

Asynchronous USB interface με XMOS:
USBtoI2S_top_resize.jpg

Νήμα στο diyaudio.com: http://www.diyaudio.com/forums/digital-source/188902-xmos-based-asynchronous-usb-i2s-interface.html

ή εναλλακτικά το σετ που δοκιμάζει ο Τάσος αυτές τις μέρες.

έτσι μπορούμε και δίνουμε I2S σήμα σε αυτό:

async_I2S_FIFO_dsc_1293_resize.jpg
Asynchronous I2S FIFO:
http://www.diyaudio.com/forums/digi...ifo-project-ultimate-weapon-fight-jitter.html
http://hifiduino.wordpress.com/2012/03/21/ians-i2s-fifo-re-clocker-single-digit-psec-jitter/

του οποίου η δουλειά είναι να εξαφανίσει το όποιο jitter και να δώσει τέλειο σήμα I2S σε κάποιο DAC που μπορεί να το αναγνωρίσει, π.χ. ένα βουβάλι.

Αυτή φαίνεται να είναι η state-of-the-art αντιμετώπιση του θέματος αυτή την εποχή.

Έχει ασχοληθεί κανείς; Ψήνεται να ασχοληθεί; Το (χρηματικό) κόστος φαίνεται να είναι ανεκτό..
 
Τα νήματα είναι τεράστια.. έχω καταφέρει να διαβάσω ελάχιστες σελίδες. Ο ίδιος πάντως που φτιάχνει το FIFO λέει ότι στο σύστημά του (Hi End...) με το FIFO στη μέση εκμηδενίζονται οι ακουστές διαφορές μεταξύ των transport του (το ένα είναι ένα Krell, το άλλο κάτι μικρότερο).
 
Update: Το project έχει μεγαλώσει πολύ, έχουν φτιαχτεί πολλές πλακέτες με ρολόγια κτλ.. μιλάμε για απίστευτο επίπεδο γνώσεων σε θεωρητικό και πρακτικό επίπεδο. Μακράν το πιο (πραγματικά) high end νήμα που έχω διαβάσει στον τομέα του DIY.

Ο Ian έκανε κάποιες μετρήσεις jitter ώστε να επιβεβαιώσει ότι η κατασκευή όντως βελτιώνει δραματικά το jitter.

Τα αποτελέσματα εδώ: http://www.diyaudio.com/forums/digi...project-ultimate-weapon-fight-jitter-193.html

Έχουν ιδιαίτερο ενδιαφέρον καθότι ο Ian έχει όντως μηχανήματα που μπορούν να μετρήσουν το jitter με κάποια αξιοπρεπή ακρίβεια (έως τα 2ps).

Το αποτέλεσμα ήταν το αναμενόμενο.. ένα WM8805 μετράει τόσο:
Phase jitter RMS:37.02 ps
Phase jitter peak-to-peak:+-150ps


ενώ το σήμα του (I2S) αφότου έχει περάσει από το FIFO μετράει:
Phase jitter RMS:5.13 ps
Phase jitter peak-to-peak:+-18ps


Το εντυπωσιακό είναι ότι αυτά τα αποτελέσματα έρχονται με κρύσταλλο της πλάκας εγκατεστημένο στο FIFO (του δεκάρικου). Με κάποιο καλό (π.χ. Crystek) τα αποτελέσματα θα είναι κάτω από την ακρίβεια του οργάνου του Ian (2ps).

Οπότε δεν τίθεται θέμα. Το εργαλείο όντως δουλεύει πολύ καλά.

Μπαίνω στον πειρασμό ρε γμτ.. Πλησιάζει και το GB III...
 

papakostasl

Established Member
6 November 2009
130
Πραγματικά πολύ ενδιαφέρον.

Έχω διαβάσει λίγο από τα threads στο diyA και μου έχει κινήσει το ενδιαφέρον.

Να αναφέρω επίσης την περίπτωση του ddac που ενώ χρησιμοποιεί το XMOS επιλέγει λύση NOS χωρίς ψηφιακό φίλτρο.

Αναμένω με ενδιαφέρον τα αποτελέσματά σου και πολύ θα ήθελα να το ακούσω

Καλή επιτυχία

Λευτέρης
 

tmjuju

Administration Team
Staff member
21 January 2007
21,651
Πολύ ενδιαφέρον...και πόσο πάει το μαλλί μπας και δοκιμάσουμε...?

Δες λίγο εδώ: http://www.diyaudio.com/forums/grou...s-pdif-fifo-kit-group-buy-77.html#post3255031

Τα [1] και [2] είναι θα έλεγα απαραίτητα
Και για το 99% των περιπτώσεων και το [3]

Αρα μια $300αρα για αρχή ?! …
Αν δεν ήταν ακριβό θα είχαμε πάρει από την προηγούμενη φορά …

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

Επίσης περιμένω και το νέο ρολόι με το Si570, το οποίο θα είναι πολύ πιο ευέλικτο από την πλακέτα με τους δύο oscillators.

Το χειρότερο απ' όλα βέβαια είναι ότι θα χρειαστεί να αλλάξω το εσωτερικό layout του βουβαλιού μου.. αυτό το βαριέμαι αφάνταστα σε αυτή τη φάση.
 

dinos

Moderator
Staff member
17 June 2006
811
Πάτρα
Το thread είναι εξαιρετικό διότι θίγει πλήθος από προβληματισμούς που ξεφεύγουν (ευτυχώς....) από την αποκλειστική ενασχόληση με το FIFO. Επίσης πολύ σημαντική στην όλη συζήτηση είναι η συμβολή του σχεδιαστή Demian Martin (1audio) ο οποίος φαίνεται να έχει και γενικότερο authority αλλά και εμπεριστατωμένη πληροφόρηση για τα υλικά και τα προβλήματα υπάρχουν σε όλα τα σταδία του χρονισμού.

Οι μετρήσεις είναι πολύ διαφωτιστικές, όμως αφορούν το jitter του κρυστάλλου γι’ αυτό και υπάρχει κυρίως θόρυβος φάσης (με κατανομή Gauss). Η μέθοδος μέτρησης είναι ενδεικτική της ποιότητας των κρυστάλλων, των γενικότερων υλικών και της κατασκευής της πλακέτας. Του αξίζει ένα μεγάλο μπράβο και πιστέψτε με είναι πολύ δύσκολο να πάρεις μετρήσεις σε επίπεδο μερικών psec έστω και σε στατιστικό ιστόγραμμα ακόμα και αν έχεις τον εξοπλισμό (να μην αναφέρω τίποτα για μέτρηση real time όπου απαιτείται βάση χρόνου 10 psec/div ή αλλιώς εύρος συχνοτήτων…. 100GHz) . Να τονίσουμε όμως πως οι μετρήσεις αφορούν τις επιδόσεις του ρολογιού του συστήματος και όχι τη συνολική τιμή του jitter όπως αυτό θα εμφανιστεί στη έξοδο κάποιου του DAC (που απουσιάζει στη συγκεκριμένη κατασκευή) και που μοιραία θα περιέχει αρμονικές στις ακουστικές συχνότητες που θα διαμορφώνουν τη φάση του ρολογιού.

Ειδικότερα τώρα το ίδιο το FIFO νομίζω πως προορίζεται κυρίως για χρήση σε περιπτώσεις αξιοποίησης ενός CD player με έξοδο SPDIF/AES (ή κάποιου CD transport) στα οποία δεν υπάρχει η δυνατότητα (ή δεν θέλουμε) να τα χρονίσουμε με το ρολόι του DAC που χρησιμοποιούμε και ταυτόχρονα θέλουμε να αποφύγουμε τη χρήση του PLL που ενσωματώνουν αρκετοί εμπορικοί receivers (η αλήθεια είναι πως στην πλειονότητά τους αποδεικνύονται αρκετά ανεπαρκείς στη καταστολή του jitter). Η χρήση ενός έξυπνου FIFO όπως αυτό του Ian, φαίνεται πως αποτελεί μια καλή λύση (με του αναπόφευκτους περιορισμούς).

Αντίθετα η λύση του FIFO δεν νομίζω πως προσφέρει κάτι σε περιπτώσεις με δέκτη – μετατροπέα USB >I2S (π.χ XMOS), εφ’ όσο εκεί τα data έρχονται κατ’ επίκληση στα πλαίσια της ασύγχρονης λειτουργίας.
 
Ναι, τα πράγματα είναι καλύτερα στα async USB, αλλά και πάλι έχουμε κάποιο jitter λόγω των FPGAs που χρησιμοποιούνται. Η ιδέα είναι να εξαλειφθεί και αυτό το jitter.

Ο φίλος μας του hifiduino τα λέει πολύ αναλυτικά εδώ: http://hifiduino.wordpress.com/2012/03/21/ians-i2s-fifo-re-clocker-single-digit-psec-jitter/
 

tmjuju

Administration Team
Staff member
21 January 2007
21,651
Re: Απάντηση: USB -> XMOS -> Asynchronous I2S FIFO -> Buffalo

Το thread είναι εξαιρετικό διότι θίγει πλήθος από προβληματισμούς που ξεφεύγουν (ευτυχώς....) από την αποκλειστική ενασχόληση με το FIFO. Επίσης πολύ σημαντική στην όλη συζήτηση είναι η συμβολή του σχεδιαστή Demian Martin (1audio) ο οποίος φαίνεται να έχει και γενικότερο authority αλλά και εμπεριστατωμένη πληροφόρηση για τα υλικά και τα προβλήματα υπάρχουν σε όλα τα σταδία του χρονισμού.

Οι μετρήσεις είναι πολύ διαφωτιστικές, όμως αφορούν το jitter του κρυστάλλου γι’ αυτό και υπάρχει κυρίως θόρυβος φάσης (με κατανομή Gauss). Η μέθοδος μέτρησης είναι ενδεικτική της ποιότητας των κρυστάλλων, των γενικότερων υλικών και της κατασκευής της πλακέτας. Του αξίζει ένα μεγάλο μπράβο και πιστέψτε με είναι πολύ δύσκολο να πάρεις μετρήσεις σε επίπεδο μερικών psec έστω και σε στατιστικό ιστόγραμμα ακόμα και αν έχεις τον εξοπλισμό (να μην αναφέρω τίποτα για μέτρηση real time όπου απαιτείται βάση χρόνου 10 psec/div ή αλλιώς εύρος συχνοτήτων…. 100GHz) . Να τονίσουμε όμως πως οι μετρήσεις αφορούν τις επιδόσεις του ρολογιού του συστήματος και όχι τη συνολική τιμή του jitter όπως αυτό θα εμφανιστεί στη έξοδο κάποιου του DAC (που απουσιάζει στη συγκεκριμένη κατασκευή) και που μοιραία θα περιέχει αρμονικές στις ακουστικές συχνότητες που θα διαμορφώνουν τη φάση του ρολογιού.

Ειδικότερα τώρα το ίδιο το FIFO νομίζω πως προορίζεται κυρίως για χρήση σε περιπτώσεις αξιοποίησης ενός CD player με έξοδο SPDIF/AES (ή κάποιου CD transport) στα οποία δεν υπάρχει η δυνατότητα (ή δεν θέλουμε) να τα χρονίσουμε με το ρολόι του DAC που χρησιμοποιούμε και ταυτόχρονα θέλουμε να αποφύγουμε τη χρήση του PLL που ενσωματώνουν αρκετοί εμπορικοί receivers (η αλήθεια είναι πως στην πλειονότητά τους αποδεικνύονται αρκετά ανεπαρκείς στη καταστολή του jitter). Η χρήση ενός έξυπνου FIFO όπως αυτό του Ian, φαίνεται πως αποτελεί μια καλή λύση (με του αναπόφευκτους περιορισμούς).

Αντίθετα η λύση του FIFO δεν νομίζω πως προσφέρει κάτι σε περιπτώσεις με δέκτη – μετατροπέα USB >I2S (π.χ XMOS), εφ’ όσο εκεί τα data έρχονται κατ’ επίκληση στα πλαίσια της ασύγχρονης λειτουργίας.

Ντίνο θα συμφωνήσω ότι ενδείκνυται ειδικά για περιπτώσεις που θέλουμε πολλές εισόδους s/pdif και μάλιστα συνδέσεις με παλιές πηγές ή με μεγάλο jitter.

O DimDim που σκεπτόταν (μη με ρωτάτε γιατί) 8 εισόδους πιθανά να είναι πιο κοντά στο κοινό του.

χωρίς να ξέρω πολλά από fpga σα να θυμάμαι ότι εάν δε χρησιμοποιήσεις τουλάχιστο δυο ρολόγια, ένα για την είσοδο-εσωτερικό-χρονισμό και ένα για την έξοδο, τότε τις περισσότερες φορές θα έχεις μεγαλύτερο jitter στην έξοδο από αυτό που θα μπορούσες να έχεις θεωρητικά. Αυτό βλέπουμε να κάνουν αρκετοί κατασκευαστές. Ένα ρολόι για τα πάντα. Το όποιο διαιρείται και δρομολογείται εσωτερικά στο FPGA με όποιες μικρές ανακρίβειες ανάλογα την υλοποίηση.
To xmos μπορεί και αυτό να δεχθεί παραπάνω από ένα ρολόι το οποίο βελτιώνει τη χρονισμό της εξόδου αν και υπάρχουν υλοποιήσεις με ένα μόνο. Το dev board έχει 3, ένα για το usb και δυο για audio, όχι ότι είναι τις προκοπής (αλλάζουν κιόλας αφού dev board είναι) αλλά τουλάχιστο σα dev board δεν αρκέστηκαν στην πιο φθηνή υλοποίηση με ένα.

Γενικότερα μετράει MCLK από όσο βλέπω και όχι DCLK ή LRCLK αν και εκεί … δε καταλαβαίνω τι θα μετράγαμε ακριβώς… κάπου εκεί το χάνω…
 
Επειδή έγινε και εκεί αυτή η παρατήρηση από κάποια άτομα (δηλαδή ότι έτσι μετριέται περισσότερο το jitter του εκάστοτε ρολογιού και όχι του FIFO) ο Ian έκανε ένα σετ ακόμα μετρήσεων, στο SCK αυτή τη φορά: http://www.diyaudio.com/forums/digi...mate-weapon-fight-jitter-195.html#post3312929

Τα αποτελέσματα δεν άλλαξαν ουσιαστικά ή πιο σωστά μεγάλωσε περισσότερο η ψαλίδα υπέρ του FIFO.
 

VaSiLiS-T

Supreme Member
10 January 2007
8,209
παλλληηηηηνιηηηη
Υπάρχουν παράμετροι μη μετρήσιμοι και ως εκ τουτου συνάμα αλλη μία μη ελέγξιμη παράμετρο ,
το ένα φέρνει το άλλο βέβαια ,

μην σας μπερδέψω ,,

βάλε το καλύτερο ρολογάκι να κάνει ξερω γώ 5 - 10-20 ps , λέμε τώρα ,,, ουσιαστικά το λύσαμε το θέμα της αθέτησς χρόνου ,

απο κεί και πέρα ........ τι διάολο είναι αυτό που κάνει το κάθε τράνσπορτ να πάιζει διαφορετικά ?

οεο ?

σκέψεις ...
 

exp4nder

Banned
18 January 2009
1,390
Αθήνα
Eμένα με βλέπω να το δοκιμάζω πάντως...δε ξέρω, με έχει πιάσει κάτι με την τελειομανία σε επίπεδο πηγής τώρα τελευταία, στα πλαίσια που επιτρέπει το sabre εν πάση περιπτώση...
 
Re: Απάντηση: USB -> XMOS -> Asynchronous I2S FIFO -> Buffalo

Υπάρχουν παράμετροι μη μετρήσιμοι και ως εκ τουτου συνάμα αλλη μία μη ελέγξιμη παράμετρο ,
το ένα φέρνει το άλλο βέβαια ,

μην σας μπερδέψω ,,

βάλε το καλύτερο ρολογάκι να κάνει ξερω γώ 5 - 10-20 ps , λέμε τώρα ,,, ουσιαστικά το λύσαμε το θέμα της αθέτησς χρόνου ,

απο κεί και πέρα ........ τι διάολο είναι αυτό που κάνει το κάθε τράνσπορτ να πάιζει διαφορετικά ?

οεο ?

σκέψεις ...

O Ian πάντως λέει ότι όταν περνάνε μέσα από το FIFO του όλα τα transports που έχει δοκιμάσει ακούγονται το ίδιο.. ;)
 
Eμένα με βλέπω να το δοκιμάζω πάντως...δε ξέρω, με έχει πιάσει κάτι με την τελειομανία σε επίπεδο πηγής τώρα τελευταία, στα πλαίσια που επιτρέπει το sabre εν πάση περιπτώση...

Και πολύ καλά κάνεις.. Όλοι μας κάποια στιγμή συνειδητοποιούμε το πόσο κρίσιμο ρόλο παίζει η καλή πηγή και πόσο μάταια είναι τα πάντα αν δεν την έχουμε πραγματικά φροντίσει.

Το Sabre είναι πραγματικά high end εφόσον συνοδευτεί από κορυφαία υποσυστήματα.
 

tmjuju

Administration Team
Staff member
21 January 2007
21,651
Re: Απάντηση: USB -> XMOS -> Asynchronous I2S FIFO -> Buffalo

Υπάρχουν παράμετροι μη μετρήσιμοι και ως εκ τουτου συνάμα αλλη μία μη ελέγξιμη παράμετρο ,
το ένα φέρνει το άλλο βέβαια ,

μην σας μπερδέψω ,,

βάλε το καλύτερο ρολογάκι να κάνει ξερω γώ 5 - 10-20 ps , λέμε τώρα ,,, ουσιαστικά το λύσαμε το θέμα της αθέτησς χρόνου ,

απο κεί και πέρα ........ τι διάολο είναι αυτό που κάνει το κάθε τράνσπορτ να πάιζει διαφορετικά ?

οεο ?

σκέψεις ...

Θεωρητικά με το παραπάνω όλα τα spdif sources θα παίζουν «πιο ίδια» μεταξύ τους. Αλλά ναι μια παράμετρο εξετάζουμε μόνο… και δε ξέρω αν κανεις ακούει διαφορά μεταξύ 5 και 10ps…

Μπιλ αυτό που καταλαβαίνω εάν έχουμε fifo ή κάτι αντίστοιχο (άρα και πιο περίπλοκο)
spdif out -> fpga -> whatever internal code -> spdif out
1 clock --------^

Το clock μιας και δρομολογείται εσωτερικά στο λογικό κύκλωμα, ανάλογα με το fpga / xmos / υλοποίηση , στο Out θα έχει jitter > του αρχικού clock.
Όσο περισσότερα ταυτόχρονα clock domains προσπαθείς να πάρεις από μια είσοδο ρολογιού (δυο ποδαράκια) του fpga/xmos τόσο μεγαλύτερα τα προβλήματα.

Και σε μεγάλα ολοκληρωμένα τύπου CPU η εσωτερική δρομολόγηση των clock-domains / clock-trees παραμένει τεράστιο πρόβλημα κατά τη σχεδίαση, και το jitter/skew θα περιορίσει το max χρονισμό ενός cpu πριν βγει στην αγορά, ακόμα και για λόγους κατανάλωσης με τόσες γραμμές για ρολόγια. Πέρσι ήταν της μόδας κάτι “resonant clock mesh technology” για CPU design της Cyclos ( http://www.cyclos-semi.com/ )που τη διοικεί μάλιστα έλληνας, ο Μάριος Παπαευθυμίου.
 

exp4nder

Banned
18 January 2009
1,390
Αθήνα
Ακριβώς αυτό πιστεύω Δημήτρη και για αυτό το σκέφτομαι σοβαρά...
Σάμπρε ντακ, σάλας τροφοδοσία, αυτό για input-χρονισμό, και ένα καλό στάδιο εξόδου που ακόμα το ψάχνω που θα καταλήξω και νομίζω θα είμαι πάρα πολύ καλά από πηγή...
 

VaSiLiS-T

Supreme Member
10 January 2007
8,209
παλλληηηηηνιηηηη
fifo fifa και λοιπά κύπελα ,, ψηφιακό μπαφεράκι με ρολόι είναι ,, ,, οκ ,, κάτι αντίστοιχο έχω πράξει και εγώ ,,, νωμίζω δλδ ,, αλλα κάθε τράσπορτ και ο καημός του

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

εαν κατάφερε να εκμηδενίσει το αγνωστο παράγοντα Χ απο τα τράνσπορτ που μεταβάλει χαρακτηριστικά .. μπράβο του ,,,