iPhone 7 為什麼集成一顆 FPGA 晶元?

最近的拆解報告(Apple iPhone 7 Teardown)顯示 iPhone 7使用了一顆Lattice Semiconductor 的FPGA晶元(ICE5LP4K)。這顆FPGA晶元主要實現的功能可能是什麼呢?


與Lattice曾負責過此款系列晶元的前員工聊了聊,了解了下使用情況,更新一下:

1. 此款晶元價格非常便宜,只有幾美分,不是之前說的幾十美分,可以說相當便宜;功耗也相當低,具體多少要看設計,沒有具體數據。

2. 之前在Samsung手機上用過,這個很多人提過。有一項作用就是針對不同的市場區域定製不同的功能,而PCB板保持同一個版本即可。比如在中國的版本無外露天線、而在韓國的有,在美國地區採用高通CPU,在韓國地區用自家CPU,通過這款FPGA的配置實現功能的差異化,而PCB板單一化不僅減少研發、生產、維護成本,也使產品穩定性大大增強。

3. 主要可當sensor Hub使用,很多感測器如計步器、運動感測器、光線感測器等,只需要FPGA去喚醒與管理它們,比CPU直接管理它們要更省功耗;另外此晶元可直接驅動大電流LED,無需額外buffer,如拍攝LED、背光LED等。

4. 很多客戶直接拿它當ASIC使用,客戶對Lattice提需求實現怎樣的功能,Lattice AE實現後發送給客戶,客戶直接使用即可,無需額外再養一個FPGA team。裡面的編程邏輯也相當簡單,很多介面電路已經固化,直接使用內部wishbone匯流排讀寫寄存器即可配置成相應的功能。

以前的回答還放在下面:

---------------------------------------

大家的疑問是:FPGA價格又貴,功耗又大,為什麼要在出貨量極大的產品上使用而不用ASIC呢?另外是,用它可以做什麼?是臨時方案嗎?

先把這款晶元的規格參數貼上來

該系列晶元的datasheet有興趣從這裡下載:http://www.latticesemi.com/~/media/LatticeSemi/Documents/DataSheets/iCE/iCE40UltraFamilyDataSheet.pdf

iCE40 Ultra family is an ultra-low power FPGA and sensor manager designed for ultra-low power mobile applications, such as smartphones, tablets and hand-held devices. The iCE40 Ultra family includes integrated SPI and I2C blocks to interface with virtually all mobile sensors and application processors. The iCE40 Ultra family also features

two on-chip oscillators, 10 kHz and 48 MHz. The LFOSC (10 kHz) is ideal for low power function in always-on applications, while HFOSC (48 MHz) can be used for awaken activities.

這是款面向移動應用的超低功耗和感測器管理的FPGA,比如行動電話、平板電腦和其它手持設備。集成了兩個SPI和兩個I2C介面,同時自帶兩個片上晶振,用於一直工作的應用,如喚醒活動。

從diagram上來看,這款FPGA提供了SPI和I2C介面,可作為master控制其它感測器及slave被CPU控制;RGB drv可用於控制三色屏幕背光LED,IR drv可用於控制紅外線LED;NVCM是片上非易失性存儲器,可代替部分flash功能;額外的普通可編程PIN腳;內含DSP資源可用於數據處理,以及一些RAM和CLB資源,可用於實現邏輯功能。

再結合iPhone7的使用場景,這款FPGA的用途太多了:

低頻晶振可用於外部環境的檢測,一直都在後台運行,比如按了下電容Home鍵喚醒響應、屏幕變暗了點一下變亮、手機跌落保護、進水檢測告警等。

對多個感測器進行預處理然後再送到CPU,比如FPGA對感測器A、B、C持續采一段時間的數據,三段數據在內部處理好後放在片內RAM里,CPU 10ms來取一次(使用到SPI、I2C、DSP、RAM、CLB等);而換在以前每個感測器數據必須先被CPU讀取由CPU處理。

代替CPU控制震動馬達,檢測到相關行為就直接驅動馬達,無需CPU再給命令,可讓響應更加及時,同時可支持多種震動模式與強度。

直接驅動背光LED和紅外LED,可減少額外buffer使用,同時內部根據感測器數據和應用場景的不同做不同的處理,比如橫屏、在使用中環境光線突然變強需要把屏幕亮度調高,CPU就不用反覆髮指令控制了。

普通IO PIN腳還可以做一些glue logic使用,如lightning介面信號檢測,DSP、CLB與RAM的作用不用多說。

因為iPhone7繼續使用USB2.0和Lightning介面,無法直接連接到電腦USB typeC介面,就算連接到typeC轉USB3.0/2.0上的Hub上,走的仍然是2.0的通道,所以與USB typeC介面沒關係。

