2014年5月28日 星期三

Digital MEMS Microphone


數位麥克用來將類比的聲壓轉成數位音訊資料,要知道數位麥克風的規格才知理解聲壓與數位資料的關系。要如何解讀數位麥克風的規格呢?
Sensitivity 靈敏度
聲壓SPL 94dB或1Pa 的1kHz正弦波為標準參考輸入值,靈敏度用來表示在輸入SPL 94dB的情況下,數位麥克風會轉換為多大的振幅。有不少的數位麥克風標示它們的Sensitivity為-26dBFS,FS為Full scale,這表示輸入94dB會得到-26dBFS,輸入SPL 120dB會得到0dBFS。靈敏度越高的麥克風,它的靈敏度絕對值越小。靈敏度不是越高越好,如果靈敏度只有-20dBFS,這意謂SPL 114dB為它的0dBFS,當輸入的聲壓超過SPL 114dB以上,都會被截波、失真。
下面為Sensitivity的公式,output為1V,Sensitivity 5% FS可以得到-26dB的Sensitivity dBFS.

從下圖可以看到0dBFS對應的是SPL 120dB,94dB為reference SPL,

EIN (Noise input noise)33dB SPL,這是內部雜訊,表示在沒有聲音的情況下,也會測到的SPL值。
S/N (Signal to noise ratio)為Reference SPL減掉EIN=> 94dB-32dB=61dB。

Dynamic range表示麥克風的動態範圍,用來表示數位麥克風能接受的SPL範圍,
Dynamic range=SNR+sensitivity=62dB+26dB=88dB。
Frequency response以1kHz的輸出為基準,量測在高頻低頻的-3dB點,用來當作數位麥克風的頻寬。
Total Harmonic Distortion (THD)表示總諧波失真,這跟測試的條件有關系,SPL越大,THD就越大。



Power supply rejection ratio(PSRR) 用來表示數位麥克風抗電源雜訊的能力。Power supply rejectjion(PSR)測試,輸入217Hz振幅100mV的方波進到數位麥克風電源VDD,是再量測數位麥克風在20kHz的頻帶內的頻率響應。。而PSRR的測試是輸入100mV的弦波,弦波頻率從100Hz到10kHz,量測VDD在載入各種頻率的弦波下,輸出端對應的頻率點會有多大的輸出

Reference
1. MICROPHONE SPECIFICATIONS EXPLAINED  (InvenSense Inc).

2014年5月26日 星期一

USB Power Delivery for USB Type A/B

新的USB spec-- "USB power delivery" 已經接近產品階段了 ,這個新的spec定義了USB傳輸功率達到100W (20V/5A)。在供電端與受電端要如何達成溝通呢?

The "USB power delivery" is near the production stage, it is defined to achieve 100W (20V/5A). How the
Provider and Consumer proceed communication.

角色Role
USB PD定義了三種port,Source、Sink與Dual-Role port。Source就是Provider作為供電端,Sink是Consumer作為受電端。Dual port又分兩種,一種是P/C,另一種是C/P。P/C代表它是供電端但它可以被切換為受電端。C/P代表他是受電端,但它有能力被切換為供電端。

USB PD defined three kind of port , Source ,Sink and Dual Role port. Source is the Provider and supply power. Sink is Consumer and consume the current.
實體層 Physical  layer
為了要讓Provider與Consumer相互溝通,USB-PD 將兩方溝通的資料,用FSK信號載在VBUS BUS上。所以在USB PD的實體層,我們可以發現在兩端多了zisolation與cAC-Coupling。zisolation是用來濾掉FSK訊號,讓供電端跟受電端的電源不要被FSK信號影響。cAC-Coupling用來濾掉電源,讓兩端的FSK接受器 , 可以單純接受到FSK信號。


應用Application
上圖為USB PD的一個應用範例。AC adaptor供電給Laptop,再做為Laptop做為Provider供電給
Display1,Display1有兩種角色,一端做為Consumer接受Laptop的電,另一端再做為Provider供電給Display2。下面為這些裝置達成USB PD連接的經過。

1.Display1經由USB3 Superspeed port接到Laptop,這時為low power mode,Display1會抽5V/0.15A。

