fchung 寫:當然不是這樣啦,你說的是一個USB interface + 一片普通DAC的情況
根本就不是一個USB DAC的設計,而且根本是行不通的
你以為USB DAC內沒有processor麼,錯,是一定有
因為所有USB device都需要和host通過認証,說明自己是何種device,如何反應等,沒有processor如何做?你還是先去USB.ORG load一份spec看看再說話
而且,你計一計,USB目前有三種speed (1.1Mbps),LS,FS(12Mbps) 和HS(48Mbps ),就那一種會跟DAC要求的直接匹配?
USB根本沒有clock的signal,只有D+和D-兩個相反訊號,clock是在data 的傳輸pattern內提取出來的,會可以準到用在audio輸出嗎?而且USB傳輸是按packet的,packet 和 packet之間的時間沒有基準,如何用到DAC timing上。我看你還是load 份USBDAC的datasheet看看,如果你看得懂的話。
而你對FIFO的誤解也太大了,error correction or resend是在data 未進入FIFO之前做好的,FIFO就是用來
1. 容許輸出有獨立準確的時基
2. 在據來得快或慢的時候作為緩衝
"USB DAC內沒有processor麼,錯,是一定有"
是的,USB device "通常" 不是一個RISC (也就是您說的processor) 為什麼? 那是因為一顆processor需要的是fetch、decode、execute stage。一般為了壓低成本,這種小東西只要execute就夠了,這意味著裡面可能用個FSM就做掉了。以成本考量,RISC是不需要的,不然,裡面就會有instruction、data memory。就目前我所知道的,只有像IndigoDJ這種,用了一顆DSP processor來做,不過大都是用在他們標榜的virtual output的DSP上。像這樣,簡單的認證host、資料傳送接收,我們通常稱"controller",內含幾個時序邏輯的FSM。
"error correction or resend是在data 未進入FIFO之前做好的"
您說的對,但是我說的是"有FIFO會比較好,那是因為配合錯誤更正碼,會有機會更正" USB是serial的input,需經過一轉parallel的buffer,在此時作error校正,因為資料進FIFO時,通常就校正不了了,在校正完時才送入FIFO,可是您真的認為error correction 在一個cycle內就做的完嗎? 內插做的完嗎? 所以,FIFO用作緩衝,當需校正時緩衝幾個cycle,但無法緩衝到嚴重錯誤時的重新傳輸。
"USB根本沒有clock的signal"
沒錯,沒有clock! 根本也沒clock這條線吧(好像,這我不保證
)如同你說的,只有D+和D-兩個相反訊號,但UAB可有了,他會需要sample資料,尤其是您說的"packet"的header還有結尾。USB接收資料,靠的是data的位準的轉換,當一條爛線傳錯時,data的位準並不穩定,UAB當然就收不到正確的資料,當然,聲音也就不好囉。
請指教
"拜託,不懂的不要亂吹","我看你還是load 份USBDAC的datasheet看看,如果你看得懂的話。" 這種有點過份的話請盡量少出現,我不想引起筆戰,謝謝囉∼
-----------------------------------
題外話,我會覺得光纖傳輸比USB傳輸來的好些喔。光纖的抗雜訊功能很強,即使也有所謂的"爛光纖",但在DAC這種需要頻寬不大的狀態下,光纖不需要太多的"全反射路徑",這時,光纖的缺點會比較難顯現。所以能選的話,大家還是選光纖囉