如今微控制器需要執(zhí)行廣大范圍的任務,包括管理實時控制算法、解碼高速通信協(xié)定,以及處理高頻傳感器發(fā)出的信號。微控制器是將微型計算機的主要部分集成在一個芯片上的單芯片微型計算機。微控制器誕生于20世紀70年代中期,經(jīng)過20多年的發(fā)展,其成本越來越低,而性能越來越強大,這使其應用已經(jīng)無處不在,遍及各個領域。例如電機控制、條碼閱讀器/掃描器、消費類電子、游戲設備、電話、HVAC、樓宇安全與門禁控制、工業(yè)控制與自動化和白色家電(洗衣機、微波爐)等。微控制器(Microcontroller Unit,即MCU)可從不同方面進行分類:根據(jù)數(shù)據(jù)總線寬度可分為8位、16位和32位機;根據(jù)存儲器結構可分為Harvard結構和Von Neumann結構;根據(jù)內嵌程序存儲器的類別可分為OTP、掩膜、EPROM/EEPROM和閃存Flash;根據(jù)指令結構又可分為CISC(Complex Instruction Set Computer)和RISC(Reduced Instruction Set Computer)微控制器。
微控制器要想處理實時I/O和外設的高數(shù)據(jù)速率和頻率,便必須擁有更高的處理效率。但這個效率不能通過提高時鐘頻率來獲得,而是要通過微控制器架構的內部改進來實現(xiàn)。
卸載CPU任務還有很多方法
集成式協(xié)處理器在嵌入式微控制器中已獲得相當廣泛的應用,其中比較常見的協(xié)處理器是加密和TCP/IP卸載引擎。協(xié)處理器可高效卸載整個任務,或幫助執(zhí)行復雜算法中的密集計算部分。例如,一個加密引擎可以把CPU上的AES計算任務從每次運算數(shù)千個周期縮減為數(shù)百個周期,而一個TCP/IP卸載引擎可以極小的CPU運行支出來終止一個以太網(wǎng)連。
DMA控制器通過執(zhí)行數(shù)據(jù)訪問(如在后臺執(zhí)行外設寄存器到內部或外部SRAM的數(shù)據(jù)訪問),從CPU卸載數(shù)據(jù)移動管理任務。DMA(Direct Memory Access,直接內存存取) 是所有現(xiàn)代電腦的重要特色,他允許不同速度的硬件裝置來溝通,而不需要依于 CPU 的大量 中斷 負載。否則,CPU 需要從 來源 把每一片段的資料復制到 暫存器,然后把他們再次寫回到新的地方。在這個時間中,CPU 對于其他的工作來說就無法使用。 DMA 傳輸將數(shù)據(jù)從一個地址空間復制到另外一個地址空間。當 CPU 初始化這個傳輸動作,傳輸動作本身是由 DMA 控制器 來實行和完成。典型的例子就是移動一個外部內存的區(qū)塊到芯片內部更快的內存區(qū)。像是這樣的操作并沒有讓處理器工作拖延,反而可以被重新排程去處理其他的工作。DMA 傳輸對于高效能 嵌入式系統(tǒng) 算法和網(wǎng)絡是很重要的。在實現(xiàn)DMA傳輸時,是由DMA控制器直接掌管總線,因此,存在著一個總線控制權轉移問題。即DMA傳輸前,CPU要把總線控制權交給DMA控制器,而在結束DMA傳輸后,DMA控制器應立即把總線控制權再交回給CPU。另外,DMA控制器還能夠承擔通信外設管理的大部分工作(見表1)。
表1 DMA控制器能夠承擔通信外設管理的大部分工作
利用DMA控制器所節(jié)省的周期數(shù)可以十分可觀:許多嵌入式開發(fā)人員都已發(fā)現(xiàn)自己無法以有限的微控制器資源來滿足應用的需求,直到認識了DMA,才突然明白原來還有大量額外的周期可用,數(shù)目有時甚至多達整個系統(tǒng)的30%到50%左右。
熟知事件系統(tǒng)(event system)的開發(fā)人員就更少了。事件系統(tǒng)與DMA制器協(xié)同工作,可進一步減少CPU周期的負擔,并降低總體功耗。事件系統(tǒng)是一條總線,能夠將從微控制器上的一個外設發(fā)出的內部信號連接到另一個外設。當有事件在外設上發(fā)生時,它就可以在一個雙周期的延時內觸發(fā)其它外設采取行動。
更確切地說,事件系統(tǒng)利用一個連接了CPU、數(shù)據(jù)總線和DMA控制器的專用網(wǎng)絡在整個微控制器上進行信號路由(見圖1)。在正常情況下,外設必須中斷CPU來激活某個行動,包括讀取外設本身。而事件系統(tǒng)通過直接在外設之間發(fā)送相關事件,便可有效地使CPU擺脫這些中斷所帶來的負擔。CPU是一臺計算機的運算核心和控制核心。CPU、內部存儲器和輸入/輸出設備是電子計算機三大核心部件。電腦中所有操作都由CPU負責讀取指令,對指令譯碼并執(zhí)行指令的核心部件。其功能主要是解釋計算機指令以及處理計算機軟件中的數(shù)據(jù)。所謂的計算機的可編程性主要是指對CPU的編程。 CPU由運算器、控制器和寄存器及實現(xiàn)它們之間聯(lián)系的數(shù)據(jù)、控制及狀態(tài)的總線構成。差不多所有的CPU的運作原理可分為四個階段:提取(Fetch)、解碼(Decode)、執(zhí)行(Execute)和寫回(Writeback)。
圖1 一個事件系統(tǒng)
靈活的卸載
DMA和事件系統(tǒng)配合工作,就可讓開發(fā)人員卸載整個任務,這與協(xié)處理器的作用很類似,但兩者間的關鍵區(qū)別是協(xié)處理器不是可編程的。協(xié)處理器采用硬件來執(zhí)行一個已詳細定義的任務,有時甚至是可配置的;而DMA控制器配合事件系統(tǒng)的可編程性使其適用于從最簡單的到極復雜的各類任務。在采用DMA和事件系統(tǒng)的情況下,DMA負責管理整個微處理器架構上的數(shù)據(jù)傳輸;至于事件系統(tǒng)則控制這些低延時、高精度傳輸發(fā)生的時間。
圖2所示為事件系統(tǒng)與DMA共同工作的原理模塊示意圖。ADC連接一個傳感器,并會采集信號樣本。內部計數(shù)器被設置為與采樣頻率相匹配,用以提供規(guī)律且精確的時間間隔。事件系統(tǒng)可以直接激活ADC的采樣,而無需中斷CPU,使采樣頻率比利用微控制器的時鐘更為精確。
圖2 DMA控制器配合事件系統(tǒng)
事件管理可擴展為包含多個事件、連接多個外設的更復雜的配置。例如一個輸入信號(事件1)可觸發(fā)ADC采樣(事件2),并把數(shù)值存儲到DMA中(事件3),直到DMA緩沖器溢滿(事件4)。
DMA控制器和事件系統(tǒng)還支持多通道,使開發(fā)人員能夠配置一個與主CPU并行工作的互連結構,因此,可采用一種固定性方式來對多個并行實時任務進行協(xié)調。
固定性和延時
固定性在限制延時和管理實時嵌入式系統(tǒng)的響應性方面扮演著關鍵的角色。系統(tǒng)的固定性越高,它的響應性也就越穩(wěn)定。影響固定性的主要因素在于系統(tǒng)必須同時處理的中斷的數(shù)目。[!--empirenews.page--]
假設一個系統(tǒng)只有一個中斷,并在50個周期內完成。這樣一個中斷的延時相應地在50個周期左右。要注意的是,即使最簡單的中斷,微控制器也需要約50個周期的時間來保存有限寄存器數(shù)目的環(huán)境信息,而且還需訪問外設、保存數(shù)據(jù)、存儲環(huán)境信息及清除管線。
然而,在固定性和延時方面,開發(fā)人員遇到的大多數(shù)問題并非處理單個中斷這么簡單,而是當眾多中斷同時發(fā)生時,應如何在即時滿足所有要求。
當更多的中斷出現(xiàn)時,優(yōu)先權較低之中斷的延時隨固定性的下降而增加。一個50周期的任務可能多次被中斷,并最終需要數(shù)百乃至數(shù)千個周期來完成。
固定性直接影響到響應性、可靠性和精度。當開發(fā)人員確切知道延時是50或500個周期,便可以在處理時可將之考慮在內。不過,如果延時介于50到500個周期之間,即便是最優(yōu)秀的開發(fā)人員,所能做的也不過是假設一個典型延時(如200個周期)數(shù)值,然后把所有的偏離視為誤差。
通過DMA控制器和事件系統(tǒng)來減少同時發(fā)生的中斷(即便是低頻中斷),可以大大提高系統(tǒng)的固定性并減小延時,而更高的固定性還有助于精度等其它重要因素的提升。
如何獲得更高的精度
下面以一個電源管理任務在驅動電機等大負載時實現(xiàn)交流電源效率的最大化為例,來說明固定性如何影響精度。因為大部分可用能量都在電壓處于峰值并與電流同相時供應,所以這時系統(tǒng)的電流消耗量應該最大。反之,電壓越接近零(即過零點),可用電能就越少,而效率也越低。
比較器一般用于過零檢測,當電壓下降至設定閾值以下或上升至閾值以上時,比較器便會接通。對兩個或多個數(shù)據(jù)項進行比較,以確定它們是否相等,或確定它們之間的大小關系及排列順序稱為比較。 能夠實現(xiàn)這種比較功能的電路或裝置稱為比較器。 比較器是將一個模擬電壓信號與一個基準電壓相比較的電路。比較器的兩路輸 入為模擬信號,輸出則為二進制信號,當輸入電壓的差值增大或減小時,其輸出保持恒定。因此,也可以將其當作一個1位模/數(shù)轉換器(ADC)。運算放大器在不加負反饋時從原理上講可以用作比較器,但由于運算放大器的開環(huán)增益非常高,它只能處理輸入差分電壓非常小的信號。而且,一般情況下,運算放大器的延遲時間較長,無法滿足實際需求。比較器經(jīng)過調節(jié)可以提供極小的時間延遲,但其頻響特性會受到一定限制。為避免輸出振蕩,許多比較器還帶有內部滯回電路。比較器的閾值是固定的,有的只有一個閾值,有的具有兩個閾值。相對于使用比較器觸發(fā)中斷并驅使CPU開關電容的情況,事件系統(tǒng)可以把比較器事件直接發(fā)送到定時器/計數(shù)器輸出,無需CPU干預即可控制開關。
低優(yōu)先權任務(如PFC)的中斷延時可能需要數(shù)千個周期,而具體延時取決于有多少個優(yōu)先權更高的中斷同時發(fā)生。延時較大意味著電容會晚于最佳時刻開關,這會顯著降低總體效率。
當把上面的數(shù)字跟微控制器的時鐘頻率一同考慮時,便會發(fā)現(xiàn)如果微控制器的時鐘頻率為32MHz,一個雙周期延時所引入的誤差其實微不足道(2/32M);而數(shù)千個周期的延時則可能大大影響高頻任務(它們本身也需要每隔數(shù)千周期才會被處理)的精度。值得注意的是,若中斷是由優(yōu)先權較高的任務發(fā)出的,該延時可能降至50個周期左右。
更高的精度在產(chǎn)生信號時也起著關鍵的作用,這里所指的并非單純的信號采樣。以創(chuàng)建100kHz波形為例,利用中斷,波形的精度將受相對于信號速率的可變延時的影響,并根據(jù)任務切換和已堆積的其它中斷數(shù)量而變得稍慢或稍快。注意,當波形平均而言準確時,在許多情況下,影響只來自是兩個連續(xù)樣本之間的相對差異。
高頻信號處理
在大量嵌入式應用中,信號產(chǎn)生成為了一個越來越普遍的任務。信號用于產(chǎn)生聲音、管理電壓轉換調節(jié)器、控制工業(yè)應用中的致動器,以及實現(xiàn)無數(shù)其它功能。
對于發(fā)生頻率較高的事件而言,CPU負荷是一大考慮因素。以一個流量計多軸定位系統(tǒng)或一個擁有每秒采集200萬個樣本采樣速度的快速精確測量能力的儀表系統(tǒng)為例,單是采集樣本,每秒便消耗了數(shù)十到數(shù)億個周期。而若采用一個事件系統(tǒng)和DMA控制器,所有這些周期都可從CPU卸載,而且這些樣本還會被實際處理,而不是簡單地緩存。即使只是一個僅需要50個周期來完成、需要任務切換支出的簡單任務,也能夠從CPU卸載一億個周期。
對于頻率較高的任務,事件系統(tǒng)和DMA控制器還能夠實現(xiàn)以下事項:
精確的時間戳((time-stamping):為采樣加上時間戳讓開發(fā)人員能夠使信號更好地與外部事件同步。在雙周期延時的情況下,時間戳遠比標注中斷更精確,并可省去后者達數(shù)千個周期的延時。
過度采樣:提高傳感器分辨率的其中一個方法是過度采樣。譬如,把計數(shù)器除以16,可以使采樣樣本數(shù)目增加到16倍,從而提高傳感器的總體精度。由于CPU沒有直接參與樣本的采集和存儲,故有可能出現(xiàn)過度采樣,而無太多懲罰。
動態(tài)頻率:某些應用只在某些時間或特定工作條件下才需要較高的感測精度。例如,水表在水流速度快速變化時,采樣頻率會較高;而在流量被切斷或流速穩(wěn)定時,又回復正常頻率。
降低堆棧大?。簻p少并行中斷數(shù)目的另一個好處是能夠維持較小的堆棧。由于每一個中斷都必須通過在堆棧中增加數(shù)十個寄存器來執(zhí)行環(huán)境信息保存,因此消除了好幾個環(huán)境保存層,顯著減低所需堆棧的大小,這將讓應用能夠使用更少的RAM存儲器。
抗擴展能力:鑒于不同微控制器支持的外設數(shù)目不同,同一應用的中斷數(shù)目可能隨產(chǎn)品價格而各有不同。即便使用同一個微控制器系列,支持更多功能的較高端系統(tǒng)會有更多的中斷,降低了總體固定性。因此,把設計移植到集成度更高的微控制器,可能會影響信號延時乃至采樣和輸出的精度。
實現(xiàn)簡易軟件改變:由于事件處理減少了CPU干預,所以系統(tǒng)可在不會影響實時響應的情況下實現(xiàn)軟件改變。即便需要更多的CPU時間來處理額外的功能,事件處理和響應時間也將完全相同。
自主控制
一個嵌入式微控制器可能要執(zhí)行無數(shù)個任務來降低功耗、提高精度以及改善用戶體驗,而許多這類任務只不過是監(jiān)控或是檢測單個數(shù)值。例如電池監(jiān)控器進行監(jiān)測,直至電壓降至某個數(shù)值以下。然后,系統(tǒng)就觸發(fā)關斷操作,在仍有足夠電量時保存應用數(shù)據(jù)。
提升用戶體驗常常是許多消費類產(chǎn)品的主要賣點。例如,事件系統(tǒng)能夠加快系統(tǒng)對喚醒按鍵或外設輸入的響應速度,在兩個周期內就可以做出反應。如果與采用中斷的響應性比較,由于中斷需要系統(tǒng)返回到工作模式,因此就降低了能效。[!--empirenews.page--]
若利用中斷,對于CPU處理能力而言,執(zhí)行這類任務的成本太高,而且會增加延時,降低固定性。而采用事件系統(tǒng)和DMA控制器,開發(fā)人員就能夠避免CPU執(zhí)行這些功能。這不僅可減少系統(tǒng)必須管理的中斷數(shù)量,而且還能簡化任務的實現(xiàn)和管理。
例如,在一個在特殊工作條件下向用戶發(fā)出警示信息的應用中,預先設置的聲音文件可以存儲在緩存中,再利用DMA通過適當?shù)耐庠O饋入到揚聲器,而利用定時器,事件系統(tǒng)就可以確保44,056KHz的準確數(shù)據(jù)率。此外還有一個額外的好處,因為頻率準確且穩(wěn)定,聲音保真度也得以提高。從性能角度來看,只要配置了DMA和事件系統(tǒng)。
說這些任務變得更“自由”可能顯得有點夸張。不過,以這種方式執(zhí)行這些任務,的確使其能夠適用于更寬范圍的應用。協(xié)處理器、DMA控制器和事件系統(tǒng)的結合能夠釋放控制器,讓它只進行信號處理,而不必把大部分資源消耗在信號的周期密集型采集工作上。這樣一來,就可以利用單個控制器管理多個高頻任務。這也簡化了系統(tǒng)設計,使用戶能夠以更低的成本在單個微控制器上執(zhí)行更多任務,更容易實現(xiàn)多個信號之間的互連性,并提高能效。
對許多應用來說,能否支持多個任務可成為一項重要的產(chǎn)品差異化指標。例如,采用了DMA控制器和事件系統(tǒng)的電機控制應用,就能夠使微控制器釋放出足夠的資源,使開發(fā)人員能夠以在不增加系統(tǒng)材料成本的條件下實現(xiàn)PFC等先進功能。
除了通過卸載中斷來提高微控制器的性能和能力之外,事件系統(tǒng)還能夠把功耗最低降至1/7(具體數(shù)字取決于應用)。表2所示為一個需要每秒120萬周期的應用的功率相關數(shù)據(jù)。在12MHz時,微控制器只有10%的時間在工作模式下,其余時間都處于待機模式。執(zhí)行DMA控制器和事件系統(tǒng)可以卸載大量CPU每秒必須執(zhí)行的周期數(shù),使微控制器進入閑置或睡眠模式。
表2 一個需要每秒120萬周期的應用的功率相關數(shù)據(jù)
總結
架構方面的改進提高了CPU的總體能力,使得嵌入式微控制器系統(tǒng)性能不斷提升。協(xié)處理器能夠從CPU卸載已詳細定義的計算密集型任務,DMA控制器可把整個系統(tǒng)的數(shù)據(jù)移動任務從CPU中解放出來,而事件系統(tǒng)可解決有關多個由頻率觸發(fā)中斷的瓶頸問題。通過減少系統(tǒng)必須處理的并行中斷的數(shù)目,開發(fā)人員能夠提高系統(tǒng)固定性,從而降低延時,提高信號的分辨率和精度,改善穩(wěn)定性和可預測性,并增強系統(tǒng)可靠性。