基于MPC8260和FPGA的DMA接口設(shè)計
2.1.2 中斷處理
本文引用地址:http://www.ex-cimer.com/article/82690.htm系統(tǒng)設(shè)計中使用了兩類中斷方式: IRQ引腳引入的外部中斷和CPM觸發(fā)的內(nèi)部中斷。初始化過程包括:使能對應(yīng)的中斷屏蔽位、選擇中斷優(yōu)先級、連接對應(yīng)中斷向量號和中斷服務(wù)程序等。為了保證較好的傳輸實(shí)時性,需要把中斷優(yōu)先級盡量設(shè)得高一些。
與一般中斷處理過程的區(qū)別在于:MPC8260中斷處理控制器采用分級結(jié)構(gòu)來擴(kuò)展中斷信號總數(shù)。CPM內(nèi)的中斷就是二級中斷,需要通過CPM中斷控制器和SIU中斷控制器兩級中斷控制。本設(shè)計中用來通知內(nèi)核本次傳輸過程結(jié)束的中斷是CPM內(nèi)最后一個BD表傳送結(jié)束的信號BC(BD Completed)。BC信號和命令結(jié)束等幾個信號一起通過SIU中斷掛起寄存器中的IDMA位向內(nèi)核發(fā)出中斷信號。所以在中斷初始化時要同時有效IDMA屏蔽寄存器和SIU中斷屏蔽寄存器對應(yīng)的比特位。具體的中斷初始化實(shí)例如下:
尤其要注意的是,中斷處理程序結(jié)束之前的清SIU中斷掛起寄存器,不能直接在SIU中斷掛起寄存器的IDMA位寫1,而是要通過在IDMA事件寄存器的BC位寫1來間接地清SIU中斷掛起寄存器。
2.2 FPGA部分程序
系統(tǒng)中的FPGA芯片選用Xilinx公司的VirtexII 3000。利用VirtexII內(nèi)嵌的大容量BlockRAM配置為單口RAM來做緩沖區(qū),在程序中可以用Xilinx的集成開發(fā)環(huán)境ISE 7.1i內(nèi)部自帶的IP核生成。對FPGA來說,由于數(shù)據(jù)的輸入/輸出都是順序的,所以兩端都只要1根地址線用于區(qū)分相鄰的兩個數(shù)據(jù)就可以了。地址線配合內(nèi)部計數(shù)器構(gòu)成讀寫指針,當(dāng)寫指針從緩沖區(qū)的一半跳到另外一半時發(fā)相應(yīng)的中斷信號。
FPGA設(shè)計的關(guān)鍵部分是和MPC8260的總線接口設(shè)計。通過適當(dāng)選擇緩沖區(qū)的起始地址和長度,可以使MPC8260讀FPGA都以突發(fā)的方式進(jìn)行。設(shè)計中,MPC8260對FPGA的突發(fā)讀寫遵循自己配置的UPM模式,所以要綜合考慮UPM模式設(shè)計和FPGA讀寫邏輯設(shè)計。在設(shè)計UPM模式時,可以在每次MPC8260鎖定數(shù)據(jù)總線數(shù)據(jù)之前由通用功能信號線(General Purpose Line,GPL)產(chǎn)生一個下降沿通知FPGA往數(shù)據(jù)總線上寫新數(shù)據(jù);或者通過GPL把總線時鐘送到FPGA達(dá)到收發(fā)同步來完成MPC8260與FPGA之間的讀寫。
3 總結(jié)
結(jié)合MPC8260的中斷處理和IDMA傳輸機(jī)制,設(shè)計了一種MPC8260和FPGA之間的高速數(shù)據(jù)傳輸接口。測試結(jié)果顯示:采用循環(huán)讀的方式把FPGA中的數(shù)據(jù)復(fù)制到SDRAM中,數(shù)據(jù)傳輸速率只有11 Mbps左右;而采用本文介紹的IDMA方式,最高速率能夠達(dá)到500 Mbps,并且內(nèi)核占用率較低,實(shí)驗結(jié)果完全能夠滿足系統(tǒng)設(shè)計需求。本研究對于PowerPC系列CPU的接口設(shè)計有一定的參考價值。
參考文獻(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.
評論