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