《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 松耦合式可編程復(fù)雜SoC的設(shè)計(jì)實(shí)現(xiàn)
松耦合式可編程復(fù)雜SoC的設(shè)計(jì)實(shí)現(xiàn)
來源:電子產(chǎn)品世界
摘要: 松耦合式可編程復(fù)雜SoC的設(shè)計(jì)實(shí)現(xiàn)[圖],隨著科技的發(fā)展,信號(hào)處理系統(tǒng)不僅要求多功能,、高性能,,而且要求信號(hào)處理系統(tǒng)的開發(fā)、生產(chǎn)周期短,,可編程式
關(guān)鍵詞: 松耦合 可編程 SOC
Abstract:
Key words :
隨著科技的發(fā)展,,信號(hào)處理系統(tǒng)不僅要求多功能、高性能,,而且要求信號(hào)處理系統(tǒng)的開發(fā),、生產(chǎn)周期短,可編程式專用處理器無疑是實(shí)現(xiàn)此目的的最好途徑,??删幊虒S锰幚砥骺煞譃?a class="innerlink" href="http://forexkbc.com/tags/松耦合" title="松耦合" target="_blank">松耦合式(協(xié)處理器方式,即MCU+協(xié)處理器)和緊耦合式(專用指令方式,,即ASIP),,前者較后者易于實(shí)現(xiàn),應(yīng)用較廣,。本文就是介紹一款松耦合式可編程專用復(fù)雜SoC設(shè)計(jì)實(shí)現(xiàn),,選用LEON3處理器作為MCU,Speed處理器作為CoProcessor,。

LEON3及Speed

LEON3是由歐洲航天總局旗下的Gaisler Research開發(fā),、維護(hù),目的是擺脫歐空局對(duì)美國(guó)航天級(jí)處理器的依賴,。目前LEON3有三個(gè)版本(如表1),,其中LEON3FT(LEON3 Fault-tolerant)只有歐空局內(nèi)部成員可以使用。LEON3 (basic version)是遵循GNC GPL License的開源處理器,,和SPARC V8兼容,,采用7級(jí)Pipeline,硬件實(shí)現(xiàn)乘法,、除法和乘累加功能,,詳細(xì)特性請(qǐng)參考相關(guān)技術(shù)文檔[1]。

表1 LEON3的不同版本

松耦合式可編程復(fù)雜SoC的設(shè)計(jì)實(shí)現(xiàn)

目前,,LEON3處理器因?yàn)殚_源,、高性能、采用AMBA總線易擴(kuò)展及軟件工具完備等因素,,在國(guó)內(nèi)外大學(xué)(如UCB,、UCLA、Princeton University等)及科研院所的科研活動(dòng)中得到廣泛應(yīng)用,。

Speed(又名GA3816)是一款我國(guó)自主研發(fā),、處于同時(shí)代國(guó)際先進(jìn)水平,、可重構(gòu)、可擴(kuò)展的面向FFT,、IFFT,、FIR及匹配濾波應(yīng)用的信號(hào)處理器,其內(nèi)部結(jié)構(gòu)如圖1所示,,具有以下特點(diǎn)[2~4]:

1)Speed在追求運(yùn)算速度的同時(shí)兼顧通用性,,通過設(shè)置64位控制字,器件內(nèi)部資源可根據(jù)不同應(yīng)用進(jìn)行重組;

2)可以實(shí)現(xiàn)FFT,、IFFT、FFT-IFFT,、FIR,、滑窗卷積等運(yùn)算,峰值運(yùn)算能力達(dá)256億次浮點(diǎn)乘累加/秒;3)由160個(gè)實(shí)數(shù)浮點(diǎn)乘法累加運(yùn)算器組成40個(gè)復(fù)數(shù)乘法累加器陣列,,1Mbit的雙口SRAM,,8個(gè)512×32bit系數(shù)ROM,兩個(gè)直角到極坐標(biāo)轉(zhuǎn)換電路,,兩個(gè)對(duì)數(shù)變換電路及其它輔助電路和控制電路,。

松耦合式可編程復(fù)雜SoC的設(shè)計(jì)實(shí)現(xiàn)

圖1 Speed的內(nèi)部模塊結(jié)構(gòu)

