LEON3及Speed
LEON3是由歐洲航天總局旗下的Gaisler Research開發(fā),、維護,,目的是擺脫歐空局對美國航天級處理器的依賴。目前LEON3有三個版本(如表1),,其中LEON3FT(LEON3 Fault-tolerant)只有歐空局內(nèi)部成員可以使用,。LEON3 (basic version)是遵循GNC GPL License的開源處理器,和SPARC V8兼容,,采用7級Pipeline,,硬件實現(xiàn)乘法、除法和乘累加功能,,詳細特性請參考相關(guān)技術(shù)文檔[1],。
表1 LEON3的不同版本
目前,LEON3處理器因為開源,、高性能,、采用AMBA總線易擴展及軟件工具完備等因素,在國內(nèi)外大學(如UCB,、UCLA、Princeton University等)及科研院所的科研活動中得到廣泛應用,。
Speed(又名GA3816)是一款我國自主研發(fā),、處于同時代國際先進水平、可重構(gòu),、可擴展的面向FFT,、IFFT、FIR及匹配濾波應用的信號處理器,,其內(nèi)部結(jié)構(gòu)如圖1所示,,具有以下特點[2~4]:
1)Speed在追求運算速度的同時兼顧通用性,通過設置64位控制字,,器件內(nèi)部資源可根據(jù)不同應用進行重組;
2)可以實現(xiàn)FFT,、IFFT、FFT-IFFT,、FIR,、滑窗卷積等運算,峰值運算能力達256億次浮點乘累加/秒;3)由160個實數(shù)浮點乘法累加運算器組成40個復數(shù)乘法累加器陣列,,1Mbit的雙口SRAM,,8個512×32bit系數(shù)ROM,兩個直角到極坐標轉(zhuǎn)換電路,,兩個對數(shù)變換電路及其它輔助電路和控制電路,。
圖1 Speed的內(nèi)部模塊結(jié)構(gòu)
Speed傳統(tǒng)的工作方式是通過片外FPGA輸入控制信號和待處理數(shù)據(jù),,這不僅增大了PCB板級布線、調(diào)試的工作量,,而且FPGA不能用C等高級語言編程,,算法改動起來不靈活。另一方面,,隨著半導體工藝,、微電子技術(shù)的發(fā)展,大規(guī)模的復雜SoC實現(xiàn)技術(shù)逐漸成熟,,因此有必要將板級FPGA + Speed改進為芯片級MCU + Speed,,這樣既能實現(xiàn)真正的可編程增大靈活性,又能加快用戶開發(fā)信號處理系統(tǒng)的速度,。利用AHB實現(xiàn)通信
為了實現(xiàn)可編程,,需要將C/C++程序表達的信息經(jīng)過編譯器、LEON3處理器,、AHB總線,、DMA控制器和必要的HDL代碼,轉(zhuǎn)化成Speed能夠識別的信息,,進入Speed模塊中,,如圖2。其中AHB總線是LEON3 Core和Speed Core結(jié)合的關(guān)鍵,。
圖2 實現(xiàn)軟件可編程的過程
AHB總線及AHB控制器
AMBA總線是一種應用廣泛的層次化總線結(jié)構(gòu),,有高速的AHB和低速APB之分,其中AHB是一種流水式高速總線結(jié)構(gòu),,地址和數(shù)據(jù)總線相互獨立,,可掛載16個Master和Slaver設備,常用來組織和連接高性能模塊,,如處理器,、DMA控制器、協(xié)處理器等[5~7],。AHB總線的核心是AHB控制器,,主要包括仲裁器,譯碼器和多路復用器,,其中仲裁器選擇AHB Master,,而譯碼器選擇AHB Slave,實現(xiàn)寫數(shù)據(jù)WDATA和讀數(shù)據(jù)RDATA分開,,如圖3所示,。
DMA控制器
DMA是指設備直接對計算機存儲器進行讀寫操作的方式。這種方式下數(shù)據(jù)的讀寫無需CPU執(zhí)行指令,,也不經(jīng)過CPU內(nèi)部寄存器,,而是利用系統(tǒng)的數(shù)據(jù)總線直接在源地址和目的地址之間傳送數(shù)據(jù),,達到極高的傳輸速率。DMA控制器一方面可以接管總線,,即可以像CPU一樣視為總線的主設備,,這是DMA與其它外設最根本的區(qū)別;另一方面,作為一個I/O器件,,其DMA控制功能正式通過初始化編程來設置,。當CPU對其寫入或讀出時,它又和其它的外設一樣成為總線的從屬設備,。本文中為了實現(xiàn)DMA和AHB密切配合,,即啟動DMA后大量原始數(shù)據(jù)通過AHB總線從數(shù)據(jù)存儲器進入Speed模塊,需要DMA控制器內(nèi)部包含AHB Master模塊,,如圖4所示,。另外需要說明的是,LEON3為了實現(xiàn)AHB上設備的plug&play需要在0xFFFFF000-0xFFFFF800地址空間添加設備信息[8~9],,所以DMA 控制器和Speed協(xié)處理器亦要如此,,以便LEON3的軟硬件協(xié)調(diào)一致。在C語言實現(xiàn)DMA時,,向DMA的控制寄存器寫入相應的信息,,即可啟動DMA傳輸,如圖5所示,。
圖4 DMA與AHB Master的關(guān)系
圖5 啟動DMA的C代碼示意
Speed的AHB接口
為了使Speed可以順利接收LEON3傳送過來的控制字或DMA傳送過來的原始數(shù)據(jù),,需要在原有的Speed core模塊頂層添加AHB Slaver協(xié)議來接收AHB上傳送的數(shù)據(jù),以及產(chǎn)生相應波形的HDL代碼來將C程序的信息生成Speed所能識別的信號波形進入Speed模塊內(nèi)部,,即從圖6中的控制字,,轉(zhuǎn)化成圖7中的時序,。
圖6 C語言描述的Speed控制字
圖7 Speed core所需的配置時序
同理于控制字,,濾波系數(shù)和原始數(shù)據(jù)的輸入亦需要一定的HDL代碼來實現(xiàn)指令或數(shù)據(jù)向時序圖的轉(zhuǎn)化,其本質(zhì)相當于譯碼,,實現(xiàn)起來難度不大,,此處就不再累述。Speed處理后數(shù)據(jù)通過狀態(tài)信號(zero_flag)下降沿觸發(fā)LEON3的中斷響應,,實現(xiàn)向外部存儲器的輸出,,此過程和數(shù)據(jù)輸入類似。
編程,、編譯及仿真
用戶在C編程時,,只需要按照Speed所需的啟動方式,先設置控制字,、再輸入濾波系數(shù),、然后啟動DMA輸入原始數(shù)據(jù),。值得注意的地方是,為了實現(xiàn)Speed的運算與DMA中原始數(shù)據(jù)輸入同步,,需要在C代碼的不同指令間插入一定的延遲指令,,此延遲間隔可根據(jù)軟硬件的響應速度來計算。
Gaisler Research公司提供完整的LEON3開發(fā)套件,,包括C代碼編譯器sparc-elf-gcc,,大大方便了軟硬件開發(fā)和聯(lián)合調(diào)試。 將LEON3和Speed的SoC硬件HDL描述,,及編譯后的二進制指令調(diào)入Modelsim進行軟件仿真,,再利用FPGA進行硬件仿真,其結(jié)果如圖8,、9,、10所示。
圖8 從C語言控制字產(chǎn)生的配置時序
圖9 觸發(fā)中斷響應的zero_flag信號
圖10 在Altera StratixII 2S180中的仿真結(jié)果
結(jié)語
本項目利用LEON3的高性能,、易編程,、開源等優(yōu)點,開發(fā)了AHB總線接口和DMA控制器,,實現(xiàn)了Speed專用信號處理器的軟件可編程,,大大簡化了Speed用戶的開發(fā)過程。有待改進之處是,,1)當前Speed可處理40bit數(shù)據(jù),,而Leon3是32bit,沒有最大限度發(fā)揮Speed的運算能力,;2)如果在LEON3上運行RTEMS (Real Time Executive for MultiProcessor Systems) 操作系統(tǒng),,將進一步方便用戶擴展LEON3的利用價值。