<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)DSP-BF537的視頻SOC驗證方案設計

基于A(yíng)DSP-BF537的視頻SOC驗證方案設計

作者: 時(shí)間:2007-05-28 來(lái)源:網(wǎng)絡(luò ) 收藏
隨著(zhù)硅片集成技術(shù)的高速發(fā)展,片上系統SoC(system-on-a-Chip)已經(jīng)成為現代數字系統設計的必然趨勢。SoC和一般數字系統最主要的區別是前者在單一硅片內集成了獨立的嵌入式CPU,必要的存儲器控制器也要求集成到SoC芯片內,所以對SoC系統的軟硬件協(xié)同實(shí)時(shí)便成為SoC設計的難點(diǎn)。IP的可重用設計方法已經(jīng)成為數字系統設計工程師普遍采用的系統設計方法。于是,設計者采用第三方IP或自行設計的軟核或兩者的組合來(lái)搭建符合要求的系統。對于一個(gè)SoC系統,嵌入式CPU的選擇至關(guān)重要。第三方提供CPU的方式有軟核和固核,如果在設計過(guò)程中僅被授權采用第三方優(yōu)化的固核(版圖級),則前端FPGA實(shí)時(shí)問(wèn)題自然凸現出來(lái)。解決的辦法是選擇相應CPU的開(kāi)發(fā)板或者采用其他處理器。本文介紹一種利用嵌入Blackfin處理器的作為處理器進(jìn)行SoC的FPGA實(shí)時(shí)驗證的方案及其總線(xiàn)接口轉換模塊的設計。SoC系統驗證平臺結構框圖如圖1所示。

1 ADSP簡(jiǎn)介

ADSP是ADI(Analog Device Inc.)公司推出的一系列高性能低功耗DSP芯片,而Blackfin處理器的ADSP-BF533一經(jīng)推出便被很多國家的設計人員立即采用,后續系列產(chǎn)品ADSP-BF5xx也被更多的系統設計廠(chǎng)家應用到各自的產(chǎn)品中。正是因為ADSP-BF5xx系列芯片是以功能強大性能卓越的Blackfin處理器為內核而推出的高效DSP芯片,使得人們可以采用ADSP-BF5xx系列芯片作為處理器進(jìn)行SoC的FPGA實(shí)時(shí)驗證。Blackfin處理器集成了一個(gè)由ADI公司和Intel公司聯(lián)合開(kāi)發(fā)的MSA(Micro Signal Architecture)的16/32位嵌入式處理器,支持32位RISC指令集,采用10級流水線(xiàn),集成了兩個(gè)16位乘法加速器,內核主頻最高可以達到600MHz[1]。

2 ADSP外部Momory總線(xiàn)介紹

ADSP外部Memory總線(xiàn)可以進(jìn)行同步或異步操作,前者是通過(guò)時(shí)鐘輸出端CLKOUT進(jìn)行同步的。本文所采用的 Ez-kit Lite開(kāi)發(fā)套件的外部Memory總線(xiàn)的可用地址僅為19位(ADDR[19:1]),并且采用AMS[3:0]選中相應的外部區域。的四個(gè)選通信號線(xiàn)對應的外部Memory地址范圍如表1所示[2]??梢钥闯?,直接利用ADSP外部Memory總線(xiàn)操作的地址空間只有4MB容量,顯然不能滿(mǎn)足SoC的選址需求,必須進(jìn)行接口總線(xiàn)的轉換來(lái)提高尋址范圍。

ADSP-BF537外部Memory讀寫(xiě)時(shí)序波形如圖2所示,其中的ARDY信號是由外設產(chǎn)生的。ADSP通過(guò)設置EBIU_AMBCTLx寄存器,允許傳輸過(guò)程中使用ARDY握手信號,用來(lái)增強系統運行的準確度。ARDY信號的有效電平是可以設置的。