Speed傳統(tǒng)的工作方式是通過片外FPGA輸入控制信號(hào)和待處理數(shù)據(jù),這不僅增大了PCB板級(jí)布線,、調(diào)試的工作量,,而且FPGA不能用C等高級(jí)語(yǔ)言編程,算法改動(dòng)起來不靈活,。另一方面,,隨著半導(dǎo)體工藝、微電子技術(shù)的發(fā)展,,大規(guī)模的復(fù)雜SoC實(shí)現(xiàn)技術(shù)逐漸成熟,,因此有必要將板級(jí)FPGA + Speed改進(jìn)為芯片級(jí)MCU + Speed,這樣既能實(shí)現(xiàn)真正的可編程增大靈活性,,又能加快用戶開發(fā)信號(hào)處理系統(tǒng)的速度,。利用AHB實(shí)現(xiàn)通信

為了實(shí)現(xiàn)可編程,需要將C/C++程序表達(dá)的信息經(jīng)過編譯器,、LEON3處理器,、AHB總線、DMA控制器和必要的HDL代碼,,轉(zhuǎn)化成Speed能夠識(shí)別的信息,,進(jìn)入Speed模塊中,如圖2,。其中AHB總線是LEON3 Core和Speed Core結(jié)合的關(guān)鍵,。

松耦合式可編程復(fù)雜SoC的設(shè)計(jì)實(shí)現(xiàn)

圖2 實(shí)現(xiàn)軟件可編程的過程

AHB總線及AHB控制器

AMBA總線是一種應(yīng)用廣泛的層次化總線結(jié)構(gòu),,有高速的AHB和低速APB之分,其中AHB是一種流水式高速總線結(jié)構(gòu),,地址和數(shù)據(jù)總線相互獨(dú)立,,可掛載16個(gè)Master和Slaver設(shè)備,常用來組織和連接高性能模塊,,如處理器,、DMA控制器、協(xié)處理器等[5~7],。AHB總線的核心是AHB控制器,,主要包括仲裁器,譯碼器和多路復(fù)用器,,其中仲裁器選擇AHB Master,,而譯碼器選擇AHB Slave,實(shí)現(xiàn)寫數(shù)據(jù)WDATA和讀數(shù)據(jù)RDATA分開,,如圖3所示,。

松耦合式可編程復(fù)雜SoC的設(shè)計(jì)實(shí)現(xiàn)

DMA控制器

DMA是指設(shè)備直接對(duì)計(jì)算機(jī)存儲(chǔ)器進(jìn)行讀寫操作的方式。這種方式下數(shù)據(jù)的讀寫無需CPU執(zhí)行指令,,也不經(jīng)過CPU內(nèi)部寄存器,,而是利用系統(tǒng)的數(shù)據(jù)總線直接在源地址和目的地址之間傳送數(shù)據(jù),達(dá)到極高的傳輸速率,。DMA控制器一方面可以接管總線,,即可以像CPU一樣視為總線的主設(shè)備,這是DMA與其它外設(shè)最根本的區(qū)別;另一方面,,作為一個(gè)I/O器件,,其DMA控制功能正式通過初始化編程來設(shè)置。當(dāng)CPU對(duì)其寫入或讀出時(shí),,它又和其它的外設(shè)一樣成為總線的從屬設(shè)備,。本文中為了實(shí)現(xiàn)DMA和AHB密切配合,即啟動(dòng)DMA后大量原始數(shù)據(jù)通過AHB總線從數(shù)據(jù)存儲(chǔ)器進(jìn)入Speed模塊,,需要DMA控制器內(nèi)部包含AHB Master模塊,,如圖4所示。另外需要說明的是,,LEON3為了實(shí)現(xiàn)AHB上設(shè)備的plug&play需要在0xFFFFF000-0xFFFFF800地址空間添加設(shè)備信息[8~9],,所以DMA 控制器和Speed協(xié)處理器亦要如此,以便LEON3的軟硬件協(xié)調(diào)一致,。在C語(yǔ)言實(shí)現(xiàn)DMA時(shí),,向DMA的控制寄存器寫入相應(yīng)的信息,即可啟動(dòng)DMA傳輸,,如圖5所示,。