此FPGA本身設計就是面向低能耗應用,且面積比較小,功耗不大,而因它存在而CPU減少訪問外部器件的頻率帶來的能耗降低遠遠大於了本身的消耗,所以整體能耗是降低了的。

另外此晶元的市面成本價約為1.2$,Apple大批量採購的話可降得更低,比如50美分以下,對於iPhone的整體成本(有數據說約282$)而言顯得很小。

至於為什麼不用ASIC?並沒少用ASIC啊,一堆WIFI、藍牙、感測器都是ASIC,使用FPGA的作用並不是在功能上替代ASIC,而是給CPU分工作量,它做的事情本來是CPU做的,CPU和FPGA都是可編程的,可以把FPGA看成是CPU的延伸,而不是ASIC的替代品。

當然在該設計相對固定化將之ASIC化也是種方式,就要再評估了,看收益、風險、時間、投入等多種因素,會不會做我們不是Apple,不好說;但對於iPhone7來說,應該不會臨時再換方案了。


不同意加FPGA是為了修bug的說法,理由:

1. fix bug默認都是ECO解決(晶元內部有大量冗餘邏輯門用來修bug,叫eco),如果連ECO都沒法解決的問題,像蘋果這種不差錢的公司直接再tapeout一次,等到下一個minor版本再解決就好了(實際上後面幾次tapeout在第一次tapeout之前就已經schedule了)。這樣的minor版本在一款大型SoC開發過程中會有很多(比如V1.1,V1.2)間隔是很快的,一個月一版都很正常。比加一個FPGA要省力省時間(訂購這麼多FPGA要提前很長時間啊),風險也小,成本更是低太多。一顆SoC從tapeout到上市最少最少要10個月以上時間,經曆數次版本更迭(不要低估一顆SoC bringup的複雜度),不差這一個月。

2. 蘋果在供應鏈上策略比較保守,畢竟量太大了。所以經常會看到蘋果里的晶元都不一定是各個公司最新的晶元(比如高通的modem從來都用前代的)。也就是說這些晶元出問題的風險是較小的。那麼出問題的如果是晶元之間的bridge,不會輪到需要FPGA來修。

3. 如果是A10晶元自己出問題,更不可能用FPGA來修。僅從時鐘頻率來說,FPGA就不可能跑的快,和高度優化過timing的ASIC比時鐘頻率差距非常大,如果用FPGA來修復這部分功能還要跨時域,A10的這部分功能會嚴重降頻,這對性能影響很大。如果數據/控制信號出來接一個慢得多的FPGA,加上這轉接過程中的驚人的latency,是任何一個工程師無法忍受的,要知道我們都是為了每一個時鐘周期在奮鬥啊。

再說說我的想法:

從這個FPGA的規模來看確實很小,感覺規模和一個很小的resource manager,或者是很小的AOP(always on processor)相當(這兩者在業界SoC里用的非常多,比如AOP用作識別語音喚醒cpu),功能有可能也是類似的(畢竟就這麼少的邏輯)。結合FPGA對感測器的支持很好這點,個人猜測可能功能是類似sensor fusion的東西,收集各個感測器的數據(比如audio)預處理一下再決定是否傳達給cpu以達到節能的目的,這樣cpu避免每時每刻收集到一點感測器數據就高速運行了,相當於一個gate keeper。

總之無論是什麼功能,有可能是這樣的晶元市場上還沒有廠商提供成熟的解決方案,甚至對應的協議可能都不成熟/沒有統一,或者只是剛剛量產出來,所以先用FPGA快速做了一個這樣功能的晶元,否則趕不上上市。畢竟12個月一個周期真的壓力挺大的。

PS:開了下腦洞,如果真是因為bug加了個這麼高成本的東西(就算只是兩個月的臨時方案,也是價值至少幾千萬刀了),一千萬刀可以養一個很大的team了,起碼50個人吧。想像一下出這個問題的team的命運。。。在灣區的飯後應該會有很多談資了。。。

利益相關,在A10的最大競爭對手處搬磚(還是蠻希望A10出大bug的,雖然不可能了,蘋果人手充足,兵強馬壯,實力真的太強了)


不同意「chadwick bi」的說法,我更傾向於「楓北居士」的看法,這顆FPGA應該是用來實現一些業內暫時還沒有成熟解決方案的feature。至於為什麼用FPGA而不是開發一顆專用晶元,我覺得有可能是這個feature還需要更多的實際應用後才能決定細節設計,所以用FPGA便於開發過程中修改而不是採用Asic。