EBIU_AMBCTLx寄存器還可以改變ADSP對外讀寫(xiě)操作的時(shí)序,包括數據建立時(shí)間、讀寫(xiě)通路時(shí)間以及數據保持時(shí)間。例如,圖2所示的寫(xiě)操作建立時(shí)間、通路時(shí)間和保持時(shí)間分別是2個(gè)周期、2個(gè)周期和1個(gè)周期。如果使能ARDY信號,并設置為高電平有效,則在設定的讀寫(xiě)時(shí)間內,ARDY為低電平表示外設不能寫(xiě)入或者讀出數據,需要ADSP繼續保持相應的讀寫(xiě)等待狀態(tài),直到ARDY信號被拉為高電平;只有當ADSP檢測到ARDY為高電平時(shí),才能將DATA數據作為有效數據。上述過(guò)程如圖2中的讀操作,ARDY信號被拉低了一個(gè)周期。

ADSP-BF537的外部Memory地址總線(xiàn)位寬是ADDR[19:1],這樣可以使ADSP靈活地對16/32位數據進(jìn)行地址選址。例如,如果對連續地址進(jìn)行16位數據的讀寫(xiě)操作,ADDR[19:1]只需依次加1,而ADSP軟件開(kāi)發(fā)工具中相應的內部變量數據類(lèi)型定義為short即可[3];類(lèi)似地,如果要讀寫(xiě)的數據類(lèi)型為int(32位)數據,則每次訪(fǎng)問(wèn)外部地址時(shí),ADSP會(huì )連續產(chǎn)生兩次讀寫(xiě)操作,并且地址總線(xiàn)ADDR[19:1]是連續的。

3 AHB總線(xiàn)介紹

AHB(Advanced High-performance Bus)是AMBA總線(xiàn)中用途最為廣泛的一種高速總線(xiàn),因其協(xié)議簡(jiǎn)單、可綜合性強、支持主頻高、功耗低,已經(jīng)被很多SoC芯片作為內部高速系統總線(xiàn)。大多數第三方IP廠(chǎng)商提供的功能模塊的接口都支持AMBA總線(xiàn)協(xié)議。AHB基本傳輸時(shí)序如圖3所示[4]。

4消除信號的亞穩態(tài)現象

在本次SoC的FPGA驗證方案中,采用ADSP的外部Memory總線(xiàn),FPGA既可以利用同步時(shí)鐘輸出CLKOUT進(jìn)行同步設計,也可以采用異步總線(xiàn)讀寫(xiě)。如果不使用CLKOUT而采用異步設計,則在總線(xiàn)轉換接口模塊設計中,首先需要保證消除讀寫(xiě)信號亞穩態(tài)現象。ADSP內核主頻可以達到600MHz,外部Memory總線(xiàn)的采樣時(shí)鐘(CLKOUT)動(dòng)態(tài)調整范圍也很大,因此對異步輸入信號可以采用增加同步觸發(fā)器進(jìn)行鎖存延時(shí)的方法來(lái)消除亞穩態(tài)[5]。具體實(shí)現方法是在異步輸入信號的前端加2-3級同步觸發(fā)器。FPGA驗證證明:當CLKOUT頻率為50MHz,FPGA系統主頻為25MHz時(shí),3級同步鎖存完全可以消除亞穩態(tài),從而保證ADSP在外部Memory總線(xiàn)上正確進(jìn)行數據傳輸。

5總線(xiàn)轉換狀態(tài)機設計

目前,大多數采用AMBA總線(xiàn)的SoC系統內部的總線(xiàn)位寬是32位,多數嵌入式CPU和第三方IP核總線(xiàn)位寬也均為32位,因為32位地址總線(xiàn)和數據總線(xiàn)已經(jīng)可以滿(mǎn)足絕大多數SoC系統的存儲器映射寄存器的地址分配和數據交換以及外部SDRAM和FLASH的尋址需求。ADSP-BF537的外部Memory數據總線(xiàn)是16位,并且地址總線(xiàn)只有19位,因此必須通過(guò)增加必要的狀態(tài)來(lái)解決總線(xiàn)位寬的不匹配問(wèn)題。

