閃存現(xiàn)在完全支配微控制器(MCU),但隨著處理器已經(jīng)發(fā)展到32位架構(gòu)并且外設(shè)變得更加強(qiáng)大,內(nèi)存考慮變得更加復(fù)雜。很容易忘記奇特外設(shè)中的內(nèi)存,使MCU更像是片上系統(tǒng)(SoC),包括先進(jìn)的電機(jī)控制,圖形用戶界面(GUI)和網(wǎng)絡(luò)。
仍然,F(xiàn)lash和其他內(nèi)存類型的細(xì)節(jié)值得注意,以確保所選MCU具有符合系統(tǒng)需求的內(nèi)存。在MCU中以更高的速度快速增加ARM?Cortex?-M處理器架構(gòu)的使用也可以更加仔細(xì)地檢查內(nèi)存支持。供應(yīng)商采用不同的方法來(lái)處理片上存儲(chǔ)器選項(xiàng),這可能會(huì)使MCU選擇平衡。
如今在大型MCU上可以使用多達(dá)一兆字節(jié)的閃存。隨著MCU發(fā)現(xiàn)新應(yīng)用程序并采用新功能,程序存儲(chǔ),數(shù)據(jù)表和暫存器RAM的比例發(fā)生了變化。高端MCU可能采用高級(jí)語(yǔ)言(HLL)編程,運(yùn)行實(shí)時(shí)操作系統(tǒng)(RTOS),并利用現(xiàn)成的堆棧和軟件包。每個(gè)因素都會(huì)影響內(nèi)存需求和使用。
通常用于MCU的閃存具有訪問(wèn)時(shí)間,可以跟上25到50 MHz的處理器時(shí)鐘。當(dāng)高性能處理器內(nèi)核的時(shí)鐘頻率超過(guò)200 MHz時(shí),填補(bǔ)耗時(shí)耗力的等待狀態(tài)可能存在巨大差距。多個(gè)片上總線和特殊路由機(jī)制對(duì)于緩解某些繁忙微控制器中的流量問(wèn)題非常有用。
ARM處理器內(nèi)核架構(gòu)具有非常好的代碼密度,因?yàn)槠渚o湊的Thumb2?指令只需要16位來(lái)存儲(chǔ)指令而不是預(yù)期的32位。 ARM Cortex-M0,Cortex-M3和Cortex-M4內(nèi)核在眾多廠商的微控制器中很受歡迎,這里將研究一些內(nèi)存選擇。
恩智浦半導(dǎo)體LPC4000 - 實(shí)時(shí)輔助數(shù)據(jù)處理
恩智浦半導(dǎo)體在基于ARM的微控制器方面取得了成功,因?yàn)楹芫靡郧癆RM7TDMI?內(nèi)核適用于MCU。恩智浦在其產(chǎn)品組合上市后迅速將Cortex-M內(nèi)核添加到其產(chǎn)品組合中,并且一直是將Cortex-M3,Cortex-M0和Cortex -M4集成到一端的高速M(fèi)CU的領(lǐng)導(dǎo)者之一,同時(shí)推動(dòng)價(jià)格降低另一個(gè)。恩智浦是第一批進(jìn)入超寬閃存組織以緩沖后續(xù)存儲(chǔ)器位置以確保可用性而無(wú)延遲的公司之一。
恩智浦最新的MCU系列LPC4000(見(jiàn)圖1)引起了人們的興趣,原因有兩個(gè),例如包含Cortex-M4,它具有數(shù)字信號(hào)處理(DSP),單指令多數(shù)據(jù)(SIMD) ,以及可選的浮點(diǎn)指令 - 以及每個(gè)指令上的單獨(dú)Cortex-M0處理器內(nèi)核。為了保持Cortex-M4足夠快,并保持低功耗,恩智浦將片上閃存擴(kuò)展到256位寬,這是業(yè)界最廣泛的。
圖1:恩智浦LPC4000架構(gòu)(恩智浦提供)。
恩智浦使用相當(dāng)簡(jiǎn)單的緩沖系統(tǒng)來(lái)保存32行最近的Flash存儲(chǔ)器訪問(wèn),為最近提取的指令提供即時(shí)可用性。與使用更奇特的方案相比,這提供了更一致的執(zhí)行性能。一些緩存替換算法可以對(duì)編譯器生成的代碼起作用,并且可能更難以模擬和調(diào)試。恩智浦發(fā)現(xiàn),他們的Flash執(zhí)行可以在RAM的5%的性能范圍內(nèi)運(yùn)行,在當(dāng)前的90納米工藝中運(yùn)行高達(dá)150 MHz。
兩個(gè)Flash存儲(chǔ)區(qū)提供隔離和分區(qū),當(dāng)應(yīng)用程序繼續(xù)從另一個(gè)存儲(chǔ)區(qū)運(yùn)行時(shí),重新刷新一個(gè)存儲(chǔ)區(qū)時(shí)也能提供絕對(duì)的信心。
LPC4000具有高達(dá)1 MB的閃存,片上有高達(dá)264 KB的SRAM - 程序與數(shù)據(jù)存儲(chǔ)器的比例為4:1。如果需要,可以直接從大部分RAM執(zhí)行指令,無(wú)需等待狀態(tài) - 這是最快的確定性實(shí)時(shí)處理的理想選擇,無(wú)需擔(dān)心代碼在細(xì)粒度級(jí)別反彈。可以使用各種SRAM模塊,因此不同的例程和輸入/輸出(I/O)不會(huì)爭(zhēng)用總線時(shí)間。
LPC4000易于使用廉價(jià)的外部閃存,用于擴(kuò)展程序空間,代碼將首先復(fù)制到SRAM中以便最快地執(zhí)行,甚至是用于顯示屏的大型圖形圖像。隨時(shí)可用的閃存帶有串行外設(shè)接口(SPI)端口,包括四SPI閃存,實(shí)際上可以直接映射到處理器的正常存儲(chǔ)空間,程序員不必考慮它是片上還是連接串行片外。 SPI閃存接口(SPIFI)為外部閃存提供四個(gè)通道,并允許Flash中的圖像以高達(dá)40 MBps的速度直接DMA到LCD控制器。
Cortex-M0有自己的8 KB程序存儲(chǔ)器,并通過(guò)共享存儲(chǔ)器將消息傳遞給更大的兄弟Cortex-M4。
這一系列的MCU還包括32 KB ROM,其中包含軟件驅(qū)動(dòng)程序,啟動(dòng)代碼和其他一些代碼,以減輕系統(tǒng)設(shè)計(jì)人員編寫(xiě)此代碼的麻煩,并為更多特定于應(yīng)用程序的例程留下更多珍貴的Flash。 ROM執(zhí)行的速度和功率效率自然也比Flash好。某些MCU提供了一個(gè)執(zhí)行可靠的固定時(shí)間DIVIDE操作的庫(kù)。
恩智浦早期版本的ARM Cortex MCU可能采用更大的180 nm或140 nm工藝節(jié)點(diǎn),大多數(shù)采用128位寬閃存,而不是剛剛描述的256位架構(gòu)。所有的閃存都是由恩智浦專門(mén)為MCU開(kāi)發(fā)的,它內(nèi)置單錯(cuò)誤糾正/雙錯(cuò)誤檢測(cè),具有更好的閃存完整性和監(jiān)控功能。恩智浦擁有廣泛的基于ARM的MCU,其中包含Cortex-M0,Cortex-M3和Cortex-M4,最小的只適用于16引腳封裝,售價(jià)僅為8位MCU的預(yù)期。
STMicroelectronics STM32 - 快速,巧妙的存儲(chǔ)器
STMicroelectronics是另一家公司,在將早期的ARM7?和ARM9?內(nèi)核與32位MCU配合使用后,很快就采用了STM32產(chǎn)品線,在微控制器中采用了ARM Cortex-M3。意法半導(dǎo)體最新的STM32F4系列(見(jiàn)圖2)可以在90納米工藝中將Cortex-M4推向168 MHz,同時(shí)在芯片上提供高達(dá)1 MB的閃存和192 KB的RAM。
圖2:STMicroelectronics STM32F4架構(gòu)(由STMicroelectronics提供)。
為了獲得這種性能,意法半導(dǎo)體開(kāi)發(fā)了自適應(yīng)實(shí)時(shí)存儲(chǔ)加速器(ART Accelerator?)。這是一個(gè)類似于微處理器系統(tǒng)的緩存控制器,可根據(jù)從Flash執(zhí)行的程序的需求進(jìn)行定制。 Flash由128位組織,因此單個(gè)讀取包含4個(gè)32位指令,其中Thumb2指令可以是6到8個(gè)實(shí)際指令。
ART加速器使用預(yù)取隊(duì)列和64項(xiàng)分支緩存來(lái)緩解由于分支,子程序調(diào)用甚至可能是系統(tǒng)調(diào)用或中斷而導(dǎo)致的指令流更改延遲。如果重定向的程序計(jì)數(shù)器想要最近獲取的位置,則目標(biāo)可能仍然駐留在分支高速緩存中,在這種情況下,它可以立即加載到預(yù)取隊(duì)列中以便執(zhí)行,從而節(jié)省了周期。片上邏輯的更智能(自適應(yīng))高速緩存管理應(yīng)該比簡(jiǎn)單的方法產(chǎn)生更積極的結(jié)果(更高的比特率)。
為了減輕數(shù)據(jù)訪問(wèn)(例如數(shù)據(jù)查找表或圖像數(shù)據(jù))上的Flash停頓,ART加速器有8個(gè)128位緩沖區(qū)。引用位置對(duì)于數(shù)據(jù)來(lái)說(shuō)相當(dāng)差,但是可以通過(guò)基于對(duì)程序中使用數(shù)據(jù)的詳細(xì)了解巧妙地安排數(shù)據(jù)來(lái)改進(jìn)數(shù)據(jù)。這類似于裝配中的手工編碼。
意法半導(dǎo)體(STMicroelectronics)認(rèn)為,閃存執(zhí)行速度高達(dá)168 MHz,在零等待狀態(tài)存儲(chǔ)器執(zhí)行的2.5%范圍內(nèi)。它將CoreMark?基準(zhǔn)測(cè)試作為其效率和速度的證明,盡管編譯器的有效性和設(shè)置也會(huì)影響這些結(jié)果。首先,168 MHz STM32F4 MCU比這一類中的任何其他MCU快得多地執(zhí)行例程,并顯示出頻率上的線性。其次,“Coremarks/MHz”(每個(gè)時(shí)鐘周期完成的有效工作)是最高的之一。
STM32F4上的實(shí)時(shí)時(shí)鐘模塊包括一個(gè)4 KB電池備份SRAM,用于在極低功耗條件下保存變量和狀態(tài)信息。更為獨(dú)特的是,528字節(jié)的一次性可編程ROM可用于序列號(hào),MAC地址,加密密鑰,校準(zhǔn)設(shè)置以及每個(gè)裝運(yùn)單獨(dú)的其他數(shù)據(jù)的存儲(chǔ)。
STMicroelectronics還采用7級(jí)ARM高速總線(AHB)矩陣,允許在ARM處理器,通用DMA,與USB或網(wǎng)絡(luò)控制器相關(guān)的DMA等主機(jī)之間同時(shí)進(jìn)行數(shù)據(jù)傳輸,以及眾多的從屬設(shè)備。外圍設(shè)備和記憶。
STMicroelectronics擁有眾多ARM Cortex-M0和原始Cortex-M3的MCU配置,從低成本,輕載控制器到具有復(fù)雜外設(shè)的快速時(shí)鐘設(shè)備。他們還有一個(gè)低功率線路。意法半導(dǎo)體聲稱基于Cortex-M的MCU累計(jì)出貨量占市場(chǎng)份額的45%,因此其中許多產(chǎn)品已被使用。
飛思卡爾半導(dǎo)體Kinetis - 靈活的存儲(chǔ)器
飛思卡爾半導(dǎo)體基于ARM處理器的主要微控制器需要一段時(shí)間才能開(kāi)始,盡管它已經(jīng)銷售了基于Power Architecture?及其專有ColdFire?架構(gòu)的32位MCU數(shù)十年。飛思卡爾憑借其增強(qiáng)的功能快速推出ARM Cortex-M4內(nèi)核,相當(dāng)不錯(cuò)地填補(bǔ)了其新的Kinetis?產(chǎn)品系列(參見(jiàn)圖3)。
圖3:飛思卡爾Kinetis架構(gòu)(飛思卡爾提供)。
從小型K10到今天的全口徑K70,片上閃存的容量從32 KB到1 MB,根據(jù)芯片的不同,從32位到128位寬。閃存在90 nm工藝節(jié)點(diǎn)上制造,根據(jù)電壓響應(yīng)約30 ns,但Kinetis MCU運(yùn)行速度高達(dá)100 MHz,速度提高了一倍。飛思卡爾的薄膜存儲(chǔ)(TFS)閃存可以在低至1.71伏的電壓下讀取,擦除和寫(xiě)入,這很不錯(cuò),因?yàn)樗趦蓚€(gè)幾乎耗費(fèi)1.5伏的AA電池的限制范圍內(nèi)(一旦達(dá)到0.9伏特,它們會(huì)迅速降級(jí)) )。
Kinetis MCU有自己的指令和數(shù)據(jù)緩存來(lái)幫助克服Flash讀取延遲,并且它們也可以解決片外存儲(chǔ)器問(wèn)題。這足以使Kinetis MCU看起來(lái)像Kinetis的額定速度一樣高效。內(nèi)存保護(hù)單元可幫助操作系統(tǒng)使一個(gè)任務(wù)的程序無(wú)法進(jìn)入另一個(gè)任務(wù)的內(nèi)存空間。
主閃存補(bǔ)充了飛思卡爾稱之為FlexMemory的東西,F(xiàn)lexMemory是一種特殊的Flash,也可以作為E2PROM運(yùn)行。程序員決定使用多少作為程序Flash,余額用作E2 - 最多16 KB。作為E2運(yùn)行的部分自動(dòng)啟動(dòng)特殊邏輯,執(zhí)行耗損均衡和寫(xiě)入算法,以獲得更多FlexFlash專用的100萬(wàn)次可能達(dá)到1000萬(wàn)次耐久性循環(huán)。
與其他供應(yīng)商的情況一樣,飛思卡爾利用縱橫開(kāi)關(guān)讓總線主控制器同時(shí)訪問(wèn)主閃存,F(xiàn)lexFlash,SRAM和各種外設(shè),以保持?jǐn)?shù)據(jù)的最佳移動(dòng)。
德州儀器Stellaris - 固件包括
Stellaris?微控制器是第一批使用新型ARM Cortex-M3架構(gòu)的產(chǎn)品,它們由領(lǐng)先的合作伙伴L(zhǎng)uminary Micro開(kāi)發(fā),現(xiàn)由德州儀器公司所有。 Stellaris擁有豐富的MCU系列,可滿足從電機(jī)控制到網(wǎng)絡(luò)和用戶界面的各種應(yīng)用需求。
德州儀器(TI)以80 MHz的速度運(yùn)行,具有高達(dá)512 KB的錯(cuò)誤檢查閃存,高達(dá)96 KB的數(shù)據(jù)RAM,有些還有自己的2 KB傳統(tǒng)E2PROM片內(nèi)。 Stellaris的閃存可以執(zhí)行高達(dá)50 MHz的單周期讀取,超過(guò)此速率,預(yù)取緩沖區(qū)的效果通過(guò)讀取每次讀取64位和引入推測(cè)分支來(lái)最小化延遲。
雖然ROM目前在大多數(shù)MCU上似乎已經(jīng)消失,但許多基于Stellaris LM3S和Cortex-M4的LM4F MCU(見(jiàn)圖4)特別使用了緊湊型ROM來(lái)存儲(chǔ)一些基本且經(jīng)常訪問(wèn)的代碼供所有應(yīng)用程序使用。這些驅(qū)動(dòng)程序和例程稱為StellarisWare?,包括外設(shè)驅(qū)動(dòng)程序庫(kù),引導(dǎo)加載程序和向量表,搶占式實(shí)時(shí)調(diào)度程序SafeRTOS?,循環(huán)冗余校驗(yàn)(CRC)錯(cuò)誤檢測(cè)操作以及用于高級(jí)加密的加密表標(biāo)準(zhǔn)(AES)功能。將這些有用的功能和數(shù)據(jù)放入快速,廉價(jià)的ROM(適當(dāng)時(shí))中可以釋放大量的Flash,這些Flash可以更好地用于增強(qiáng)終端設(shè)備的自定義代碼。
圖4:德州儀器Stellaris LM4F架構(gòu)(德州儀器公司提供)。
記住你的應(yīng)用程序 - 內(nèi)存可能會(huì)讓它變得更好
每個(gè)應(yīng)用程序的需求都是不同的,選擇微控制器時(shí)需要考慮很多因素。此處已經(jīng)回顧了許多與各種供應(yīng)商的高端MCU相關(guān)的閃存,SRAM,ROM和專用存儲(chǔ)器功能。雖然沒(méi)有任何一個(gè)部件可能具有適合您應(yīng)用的理想功能,但現(xiàn)在許多存儲(chǔ)器選項(xiàng)應(yīng)該更清晰。
-
微控制器
+關(guān)注
關(guān)注
48文章
7576瀏覽量
151727 -
soc
+關(guān)注
關(guān)注
38文章
4188瀏覽量
218615 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3040瀏覽量
74177
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論