作者:李陽;劉政林;湯加躍;鄒雪城
隨著硅片集成技術(shù)的高速發(fā)展,片上系統(tǒng)SoC(system-on-a-Chip)已經(jīng)成為現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)的必然趨勢。SoC和一般數(shù)字系統(tǒng)最主要的區(qū)別是前者在單一硅片內(nèi)集成了獨(dú)立的嵌入式CPU,必要的存儲器控制器也要求集成到SoC芯片內(nèi),所以對SoC系統(tǒng)的軟硬件協(xié)同實(shí)時驗(yàn)證便成為SoC設(shè)計(jì)的難點(diǎn)。基于IP的可重用設(shè)計(jì)方法已經(jīng)成為數(shù)字系統(tǒng)設(shè)計(jì)工程師普遍采用的系統(tǒng)設(shè)計(jì)方法。于是,設(shè)計(jì)者采用第三方IP或自行設(shè)計(jì)的軟核或兩者的組合來搭建符合要求的系統(tǒng)。對于一個SoC系統(tǒng),嵌入式CPU的選擇至關(guān)重要。第三方提供CPU的方式有軟核和固核,如果在設(shè)計(jì)過程中僅被授權(quán)采用第三方優(yōu)化的固核(版圖級),則前端FPGA實(shí)時驗(yàn)證問題自然凸現(xiàn)出來。解決的辦法是選擇相應(yīng)CPU的驗(yàn)證開發(fā)板或者采用其他處理器。本文介紹一種利用嵌入Blackfin處理器的ADSP-BF537作為處理器進(jìn)行SoC的FPGA實(shí)時驗(yàn)證的方案及其總線接口轉(zhuǎn)換模塊的設(shè)計(jì)。SoC系統(tǒng)驗(yàn)證平臺結(jié)構(gòu)框圖如圖1所示。
1 ADSP簡介
ADSP是ADI(Analog Device Inc.)公司推出的一系列高性能低功耗DSP芯片,而基于Blackfin處理器的ADSP-BF533一經(jīng)推出便被很多國家的設(shè)計(jì)人員立即采用,后續(xù)系列產(chǎn)品ADSP-BF5xx也被更多的系統(tǒng)設(shè)計(jì)廠家應(yīng)用到各自的產(chǎn)品中。正是因?yàn)锳DSP-BF5xx系列芯片是以功能強(qiáng)大性能卓越的Blackfin處理器為內(nèi)核而推出的高效DSP芯片,使得人們可以采用ADSP-BF5xx系列芯片作為處理器進(jìn)行視頻SoC的FPGA實(shí)時驗(yàn)證。Blackfin處理器集成了一個由ADI公司和Intel公司聯(lián)合開發(fā)的基于MSA(Micro Signal Architecture)的16/32位嵌入式處理器,支持32位RISC指令集,采用10級流水線,集成了兩個16位乘法加速器,內(nèi)核主頻最高可以達(dá)到600MHz。
2 ADSP外部Momory總線介紹
ADSP外部Memory總線可以進(jìn)行同步或異步操作,前者是通過時鐘輸出端CLKOUT進(jìn)行同步的。本文所采用的ADSP-BF537 Ez-kit Lite開發(fā)套件的外部Memory總線的可用地址僅為19位(ADDR[19:1]),并且采用AMS[3:0]選中相應(yīng)的外部區(qū)域。ADSP-BF537的四個選通信號線對應(yīng)的外部Memory地址范圍如表1所示。可以看出,直接利用ADSP外部Memory總線操作的地址空間只有4MB容量,顯然不能滿足SoC的選址需求,必須進(jìn)行接口總線的轉(zhuǎn)換來提高尋址范圍。
ADSP-BF537外部Memory讀寫時序波形如圖2所示,其中的ARDY信號是由外設(shè)產(chǎn)生的。ADSP通過設(shè)置EBIU_AMBCTLx寄存器,允許傳輸過程中使用ARDY握手信號,用來增強(qiáng)系統(tǒng)運(yùn)行的準(zhǔn)確度。ARDY信號的有效電平是可以設(shè)置的。
EBIU_AMBCTLx寄存器還可以改變ADSP對外讀寫操作的時序,包括數(shù)據(jù)建立時間、讀寫通路時間以及數(shù)據(jù)保持時間。例如,圖2所示的寫操作建立時間、通路時間和保持時間分別是2個周期、2個周期和1個周期。如果使能ARDY信號,并設(shè)置為高電平有效,則在設(shè)定的讀寫時間內(nèi),ARDY為低電平表示外設(shè)不能寫入或者讀出數(shù)據(jù),需要ADSP繼續(xù)保持相應(yīng)的讀寫等待狀態(tài),直到ARDY信號被拉為高電平;只有當(dāng)ADSP檢測到ARDY為高電平時,才能將DATA數(shù)據(jù)作為有效數(shù)據(jù)。上述過程如圖2中的讀操作,ARDY信號被拉低了一個周期。
ADSP-BF537的外部Memory地址總線位寬是ADDR[19:1],這樣可以使ADSP靈活地對16/32位數(shù)據(jù)進(jìn)行地址選址。例如,如果對連續(xù)地址進(jìn)行16位數(shù)據(jù)的讀寫操作,ADDR[19:1]只需依次加1,而ADSP軟件開發(fā)工具中相應(yīng)的內(nèi)部變量數(shù)據(jù)類型定義為short即可;類似地,如果要讀寫的數(shù)據(jù)類型為int(32位)數(shù)據(jù),則每次訪問外部地址時,ADSP會連續(xù)產(chǎn)生兩次讀寫操作,并且地址總線ADDR[19:1]是連續(xù)的。
3 AHB總線介紹
AHB(Advanced High-performance Bus)是AMBA總線中用途最為廣泛的一種高速總線,因其協(xié)議簡單、可綜合性強(qiáng)、支持主頻高、功耗低,已經(jīng)被很多SoC芯片作為內(nèi)部高速系統(tǒng)總線。大多數(shù)第三方IP廠商提供的功能模塊的接口都支持AMBA總線協(xié)議。AHB基本傳輸時序如圖3所示。
4消除信號的亞穩(wěn)態(tài)現(xiàn)象
在本次視頻SoC的FPGA驗(yàn)證方案中,采用ADSP的外部Memory總線,F(xiàn)PGA既可以利用同步時鐘輸出CLKOUT進(jìn)行同步設(shè)計(jì),也可以采用異步總線讀寫。如果不使用CLKOUT而采用異步設(shè)計(jì),則在總線轉(zhuǎn)換接口模塊設(shè)計(jì)中,首先需要保證消除讀寫信號亞穩(wěn)態(tài)現(xiàn)象。ADSP內(nèi)核主頻可以達(dá)到600MHz,外部Memory總線的采樣時鐘(CLKOUT)動態(tài)調(diào)整范圍也很大,因此對異步輸入信號可以采用增加同步觸發(fā)器進(jìn)行鎖存延時的方法來消除亞穩(wěn)態(tài)。具體實(shí)現(xiàn)方法是在異步輸入信號的前端加2-3級同步觸發(fā)器。FPGA驗(yàn)證證明:當(dāng)CLKOUT頻率為50MHz,F(xiàn)PGA系統(tǒng)主頻為25MHz時,3級同步鎖存完全可以消除亞穩(wěn)態(tài),從而保證ADSP在外部Memory總線上正確進(jìn)行數(shù)據(jù)傳輸。
5總線轉(zhuǎn)換狀態(tài)機(jī)設(shè)計(jì)
目前,大多數(shù)采用AMBA總線的SoC系統(tǒng)內(nèi)部的總線位寬是32位,多數(shù)嵌入式CPU和第三方IP核總線位寬也均為32位,因?yàn)?2位地址總線和數(shù)據(jù)總線已經(jīng)可以滿足絕大多數(shù)SoC系統(tǒng)的存儲器映射寄存器的地址分配和數(shù)據(jù)交換以及外部SDRAM和FLASH的尋址需求。ADSP-BF537的外部Memory數(shù)據(jù)總線是16位,并且地址總線只有19位,因此必須通過增加必要的狀態(tài)來解決總線位寬的不匹配問題。
為了實(shí)現(xiàn)ADSP對外進(jìn)行32位的地址操作和數(shù)據(jù)操作,可以利用Blackfin處理器分兩次進(jìn)行讀寫操作。寫操作分兩次進(jìn)行,第一次寫,先傳輸?shù)刂泛蛿?shù)據(jù)的高16位,第二次寫才將32位的地址和數(shù)據(jù)信號傳輸?shù)紸HB總線上;進(jìn)行讀操作時,需要AHB產(chǎn)生兩次讀動作,這樣才能使有效的32位數(shù)據(jù)被Blackfin處理器正確接收。第一次讀到有效的32位數(shù)據(jù)后傳輸高位,第二次讀到后傳輸?shù)臀唬⑶颐看巫x操作都需要Blackfin發(fā)出兩次讀動作,以便組合出AHB的32位地址。這樣就可以突破ADSP-BF537對外只能進(jìn)行4MB空間存取的限制。以上描述過程的狀態(tài)機(jī)轉(zhuǎn)換圖如圖4所示。
利用ADSP作為SoC系統(tǒng)處理器進(jìn)行SoC驗(yàn)證時,ADSP進(jìn)行的主要操作是讀寫系統(tǒng)內(nèi)部各個功能模塊的Memory映射控制寄存器,并且通過SDRAM控制器對SoC系統(tǒng)的外部SDRAM進(jìn)行數(shù)據(jù)交換操作。因此總線轉(zhuǎn)換狀態(tài)機(jī)分成讀傳輸和寫傳輸兩大部分。
當(dāng)ADSP需要進(jìn)行外部Memory總線傳輸時,首先會把相應(yīng)的ams信號拉低,這時總線轉(zhuǎn)換狀態(tài)機(jī)應(yīng)該使AHB進(jìn)入BUSREQ狀態(tài),要求仲裁器釋放AHB總線給CPU(ADSP)。
對于一個寫操作,需定義一個wr_flag標(biāo)志位來確定是否產(chǎn)生AHB寫動作。ams信號拉低后,經(jīng)過可配置的寫建立時間后,寫控制信號awe被拉低,初始化的wr_flag為0,表明ADSP進(jìn)行的是第一次寫操作。進(jìn)入的WRITE_H狀態(tài)用來鎖存寫地址和寫數(shù)據(jù)的高16位,同時會把wr_flag置為1,但并不向AHB總線發(fā)出寫命令。一個周期后重新進(jìn)入BUSREQ狀態(tài),等待ADSP下一個寫命令。ADSP發(fā)出第二次寫命令后,狀態(tài)機(jī)檢測到awe=0和wr_flag=1后進(jìn)入WRITE_L_ADDR狀態(tài),表明需要向AHB發(fā)出寫命令,包括hwrite、haddr、htrans、hsize等AHB控制信號。haddr是兩次寫操作地址(16位)組合而成的32位地址,htrans=2和hsize=2,表明是非連續(xù)傳輸,傳輸數(shù)據(jù)位寬是32位。下一個周期,狀態(tài)進(jìn)入WRITE_L_DATA,兩次寫操作數(shù)據(jù)也相應(yīng)組合成32位。如果AHB slave的hready為高,則32位數(shù)據(jù)釋放到AHB總線上,同時復(fù)位AHB控制信號,下一個周期返回IDLE狀態(tài);如果hready為低,則繼續(xù)保持WRITE_L_DATA狀態(tài),直到AHB slave把hready拉高有效。如果等待時間過長,可以增加一個計(jì)數(shù)器使?fàn)顟B(tài)機(jī)在一定時間后自動返回IDLE狀態(tài),并標(biāo)記相應(yīng)的error狀態(tài)寄存器。例如,需要通過ADSP向haddr[31:0]=0x1234_5678地址內(nèi)寫入hwdata[31:0]=0xaabb_ccdd,則測試平臺(采用vmt slave)模擬ADSP對外進(jìn)行兩次寫操作,第一次向addr[18:0]=0x1234內(nèi)寫0xaabb,第二次向addr[18:0]=0x5678內(nèi)寫0xccdd,如圖5所示。第二次寫操作后正確產(chǎn)生AHB寫操作。
同樣,對于一個讀操作,狀態(tài)機(jī)也需要兩次對AHB發(fā)出讀動作,把讀到的slave數(shù)據(jù)分高低位兩次傳輸給ADSP,不同的是,為了保證AHB讀地址是32位,而不僅僅是ADSP外部Memory地址總線的19位,每次AHB的讀命令,需要ADSP兩次讀動作,第一次讀用來傳輸高位地址,第二次讀才能把完整的32位地址傳送到AHB上,使AHB產(chǎn)生讀操作。上述過程的狀態(tài)依次是圖4中的READ_ADDR_H、READ_ADDR_L、READ_HOLD、READ_TRANSFER。標(biāo)志位rd_complete用來區(qū)分AHB的兩次讀動作,為0時在READ_TRANSFER狀態(tài)傳輸讀取數(shù)據(jù)的高16位,被ADSP讀取,下一個周期后進(jìn)入BUSREQ狀態(tài)等待下一個讀命令;為1時在READ_TRANSTER狀態(tài)傳輸讀取數(shù)據(jù)的低16位,并返回IDLE狀態(tài)。例如需要讀取上述已經(jīng)被寫入地址haddr[31:0]=0x1235_5678的值時,第一次ADSP發(fā)出讀addr[18:0]=0x1234,第二次發(fā)出讀addr[18:0]=0x5678,這時ADSP的data只傳輸高位數(shù)據(jù)0xaabb,ADSP再發(fā)兩次相同的讀命令后,data才傳輸?shù)臀粩?shù)據(jù)0xccdd。對應(yīng)的讀操作的仿真波形如圖6所示。
如前所述,ADSP外部Memory總線在對外讀寫時可以通過EBIU_AMBCTlx寄存器來選擇是否選通握手信號ARDY。為了提高傳輸?shù)目煽啃院蜏?zhǔn)確度,在設(shè)計(jì)轉(zhuǎn)換模塊時需要考慮ARDY,如圖5、圖6中的讀寫操作時序圖所示,在每一次數(shù)據(jù)傳輸完成的最后一個狀態(tài),需要將ARDY信號置1,然后在下一個IDLE或BUSREQ狀態(tài)將ARDY清0,這樣可以保證ADSP能正確讀到ADSP外部Memory數(shù)據(jù)總線上的有效數(shù)據(jù),防止因ADSP對外讀寫時序設(shè)置不合理而造成系統(tǒng)不能正常運(yùn)行。
6 FPGA實(shí)現(xiàn)
本模塊的設(shè)計(jì)是用于FPGA驗(yàn)證用途的,對于大型視頻SoC系統(tǒng)的FPGA實(shí)時驗(yàn)證,往往需要采用大容量的FPGA,因此本設(shè)計(jì)采用Altera Stratix II EP2S60器件進(jìn)行FPGA驗(yàn)證。采用Quartus綜合和布局布線后,一共需要140個ALUT和131個寄存器,最快時鐘可以達(dá)到300MHz。因?yàn)锳DSP可以設(shè)置外部Memory總線的讀寫時序,所以對外訪問的速率不是惟一的。為了實(shí)現(xiàn)16位到32位的轉(zhuǎn)換雖然增加了讀寫的次數(shù),但因?yàn)锳DSP外部Memory同步時鐘頻率調(diào)整范圍很大,因此本設(shè)計(jì)完全可以滿足IP核功能驗(yàn)證對頻率的要求,對于視頻SoC內(nèi)部基本AHB總線和APB總線上的功能模塊都能正確實(shí)時驗(yàn)證。基于ADSP-BF537內(nèi)部嵌入的Blackfin處理器及其DSP接口,已經(jīng)利用本接口模塊成功地驗(yàn)證了AHB總線上的H264和MPEG一2的encode與decode加速器、Ethernet MAC控制器、SDRAM控制器以及APB總線上的UART、TIMER、AC97、GPIO和LCD控制器等低速外設(shè)。
隨著驗(yàn)證環(huán)節(jié)在SoC產(chǎn)品開發(fā)過程中所占時間和開銷的迅速增加,Altera和Xilinx在其大容量FPGA芯片產(chǎn)品中,都集成了特定類型的CPU作為系統(tǒng)處理器,但它們都受到特定FPGA器件的限制。因此利用ADSP內(nèi)嵌的強(qiáng)大Blackfin處理器和豐富的DSP外設(shè),可以有效地提高驗(yàn)證的效率和功能的完整性。本文的總線接口模塊的設(shè)計(jì)對具有不同讀寫時序的驗(yàn)證板的正常工作起著重要的作用,SoC原型的搭建必然要求本模塊能真實(shí)反映實(shí)際AHB總線的動作,這樣對于保證各個功能模塊的完整性和實(shí)時工作將起很大的作用。
責(zé)任編輯:gt
-
FPGA
+關(guān)注
關(guān)注
1645文章
22034瀏覽量
617880 -
嵌入式
+關(guān)注
關(guān)注
5148文章
19651瀏覽量
317129 -
soc
+關(guān)注
關(guān)注
38文章
4385瀏覽量
222588
發(fā)布評論請先 登錄
Quartus II軟件和Quartus II網(wǎng)絡(luò)版的區(qū)別
基于Stratix II EP2S60改進(jìn)中值濾波器的設(shè)計(jì)及實(shí)現(xiàn),不看肯定后悔
Stratix II EP2S60 DSP Developm
針對Altera Stratix IV EP4SGX360和

針對Altera Stratix IV EP4SGX70和E

Altera推出業(yè)界密度最大的Stratix IV EP4S
一種線性卷積實(shí)時實(shí)現(xiàn)方案

基于FPGA EP2S60的SoPC系統(tǒng)設(shè)計(jì)

基于Altera FPGA的視頻信號處理的設(shè)計(jì)與實(shí)現(xiàn)
Altera推出Quartus II v13.0,支持實(shí)現(xiàn)世界上最快的FPGA設(shè)計(jì)
業(yè)界密度最大的Stratix IV EP4SE820 FPGA(Altera)
鋯石FPGA A4_Nano開發(fā)板視頻:NiOS II硬件框架結(jié)構(gòu)深入剖析2

鋯石FPGA A4_Nano開發(fā)板視頻:NiOS II硬件框架結(jié)構(gòu)深入剖析(2)

采用StratixⅡ FPGA器件提高加法樹性能并實(shí)現(xiàn)設(shè)計(jì)

評論