射頻IC應(yīng)用編程接口設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
隨著手機(jī)內(nèi)RF芯片的集成度不斷增加,編程需求也在顯著增加。但另一方面,手機(jī)生命周期在日益縮短。解決復(fù)雜性增加和生命周期縮短之間的矛盾的一個(gè)方法是采用“硬件”應(yīng)用編程接口(API)。本文討論開(kāi)發(fā)API時(shí)應(yīng)遵循的一些規(guī)則以及應(yīng)避免的一些設(shè)計(jì)陷阱。
射頻IC的主要工作是調(diào)制與解調(diào)發(fā)射數(shù)據(jù)并接收想要的信號(hào)。隨著數(shù)字信號(hào)處理技術(shù)的出現(xiàn),越來(lái)越多的射頻IC架構(gòu)把模擬功能和處理信號(hào)所需的數(shù)字信號(hào)處理功能塊整合在一起。但是,蜂窩標(biāo)準(zhǔn)的復(fù)雜性要求作為一個(gè)整體的蜂窩芯片必須具備靈活性,特別是對(duì)射頻IC而言。靈活性即意味著可編程能力。
獨(dú)立射頻IC的輸入構(gòu)造一直是串行外設(shè)接口(SPI)映射。圖(a)通常的SPI映射架構(gòu)。本質(zhì)上,可將該SPI映射方法看作接入射頻IC的一個(gè)“開(kāi)關(guān)”和“旋鈕”陣列,典型情況下有若干個(gè)使能位(開(kāi)關(guān))和工作參數(shù)(旋鈕)。以PLL為例,它一般至少有一個(gè)啟動(dòng)PLL的使能位,還可能有若干確定PLL輸出頻率的調(diào)節(jié)參數(shù)。
當(dāng)控制IC(通常是數(shù)字基帶)開(kāi)始對(duì)PLL進(jìn)行編程時(shí),它必須編寫(xiě)參數(shù)和使能位。在基于SPI映射的接口架構(gòu)中,DBB固件需了解它要編寫(xiě)的每一比特的地址和位置。它還必須了解SPI的構(gòu)造以便能正確計(jì)算所需參數(shù)。有時(shí),這些位彼此間會(huì)有時(shí)序方面的關(guān)聯(lián),為確保計(jì)算結(jié)果正確,必須審慎對(duì)待這種關(guān)聯(lián)。
由于所需編程的比特?cái)?shù)以千計(jì)。在某些場(chǎng)合,射頻IC的不同子系統(tǒng)間存在關(guān)聯(lián),即便技術(shù)文檔寫(xiě)得非常清楚,DBB固件開(kāi)發(fā)團(tuán)隊(duì)也可能無(wú)法很好理解。即使當(dāng)DBB固件開(kāi)發(fā)團(tuán)隊(duì)成功地把一款射頻IC整合進(jìn)芯片組后,DBB固件也就因此與射頻IC的特性有千絲萬(wàn)縷的聯(lián)系。采用防御式和分層級(jí)式編程方法,仍會(huì)存留無(wú)法徹底抹去的痕跡。從商業(yè)角度看,這意味著對(duì)單一軟件構(gòu)造組件通過(guò)另外一個(gè)渠道進(jìn)行外包幾乎行不通,因?yàn)檫@樣做就必須維護(hù)兩個(gè)軟件構(gòu)造。此外,后續(xù)的射頻IC將需要改進(jìn)或升級(jí),這樣寄存器將無(wú)法嚴(yán)格兼容,維護(hù)起來(lái)困難重重。
在軟件領(lǐng)域,解決這些問(wèn)題的傳統(tǒng)方法是抽象(abstraction)。抽象一般意味著對(duì)其它實(shí)體用來(lái)完成任務(wù)的一些算法進(jìn)行收集。高級(jí)別的實(shí)體不關(guān)心低級(jí)別實(shí)體如何完成任務(wù),它只要求一切都在預(yù)期的參數(shù)內(nèi)運(yùn)行。高級(jí)別軟件使用的低級(jí)別程序集被稱為應(yīng)用編程接口(API)。
對(duì)抽象的期望在一定程度上把一個(gè)系統(tǒng)平臺(tái)內(nèi)的分布式IC維系在一起。增加的抽象層使得無(wú)需了解數(shù)字基帶的物理邏輯細(xì)節(jié),取而代之的是簡(jiǎn)單發(fā)布一個(gè)命令——“啟動(dòng)接收器”。這個(gè)命令還采用有更詳細(xì)描述的語(yǔ)句:“啟動(dòng)該通道的接收器,實(shí)施AFC校正,并根據(jù)預(yù)期的信號(hào)水平在天線端設(shè)置增益(如圖(b)所示)”。
圖:(a) SPI映射架構(gòu);(b) IC之間的消息傳遞。
當(dāng)然,通過(guò)API的抽象不會(huì)降低系統(tǒng)團(tuán)隊(duì)需對(duì)相關(guān)部分的參數(shù)和功能運(yùn)作條件進(jìn)行了解的需求。像處理任何復(fù)雜系統(tǒng)一樣,了解各種使用環(huán)境及與最底層設(shè)計(jì)進(jìn)行溝通都很關(guān)鍵。全面理解所需的操作將提供更完善的硬件,并有助于規(guī)避(或最起碼控制)過(guò)度工程化(overengineering)。
一旦理解了相關(guān)的分布式IC使用環(huán)境,就能設(shè)計(jì)出魯棒的API。在軟件中,API由功能組成。對(duì)硬件API而言,類似的意圖可能是通過(guò)接口傳送至射頻IC的命令。可以用一種直接明了的方式,自上而下地處理命令定義和命令參數(shù),這將覆蓋70~80%的所需功能。
射頻IC的任務(wù)是發(fā)射和接收,因此,對(duì)于多模蜂窩收發(fā)器,需要用來(lái)實(shí)現(xiàn)以下任務(wù)的命令:使能和/或去使能GSM接收器;使能和/或去使能GSM發(fā)射器;使能和/或去使能WCDMA接收器;使能和/或去使能WCDMA發(fā)射器。
這樣就可以開(kāi)始搭建API的構(gòu)架。每個(gè)可能的命令都提供高級(jí)別的意圖?,F(xiàn)在,每個(gè)命令都需要某類參數(shù)化處理,以使他們更加有用。每個(gè)命令的一些意圖包括:想要的通道數(shù);現(xiàn)有帶寬(如果無(wú)法從通道數(shù)導(dǎo)出);AFC校正(基于系統(tǒng),如果射頻IC在AFC校正中起作用)。每個(gè)命令將有其特定參數(shù)。一些命令專用參數(shù)可能包括:發(fā)射功率水平、工作時(shí)隙以及功率測(cè)試要去。