2018年4月12日 星期四

數位到底是啥?


小時候聽羅大佑講過這回事,錄音帶播放出來再錄到另一卷錄音帶,這麼一直重複多次,結果會?
很爛...
那,一個檔案,copy成另一份,再copy成另一份...這麼一直重複多次,結果會?
完全相同,
這就是數位存在的原因。

到底啥是數位?你說的出來嗎?0或1就是數位?低電壓就是0,高電壓就是1?
其實不限於0或1,有時是00、01、10、11,一次表達二個訊息;
也不限於高低電壓,加上第三個電壓也可以,電壓變換也可以,也不限於電壓,光的相位變化也可以,聲音也可以,短音表0,長音表1,摩斯電碼不就類似?

最大的重點是,如果是0或1這種組合,數位就沒有0.5這回事,不是0就是1;
例如,我告訴你下一個資料,我說的不是0就是1,你若是聽不太清楚,模模糊糊但相當確定0不會聽成1,那就算我在遠處山頭喊,你還是不會搞錯,這就是數位的優點,抗雜訊;
你再將我喊的數字喊給另一個山頭的人聽,喊出來的數字也不會是模糊的,而是清晰的0或1,這就是數位的特質,複製無損失。

如果是類比呢?那就可能是0.1, 0.2, 0.3, 0.4....0.9,我喊0.3,你聽到可能糊的很,變成0.4,你再喊給下一個人聽,又不知道會變成啥...這就是類比的缺點,精準複製幾乎不可能,因為實際上不是0.3這麼簡單,可能是0.31415979...長到不得了的數字,導致失真無所不在。
那數位實際上怎麼做到抗雜訊呢?
以最常用的低電壓表0,高電壓表1來說,例如低電壓是0V,高電壓是5V,實際上的作法是,盡可能讓訊號接近0V或5V,避開中間的模糊地帶,0.8V以下算低電壓表0,2.0V以上算高電壓表1,如此就算傳輸過程有雜訊、失真,只要別太嚴重就不會錯。

那,如果真的爛到出錯呢?有沒有辦法知道錯了?
那就是加上檢查碼,例如RS232有個parity check,就是再最後附加一個bit,讓所有bits合計的1的數量一定偶數(或奇數),若錯一個bit就一定知道;
更複雜的例如CRC,那是以整個packet的資料來運算,理論上湊巧錯到看不出來的機率微乎其微;
若真的錯誤呢?那就重傳啊~
這又是數位另一個特質,容易驗證錯誤與否,parity check就是個簡單例子,其根基當然是建立在抗雜訊,一翻兩瞪眼,(幾乎)沒模糊地帶;因此發展出許多檢查碼手法,甚至可以直接修正;
類比呢?完全不可行,因為其沒有"數值"可言,就像那個 π,3.14159265359...每傳遞一手,就會有些失真,因為沒有解析度無限高的設備可以精準複製,加上雜訊串入也無法得知(頂多搞hi pass filter或low pass fitler濾掉關注頻段以外的雜訊),於是註定一定會失真。
喔,你知道銀行帳號也有檢查碼嗎?雖然說帳號數字不只是有0和1而已,只要是明確的數字,就是種數位。

且回到音響,到底各位音響迷是在杞人憂天個啥呢?
怎麼你從不擔心你在網路上轉帳的金額、帳號會錯,偏要擔心就在你眼前的DAC資料會錯?那個牌子的DAC和電腦啊?