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

針對(duì)Altera Stratix IV EP4SGX70和E

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

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

基于Altera FPGA的視頻信號(hào)處理的設(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開(kāi)發(fā)板視頻:NiOS II硬件框架結(jié)構(gòu)深入剖析2

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

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

評(píng)論