Flexis微型控制器內(nèi)部:包括8位及32位
摘要:Freescale公司的Flexis QE128產(chǎn)品家族既有8位也有32位CPU核芯片,8位和32位微控制器具有相同的外設(shè),并且引腳完全兼容。以血壓監(jiān)視器為例,如要從8位產(chǎn)品改進(jìn)為一個(gè)較高級(jí)的產(chǎn)品,不論硬件還是軟件都不需要變更,增加性能只需在現(xiàn)有裝置上添加部件和軟件。
本文引用地址:http://www.ex-cimer.com/article/88163.htm關(guān)鍵詞:Flexis;Freescale;QE128;微控制器;引腳兼容
高性能還是低成本?低功率還是附加功能?當(dāng)設(shè)計(jì)師為他們的最新產(chǎn)品選擇微控制器時(shí),必須權(quán)衡這些選擇。選擇錯(cuò)了或需求發(fā)生了變化,你要么屈就于一個(gè)非最佳解決方案,要么得花費(fèi)額外的時(shí)間和錢來(lái)把軟件和硬件轉(zhuǎn)換到另外一個(gè)核上。如果你能選擇一個(gè)產(chǎn)品家族,使得在低成本方案與高性能方案之間的遷移異常簡(jiǎn)單,只需替換你現(xiàn)有硬件中的MCU并重新編譯你的代碼即可,這樣你就事半功倍了。Freescale半導(dǎo)體正是這樣考慮的,推出了Flexis QE128微控制器系列。
Flexis QE128是一個(gè)微控制器產(chǎn)品家族,有8位也有32位CPU核,性能廣泛,具有較好的成本效益。8位核是Freescale的S08核,是長(zhǎng)期以來(lái)使用的HC05和HC08核的換代升級(jí)產(chǎn)品。32位核是ColdFireV1,屬于Freescale ColdFire家族的一個(gè)新版本。為使裝置移植容易,S08和V1具有相同的外設(shè),并且針對(duì)針兼容。
CPU對(duì)比
S08和V1的 CPU核存在固有差異。讓我們來(lái)檢視這些差異,并討論如何通過(guò)芯片級(jí)設(shè)計(jì)和開(kāi)發(fā)工具使它們最小化。
程序器的模型
首先展示每個(gè)CPU的程序設(shè)計(jì)模型。圖1顯示S08的程序器模型;圖2 是ColdFire V1的程序器模型,上面重疊顯示S08模型,以顯示二者的相似處和不同處。正如你所看到的,V1核的寄存器顯著地大許多,數(shù)量也多。
圖1 S08程序器模型
S08有一個(gè)很小的CPU寄存器,以保持小CPU體積,適用于價(jià)格非常敏感的MCU產(chǎn)品組合的低端MCU上。它有一個(gè)8位累加器、一個(gè)16位變址寄存器(由2個(gè)8位寄存器H和X組成)、一個(gè)16位程序計(jì)數(shù)器(允許最多64千字節(jié)的連續(xù)存儲(chǔ)器映射)、一個(gè)16位棧指針和一個(gè)8位條件碼寄存器(只有6位用于條件式)。
相比之下,V1有一個(gè)大得多的CPU寄存器,以使性能最大化。V1有8個(gè)32位數(shù)據(jù)寄存器,而S08只有一個(gè)8位累加器;8個(gè)32位地址寄存器,而S08只有16位變址寄存器和16位棧指針;一個(gè)32位程序計(jì)數(shù)器,能尋址一個(gè)16兆字節(jié)的存儲(chǔ)器映射。條件碼寄存器實(shí)際上比S08的條件碼寄存器少一位,只有5位,而S08的是6位(中斷屏蔽不包括在V1的CPU內(nèi),此功能集成在中斷控制器內(nèi))。
S08 與 ColdFire V1有哪些兼容性
考察了這兩種裝置的CPU之后,你可能疑惑:“S08 QE128 與 V1 QE128 MCUs怎么會(huì)真正兼容呢?”答案很簡(jiǎn)單,F(xiàn)reescale設(shè)計(jì)CPU核周圍各部分時(shí)都使它們盡可能相同。一個(gè)微控制器的真正實(shí)力是它把多種外設(shè)和存儲(chǔ)器集成到同一個(gè)硅片上作為其CPU。
相同外設(shè)=相同代碼
今天,可以買到用于最小的微控制器核的C編譯器。這些用于各個(gè)核的C編譯器各指令系統(tǒng)之間隱含著諸多不同點(diǎn),允許程序器使用一個(gè)公用語(yǔ)言。我們剛剛討論的S08 與 V1核之間的不同點(diǎn)隱藏在編譯器的內(nèi)部工作中。因此,當(dāng)在這兩種MCU之間切換時(shí),核本身算不上大障礙,但核周圍的所有部件是障礙。外設(shè)的不同促使你必須掌握新模塊并修改代碼,使模塊能擔(dān)任從前MCU所擔(dān)任的同樣任務(wù)。
因此,為使Flexis微控制器家族真正兼容,兩款MCU使用了相同的外設(shè)。從A/D轉(zhuǎn)換器到計(jì)時(shí)器模塊,QE128的S08 和 V1使用了相同外設(shè)的相同版本。因此,當(dāng)UART 使用S08 QE128,被配置為115.2kbps、9 個(gè)數(shù)據(jù)位、2 個(gè)結(jié)束位、偶數(shù)奇偶校驗(yàn),那么,在運(yùn)行V1 QE128上的相同設(shè)置時(shí),根本不必更改代碼。
一個(gè)應(yīng)用實(shí)例:血壓監(jiān)視器
為了演示兩種Flexis QE128的兼容性,我們?cè)O(shè)計(jì)了一個(gè)血壓監(jiān)視器(BPM)的參考設(shè)計(jì),它既可以用S08 QE128也可以用 V1 QE128來(lái)驅(qū)動(dòng)。圖3顯示了該BPM的框圖。這個(gè)參考設(shè)計(jì)有很好的伸縮性,它可以僅采用最少量的硬件來(lái)設(shè)計(jì),只測(cè)量和顯示血壓;或設(shè)計(jì)為帶全部的選擇功能,或設(shè)計(jì)成某中間結(jié)合點(diǎn)。
圖3 血壓監(jiān)視器參考設(shè)計(jì)的框圖
最小功能包括帶濾波器的壓力傳感器、OLED顯示器、使用一個(gè)電場(chǎng)傳感器的小鍵盤接口、用于用戶告警的基本音頻音調(diào)。選項(xiàng)包括USB連通性、ZigBee無(wú)線連通性、上坡血壓測(cè)量、自動(dòng)袖帶充氣、用于存儲(chǔ)多個(gè)用戶測(cè)量歷史值的MRAM存儲(chǔ)器、數(shù)字化語(yǔ)音音頻告警。印制電路板為模塊化設(shè)計(jì),可集成任何功能,若要增加一額外功能,只需在BOM(材料清單)上添加必要元件即可。
為配合硬件的模塊式設(shè)計(jì),軟件也采用同樣設(shè)計(jì)思路,即通過(guò)添加軟件模塊來(lái)增加附加功能。這些附加模塊被寫入,它們或由主程序周期性調(diào)用,或通過(guò)中斷服務(wù)程序調(diào)用,這樣它們很容易被添加,而不會(huì)影響到其它程序。
產(chǎn)品范圍從低成本到高端
通過(guò)此參考設(shè)計(jì),我們不難看出,兩款Flexis QE128 MCU間的兼容性比較令人滿意。一家公司可以生產(chǎn)一系列BPM,從低成本版本開(kāi)始,利用S08 QE128實(shí)現(xiàn)其基本功能??梢蕴砑尤我贿x項(xiàng),S08 QE128仍可以維持運(yùn)行該系統(tǒng)。然而,當(dāng)越來(lái)越多的選項(xiàng)被添加時(shí),S08 CPU將用完帶寬, V1 QE128所具有的更高性能就成為必需。需要從8位切換至32位的那一點(diǎn),取決于使用了附加功能的哪種組合,因?yàn)椴煌δ苄枰煌腃PU馬力數(shù)。
讓我們來(lái)仔細(xì)研究一下BPM的基本功能,就血壓測(cè)量本身來(lái)說(shuō),來(lái)看看兩款Flexis MCU是如何處理它的。測(cè)量血壓最容易的方法是給袖帶過(guò)度充氣,使之超過(guò)收縮壓力讀數(shù),然后當(dāng)袖帶緩緩放氣時(shí),聽(tīng)心跳測(cè)量壓力。這里指的是下坡測(cè)量法。測(cè)量過(guò)血壓的人都知道,袖帶過(guò)度充氣有些不舒服。一些非常敏感的人,尤其是老年人,甚至?xí)?jīng)歷過(guò)由于測(cè)量導(dǎo)致的皮下出血。
一種更舒服的測(cè)量方法是給袖帶充氣,一旦到達(dá)收縮壓時(shí)立即停止,在這期間檢測(cè)收縮壓。當(dāng)袖帶緩緩放氣時(shí),再測(cè)量舒張壓。這個(gè)上坡方法避免了袖帶過(guò)度充氣,使病人感覺(jué)相對(duì)舒適些。然而,在袖帶充氣期間,收縮壓很難測(cè)量,這是由于氣泵產(chǎn)生的噪音,不容易把它與心跳檢測(cè)區(qū)分開(kāi)來(lái)。
兩種方法,兩款MCU,一套硬件和軟件設(shè)計(jì)
對(duì)BPM參考設(shè)計(jì)而言,袖帶的壓力經(jīng)由壓力傳感器被測(cè)量,壓力值由帶12位模數(shù)轉(zhuǎn)換器的MCU讀取。由于作用于每次心跳的袖帶壓力的周期性改變,心跳被檢測(cè)。對(duì)于下坡測(cè)量,袖帶被充氣至一個(gè)預(yù)定壓力,然后當(dāng)袖帶放氣時(shí),通過(guò)讀取壓力值心跳被檢測(cè)。因?yàn)闅獗迷诜艢馄陂g不工作,壓力讀數(shù)的三角區(qū)只與心跳符合,這使得計(jì)算很容易,只需要最小的數(shù)字濾波。在這種情況下,一個(gè)S08 CPU能容易地處理12位模數(shù)轉(zhuǎn)換器的值,尋找符合心跳的三角區(qū),讀出符合收縮壓和舒張壓的壓力讀數(shù)。
對(duì)于上坡測(cè)量,氣泵將對(duì)袖帶壓力改變產(chǎn)生噪音,同時(shí),MCU試圖通過(guò)壓力改變檢測(cè)心跳。通過(guò)為模數(shù)轉(zhuǎn)換器的壓力測(cè)量采用高級(jí)軟件濾波技術(shù),泵噪音被濾波掉,心跳讀數(shù)被隔離開(kāi)。然后收縮壓就能被檢測(cè)到,氣泵關(guān)閉,袖帶放氣,以檢測(cè)舒張壓。 S08 CPU能操作12位的模數(shù)轉(zhuǎn)換器結(jié)果的軟件濾波,實(shí)施上坡測(cè)量,但它需要CPU帶寬的更大部分,只給其它任務(wù)留下很少的帶寬。而V1 CPU,能容易地對(duì)12位數(shù)據(jù)施用軟件濾波器,為其它任務(wù)留下大量帶寬,例如控制氣泵電動(dòng)機(jī),向病人提供數(shù)字語(yǔ)音反饋,在顯示器上實(shí)時(shí)顯示脈率。
Flexis 的優(yōu)勢(shì)
血壓監(jiān)視器的例子顯示了擁有一個(gè)覆蓋很寬成本范圍的微控制器家族的優(yōu)勢(shì),而且在性能方面實(shí)現(xiàn)針和外設(shè)兼容。在這個(gè)例子中,如要改進(jìn)為一個(gè)較高級(jí)的產(chǎn)品,不論硬件還是軟件都不需要變更。增加性能只需在現(xiàn)有裝置上添加部件和軟件。8位與32位CPU的不同點(diǎn)由編譯器來(lái)處理,軟件保持不變,因?yàn)橥庠O(shè)是相同的。
可伸縮產(chǎn)品的概念可被應(yīng)用到范圍廣闊的多種應(yīng)用上:家用和商用安全系統(tǒng)、家庭和工業(yè)自動(dòng)化、玩具、電話等等。如果用戶以成本效益為切入點(diǎn),并且愿意支付附加功能的費(fèi)用,任何此類應(yīng)用都能從這個(gè)可伸縮方法上受益。
評(píng)論