<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種ARM+DSP協(xié)作架構(gòu)的FPGA驗(yàn)證實(shí)現(xiàn)

          一種ARM+DSP協(xié)作架構(gòu)的FPGA驗(yàn)證實(shí)現(xiàn)

          作者:張暉 謝凱年 時(shí)間:2008-05-26 來源:電子技術(shù)應(yīng)用 收藏

            2.1 負(fù)責(zé)準(zhǔn)備階段

          本文引用地址:http://www.ex-cimer.com/article/83026.htm

            從Flash中運(yùn)行啟動(dòng)代碼,通過配置PLD來連接 X3S5000中的AHBC,目的在于通過AHBC同 X2V6000中的 Core進(jìn)行交互。

            代碼喚醒外部DMA通過以太網(wǎng)口從PC機(jī)端搬運(yùn)第一幀待處理的圖像數(shù)據(jù),放到雙核公用的外部SRAM memory既定的地址段中。然后,ARM Core通過AHBC控制 X2V6000中的 Core。

            這里需要說明兩點(diǎn):

            (1) FPGA開發(fā)板的的圖像傳輸是通過專門配置的帶有LXT972芯片的以太網(wǎng)口與PC機(jī)的以太網(wǎng)口進(jìn)行交互, 如圖3所示。圖3左邊的以太網(wǎng)子板即圖1中的Ethernet模塊。

                  

            (2) Core頂層的wrapper是支持AMBA協(xié)議的TOP Module,其中包括一個(gè)Debug Sub-Module。ARM就是通過讀寫Debug Sub-Module的控制寄存器來控制DSP Core的啟動(dòng)、停止等工作狀態(tài)的。所以說,Debug Sub-Module是整個(gè)FPGA工程最為關(guān)鍵的部件之一,它直接關(guān)系到ARM和DSP之間的交互。本項(xiàng)目中,利用Debug Sub-Module實(shí)現(xiàn)對DSP Core的復(fù)位、啟動(dòng)、暫停、斷點(diǎn)設(shè)置、單步運(yùn)行、讀寫內(nèi)部SRAM、讀DSP Core寄存器等一系列功能,大大方便了調(diào)試工作,同時(shí)也非常便捷地實(shí)現(xiàn)了ARM和DSP的交互運(yùn)行。

            2.2 DSP運(yùn)行階段

            ARM寫控制寄存器使DSP Core復(fù)位,并把小目標(biāo)識(shí)別的程序代碼寫入DSP內(nèi)部的SRAM0中等待DSP啟動(dòng)運(yùn)行,由ARM控制DSP Core運(yùn)行起來。DSP Core運(yùn)行完程序之后,會(huì)在外部SRAM的一個(gè)地址上返回一個(gè)標(biāo)志數(shù)(0x00ff00ff),同時(shí)進(jìn)入idle狀態(tài),完全釋放對AHBC的操作。每隔一段時(shí)間,ARM檢查一下相應(yīng)地址上的這個(gè)標(biāo)志數(shù),如果沒有,則表示程序還未運(yùn)行完,ARM繼續(xù)檢查;如果有,則表示程序已經(jīng)運(yùn)行完畢,ARM將進(jìn)入下一步操作。

            選用這種流程有兩個(gè)特點(diǎn):(1)ARM完全實(shí)現(xiàn)了控制和輔助的作用,而運(yùn)行部分則完全由DSP負(fù)責(zé),各自分工明確。(2)ARM和DSP實(shí)現(xiàn)了很好的交互,嚴(yán)謹(jǐn)?shù)乜刂屏肆鞒痰倪\(yùn)行步驟。

            2.3 ARM控制停止返回

            ARM通過寫控制寄存器把DSP Core停下來,從外部SRAM的既定地址段中取出DSP Core運(yùn)行完所返回的小目標(biāo)的坐標(biāo)信息,并通過以太網(wǎng)口返回到PC機(jī)端,在顯示界面的此幀圖像上顯示出小目標(biāo)。圖4為其中一幀圖像的處理結(jié)果顯示。

            ARM擦除DSP Core運(yùn)行完畢的標(biāo)志數(shù),同時(shí)判斷當(dāng)前處理完的圖像是否為最后一幀,如果不是,則流程跳回DMA搬運(yùn)步驟去執(zhí)行下一幀圖像,同時(shí)加上必要的控制,避免寫程序的重復(fù)執(zhí)行;如果是,則結(jié)束整個(gè)程序運(yùn)行。這樣循環(huán)下去,直到所有圖像序列處理完畢。

            這個(gè)過程充分顯示了ARM在控制流程的判斷跳轉(zhuǎn)方面所起到的主要作用。由ARM的平臺(tái)來實(shí)現(xiàn)對整個(gè)視頻序列的最終處理控制過程,顯得非常清晰便捷。

            3 體系架構(gòu)的調(diào)試

            3.1 FPGA的選取

            FPGA的選取一定要合適(這里主要針對容量而言)。以本開發(fā)過程為例, Xilinx的兩片F(xiàn)PGA(X2V6000和X3S5000)的容量分別為600萬門和500萬門左右,而項(xiàng)目的硬件代碼容量卻稍微超出了這個(gè)范圍,所以不得不對一些模塊作精簡和舍棄。即便如此,兩片F(xiàn)PGA的利用率都已大于90%。

            一般來說,F(xiàn)PGA的利用率達(dá)到70%或多一些是比較好的,太高的利用率反而容易造成板子的不穩(wěn)定。本開發(fā)過程就有一些不穩(wěn)定因素,例如,因一些數(shù)據(jù)線、地址線的個(gè)別位傳輸值不正確,需要花大量的精力才能追查出這些存在問題的線路,然后更換Bonding連接,選用其他的通路。同時(shí),所造成的不穩(wěn)定因素也會(huì)影響下載代碼的運(yùn)行速度。目前經(jīng)過Xilinx的軟件工具ISE綜合出來的FPGA可下載代碼受時(shí)序約束,所能達(dá)到的速度上限為25MHz時(shí)鐘頻率。

            容量大的FPGA的成本同樣也會(huì)比較高,所以在研發(fā)需要和成本之間必須找到一個(gè)比較好的平衡點(diǎn),這在整個(gè)電路設(shè)計(jì)階段就要預(yù)測得比較好,但這不太容易做到,需要經(jīng)驗(yàn)的積累。

            3.2 觀測點(diǎn)的預(yù)留

            開發(fā)板在設(shè)計(jì)電路圖階段,一定要預(yù)留出足夠的觀測點(diǎn)。這一點(diǎn)非常重要。因?yàn)椋涸诤髞淼恼{(diào)試過程中,當(dāng)出現(xiàn)問題時(shí)需要追查線路,而目前的FPGA調(diào)試軟件還不成熟,并不像RTL代碼前端仿真那樣方便,能夠把所有的信號(hào)都輸出到屏幕上觀看,而且FPGA調(diào)試時(shí)使用的邏輯分析儀只能夠測量觀測點(diǎn)的信號(hào)波形,如果觀測點(diǎn)不夠的話,當(dāng)出現(xiàn)邏輯錯(cuò)誤時(shí),根本沒辦法追查下去,找不到問題的所在,或者需要做相當(dāng)繁瑣的重復(fù)工作,才能把估計(jì)存在問題的線路節(jié)點(diǎn)信號(hào)連(Bonding)到僅有的觀測點(diǎn)上。如果經(jīng)排查,估計(jì)得不正確或者需要進(jìn)一步拉出更多的其他信號(hào)時(shí),又需要重新花時(shí)間將節(jié)點(diǎn)新信號(hào)連到觀測點(diǎn)。這樣,會(huì)耗費(fèi)非常多的時(shí)間和精力。因?yàn)閷γ恳淮涡碌墓?jié)點(diǎn)生成一版新的FPGA下載代碼都很煩瑣。

            所以,從電路的設(shè)計(jì)之初,預(yù)留出足夠的觀測點(diǎn),盡量將更多的節(jié)點(diǎn)信號(hào)連到觀測點(diǎn)上。這樣將會(huì)極大地方便調(diào)試工作,加快整個(gè)研發(fā)進(jìn)程。

            3.3 FPGA調(diào)試的原則

            FPGA的調(diào)試應(yīng)該按照由簡入繁的步驟進(jìn)行。這樣可以方便研發(fā)人員快速地熟悉板子,并且容易定位問題的所在。

            由于整個(gè)ARM+DSP體系結(jié)構(gòu)是由ARM加上兩塊FPGA共同工作,相對比較復(fù)雜,相互之間交互性比較多。所以,在調(diào)試整個(gè)程序之前,可以先通過另外的小程序和硬件結(jié)構(gòu)分別調(diào)通ARM對兩片F(xiàn)PGA的交互;然后,再用較為簡單的功能模塊調(diào)試好三塊片子的簡單交互功能;最后,把整個(gè)大程序應(yīng)用在上面進(jìn)行嘗試。這樣一步步下來,出現(xiàn)問題時(shí),就比較容易發(fā)現(xiàn)問題所在,方便調(diào)試。

            例如,可以先不考慮FPGA X2V6000,單獨(dú)調(diào)試ARM通過FPGA X3S5000中的AHBC對外部SRAM讀寫的控制,成功之后,再將FPGA X2V6000考慮進(jìn)去,但先不考慮Debug模塊對DSP的控制,單獨(dú)將Debug模塊提取出來,下載到FPGA X2V6000當(dāng)中;然后再調(diào)試ARM通過FPGA X3S5000中的AHBC對于FPGA X2V6000當(dāng)中的Debug模塊的控制寄存器的讀寫情況等。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();