2.Laptop會透過FSK送出它的Source capabilities 5V/2A,12V/3A,20V/3A訊息給Display1。Display1端知道它自已需要20V/1.5A,所以會發訊息給Laptop,Laptop便輸出20V/1.5A。

3.Display2接到Display1 後,由於Display1沒有多餘的供電能力,所以它會跟Laptop要求 20V/1.73A (34.6W),用來提供USB3需求的5V/0.9A(4.5W)。

4. Display1從Laptop得到20V/1.73A後,就會供電給Display3,Display2這時為low power mode,抽5V/150mA的電。Display1會送出它的Source capabilities 5V/0.9A給Display2。

5.由於Display2需要20V/1.5A的電,所以Display2會送出mismatch的訊息給Display1,Display1   在收到mismatch的訊息後,便會發出Get Sink Capabilities的訊息給Display2,Display2會回應它需要20V/1.5A。

6. Display1轉頭跟Laptop要求20V/3A,在Laptop接受後,提供20V/3A給Display1,Display1再將20V/1.5A供給Display2。


Reference
1. USB_PD_R1_0 V1.3_Final Errata - 20140311  (USB.ORG)

2014年5月21日 星期三

Backlight control and PWM

如何用PWM調整背光亮度? 通常由軟體透過PWM duty cycle的設定,來調整背光的亮度。,

PWM Duty cycle
下圖為PWM訊號,Cycle表示周期時間,每個周期都會有一個Pulse時間,Pulse時間除以周期時間的表分比就是duty cycle。

下圖為duty cycle為50%,75%與25%的波形,可以發現duty cycle越大,Pulse佔它的周期時間越長。背光亮度就是透過duty cycle調整,duty cycle越大,高度就越高。


PWM frequency range
除了Duty cycle,也需要確認Backlight controller對於PWM frequency的要求。

LCD power on sequence
在ENABLE PWM訊號給PANEL時,需要先確認Panel SPEC的Power sequence timing。一般來說LCD的Power要先給,再來是Panel LVDS or RGB signal,接下來給Panel Backlight power與Backlight PWM signal,最後才是Backlight Enable。關掉Panel與打開panel的時序 ,順序是相反的。請務必要依照Spec要求的順序與timing,才能確保Panel工作正常。


2014年5月13日 星期二

Charger & battery management

系統是如何知道電池剩餘電量呢?


我們在估算電池剩餘容量時,需要考慮下面幾個參數,電池內阻、溫度、電池老化(充電次數)。不同電池不同的化學成份,這些參數就不一樣。當我們拿到一顆新的電池,我們需要把電池拿去做充放電測試,來得到這些參數。在硬體線路中有個Fuel gauge,就是在處理這些參數,使得電池剩餘電量的估算更為準確。

開路電壓
當電池在做充放電測試時,會去量測電池的開路電壓(OCV)對電荷狀態(State of Charge SOC)曲線(參考下圖)。電池的開路電壓就是在沒有充放電電流時,電池兩端的電壓。電荷狀態(State of Charge SOC),也就是容量百分比。從這個曲線,我們可以知道該電池OCV與SOC的相對關係。在系統在每一次開機前,低電流的情況下,做OCV與溫度檢測更新目前的容量百分比。在系統開機後,無法量測OCV,就只能靠庫倫計數器來更新目前的剩餘容量。


庫倫計數
當系統接上外部電源adaptor後,Charger 充電IC會對電池充電。當外部電源移除,轉而由電池會對系統放供電(放電)。Fuel gauge會從電池的電流路徑去量測充放電電流,由Fuel gauge內含的庫倫計數(Coulomb Counter)來運算充放電電流。從Q=I *t 公式中得知,電流(安培)乘以時間(秒)等於電量(單位是庫倫)。例如充電電流1安培充一個小時為3600庫倫或是1安培小時。

本文提到的方式是Fuel gauge先由OCV估算出SOC,再由庫倫計數,來更新目前的電量。此外TI的Fuel Gauge BQ27520,Maxim的Fuel Gauge Max17047也是結合這兩個方式,但他們各自加上自已專利技術 阻抗跟蹤(TI)、M3 algorithm(Maxim)來增加估算容量精確度。

1.TI "TI电池电量监测基础知识培训"
2.Maxim "MAX17047/MAX17050 ModelGauge m3 Fuel Gauge"





2014年5月7日 星期三