為了實(shí)現ADSP對外進(jìn)行32位的地址操作和數據操作,可以利用Blackfin處理器分兩次進(jìn)行讀寫(xiě)操作。寫(xiě)操作分兩次進(jìn)行,第一次寫(xiě),先傳輸地址和數據的高16位,第二次寫(xiě)才將32位的地址和數據信號傳輸到AHB總線(xiàn)上;進(jìn)行讀操作時(shí),需要AHB產(chǎn)生兩次讀動(dòng)作,這樣才能使有效的32位數據被Blackfin處理器正確接收。第一次讀到有效的32位數據后傳輸高位,第二次讀到后傳輸低位,并且每次讀操作都需要Blackfin發(fā)出兩次讀動(dòng)作,以便組合出AHB的32位地址。這樣就可以突破ADSP-BF537對外只能進(jìn)行4MB空間存取的限制。以上描述過(guò)程的狀態(tài)機轉換圖如圖4所示。

利用ADSP作為SoC系統處理器進(jìn)行SoC驗證時(shí),ADSP進(jìn)行的主要操作是讀寫(xiě)系統內部各個(gè)功能模塊的Memory映射控制寄存器,并且通過(guò)SDRAM控制器對SoC系統的外部SDRAM進(jìn)行數據交換操作。因此總線(xiàn)轉換狀態(tài)機分成讀傳輸和寫(xiě)傳輸兩大部分。

當ADSP需要進(jìn)行外部Memory總線(xiàn)傳輸時(shí),首先會(huì )把相應的ams信號拉低,這時(shí)總線(xiàn)轉換狀態(tài)機應該使AHB進(jìn)入BUSREQ狀態(tài),要求仲裁器釋放AHB總線(xiàn)給CPU(ADSP)。

對于一個(gè)寫(xiě)操作,需定義一個(gè)wr_flag標志位來(lái)確定是否產(chǎn)生AHB寫(xiě)動(dòng)作。ams信號拉低后,經(jīng)過(guò)可配置的寫(xiě)建立時(shí)間后,寫(xiě)控制信號awe被拉低,初始化的wr_flag為0,表明ADSP進(jìn)行的是第一次寫(xiě)操作。進(jìn)入的WRITE_H狀態(tài)用來(lái)鎖存寫(xiě)地址和寫(xiě)數據的高16位,同時(shí)會(huì )把wr_flag置為1,但并不向AHB總線(xiàn)發(fā)出寫(xiě)命令。一個(gè)周期后重新進(jìn)入BUSREQ狀態(tài),等待ADSP下一個(gè)寫(xiě)命令。ADSP發(fā)出第二次寫(xiě)命令后,狀態(tài)機檢測到awe=0和wr_flag=1后進(jìn)入WRITE_L_ADDR狀態(tài),表明需要向AHB發(fā)出寫(xiě)命令,包括hwrite、haddr、htrans、hsize等AHB控制信號。haddr是兩次寫(xiě)操作地址(16位)組合而成的32位地址,htrans=2和hsize=2,表明是非連續傳輸,傳輸數據位寬是32位。下一個(gè)周期,狀態(tài)進(jìn)入WRITE_L_DATA,兩次寫(xiě)操作數據也相應組合成32位。如果AHB slave的hready為高,則32位數據釋放到AHB總線(xiàn)上,同時(shí)復位AHB控制信號,下一個(gè)周期返回IDLE狀態(tài);如果hready為低,則繼續保持WRITE_L_DATA狀態(tài),直到AHB slave把hready拉高有效。如果等待時(shí)間過(guò)長(cháng),可以增加一個(gè)計數器使狀態(tài)機在一定時(shí)間后自動(dòng)返回IDLE狀態(tài),并標記相應的error狀態(tài)寄存器。例如,需要通過(guò)ADSP向haddr[31:0]=0x1234_5678地址內寫(xiě)入hwdata[31:0]=0xaabb_ccdd,則測試平臺(采用vmt slave)模擬ADSP對外進(jìn)行兩次寫(xiě)操作,第一次向addr[18:0]=0x1234內寫(xiě)0xaabb,第二次向addr[18:0]=0x5678內寫(xiě)0xccdd,如圖5所示。第二次寫(xiě)操作后正確產(chǎn)生AHB寫(xiě)操作。

