ASIC與ARM的“強手聯(lián)合”
引言
本文引用地址:http://butianyuan.cn/article/149463.htm嵌入式世界的范圍和概念極其廣泛,可以從ASIC到MCU,而ASIC是有著巨大的潛力和創(chuàng)新力的一種技術(shù),盡管它的設(shè)計非常昂貴,并且所需世界要花費數(shù)年,但這依然不影響它的巨大市場潛力。相比而言,單片機方案就便宜得多,時間花費也短,只需幾個月甚至幾周就可以了。但是不論ASIC還是單片機,他們都收到第三方芯片的限制。在最終產(chǎn)品上來說,他們還是有很多相似點和共同點的,都主要使用ARM CPU核,包含標準的通信接口,片內(nèi)整合了大量的模擬功能,支持低功耗工作和快速喚醒。
圖1 嵌入式設(shè)計SoC和MCU對照圖
這個對照圖中間的是可編程平臺,它的設(shè)計不發(fā)生在硅級別,但能從功能上提供巨大的靈活性,可以集成到一個器件上。這種類型最明顯的例子就是FPGA和CPLD,他們功能強大,容量巨大。然而,這些器件并不能稱之為可編程平臺,因為他們都是集中在數(shù)字領(lǐng)域的。
為了在ASIC和MCU之間架起真正的橋梁,那就需要一個可編程平臺,這個平臺能夠提供模擬和數(shù)字功能的靈活性,不需要設(shè)計者是這兩方面的專家就能做好設(shè)計。設(shè)計者想要這樣的平臺,在標準的MCU上加上可編程功能,利用他們現(xiàn)成的工具和系統(tǒng)。那么,理想的系統(tǒng)是這樣的,完全適合一種應(yīng)用,片上提供所有所需的外圍器件和接口,性能表現(xiàn)恰如其分,并沒有不需要的還要付錢的功能。
要實現(xiàn)這樣的靈活性需要一個平臺,這個平臺可以支持在SoC里實現(xiàn)可定制配置的高性能模擬功能和可編程數(shù)字邏輯,而不需要開發(fā)人員成為HDL或模擬設(shè)計的專家。微控制器有一些工具和模擬功能,但缺少配置性。FPGA有可配置的邏輯,也可以提供比較好的軟件,但是他們的缺點仍在于模擬方面和不能真正的低功率運作。
1 ARM是實際應(yīng)用中的嵌入式標準
許多年來,ARM構(gòu)架一直是ASIC設(shè)計事實上的標準,在很多高端嵌入式市場占統(tǒng)治地位,英特爾公司一直致力于個人電腦的使用推廣(沒有反編程克隆的問題)。在幾年前,Cortex M系列處理器核發(fā)布之后,人們很難找到一個沒有ARM核的現(xiàn)代單片機。
這種說法的真實性可以從遍布嵌入式工業(yè)的ARM支持者看出。跟SoC IP供應(yīng)商談及他們的目標新產(chǎn)品使用的第一個總線體系結(jié)構(gòu)時,結(jié)果永遠是ARM的AMBA。和實時操作系統(tǒng)(RTOS)公司(那些還沒有被半導(dǎo)體公司購買)交談時,他們會告訴你,支持ARM是他們新產(chǎn)品的最高優(yōu)先級。
實際上,任何平臺希望在可編程部分尋求成功都必須使用ARM CPU。其結(jié)果是連續(xù)性的。工程師們不害怕變化。但是,他們經(jīng)常因變化而浪費時間。在SoC的設(shè)計中,如果你不提供相同的CPU結(jié)構(gòu),同樣的編譯器,同樣的IDE和調(diào)試器,同樣的實時操作系統(tǒng)和相同的中間軟件包,就想吸引工程師不用他們的傳統(tǒng)的平臺轉(zhuǎn)向新的設(shè)計, 這是非常困難的。簡而言之,軟件規(guī)則就是沒有人愿意離開原來的設(shè)計。除了真正的低端產(chǎn)品,他們能夠在8位設(shè)備上如8051上完成特定的嵌入式功能,任何不是ARM CPU的可編程平臺都很快歸類于少數(shù)領(lǐng)域,成為不占主導(dǎo)地位的架構(gòu)。
2 在可編程器件中添加模擬功能
不斷有可編程器件失敗,當然,是指模擬功能。雖然有很多平臺可以整合重要的模擬功能,如高速通信接口,但真正的難點是要解決整合的傳統(tǒng)片外部件的低級電路問題。畢竟,現(xiàn)在的FPGA的物理層(PHY)的實現(xiàn)是完全把模擬部分的問題和設(shè)計者隔離的,只留標準數(shù)字接口,就像其他的IP模塊。
真正的模擬挑戰(zhàn)是實現(xiàn)通用功能,如模擬數(shù)字和數(shù)字模擬轉(zhuǎn)換器、放大器和電壓比較器。這不僅僅是因為模擬電路是一個棘手的設(shè)計問題,更是因為一些困難被轉(zhuǎn)交給了最終用戶。對于數(shù)字功能,例如,它可以把實現(xiàn)方式融入設(shè)計,路由到適當?shù)腎/O,運行靜態(tài)時序檢查,以及計劃中的所有工作。當然,時序扮演了設(shè)計中的重要角色,但時序問題并不是IP整合的本質(zhì)的問題,而是器件運行時的速度問題,整體設(shè)計的復(fù)雜程度,器件的利用率,以上這些都會影響到路由資源。然而,對于任何模擬設(shè)計,甚至簡單的電路都很難設(shè)計,配置選項、片上路由和外部板設(shè)計,這些都很難做到最優(yōu)。
舉例來說,開關(guān)電容模塊是重要的模擬部件,因為他們可以配置成許多方式,如可編程增益放大器(PGA),跨阻放大器(TIA),模擬過濾器,甚至是混頻器。然而,他們也給設(shè)計者帶來了問題,因為他們的行為依賴于模塊的配置與電容的開關(guān)頻率。把這個功能放到一個芯片里固然很好,但是要從datasheet和一堆配置寄存器里明白如何使它工作就不容易了。
要解決這個問題當然可以通過軟件實現(xiàn)。把高性能模擬功能放到一顆器件里是一個解決方案。但是如果沒有一個開發(fā)工具來揭開配置過程的神秘面紗,那么當最初選定可編程器件后,由于需要快速設(shè)計進入市場,在設(shè)計中很可能要引進很多最開始計劃時沒有的片外器件。
要解決這些模擬問題的方法是一個軟件工具,它通過包括可編程模擬模塊和實現(xiàn)細則的器件提供了模塊和參數(shù),使設(shè)計者不需了解功能如何實現(xiàn)。換句話說,設(shè)計者不需要了解傳統(tǒng)ADC芯片的工作原理,也不需要學(xué)習(xí)該集成器件的寄存器名稱和位域,只需要建立一個ADC就可以了。設(shè)計者不需要陷入計算時鐘頻率和匹配R和C值的困境,只需要根據(jù)其特征,特性(如可分辨率,最大采樣率,工作電壓范圍,等等)配置ADC即可。
一旦設(shè)計里確定了ADC,下一步就是裁剪它適合應(yīng)用的需求。最理想的情況是,這個過程通過設(shè)置參數(shù)實現(xiàn)。如果一個ADC支持一個范圍或固定的設(shè)置值,可以叫輸入范圍(群電壓不會給ADC供電),那么這些選擇應(yīng)該直觀地體現(xiàn)出來,通過一個操作來實現(xiàn)對理想?yún)?shù)值的選擇。
圖2 一些工具,例如賽普拉斯的PSoC Creator可以通過選擇你所需要的功能實現(xiàn)可編程模擬電路設(shè)計,可以無需考慮實現(xiàn)細節(jié) 這種可編程平臺的工具中典型的例子就是賽普拉斯半導(dǎo)體的PSoC Creator。PSoC Creator支持PSoC 3和PSoC 5器件設(shè)計,它提供原理圖設(shè)計接口,用戶可以根據(jù)需要繪制,可以通過用戶參數(shù)編輯器來配置所選器件。在目錄里用戶可以預(yù)創(chuàng)建模擬(和數(shù)字)器件,在那里可以看到工程實例和數(shù)據(jù)手冊,就像是片外的ADC。當在設(shè)計中使用一個器件時, 工具會自動生成API接口,使用者不需要進行寄存器設(shè)置,或者擔心ADC的次序或時序。 3 具備軟件開發(fā)環(huán)境的整合模擬數(shù)字功能的設(shè)計 使用模擬器件原理圖設(shè)計解決可編程模擬問題是很有效的,它并不是整個的解決方案。開發(fā)人員也需要一個工具支持數(shù)字設(shè)計,更重要的是,還要支持應(yīng)用軟件設(shè)計。 在數(shù)字設(shè)計里原理圖設(shè)計絕不是新鮮事物,支持數(shù)字和模擬電路設(shè)計整合成一個單一的器件的平臺越來越受歡迎。然而,使用多個工具來完成一個設(shè)計,這也不能吸引開發(fā)人員。開發(fā)人員更希望在一個編輯器里進行數(shù)字和模擬設(shè)計,用相同的環(huán)境創(chuàng)建,調(diào)試和測試上述設(shè)計。 可編程平臺的供應(yīng)商需要記住,在MCU的世界,設(shè)計者的設(shè)計離不開軟件中心的集成開發(fā)環(huán)境(IDE),需要它進行源碼編輯、項目管理、工具編譯,在一個單一構(gòu)架下一起調(diào)試。在ASIC世界里,對于應(yīng)用開發(fā),他們是相同的,芯片設(shè)計人員和軟件開發(fā)人員很少是一個團隊。兩組中的任何一組都不希望丟棄他們方便的IDE增加新的工具來解決它們之前不關(guān)心的問題。這兩個團隊都需要一個現(xiàn)代的IDE,這個IDE看起來和用起來就像他們以前用過的那樣,甚至需要更引人注目的特點來證明IDE已經(jīng)變化了。 圖3 整合了模擬比較器和數(shù)字計數(shù)器的過電壓定時器電路 我們通過過電壓定時器舉例說明一下這些想法,它使用一個模擬比較器和一個數(shù)字計數(shù)器來監(jiān)控輸入電壓。如果引腳電壓超過參考值,比較器開啟計數(shù)器,一段特定的時間后 (當然,這個時間可以通過設(shè)置一個參數(shù)來實現(xiàn)),在引腳發(fā)出一個錯誤信號并觸發(fā)中斷服務(wù)程序(ISR)。這個簡單的例子很容易地整合了數(shù)字和模擬電路設(shè)計,開發(fā)人員可以從草圖開始設(shè)計,只需考慮MCU的工作,也就是說,連接了引腳,時鐘,參考電壓和中斷,那么就可以設(shè)計很難實現(xiàn)的功能了。 當這個設(shè)計創(chuàng)建后,開發(fā)環(huán)境為器件生成API。這使得開發(fā)人員可以不需了解它的實現(xiàn)方式,直接使用這些器件。例如,開發(fā)人員可以通過API改變計數(shù)器的timeout周期或得到其值,關(guān)閉中斷,關(guān)閉時鐘等等,不需要研究器件的參考手冊或示例代碼。通過從原理圖里建立硬件,可編程器件提供了固定功能芯片所不能比擬的優(yōu)勢,因為工具自動提供了所有的設(shè)置代碼,使接口到所有片上功能的設(shè)計成為一個很簡單的過程。 圖4 PSoC Creator創(chuàng)造者的工作瀏覽器窗口顯示了為比較器,計數(shù)器,時鐘和中斷服務(wù)程序生成的源文件 API的生成其實是把硬件設(shè)置參數(shù)映射到軟件抽象概念的延伸。例如,要建立一個時鐘,開發(fā)人員只需要把它放到設(shè)計里然后設(shè)置所需的頻率。開發(fā)工具會負責如何從片內(nèi)或片外已知的時鐘源獲得在公差范圍內(nèi)的適當?shù)念l率。啟動和關(guān)閉時鐘只需要簡單的調(diào)用API即可,例如ctr_clock_STart()或ctr_clock_Stop()。根本不需要修改寄存器來選擇時鐘源,設(shè)置分頻,選擇它就象是片上功能的輸入一樣,或者可以通過位操作實現(xiàn)開啟/關(guān)閉。 開發(fā)工具可以為系統(tǒng)資源(例如時鐘,中斷,DMA,或引腳)生成API,可以節(jié)省時間,同時,片上模擬、數(shù)字和通信外設(shè)API也使得開發(fā)可編程器件比MCUs 或 ASIC變得更容易。當使用了最流行的嵌入式ARM核后,相對于文章開始所看到的對照圖,集成的原理圖設(shè)計工具比對照圖兩端的設(shè)計表現(xiàn)出強大的優(yōu)勢。隨著可編程芯片越做越好,性能越做越強,ARM核越來越強大,模擬功能越來越強,成本越來越低,這一切似乎越來越清楚地表明,平臺支持的軟件將確定它在市場上是否會成功。日常開發(fā)工具是開啟芯片潛能和擴大設(shè)計范圍的鑰匙,最重要的是,它會贏得嵌入式工程師的喜愛,因為他們一直在做一件事情:找一個更好的方法來解決所有難題。
評論