上半篇講到了聲音分貝的概念,
對於聲音的單位:dB SPL和dB SIL,有興趣瞭解並推算的朋友,可以點選以下連結(PC端效果更佳)
http://www.sengpielaudio.com/calculator-soundlevel.htm
下面我們進入正題。
功率和電壓的dB的區別
在上半篇裡說過了,關於dB最初的單位是用來描述功率(單位瓦特)的。那麼當初功率的相對值為什麼要用dB描述呢?再一次列一下公式:
\(L_{dB} = 10 \times \log_{10}\frac{P1}{P0}\)
注意P1和P0的單位都是瓦。在上半篇說,dB可以形容聲音。那麼在電子工程中,dB既然可以形容功率了,那麼dB也應該可以形容電壓。當dB用來形容電壓時的功率是這樣的:
\(L_{dB} = 10 \times \log_{10}(\frac{U1}{U0})^{2}\)
注意U1和U0都是電壓,單位都是伏特。哎呀我擦,怎麼就莫名其妙就多了個平方呢?
這個時候初中物理老師又出來了,ta告訴了我們:
\(P = \frac{{U}^{2}}{R}\)
把這個公式代到上述的那個公式中:
\(L_{dB} = 10 \times \log_{10}\frac{P1}{P0}\)
可得:
\(L_{dB} = 10 \times \log_{10}\frac{\frac{{U1}^{2}}{R}}{\frac{{U2}^{2}}{R}} = 10 \times \log_{10}(\frac{U1}{U0})^{2}\)
這還沒完,初高中數學老師出來了,ta說:
\(L_{dB} = 10 \times \log_{10}(\frac{U1}{U0})^{2} = 20 \times \log_{10}\frac{U1}{U0}\)
所以當P1/P0是2的時候,也就是P1比P0的功率大一倍的時候,算得約等於是3dB,此時P1比P0大3dB。
而當U1/U0是2的時候,也就是U1比U0的電壓大一倍的時候,算得約等於是6dB,此時U1比U0大6dB。
哎呀我擦,dB你這小夥子你還有兩副嘴臉……
dB在電子工程中的好處都有啥
為啥貝爾大佬這麼喜歡用log10,這是有好處的,比如在電子中最常出現的功率放大器,如下:
上面的這張圖,從一開始的輸入電壓到最後的輸出電壓,放大的倍數是632倍。這裡使用了乘法,如果放大器太多了,那麼我們需要拿出計算器出來慢慢乘,有點不方便。
這個時候初高中數學老師又跳出來了!ta說了,log的運演算法則是這樣的:
\(20\log_{10}({M1}\times{M2}) = 20\log_{10}{M1} + 20\log_{10}{M2}\)
以上的M1和M2都是放大倍數,如果兩個放大倍數相乘的話,可以轉換成對數形式的相加。
等一下,這玩意怎麼有點熟悉?:
\(20\log_{10}{M1}\)
這玩意不就是電壓的dB表示形式嗎?:
\(20\log_{10}{M1} = 20 \times \log_{10}\frac{U1}{U0}\)
那麼上圖中的放大器的表示形式可以變成:
可以看到通過dB這個單位,我們把難搞的乘法變成了簡單的加法。(想象不到吧表情)
可不可以使用絕對值?
上面說的那些都是相對值,如果我想用dB來表示一個絕對值的量,行不行?
當然可以,我們再把功率的dB公式拉出來一下:
\(L_{dB} = 10 \times \log_{10}\frac{P1}{P0}\)
我們發現只要P0設定成一個固定的值,然後把當前要計算的功率代入到P1,最終的得到的L就是一個絕對值啊。
包括dBm或者dBV,以及其他dB後面加個單位的的表示方法都是這個思路。除了dBFS稍微有點特殊,下文會講到。
dBm全稱為:decibel relative to one milliwatt,所以他的公式即為:
\(L_{dBm} = 10 \times \log_{10}\frac{P1}{1mW}\)
其中1mW即為1毫瓦,如果P1是1W(1瓦)的話,那麼代入可得到30dBm。
那麼同理,dBV全稱為:decibel relative to one volt,所以他的公式即為:
\(L_{dBV} = 20 \times \log_{10}\frac{U1}{1V}\)
如果U1為2伏特的話,那麼代入可得到6dBV。
dB的好處還有啥
首先我們先上兩張圖觀察一下:
那麼請耐心聽我嘮叨一下。這兩張圖描述的是同一個東西,只是使用了不同的單位。
其中縱座標的單位是一樣的,都是剛才說的dBV,比如0dBV就是1V,比如-6dBV就是0.5V。縱座標代表了幅度,越往上幅度越大,沒毛病。
橫座標就不一樣了:
在前面這張圖中0Hz到1MHz是線性遞增的,因為這個區間範圍太大了,所以無法看到0Hz到100Hz之間的具體資訊,而只看到一條几乎貼近縱座標的、陡峭上升的綠色斜線。
後面的這張圖的橫座標”有點奇怪“,橫座標分別為1Hz、10Hz、100Hz、1kHz、10kHz、100kHz、1MHz,這是以10倍數遞增的關係,這樣的優點很明顯,我們可以看到各頻率範圍的訊號幅度。可以看到10Hz~100kHz的範圍內的訊號的幅度比較大,其他頻率範圍的幅度比較低。
這種10倍數遞增的橫座標為什麼能這麼標,它的本質是什麼?它的本質就是dB呀~
為了說明問題,那麼在這裡我們發明一個新的單位dBHz:
\(L_{dBHz} = 10 \times \log_{10}\frac{F1}{1Hz}\)
F1是頻率,它的單位是Hz。那麼分別把奇怪的橫座標:1Hz、10Hz、100Hz、1kHz、10kHz、100kHz、1MHz代入到上面這個公式可以得到:
0dBHz、10dBHz、20dBHz、30dBHz、40dBHz、50dBHz、60dBHz。可以看到這個橫座標在dBHz的角度看是“線性”增長的,妙啊,沒毛病!
dBFS又妙在哪裡
dBFS的全稱是Decibels relative to full scale。dBFS和dBm之間有固定的轉化關係:
\(X_{dBFS} = Y_{dBm} - MAXOUTPUT_{dBm}\)
但是不同裝置的MAXOUTPUT即最大輸出功率不一樣,比如如果一個器件的最大輸出功率是20dBm(也即100mW),那麼:
\(X_{dBFS} = Y_{dBm} -20\)
所以在這個器件中,當我們想把dBm設定成最大的20dBm的時候,需要把dBFS設定成0。當想把dBm設定成5dBm的時候,需要把dBFS設定成-15。
所以dBFS的最大值就是0。為啥需要dBFS這個設定這麼奇怪的單位?這是因為在數字域中我們需要設定訊號的幅度。
小夥子,本老同志又要上公式了,你不能閃!
在16bit的訊號中,幅度(AMP)和dBFS之間的關係如下:
\(L_{dBFS} = 10 \times \log_{10}(\frac{AMP}{INT16MAX})^{2}\)
也即:
\(L_{dBFS} = 20 \times \log_{10}\frac{AMP}{INT16MAX}\)
正因為這條公式的定義,才會有dBFS最大值為0的設定。因為AMP幅度最大是INT16MAX,計算出公式得到dBFS為0。
注:INT16MAX為16位有符號數的最大值,即為32767
一般在程式碼中會根據設定的dBFS的值然後計算得出當前的AMP幅度。
至於公式中為什麼會有這個平方:
\((\frac{AMP}{INT16MAX})^{{\color{Red} 2}}\)
我是這麼理解的,因為dBFS表示的依然是和dBm類似的功率的值,也即是最終以瓦特為單位。而器件中的電阻是固定的,幅度基本和電壓一個單位,所以根據:
\(P = \frac{{U}^{2}}{R}\)
計算,最終幅度的確需要加一個平方。
因為本人水平有限,難免會有些紕漏或者沒講清楚的地方。可以加我公眾號binfun或者留言討論,謝謝!
感謝閱讀!