為什麼我覺得這顆FPGA不是為了修bug而存在呢?就我的認知而言,如果要在主板上增加一塊FPGA(注意是增加,原先設計沒有這塊FPGA),所需要的時間(重新設計schematic,重新layout,擠出空間給這塊FPGA,有可能所有的兼容性測試都要重做,EMC也沒準會受影響)不見得比tapout一版新silicon少。如果是台式機主板空間大後期加一塊片子問題還不大,iphone這麼小的主板,placement基本上很早就定型了,後期大改動(加一塊片子屬於超級大改動,不是重新lay幾根線這麼簡單)的可能性非常小,牽涉到的東西太多了,甚至塞得下塞不下都是問題。尤其iphone出貨量這麼大,主板設計稍有不慎,量產起來就會給你顏色看。我在我以前這個問題(最難調試修復的 bug 是怎樣的? - 知乎用戶的回答)回答里提到過,有的保守客戶甚至在研發中後期連0歐姆電阻都不敢拿掉,怕的就是一個小改動會帶來百萬級量產時候的無法預知的問題。

真正原因,應該只有蘋果內部的人才知道了,我也只是做出一點猜想。


過段應該會有人發反向報告,看看這個fpga上都連了些什麼東西。

但這個fpga太小,真要代表什麼趨勢也不盡然。

對於國內幾家小的fpga公司來說,也許是個福音。


http://www.latticesemi.com/iCE40Ultra

從Lattice官網可以看到,這顆FPGA只有3000個LUT,10KB-RAM,管腳更是少得可憐。大家都知道FPGA不應該用於量產品,尤其是iphone這種每月上千萬的爆款,那麼蘋果在幹什麼?

這類事我恰恰以前常干,而且用的恰恰就是Lattice,因為他家FPGA最小最便宜。這裡有兩種可能:

1,量產前發現的一處小bug,修改晶元會影響上市時間,所以緊急在PCB上加一塊FPGA。如果bug太大,那FPGA也修不回來。估計2個月後晶元的修復版就到位了,屆時可能就看不到這顆FPGA了。

2,臨時要求增加一個feature以應對供應鏈上的變化,比如接納了額外的零件供貨商或者採用更新/更便宜的零件。但是晶元設計已經完成,只能通過FPGA來轉接;或者介面方案暫時還無法確定,沒法集成到SOC里。不同的iphone會有不同的零件供貨商,所以這顆FPGA不會一直在那兒,而且最多也就呆2個月,原因同上。當然最終也有可能放棄集成,改FPGA為獨立ASIC,就像早期的Sensor Hub。

——————————————————————

補充

很多人覺得為了修改bug而臨時在PCB上增加FPGA,同樣是大改動大風險。但很多時候,發現bug就要考慮2種風險:1,修錯了;2,修對了但引入了新的bug。

無論是需求變更還是bug修復,這個改動會給iPhone7帶來巨大的不確定性,所以蘋果採用2步走的策略,同時開發SOC和FPGA,這樣把風險降到最低。第一批量產就取決於哪個方案更穩定可靠,但最終的量產還是需要兼顧成本和穩定性的。

至於某些認為蘋果絕不會有硬體bug的情懷黨們,想想死亡之握吧。


兩個字: SENSOR HUB


這個fpga設計出來就是用作消費電子的。

lattice寫好一個邏輯,和器件捆綁銷售,一般是sensor hub。由於該器件介面特殊,用作電平轉換和膠水特別合適,因此在有sensor的場合特別合適,價格又夠低,批量估計30美分,也沒有誰還會去開發asic替代他。你可以把它看作是個asic

lattice還有一些資源稍多,速度稍快的小型fpga也是如此,配合一些sensor,結合isp形成安防常規解決方案滿街賣。

lattice的fpga戰略即是如此,收購這家公司也是為了擁有超低功耗技術以便進入移動視頻市場

至於寸土寸金的板卡上,增加面積和功耗為一個bug,如果是電路bug,反正都重新投版了,不順帶改好?如果是晶元bug,那流片前那麼多次的模擬都是搞笑的, 大幾千萬美元的投入這麼兒戲? 一個手機的系統設計還不如深圳的三流小公司?

另外,蘋果這樣的出貨量一定會選擇成熟的方案,就算我們認為不成熟,實際上,在蘋果那裡已經成熟了,不然那麼大的出貨量,售後就賠死了,看看note 7

實際上,這顆晶元業界這麼用已經很久了,早就是標配了


感謝各位的激烈的批評,關於這顆FPGA的價格,初步測算了一下,成本確實可以低於30美分,之前沒有想到能夠這麼低。

計算過程寫下:

晶元的成本主要:包括 研發成本一次性費用(主要是Mask費用)、耗材(主要是wafer)成本和封測成本

晶元的邊際成本(每多生產一片給總成本帶來的增量)主要取決於耗材和封測的成本。

耗材部分(主要以wafer的價格來計算):

- 40nm 12 inch的wafer價格大約$2000左右 (製程數據來源:latticesemi.com 的頁面)

- 2mm×2mm的封裝,保守估計die的面積也以2mm×2mm來計算