USB OTG & USB BC1.2 detection

USB port需要支援BC1.2與OTG,到底硬體是如何去判斷的呢?

USB port要支援OTG需要有下面條件
需要有ID pin的connector
像是Mini AB or Micro AB. 在USB Cable兩端,一端為HOST,要有提供5V的能力。另一端為Device,需要接收5V來運作。
需要有偵測ID pin的電路或IC
在OTG detection的機制中,ID pin被拉low的為HOST端,ID pin floating的為DEVICE。所以
在硬體線路上,需要有偵測ID pin的電路。USB OTG port在還沒接到其他的裝置時,是不輸出
5V的,當電路偵測到本身USB port的ID pin被拉low,才會把自已當成HOST並輸出5V。


BC1.2 detection 需經過下圖的五個步驟


1. VBUS detection
   在PD內部有個VBUS比較器,VBUS電壓要超過VOTG.SESS.VLD
2. Data contact detect
    在PD端會有電流源IDP_SRC由D+流出,當D+被拉到low,並持續TDCD_DBNC的時間。表示USB data pin已經make contact。 如果沒有被拉到low,表示PD所接到的端子是ACA。
3. Primary detection
     在做Primary detecion,PD會在D+上供電VDP_SRC如果D-上的電壓大於VDAT_REF,則是接到CDP或DCP當D-上的電壓小於VDAT_REF,則判斷為SDP
4. Secondary detection
     在做Secondary detecion, PD會在D-上供電VDM_SRC。當D+>VDAT_REF,便判斷為DCP。當D+小於VDAT_REF,則判斷為CDP
5. ACA detection
        當D+ >VLGC_HI,  VDAT_REF<D-<VLGC, ID pin對地阻抗為RID_A, 則判斷為ACA docking。D-< VDAT_REF判斷為ACA with FS B-device, VLGC <D- 判斷為ACA with LS B-device。

下圖為判斷流程圖



Note:
Charging ports exist: charging downstream ports (CDP), supporting data transfers as well, 
Dedicated charging ports (DCP), without data support. 
Accessory charging adapters (ACA) are introduced. By using an accessory charging adapter, a device providing a single USB port can be attached to both a charger, and another USB device at the same time.

Reference data: 
Battery charging specification Revision 1.2

2014年5月4日 星期日

IRQ & Thermal sensor

當溫度過高或過低,到 SOC收到的IRQ通知,中間經過那些過程呢? 軟體工程師可以讀到系統溫度,但卻不一定知道系統如何得到溫度。硬體工程師接了電路,卻不一定知道軟體如何處理ADC轉換後的資料。
When the system temperature is too high , how the SOC receive and handle the over temperature event?

1.溫度感測:首先需要溫度感測的零件(Temperature sensor),例如NTC。當溫度產生變化時,NTC阻值產生變化(圖一)。We need the temperature sensor component, like the NTC. When the
temperature change ,the NTC resistance is also changed. In the figure as below, the resistance is 10Kohm in the 25degC. When the temperature is rising, the resistance would be dropped.

                                                                             圖一
2.ADC轉換::NTC會跟一個固定阻值的電阻串聯,當NTC隨著溫度改變,分壓值Vadc也跟著改變。Vadc經過ADC,轉換為數位資料 (ADC code)。在ADC的spec可以查到電壓與ADC code的轉換公式,例如ADC code=Vadc* 512.
The NTC resistor will be series with a constant resistor. The divided voltage is input of ADC, ADC convert the voltage to digital data(ADC code). You can find the formula to transfer voltage to ADC code in the ADC spec. 

圖二 

3. 設定溫度保護:如果要做高溫保護,就要定時去讀取ADC code,由ADC code去換算現在的溫度。溫度保護可以分成兩階,當溫度超過第一階保護點,就發出中斷給SOC(圖三)。SOC可由中斷向量表得知是溫度過高事件,通常SOC會降頻作為高溫保護。當溫度超過第二階,就直接關機來做保護。
Setting the temperature protection point. The system need to read ADC code regularly and transfer ADC code to update the present temperature. The temperature protection can be two level, when the temperature cross first level, temperature sensor IC will inform the SOC by interrupt pin, SOC would be downgrade its frequency. When the temperature cross second level, the SOC would go to sleep or shutdown.