新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于MPC8260處理器和FPGA的DMA接口設計

        基于MPC8260處理器和FPGA的DMA接口設計

        作者: 時間:2010-02-06 來源:網絡 收藏

          1.2 CP命令控制的IDMA傳輸

          的IDMA還可以通過向CP命令寄存器中寫入START_IDMA命令進行內部觸發。每次啟動傳輸以后PowerPC內核就被釋放,傳輸的源地址、目的地址和傳輸數據長度等參數由CP按照在IDMA通道初始化的信息控制執行。每次傳輸的最大長度為4 GB。

          相比握手信號控制的IDMA傳輸,在這種方式下,PowerPC內核除了需要初始化IDMA通道以外還要以命令的形式啟動每一次的傳輸,所以要占用多一些的內核資源。不過,在一次傳輸啟動之后最多可以傳輸4 GB的數據,所以只要每次傳輸的數據長度比較長,內核寫一個寄存器的額外開銷就完全可以忽略不計。同時,由于內部命令觸發方式不需要握手信號,不需要頻繁地每幾個字節就競爭一次總線控制權,所以這種方式的傳輸效率更高、傳輸速度更快。內部命令觸發方式是以空間換時間——用前端大的緩沖區來換取傳輸速度的提升。

          考慮到主控板上軟硬件系統的瓶頸都在于總線帶寬,而存儲資源相對比較豐富,所以選擇CP命令控制的IDMA傳輸作為數據流從到SDRAM的傳輸方式。

          2 DMA傳輸方案設計

          間的數據傳輸接口設計如圖3所示。圖中左側,通過16位數據線、10位地址線、2根中斷請求線和一些讀寫控制信號線連接到右側的。MPC8260通過64位數據線與本地內存SDRAM相連。

        IDMA傳輸設計框圖

        圖3 IDMA傳輸設計框圖

          FPGA內部分配有兩個大的存儲空間,用于輪流緩沖從數據源接收到的數據。任何一個緩沖區收滿后,繼續接收的數據保存到下一個緩沖區,同時以中斷的方式觸發MPC8260啟動相應的IDMA通道把數據傳到SDRAM中。IDMA控制、數據同步和錯誤處理都由MPC8260完成,FPGA只負責收發數據和觸發中斷。下面分別介紹二者的程序設計。

          2.1 MPC8260程序設計

          MPC8260內部的程序處理流程如圖4所示。MPC8260預先初始化兩個IDMA通道:通道的源地址和傳輸數據長度等信息與FPGA中的緩沖區一一對應。當收到FPGA的中斷信號之后,如果此時對應的IDMA通道空閑,則在中斷處理程序中發出CP命令開始接收數據,同時將對應的IDMA通道置忙狀態;否則,在FPGA中可能發生了未讀取的數據被覆蓋的情況,MPC8260進入錯誤處理程序。在數據傳輸結束時由DMA控制器發送CPM內部中斷到內核,在中斷處理程序中一方面要恢復IDMA通道的參數設置,另一方面要把該IDMA通道置閑狀態等待下一次傳輸的開始。

          MPC8260程序的核心部分是IDMA通道設置和中斷處理。

        MPC8260傳輸處理流程

        圖4 MPC8260傳輸處理流程

          2.1.1 IDMA通道設置

          與一般的DMA通道設置一樣,IDMA通道設置的主要參數包括:源地址、目的地址和傳輸數據長度。除此之外,MPC8260的 IDMA通道設置還包括通道模式、緩沖區和中斷配置等,所涉及的寄存器比較多,配置比較復雜。IDMA通道設置的邏輯結構如圖5所示。

        IDMA通道設置的邏輯結構框圖

        圖5 IDMA通道設置的邏輯結構框圖

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


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 平武县| 芜湖市| 德昌县| 巧家县| 鱼台县| 天全县| 西峡县| 斗六市| 义马市| 曲周县| 苍山县| 尼木县| 若羌县| 铁岭县| 安国市| 牡丹江市| 盘锦市| 常德市| 华坪县| 手游| 乐亭县| 临猗县| 大余县| 木兰县| 增城市| 师宗县| 封丘县| 南乐县| 枞阳县| 高清| 东兰县| 济阳县| 阿拉善右旗| 山西省| 上思县| 历史| 金坛市| 德庆县| 永寿县| 灵台县| 伊金霍洛旗|