Leon2微處理器IP核原理及應(yīng)用
2.2 AMBA
本文引用地址:http://2s4d.com/article/273879.htmAMBA(Advanced Microntroller Bus Architecture)規(guī)范,是一種已制定的、開放的規(guī)范,充當(dāng)著SoC設(shè)計(jì)的架構(gòu),正迅速成為SoC和IP庫開發(fā)事實(shí)上的標(biāo)準(zhǔn),為高性能嵌入式微控制器設(shè)計(jì)定義了一種片上通信標(biāo)準(zhǔn).AMBA規(guī)范中定義了三種不同的總線,即AHB、ASB和APBAHB是為高性能、高時(shí)鐘頻率的系統(tǒng)模塊提供的,擔(dān)任著高性能系統(tǒng)的背板總線、支持多處理器、片上各種存儲器和片外外部存儲器接口連接到低功耗輔助宏單元。ASB也是為高性能系統(tǒng)模塊提供,當(dāng)AHB的高性能特點(diǎn)無需要時(shí),就可以用ASB來代替;它也支持多處理器、片上各種存儲器和片外外部存儲器接口連接到低功耗輔助宏單元。APB是為低功耗的外圍設(shè)備提供的,它優(yōu)化到為最小功耗和減小接口的復(fù)雜性來支持輔助功能。
圖3是AMBA總線微控制器的典型結(jié)構(gòu)。它含有一套高性能的背板總線,AHB或ASB;它能支撐外部存儲器帶寬,在這套總線掛接著CPU、片上存儲器和其他DMA設(shè)備。通過一個(gè)橋接器,可以把AHB和APB總線連接起來。APB上面連接著大多數(shù)的輔助設(shè)備,如UART、定時(shí)器、PIO等。
2.3 容錯(cuò)問題
為了適用于航空航天的高可靠性應(yīng)用,Leon2采用多層次的容錯(cuò)策略;奇偶校驗(yàn)、TMR(三模冗余)寄存器、片上EDAC(檢錯(cuò)和糾錯(cuò))、流水線重啟、強(qiáng)迫Cache不命中等.盡管現(xiàn)在幾乎所有CPU都有一些常規(guī)的容錯(cuò)措施,如奇偶校驗(yàn)、流水線重啟等,像IBM S/390 G5還采用了寫階段以前的全部流水線復(fù)制技術(shù).IntelItanium采用的混合ECC和校驗(yàn)編碼等技術(shù);但遠(yuǎn)沒有Leon2那樣,采用如此全面的容錯(cuò)措施。
Leon2將時(shí)序(存儲)單元的狀態(tài)翻轉(zhuǎn)作為數(shù)字容錯(cuò)的主要內(nèi)容,根據(jù)時(shí)序邏輯的不同特點(diǎn)和性質(zhì),采用了不同的容錯(cuò)技術(shù)和手段.
?、貱ache的容錯(cuò)。大的Cache對高性能CPU來說是至關(guān)重要的,而且位于處理器的關(guān)鍵(時(shí)間)通路上。為了減少復(fù)雜性和時(shí)間開銷,錯(cuò)誤檢測的方法采用2位的奇偶校驗(yàn)位,l位用作奇校驗(yàn),l位偶校驗(yàn),因此可以檢查所有的錯(cuò)誤情況,在讀Cache的同時(shí)進(jìn)行校驗(yàn)。當(dāng)校驗(yàn)出錯(cuò)誤,強(qiáng)制Cache丟失,并從外部存儲去獲取數(shù)據(jù)。
?、谔幚砥骷拇嫫魑募腻e(cuò)誤保護(hù)。寄存器文件是處理器內(nèi)部的寄存器堆,內(nèi)部的寄存器對于指令的運(yùn)行速度和用戶程序設(shè)計(jì)的靈活程度都是很重要的。內(nèi)部寄存器的使用頻率很大,其狀態(tài)的正確性是也很關(guān)鍵。Leon2采用1、2奇偶校驗(yàn)位和(32.7)BCH校驗(yàn)和進(jìn)行容錯(cuò)。
③觸發(fā)器的錯(cuò)誤保護(hù)。處理器的2500個(gè)觸發(fā)器均采用三模冗余的方式進(jìn)行容錯(cuò),通過表決器來決出正確的輸出。
④外部存儲器的錯(cuò)誤保護(hù)。采用掛上的EDAC單元實(shí)現(xiàn)。EDAC:采用標(biāo)準(zhǔn)的(32.7)BCH碼,每32位字可糾正1位錯(cuò)誤和檢測2位錯(cuò)誤。
?、葜鳈z測模式。是指兩個(gè)相同的處理器同時(shí)并行執(zhí)行相同的指令,只讓其中的主模式處理器輸出結(jié)果,不讓檢測模式的處理器輸出結(jié)果。在內(nèi)部,將檢測模式處理器的輸出同主模式處理器輸出進(jìn)行比較,以檢查錯(cuò)誤是否存在。這種工作模式,可以應(yīng)用于要求更高可靠性的情況。
?、拊谲浖?,還要考慮Cache的清洗問題。因?yàn)樯厦娼榻B的五種方法,只有在對相應(yīng)的單元進(jìn)行訪問時(shí)才進(jìn)行錯(cuò)誤檢查。如果存儲單元的數(shù)據(jù)不常使用,這些單元的錯(cuò)誤會逐漸增加,因此必須使用一些軟件的方法來實(shí)現(xiàn)。
2.4 編碼風(fēng)格
Leon2的VHDL編碼風(fēng)格,同傳統(tǒng)以并發(fā)執(zhí)行的并發(fā)進(jìn)程(或并發(fā)語句)作為模塊、所謂的“數(shù)據(jù)流”編碼風(fēng)格不一樣,采用的是“二進(jìn)程”的設(shè)計(jì)方法。這種編碼風(fēng)格克服了“數(shù)據(jù)流”編碼方式的可讀性差、抽象級低、仿真時(shí)間長等缺點(diǎn)。“二進(jìn)程”編碼風(fēng)格的具體措施是:①所有的端口和信號聲明采用記錄的形式進(jìn)行說明,如按輸入輸出分類進(jìn)行記錄說明;②每個(gè)實(shí)體只有兩個(gè)進(jìn)程,一個(gè)組合進(jìn)程和一個(gè)時(shí)序進(jìn)程;③在組合進(jìn)程中全部采用變量(而不是信號),以使用結(jié)構(gòu)化的順序編碼方式;④在時(shí)序進(jìn)程中通過時(shí)鐘同步,進(jìn)行狀態(tài)的轉(zhuǎn)換。
“二進(jìn)程”的編碼風(fēng)格的模型可用圖4來表示。它基本與狀態(tài)機(jī)模型一樣,只是組合進(jìn)程部分,采用變量形式進(jìn)行結(jié)構(gòu)化順序編碼,來完成下一個(gè)時(shí)鐘周期的輸出和下一個(gè)狀態(tài)進(jìn)行計(jì)算。時(shí)序進(jìn)程部分是在時(shí)鐘的作用下,完成狀態(tài)轉(zhuǎn)換和輸出驅(qū)動(dòng)。
3 軟硬件開發(fā)
3.1 VHDL
Leon2除了VHDL源代碼外,還提供了頂層Makefile文件、Modelsim仿真器支持文件、Boot-monitor文件、VHDL測試文件、綜合支持文件、Leon2調(diào)試用的C語言源文件等,便于對Leon2進(jìn)行硬件和軟件方面的測試。
Leon2的內(nèi)部結(jié)構(gòu)可以通過模塊配置,使處理器具有不同的功能結(jié)構(gòu)。配置的方式可以采用tkconfig腳本進(jìn)行圖形界面的方式進(jìn)行,也可以直接對包文件device.vhd進(jìn)行手動(dòng)編輯來完成。配置主要是通過修改一系列的常數(shù)的聲明值來實(shí)現(xiàn)的。Leon2中許多模塊功能是可以進(jìn)行配置的,這些配置信息是在包文件Target.vhd里進(jìn)行聲明的。
Leon2可配置的內(nèi)容包括:①所采用的綜合工具和目標(biāo)庫。綜合的技術(shù)可以是:Synplify、Synopsys-DC、Synopsys-FC2、XST和Leonardo等,目標(biāo)技術(shù)可以是Xilinx的Virtex和Virtex II(FPGA)、Atmel的ATC35和ACT25(0.35/0.25μm CMOS)、TSMC 0.25μm CMOS、UMC 0.25/0.18μm CMOS、以及Actel的ProAsie(FPGA)和Axeellerator(反熔絲FPGA)等。②整數(shù)單元IU的寄存器窗口、乘法器、除法器、快速跳轉(zhuǎn)和觀察點(diǎn)的配置。寄存器窗口可以設(shè)置為2~32個(gè),但為了同交叉編譯器LECCS兼容必須配置為8個(gè)窗口,乘法器可以配置成迭交、16×16加流水寄存器、16×16、32×8.32×16、32×32等形式。③浮點(diǎn)處理單元FPU的配置,可以配置為使用meiko或是lth兩種浮點(diǎn)處理器之一。④Cache。Cache組的有效大小可以配置為1~64 KB,但必須是2的次冪,每行可以設(shè)置成4~8個(gè)字,組的數(shù)量可以是1~4。替換算法可以是隨機(jī)、LRR或LRU,并且指令Cache和數(shù)據(jù)Cache是獨(dú)立進(jìn)行配置的。⑤存儲器控制器。⑥D(zhuǎn)ebug配置。⑦片上外設(shè)的配置,如中斷控制器、看門狗等。⑧引導(dǎo)配置。⑨AMHB總線的相關(guān)配置。⑩PCI配置。
Leon2有四個(gè)可綜合的頂層文件;
◇leon.vhd一一標(biāo)準(zhǔn)的Leon2頂層;
◇leon_pci.vhd一一標(biāo)準(zhǔn)的Leon2加上PCI接口構(gòu)成的頂層;
◇leon_eth.vhd一一標(biāo)準(zhǔn)的Leon2加上一個(gè)10/100 Mbps以太網(wǎng)MAC構(gòu)成的頂層;
◇leon_etn_pci.vhd一一標(biāo)準(zhǔn)的Leon2加上一個(gè)10/100 Mbps以太網(wǎng)MAC以及PCI接口構(gòu)成的頂層。
在上述四個(gè)頂層的下面,可以很容易地集成用戶自己的功能模塊。
3.2 系統(tǒng)軟件開發(fā)
同一般的嵌入式系統(tǒng)的軟件開發(fā)一樣,Leon2應(yīng)用系統(tǒng)的軟件開發(fā)需要采用交叉編譯環(huán)境來進(jìn)行。Leon2應(yīng)用系統(tǒng)軟件開發(fā)主要采用LECCS(Leon/ERC32 GUN交叉編譯系統(tǒng))。LECCS是由Cynus、OAR和Gaisler研究公司開發(fā)的多平臺開發(fā)系統(tǒng),是基于GNU系列的可以自由獲取的、并帶有一系列附加“點(diǎn)”工具的開發(fā)系統(tǒng)。LECCS可以在Linux(-2.2.x或更高)、Solaris(-2.7或更高)和windows(Cygwin-1.1.7更高)等多種平臺上運(yùn)行。要在Windows平臺上運(yùn)行LECCS,必須安裝Cygwin。它一個(gè)是Unix層面模擬器。
LECCS包括如下程序包:GCC--3.2.3C/C++編譯器、RTEMS--4.6.0-βC/C++實(shí)時(shí)核、獨(dú)立C庫、GDB-5.3SPARC交叉調(diào)試器、遠(yuǎn)程調(diào)試監(jiān)視器、GDB的DDD圖形前端(僅對Unix)、GDB的GDB-TK圖像前端(僅對Windows)、引導(dǎo)PROM的builder以及Leon調(diào)試支持單元監(jiān)視器等。還包括一些工具,如交叉匯編器、匯編預(yù)處理器、GNU連接器、二進(jìn)制轉(zhuǎn)換器等等。
采用LECCS進(jìn)行Leon2應(yīng)用系統(tǒng)軟件開發(fā)的過程如下:
?、倮肎CC編譯和鏈接程序;
②利用仿真器了SIM調(diào)試程序;
?、墼谶h(yuǎn)程目標(biāo)系統(tǒng)上調(diào)試程序;
?、転楠?dú)立應(yīng)用產(chǎn)生引導(dǎo)PROM程序。
LECCS支持兩種類型的應(yīng)用:一種是通常的順序CC++程序,一種是基于R了EMS核的多任務(wù)實(shí)時(shí)CC++程序。
軟件仿真工具可以采用丁SIM。它是一個(gè)通用的SPARC架構(gòu)仿真器,可以對基于ERC-32和Leon的計(jì)算系統(tǒng)進(jìn)行仿真,性能和使用方法可以參見TSIM用戶指南。Leon2為應(yīng)用系統(tǒng)的調(diào)試在硬件上作了極大的支持,那就是它的調(diào)試支持單元(DSU)和跟蹤緩沖器。具體使用時(shí)可參見Leon2用戶手冊和leon DSU Monitor用戶手冊。
4 Leon2的應(yīng)用
Leon2在國內(nèi)外都有應(yīng)用。
國外應(yīng)用很多,如基于Leon的數(shù)字聽寫機(jī)、指紋安全系統(tǒng)、GPS處理機(jī)、BIST(內(nèi)建自測試)等方面的產(chǎn)品。這里簡單介紹洛杉磯加州大學(xué)的ThumbPod指紋安全系統(tǒng),以及Nemerix公司的NJ1030型GPS基帶產(chǎn)品。ThumbPod安全系統(tǒng),是將人的指紋作為身份認(rèn)證(數(shù)字身份)的安全系統(tǒng)。其原型的硬件系統(tǒng)由Xilinx的FPGA(XC2V1000)、Micron的 256 MHz-DDR-SDRAM、Authentec的AF-S2型手指感應(yīng)器等構(gòu)成。CPU采用Leon2處理器核,并通過Leon2的協(xié)處理器接口(CPI)掛接了AES(高級加密系統(tǒng))協(xié)處理器來執(zhí)行AES算法,以加快加密速度.系統(tǒng)的最大工作時(shí)鐘頻率可以達(dá)100 MHz,工作電壓可以是3.3/2.5/1.8/1.5 V等多種電壓。NJl030型GPS基帶產(chǎn)品,目標(biāo)是GPS的L1載波C/A碼處理,并提供對WAAS和EGNOS兩種增強(qiáng)系統(tǒng)的支持,可以和世界上領(lǐng)先的第三方的GPS-RF前端設(shè)備兼容。
國內(nèi),航天部771所和中科院國家天文臺都正在或計(jì)劃研制基于Leon2的星載數(shù)據(jù)處理系統(tǒng)。這種數(shù)據(jù)處理系統(tǒng),不再采用體積大、笨重而又功耗巨大的處理器芯片(如DSP),而是直接將Leon2放進(jìn)FPGA。系統(tǒng)將大部分的處理功能硬件化,利用FPAG的豐富資源,將整個(gè)系統(tǒng)放入一片F(xiàn)PGA芯片內(nèi)。其中的Leon2只進(jìn)行控制管理和一些必須的計(jì)算處理。國家天文臺正計(jì)劃研制基于Leon2的星載系統(tǒng),系統(tǒng)將處理每日采集到的1780 GB數(shù)據(jù)。這些數(shù)據(jù)通過預(yù)處理(圖像積分、輻射校正、幾何校正、磁圖處理)、小波壓縮、圖像格式等,使圖像壓縮到10GB左右,并下傳到地面站。
結(jié) 語
本文介紹了Leon2開源處理核的技術(shù)特點(diǎn)、軟硬件開發(fā)過程、國內(nèi)外的應(yīng)用實(shí)例。技術(shù)特點(diǎn)主要是SPARCV8規(guī)范、AMBH2.0總線結(jié)構(gòu)、容錯(cuò)設(shè)計(jì)方法和VHDL編程風(fēng)格;對Leon2應(yīng)用系統(tǒng)的軟硬件開發(fā)工具和方法進(jìn)行了介紹;在應(yīng)用實(shí)例中,介紹兩種國外的應(yīng)用和兩種國內(nèi)的應(yīng)用,其中包括作者正在進(jìn)行研制的星載圖像處理系統(tǒng)。
c++相關(guān)文章:c++教程
存儲器相關(guān)文章:存儲器原理
矢量控制相關(guān)文章:矢量控制原理
評論