Cortex-M1:面向FPGA的解決方案
FPGA" title="FPGA">FPGA" title="FPGA">FPGA作為靈活且具成本效益的平臺(tái),越來(lái)越多地用于實(shí)現(xiàn)高性能嵌入系統(tǒng)的快速設(shè)計(jì)。這兩種趨勢(shì)相結(jié)合,正在推動(dòng)市場(chǎng)對(duì)使用可編程邏輯實(shí)現(xiàn)32位處理器的需求。
市場(chǎng)所需的是針對(duì)FPGA優(yōu)化且符合業(yè)界標(biāo)準(zhǔn)的32位處理器構(gòu)架體系。直到最近,大多數(shù)處理器知識(shí)產(chǎn)權(quán)(IP)一直是針對(duì)ASIC使用而開(kāi)發(fā)。因此,在FPGA的粗顆粒構(gòu)架上實(shí)現(xiàn)時(shí),處理器往往較大且速度較慢。雖然,市場(chǎng)上也有一些可在FPGA上實(shí)現(xiàn)的專(zhuān)用軟IP處理器核,但它們?cè)陂_(kāi)發(fā)工具、技術(shù)支持資源及設(shè)計(jì)人員經(jīng)驗(yàn)方面都存在局限。
為了應(yīng)對(duì)這一市場(chǎng)需求,Actel和ARM公司推出了專(zhuān)為在FPGA上實(shí)現(xiàn)而設(shè)計(jì)的32位ARM處理器核Cortex-M1,可在Actel非易失性ProASIC3 FPGA和Fusion可編程系統(tǒng)芯片(PSC)上使用。用戶(hù)無(wú)需與Actel簽約,也無(wú)需授權(quán)費(fèi)用和權(quán)益金,從而將ARM體系擴(kuò)展到小批量應(yīng)用領(lǐng)域。對(duì)于那些擴(kuò)大至超大產(chǎn)量規(guī)模的設(shè)計(jì),32位Cortex-M1處理器核可執(zhí)行業(yè)界標(biāo)準(zhǔn)的Thumb指令集,并向上兼容Cortex-M3處理
器,因而可輕易轉(zhuǎn)向ASIC設(shè)計(jì)。由于符合業(yè)界標(biāo)準(zhǔn),Cortex-M1處理器核也能重復(fù)利用現(xiàn)有的開(kāi)發(fā)工具、代碼和知識(shí),有助于節(jié)省成本、降低開(kāi)發(fā)風(fēng)險(xiǎn)及加快產(chǎn)品面市。
在FPGA上實(shí)現(xiàn)業(yè)界標(biāo)準(zhǔn)構(gòu)架
專(zhuān)有構(gòu)架所面臨的困難是如何提高其在目標(biāo)應(yīng)用中的效率,以及如何解決支持工具受限的問(wèn)題。而且,經(jīng)驗(yàn)豐富的設(shè)計(jì)人員都知道,需要花費(fèi)時(shí)間學(xué)習(xí),并積累經(jīng)驗(yàn),才能掌控新產(chǎn)品的特性。不幸的是,這些困難與日益縮短的開(kāi)發(fā)周期及越來(lái)越大的設(shè)計(jì)風(fēng)險(xiǎn)形成直接的沖突。由于這些原因,設(shè)計(jì)人員總是趨向于重復(fù)使用他們所熟悉,或之前使用過(guò)的產(chǎn)品。
當(dāng)然,較之于專(zhuān)有構(gòu)架,業(yè)界標(biāo)準(zhǔn)的架構(gòu)給用戶(hù)帶來(lái)的優(yōu)勢(shì)多得多。ARM和Actel基于Cortex構(gòu)架,合作開(kāi)發(fā)針對(duì)FPGA而優(yōu)化的處理器核。這種定制化的設(shè)計(jì)使該處理器核的性能和效率提高,邏輯單元占用量減小。
Cortex-M1特點(diǎn)
Cortex-M1處理器核基于ARM的3級(jí)Cortex-M3流水線技術(shù),具有高可配置性,在速度和內(nèi)存占用上取得了很好的平衡,非常適合嵌入式應(yīng)用。在最小配置情況下,僅比Actel的Core8051核(標(biāo)準(zhǔn)16位控制器)大一點(diǎn),不超過(guò)5%。Cortex-M1在Actel ProASIC3和Fusion中的工作頻率超過(guò)70MHz。該處理器運(yùn)行新的Thumb-2指令集的一個(gè)子集,支持緊耦合內(nèi)存(TCM),并采用精細(xì)的低后滯中斷控制器,因而可提高嵌入式系統(tǒng)的性能和能力。
改進(jìn)的代碼密度能提高性能和能效
Thumb-2技術(shù)基于成功的Thumb技術(shù)。Thumb是針對(duì)ARM微處理器設(shè)計(jì)的高代碼密度指令集,能夠提高用于低成本、高性能系統(tǒng)的ARM微處理器核的能力。
就優(yōu)化代碼性能而言,Thumb-2技術(shù)較之于現(xiàn)有的高密度代碼,內(nèi)存占用減少了31%,從而降低了系統(tǒng)成本,同時(shí)性能提升高達(dá)38%,因而能夠延長(zhǎng)產(chǎn)品的電池壽命或豐富產(chǎn)品的功能。
Cortex-M1基于Cortex-M3流水線技術(shù),并執(zhí)行ARMv6-M指令集,亦即Thumb-2(ARMv7)指令集的一個(gè)全子集。Thumb-2指令集也用于Cortex系列的其它處理器核。Cortex系列向上兼容針對(duì)其傳統(tǒng)處理器核(ARM7、ARM9和ARM11)編寫(xiě)的Thumb代碼,現(xiàn)有的Thumb代碼可直接在包括Cortex-M1的Cortex系列處理器上運(yùn)行。
較之于以前的ARM指令集體系,Thumb-2的優(yōu)勢(shì)之一是16位和32位指令都以相同的模式執(zhí)行。在過(guò)去的ARM體系中,Thumb指令主要用于子程序中,這些子程序帶有用于實(shí)現(xiàn)中斷服務(wù)的32位ARM指令。這種方式常常在中斷請(qǐng)求接收時(shí)和中斷服務(wù)啟動(dòng)時(shí)之間造成較長(zhǎng)的延遲。在Thumb-2體系中,ARM將16位和32位運(yùn)作模式合并,因此處理中斷時(shí)就不必從16位模式切換到32位模式。Thumb-2能夠自由混合16位和32位指令,可大大地簡(jiǎn)化編程任務(wù),無(wú)需設(shè)定代碼的順序構(gòu)造,即可實(shí)現(xiàn)代碼最小化和處理能力最大化。此外,Thumb-2指令的性能更高,這是因?yàn)樵O(shè)計(jì)人員能優(yōu)化地混合指令,無(wú)需將它們按16位和32位分組。
內(nèi)存存取速度更快性能更高
Cortex-M1具有來(lái)自AMBA外設(shè)總線接口的單獨(dú)內(nèi)存接口。這類(lèi)似于高性能的ARM9體系,但不同于ARM7,后者采用的是組合的內(nèi)存和外設(shè)總線。Cortex-M1的這個(gè)單獨(dú)內(nèi)存實(shí)際上是兩個(gè)接口,即為訪問(wèn)指令緊耦合內(nèi)存(ITCM)和數(shù)據(jù)緊耦合內(nèi)存(DTCM)(見(jiàn)圖1)提供了單獨(dú)的通道。因此,處理器性能大大提升,因?yàn)樘幚砥髂茉诿總€(gè)時(shí)鐘周期內(nèi)從ITCM提取一條指令,且決不會(huì)因數(shù)據(jù)內(nèi)存訪問(wèn)操作或讀寫(xiě) AMBA上的外設(shè)而停頓。ITCM和DTCM的大小都可由用戶(hù)定制,容量可從0kB增加到1MB。
高效的中斷操作縮短后滯
Cortex-M1具有可配置的嵌套向量中斷控制器(NVIC),有利于實(shí)現(xiàn)低后滯中斷處理和異常處理,同時(shí)還簡(jiǎn)化了編程(見(jiàn)圖1)。NVIC支持中斷優(yōu)先級(jí)重新定義,并與處理器核緊密耦合,因而能減少中斷后滯,從而高效地處理隨后到達(dá)的中斷。Cortex-M1中的NVIC還允許用戶(hù)單獨(dú)決定中斷優(yōu)先級(jí),并支持4個(gè)中斷優(yōu)先級(jí)別。例如,可設(shè)置關(guān)鍵事件首先處理,并可中斷一個(gè)正在執(zhí)行的優(yōu)先級(jí)較低的中斷服務(wù),即設(shè)計(jì)人員可在自己的應(yīng)用內(nèi)部構(gòu)造事件處理流程。
簡(jiǎn)化的編程模型使代碼編寫(xiě)更方便
Cortex-M1執(zhí)行Thumb-2指令集的一個(gè)子集,有兩種工作模式。對(duì)于正常處理,Cortex-M1進(jìn)入線程模式(通過(guò)復(fù)位進(jìn)入或異常處理后返回);出現(xiàn)異常后則進(jìn)入中斷處理模式。該處理器適用于那些不再需要其它工作模式的嵌入式系統(tǒng)。由于編程模型僅限于針對(duì)少量的工作模式,處理器的邏輯單元占用量顯著減小,因而降低了成本。
這種處理器所采用的構(gòu)架使設(shè)計(jì)人員能通過(guò)處理器核最大限度地控制數(shù)據(jù)和處
理流程,只要權(quán)衡得當(dāng),保持處理器盡可能小。這樣就可簡(jiǎn)化編程,尤其是在多個(gè)工程師參與開(kāi)發(fā)軟件和硬件的情況下。為簡(jiǎn)化編程,使線程模式和中斷處理模式間的過(guò)渡盡可能平滑,該處理器采用了兩個(gè)堆棧。復(fù)位后,所有代碼都使用主堆棧。異常中斷處理程序可改變線程模式所使用的堆棧,即在線程模式退出時(shí),通過(guò)改變它所使用的EXC_RETURN值將堆棧從主堆棧變?yōu)樘幚矶褩!6挟惓L幚沓绦蚶^續(xù)使用主堆棧。堆棧指針(R13)是一個(gè)分組寄存器,負(fù)責(zé)實(shí)現(xiàn)主堆棧和處理堆棧間的切換。
熟悉ARM7和ARM9的人會(huì)注意到,Cortex-M1寄存器文件作用類(lèi)似于維護(hù)Thumb指令兼容性。不過(guò),Cortex-M1寄存器要簡(jiǎn)單些,用較少的FPGA系統(tǒng)門(mén)就可實(shí)現(xiàn)。為進(jìn)一步簡(jiǎn)化編程,該處理器還定義了一個(gè)內(nèi)存映像,而處理器核能訪問(wèn)該內(nèi)存映像的所有區(qū)域,包括所有數(shù)據(jù)類(lèi)型的數(shù)據(jù)區(qū)域。
具有M1功能的FPGA
采用FPGA就可在幾個(gè)小時(shí)內(nèi)實(shí)現(xiàn)設(shè)計(jì),并在應(yīng)用中運(yùn)行起來(lái),而采用ASIC就需要好幾個(gè)月,而且還會(huì)有龐大的非經(jīng)常性工程費(fèi)用。
ARM和Actel在開(kāi)發(fā)Cortex-M1時(shí)就使處理器具有很高的可配置性,允許用戶(hù)針對(duì)應(yīng)用的特定需求量身定制處理器。緊耦合內(nèi)存的大小、多路復(fù)用器的大小和速度、外部中斷的個(gè)數(shù)、為實(shí)現(xiàn)向下兼容所采用的字節(jié)排序方式,以及是否納入調(diào)試電路和OS擴(kuò)展集等,均可由用戶(hù)選擇。這樣,設(shè)計(jì)人員在編譯時(shí)就可控制,從而選出最能滿(mǎn)足應(yīng)用要求的最小處理器配置。不僅如此,由于Cortex-M1是在FPGA器件上實(shí)現(xiàn),設(shè)計(jì)人員能快速配置處理器核,將配置好的處理器核編寫(xiě)入具M(jìn)1功能的Flash器件中,并在最終應(yīng)用中進(jìn)行驗(yàn)證。如果需要修改,可在幾分鐘內(nèi)完成修改并重新編程寫(xiě)入器件中。這樣,工程師就可在幾個(gè)小時(shí)內(nèi)多次修改和測(cè)試其設(shè)計(jì),從而找出產(chǎn)品的最優(yōu)實(shí)現(xiàn)方案。
在具M(jìn)1功能的Actel FPGA上,可無(wú)縫使用Cortex-M1處理器核。具有60萬(wàn)個(gè)系統(tǒng)門(mén)的M1AFS600 Fusion PSC集成了一個(gè)12位ADC、40個(gè)模擬輸出、8Mbit Flash內(nèi)存,以及FPGA架構(gòu)。Cortex-M1核僅用4300個(gè)邏輯單元就能實(shí)現(xiàn),還不到M1AFS600 Fusion PSC中FPGA容量的30%。
M1A3P1000有144kbit SRAM和300個(gè)數(shù)字I/O,Cortex-M1處理器核僅用4300個(gè)tile就能實(shí)現(xiàn)。
Cortex-M1開(kāi)發(fā)工具
為支持在Actel FPGA中實(shí)現(xiàn)的ARM處理器,需要工具開(kāi)發(fā)和調(diào)試在該處理器上運(yùn)行的程序,也需要工具開(kāi)發(fā)和調(diào)試編寫(xiě)在FPGA中的邏輯電路。采用ARM處理器的一個(gè)主要優(yōu)點(diǎn)是這種處理器擁有龐大的工具和設(shè)計(jì)支持生態(tài)系統(tǒng),以及大量現(xiàn)成的嵌入式軟件程序(見(jiàn)圖2)。這個(gè)生態(tài)系統(tǒng)包含了Actel的IP核開(kāi)發(fā)平臺(tái)CoreConsole IDP、Libero IDE開(kāi)發(fā)環(huán)境、SoftConsole程序開(kāi)發(fā)環(huán)境,以及完備的板級(jí)開(kāi)發(fā)和調(diào)試環(huán)境。ARM也將在其RealView開(kāi)發(fā)套件和RealView微控制器開(kāi)發(fā)套件(MDK)中為Cortex-M1提供支持。
除了ARM和Actel的開(kāi)發(fā)工具外,Aldec、CriticalBlue、CodeSourcery、IAR、ImpulseC和Mentor Graphic等第三方廠商的開(kāi)發(fā)工具也會(huì)為Cortex-M1提供支持。
結(jié)論
隨著嵌入式應(yīng)用轉(zhuǎn)向可編程邏輯技術(shù),由ASIC向FPGA的轉(zhuǎn)變正在推動(dòng)人們使用在FPGA中實(shí)現(xiàn)的32位處理器。Cortex-M1處理器采用了均衡的三級(jí)流水線技術(shù),精細(xì)的中斷控制器和緊耦合內(nèi)存, 能最大限度地提升嵌入式系統(tǒng)的性能,并同時(shí)減小處理器的大小和實(shí)現(xiàn)成本。由于該方案基于符合業(yè)界標(biāo)準(zhǔn)的構(gòu)架體系,因此用戶(hù)能夠充分利用大量現(xiàn)成的代碼、廣泛的知識(shí)和技術(shù)支持以及龐大的開(kāi)發(fā)工具系統(tǒng)。