- 12 inch的wafer上可以割出大約15000顆die (計算器:Die Per Wafer (free) Calculator)

每顆die的成本是 $2000/15000 ~= 13.3 美分

封測成本

2mm×2mm的此類封裝成本大約每顆 10~15美分左右

所以,假設耗材和封測佔總邊際成本的90%,綜合算下來每顆的邊際成本大約是25.9~31.4美分(邊際成本接近為0)

~~~~~~~ 原答案如下 ~~~~~~~~

我很實事求是的說,30美分能買個FPGA? @Evan172@林名

要是這樣,不考慮功耗的情景誰還考慮MCU啊!

答主們實現了我們多年來的夢想啊!

ICE5LP4K這個型號

Digi-Key的價格:

Mouser的價格


我覺得有可能是膠水邏輯 mcu/soc/sensor互聯用的吧?

這麼少資源的fpga我覺得也只能做些這種事。


根據iCE40 Ultra系列FPGA的晶元手冊,這是「一款超低功耗的FPGA,是為包括智能手機、平板電腦和手持設備等超低功耗移動應用而設計的感測器管理單元。」


這原來是 silicon blue 的器件,後來 SB 被 lattice 收購了。典型的低功耗小規模器件,估計就是做 sensor 的介面轉換吧,那麼小的玩意兒也幹不了啥。


還有一個不太可能是修bug的原因。蘋果手機的硬體基本在手機發布前一年就必須基本到位。


iPhone7採用FPGA意味著什麼?

應該是低功耗的原因。

深度解讀:iPhone7採用FPGA意味著什麼?


沒仔細研究,如果沒有意外的話,FPGA應該是來處理感測器或輔助ISP做處理的。主要目的是為了提高效率,及在某些場景下省電。


這款FPGA是Lattice出的,但其實是被收購的另一家公司SiliconBlue的產品,主打低成本低功耗,幾年前在平板里就用得很廣了,所以沒什麼好奇怪的。

這顆晶元實在太便宜了,以蘋果那麼大量也才幾千萬刀的單子,實在算不上對FPGA行業的利好。對FPGA工程師來說也算不上利好,這點邏輯根本產生不了幾個就業崗位。


應該是做某個集合的預處理,未來iPhone要做跌落切換姿勢抗跌,這個方向還沒有哪家有具體解決方案吧,fpga來做各種意想不到的情況,方便調試和更新啊。話說蘋果更新包能更新fpga的固件么?


  1. Home鍵的馬達驅動,cpu驅動反射弧太長,用戶體驗不好,fpga驅動則幾乎按下同時觸發馬達。

  2. Lightning介面插入的是數據線還是耳機的羅輯判斷,然後fpga內部進行介面的轉換。(pretty sure, 因為介面轉換的硬體設計沒有比使用FPGA還乾淨並且方便的了,膠合邏輯是FPGA的主要功能之一)。

判斷錯誤,搜索了一下,發現lightning介面耳機和lightning轉3.5數據線都有DAC晶元,那麼就不需要進行介面轉換。


FPGA能做的ASIC都能做,而且量大了更便宜功耗更低。FPGA唯一的市場是那些量不大對功耗成本不太敏感的,還有就是硬體功能會變化的,AISC不靈活,如果硬體功能一但定死基本都會上ASIC,特別蘋果這種不差錢的。

做sensor hub的話,如果senor個數介面種類都確定的話,也就是需求很明確的情況下,做一顆ASIC應該功耗更低更省錢。FPGA再怎麼樣還是冗餘了。項目中期發生了設計一開始沒想到的事情,為了不影響上市時間我覺得更合理。都是不負責猜測。


感測器協處理,介面轉換或擴展,或者實時性要求較高的應用預處理,大概就這些。lattice肯定給了個超低價格,方便又便宜,何樂而不為。手機迭代太快,lattice也許找對了方向也說不定啊,感覺要火


感覺還是說修復BUG的比較靠譜。

另外高票的那兩個不靠譜啊。

有什麼方式能比用SOC 更省電,更便宜,更節省空間(這個最重要)?即使那一片FPGA再便宜,再省電,再小。

說什麼都是徒勞的,就看半年後產的IPHONE7 還帶不帶那塊「膏藥」就知道了。


推薦閱讀:

開發一個晶元架構有多難?
既然華為的SoC是Arm公版設計,那所謂的自主研發體現在哪裡?
設計一款顯卡要做哪些事情?
龍芯真的不如移動晶元嗎?美國禁止向中國超算提供英特爾晶元後影響會多大?
在晶元設計中,為什麼有的晶元需要多個pll的ip?一般一個pll不就夠了嗎?

TAG:iPhone | 手機 | 現場可編輯邏輯門陣列FPGA | 晶元集成電路 |