松耦合式可編程復(fù)雜SoC的設(shè)計(jì)實(shí)現(xiàn)

圖4 DMA與AHB Master的關(guān)系

松耦合式可編程復(fù)雜SoC的設(shè)計(jì)實(shí)現(xiàn)

圖5 啟動(dòng)DMA的C代碼示意

Speed的AHB接口

為了使Speed可以順利接收LEON3傳送過來的控制字或DMA傳送過來的原始數(shù)據(jù),,需要在原有的Speed core模塊頂層添加AHB Slaver協(xié)議來接收AHB上傳送的數(shù)據(jù),以及產(chǎn)生相應(yīng)波形的HDL代碼來將C程序的信息生成Speed所能識(shí)別的信號(hào)波形進(jìn)入Speed模塊內(nèi)部,,即從圖6中的控制字,,轉(zhuǎn)化成圖7中的時(shí)序。

松耦合式可編程復(fù)雜SoC的設(shè)計(jì)實(shí)現(xiàn)

圖6 C語(yǔ)言描述的Speed控制字

松耦合式可編程復(fù)雜SoC的設(shè)計(jì)實(shí)現(xiàn)

圖7 Speed core所需的配置時(shí)序

同理于控制字,,濾波系數(shù)和原始數(shù)據(jù)的輸入亦需要一定的HDL代碼來實(shí)現(xiàn)指令或數(shù)據(jù)向時(shí)序圖的轉(zhuǎn)化,,其本質(zhì)相當(dāng)于譯碼,實(shí)現(xiàn)起來難度不大,,此處就不再累述,。Speed處理后數(shù)據(jù)通過狀態(tài)信號(hào)(zero_flag)下降沿觸發(fā)LEON3的中斷響應(yīng),實(shí)現(xiàn)向外部存儲(chǔ)器的輸出,,此過程和數(shù)據(jù)輸入類似,。

編程、編譯及仿真

用戶在C編程時(shí),,只需要按照Speed所需的啟動(dòng)方式,先設(shè)置控制字,、再輸入濾波系數(shù),、然后啟動(dòng)DMA輸入原始數(shù)據(jù)。值得注意的地方是,,為了實(shí)現(xiàn)Speed的運(yùn)算與DMA中原始數(shù)據(jù)輸入同步,,需要在C代碼的不同指令間插入一定的延遲指令,此延遲間隔可根據(jù)軟硬件的響應(yīng)速度來計(jì)算,。

Gaisler Research公司提供完整的LEON3開發(fā)套件,,包括C代碼編譯器sparc-elf-gcc,大大方便了軟硬件開發(fā)和聯(lián)合調(diào)試,。 將LEON3和Speed的SoC硬件HDL描述,,及編譯后的二進(jìn)制指令調(diào)入Modelsim進(jìn)行軟件仿真,再利用FPGA進(jìn)行硬件仿真,,其結(jié)果如圖8,、9、10所示,。

松耦合式可編程復(fù)雜SoC的設(shè)計(jì)實(shí)現(xiàn)

圖8 從C語(yǔ)言控制字產(chǎn)生的配置時(shí)序

松耦合式可編程復(fù)雜SoC的設(shè)計(jì)實(shí)現(xiàn)

圖9 觸發(fā)中斷響應(yīng)的zero_flag信號(hào)

松耦合式可編程復(fù)雜SoC的設(shè)計(jì)實(shí)現(xiàn)

圖10 在Altera StratixII 2S180中的仿真結(jié)果

結(jié)語(yǔ)

本項(xiàng)目利用LEON3的高性能,、易編程、開源等優(yōu)點(diǎn),,開發(fā)了AHB總線接口和DMA控制器,,實(shí)現(xiàn)了Speed專用信號(hào)處理器的軟件可編程,大大簡(jiǎn)化了Speed用戶的開發(fā)過程,。有待改進(jìn)之處是,,1)當(dāng)前Speed可處理40bit數(shù)據(jù),,而Leon3是32bit,沒有最大限度發(fā)揮Speed的運(yùn)算能力,;2)如果在LEON3上運(yùn)行RTEMS (Real Time Executive for MultiProcessor Systems) 操作系統(tǒng),,將進(jìn)一步方便用戶擴(kuò)展LEON3的利用價(jià)值。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。