同樣,對于一個(gè)讀操作,狀態(tài)機也需要兩次對AHB發(fā)出讀動(dòng)作,把讀到的slave數據分高低位兩次傳輸給ADSP,不同的是,為了保證AHB讀地址是32位,而不僅僅是ADSP外部Memory地址總線(xiàn)的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。標志位rd_complete用來(lái)區分AHB的兩次讀動(dòng)作,為0時(shí)在READ_TRANSFER狀態(tài)傳輸讀取數據的高16位,被ADSP讀取,下一個(gè)周期后進(jìn)入BUSREQ狀態(tài)等待下一個(gè)讀命令;為1時(shí)在READ_TRANSTER狀態(tài)傳輸讀取數據的低16位,并返回IDLE狀態(tài)。例如需要讀取上述已經(jīng)被寫(xiě)入地址haddr[31:0]=0x1235_5678的值時(shí),第一次ADSP發(fā)出讀addr[18:0]=0x1234,第二次發(fā)出讀addr[18:0]=0x5678,這時(shí)ADSP的data只傳輸高位數據0xaabb,ADSP再發(fā)兩次相同的讀命令后,data才傳輸低位數據0xccdd。對應的讀操作的仿真波形如圖6所示。


如前所述,ADSP外部Memory總線(xiàn)在對外讀寫(xiě)時(shí)可以通過(guò)EBIU_AMBCTlx寄存器來(lái)選擇是否選通握手信號ARDY。為了提高傳輸的可靠性和準確度,在設計轉換模塊時(shí)需要考慮ARDY,如圖5、圖6中的讀寫(xiě)操作時(shí)序圖所示,在每一次數據傳輸完成的最后一個(gè)狀態(tài),需要將ARDY信號置1,然后在下一個(gè)IDLE或BUSREQ狀態(tài)將ARDY清0,這樣可以保證ADSP能正確讀到ADSP外部Memory數據總線(xiàn)上的有效數據,防止因ADSP對外讀寫(xiě)時(shí)序設置不合理而造成系統不能正常運行。

6 FPGA實(shí)現

本模塊的設計是用于FPGA驗證用途的,對于大型SoC系統的FPGA實(shí)時(shí)驗證,往往需要采用大容量的FPGA,因此本設計采用Altera Stratix II EP2S60器件進(jìn)行FPGA驗證。采用Quartus綜合和布局布線(xiàn)后,一共需要140個(gè)ALUT和131個(gè)寄存器,最快時(shí)鐘可以達到300MHz。因為ADSP可以設置外部Memory總線(xiàn)的讀寫(xiě)時(shí)序,所以對外訪(fǎng)問(wèn)的速率不是惟一的。為了實(shí)現16位到32位的轉換雖然增加了讀寫(xiě)的次數,但因為ADSP外部Memory同步時(shí)鐘頻率調整范圍很大,因此本設計完全可以滿(mǎn)足IP核功能驗證對頻率的要求,對于視頻SoC內部基本AHB總線(xiàn)和APB總線(xiàn)上的功能模塊都能正確實(shí)時(shí)驗證?;贏(yíng)DSP-BF537內部嵌入的Blackfin處理器及其DSP接口,已經(jīng)利用本接口模塊成功地驗證了AHB總線(xiàn)上的H264和MPEG一2的encode與decode加速器、Ethernet MAC控制器、SDRAM控制器以及APB總線(xiàn)上的UART、TIMER、AC97、GPIO和LCD控制器等低速外設。

隨著(zhù)驗證環(huán)節在SoC產(chǎn)品開(kāi)發(fā)過(guò)程中所占時(shí)間和開(kāi)銷(xiāo)的迅速增加,Altera和Xilinx在其大容量FPGA芯片產(chǎn)品中,都集成了特定類(lèi)型的CPU作為系統處理器,但它們都受到特定FPGA器件的限制[6]。因此利用ADSP內嵌的強大Blackfin處理器和豐富的DSP外設,可以有效地提高驗證的效率和功能的完整性。本文的總線(xiàn)接口模塊的設計對具有不同讀寫(xiě)時(shí)序的驗證板的正常工作起著(zhù)重要的作用,SoC原型的搭建必然要求本模塊能真實(shí)反映實(shí)際AHB總線(xiàn)的動(dòng)作,這樣對于保證各個(gè)功能模塊的完整性和實(shí)時(shí)工作將起很大的作用。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>