新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于MPC8260處理器和FPGA的DMA接口設(shè)計(jì)

基于MPC8260處理器和FPGA的DMA接口設(shè)計(jì)

作者: 時(shí)間:2010-02-06 來(lái)源:網(wǎng)絡(luò) 收藏

  BD(Buffer Descriptors)表是用于指定傳輸方式、源/目的地址和數(shù)據(jù)長(zhǎng)度等基本信息的數(shù)據(jù)結(jié)構(gòu)。BD表的基地址由參數(shù)RAM中IBASE寄存器的值指定。除IDMA BD表的基地址之外,IDMA參數(shù)RAM內(nèi)還存放有IDMA BD指針、IDMA傳輸緩沖區(qū)的起始地址、IDMA傳輸緩沖區(qū)大小和DMA通道模式等IDMA通道信息。IDMA參數(shù)RAM的基地址由參數(shù)RAM中IDMAx_BASE寄存器的值指定。IDMAx_BASE寄存器的地址是固定的,如IDMA1_BASE在偏移RAM基地址0x87FE的位置。CP就是通過(guò)IDMAx_BASE寄存器找到IDMA參數(shù)RAM,再通過(guò)IBASE找到BD表的順序初始化IDMA通道的。具體的寄存器配置可以參考文獻(xiàn)[1]第19章的IDMA編程示例。

  為了提高通道的傳輸速率,系統(tǒng)中IDMA通道初始化應(yīng)該注意以下幾點(diǎn):

 ?、?需要在SIU中為配置UPM模式控制之間的突發(fā)讀寫。不要使用通用目的片選機(jī)(GeneralPurpose Chipselect Machine,GPCM)模式。因?yàn)?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/MPC8260">MPC8260內(nèi)存控制的GPCM模式不支持突發(fā)傳輸,IDMA工作在GPCM模式下一方不論傳輸數(shù)據(jù)的長(zhǎng)度是否滿足突發(fā)的要求,都只能以普通的單次讀寫進(jìn)行。

 ?、?把當(dāng)作存儲(chǔ)器操作,IDMA工作在內(nèi)存到內(nèi)存的雙地址模式下,緩沖區(qū)設(shè)為最大的2 KB。

 ?、?BD表的配置應(yīng)該與FPGA中的緩沖區(qū)一一對(duì)應(yīng)。BD表結(jié)構(gòu)中的CM(Continuous Mode)位應(yīng)該設(shè)置為緩沖鏈模式,在每一個(gè)BD表傳輸完之后,清BD表的有效位;同時(shí),CP根據(jù)下一個(gè)BD表的值自動(dòng)裝載IDMA寄存器進(jìn)行后面的傳輸。

  IDMA通道初始化以后等待CP發(fā)出START_IDMA命令開(kāi)始傳輸。在最后一個(gè)BD表傳輸結(jié)束時(shí)觸發(fā)中斷信號(hào)通知PowerPC內(nèi)核本次傳輸過(guò)程的完成。傳輸過(guò)程中會(huì)發(fā)生改變的通道設(shè)置寄存器包括IDMA BD表指針、源地址、目的地址和BD表有效位等,所以在BD表傳輸結(jié)束的中斷處理程序中需要恢復(fù)這些寄存器為下一次傳輸作準(zhǔn)備。

  2.1.2 中斷處理

  系統(tǒng)設(shè)計(jì)中使用了兩類中斷方式: IRQ引腳引入的外部中斷和CPM觸發(fā)的內(nèi)部中斷。初始化過(guò)程包括:使能對(duì)應(yīng)的中斷屏蔽位、選擇中斷優(yōu)先級(jí)、連接對(duì)應(yīng)中斷向量號(hào)和中斷服務(wù)程序等。為了保證較好的傳輸實(shí)時(shí)性,需要把中斷優(yōu)先級(jí)盡量設(shè)得高一些。

  與一般中斷處理過(guò)程的區(qū)別在于:中斷處理控制器采用分級(jí)結(jié)構(gòu)來(lái)擴(kuò)展中斷信號(hào)總數(shù)。CPM內(nèi)的中斷就是二級(jí)中斷,需要通過(guò)CPM中斷控制器和SIU中斷控制器兩級(jí)中斷控制。本設(shè)計(jì)中用來(lái)通知內(nèi)核本次傳輸過(guò)程結(jié)束的中斷是CPM內(nèi)最后一個(gè)BD表傳送結(jié)束的信號(hào)BC(BD Completed)。BC信號(hào)和命令結(jié)束等幾個(gè)信號(hào)一起通過(guò)SIU中斷掛起寄存器中的IDMA位向內(nèi)核發(fā)出中斷信號(hào)。所以在中斷初始化時(shí)要同時(shí)有效IDMA屏蔽寄存器和SIU中斷屏蔽寄存器對(duì)應(yīng)的比特位。具體的中斷初始化實(shí)例如下:

程序

  尤其要注意的是,中斷處理程序結(jié)束之前的清SIU中斷掛起寄存器,不能直接在SIU中斷掛起寄存器的IDMA位寫1,而是要通過(guò)在IDMA事件寄存器的BC位寫1來(lái)間接地清SIU中斷掛起寄存器。

  2.2 FPGA部分程序

  系統(tǒng)中的FPGA芯片選用Xilinx公司的VirtexII 3000。利用VirtexII內(nèi)嵌的大容量BlockRAM配置為單口RAM來(lái)做緩沖區(qū),在程序中可以用Xilinx的集成開(kāi)發(fā)環(huán)境ISE 7.1i內(nèi)部自帶的IP核生成。對(duì)FPGA來(lái)說(shuō),由于數(shù)據(jù)的輸入/輸出都是順序的,所以兩端都只要1根地址線用于區(qū)分相鄰的兩個(gè)數(shù)據(jù)就可以了。地址線配合內(nèi)部計(jì)數(shù)器構(gòu)成讀寫指針,當(dāng)寫指針從緩沖區(qū)的一半跳到另外一半時(shí)發(fā)相應(yīng)的中斷信號(hào)。

  FPGA設(shè)計(jì)的關(guān)鍵部分是和MPC8260的總線接口設(shè)計(jì)。通過(guò)適當(dāng)選擇緩沖區(qū)的起始地址和長(zhǎng)度,可以使MPC8260讀FPGA都以突發(fā)的方式進(jìn)行。設(shè)計(jì)中,MPC8260對(duì)FPGA的突發(fā)讀寫遵循自己配置的UPM模式,所以要綜合考慮UPM模式設(shè)計(jì)和FPGA讀寫邏輯設(shè)計(jì)。在設(shè)計(jì)UPM模式時(shí),可以在每次MPC8260鎖定數(shù)據(jù)總線數(shù)據(jù)之前由通用功能信號(hào)線(General Purpose Line,GPL)產(chǎn)生一個(gè)下降沿通知FPGA往數(shù)據(jù)總線上寫新數(shù)據(jù);或者通過(guò)GPL把總線時(shí)鐘送到FPGA達(dá)到收發(fā)同步來(lái)完成MPC8260與FPGA之間的讀寫。

  3 總結(jié)

  結(jié)合MPC8260的中斷處理和IDMA傳輸機(jī)制,設(shè)計(jì)了一種MPC8260和FPGA之間的高速數(shù)據(jù)傳輸接口。測(cè)試結(jié)果顯示:采用循環(huán)讀的方式把FPGA中的數(shù)據(jù)復(fù)制到SDRAM中,數(shù)據(jù)傳輸速率只有11 Mbps左右;而采用本文介紹的IDMA方式,最高速率能夠達(dá)到500 Mbps,并且內(nèi)核占用率較低,實(shí)驗(yàn)結(jié)果完全能夠滿足系統(tǒng)設(shè)計(jì)需求。本研究對(duì)于PowerPC系列CPU的接口設(shè)計(jì)有一定的參考價(jià)值。

  參考文獻(xiàn)

  [1] Freescale. MPC8260 PowerQUICCTM II Family Reference Manual .MPC8260RM Rev.2, 2005-12.

  [2] Freescale. MPC8260 PowerQUICCTM II IDMA Functionality.Rev. 3,2006-02.

  [3] Freescale. MPC8260 IDMA Timing Diagrams. Rev. 4,2006-07.

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: FPGA MPC8260 嵌入式 DMA接口

評(píng)論


相關(guān)推薦

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

關(guān)閉