新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PCI IP核在CPCI總線數據采集卡的應用設計

        PCI IP核在CPCI總線數據采集卡的應用設計

        作者: 時間:2016-12-15 來源:網絡 收藏


        DMA控制器由DMA寄存器和DMA狀態機兩個模塊構成。DMA寄存器是主機控制DMA的窗口,包括控制狀態寄存器、地址寄存器、字節寄存器、中斷狀態寄存器和本地地址寄存器。DMA寄存器的地址直接映射到PCI的地址空間,其基地址對應PCI IP核中的配置寄存器Bar0。主機通過設置在存儲器地址空間的DMA寄存器來控制DMA傳輸。DMA狀態機是控制主模式寫傳輸的核心,產生主模式傳輸需求的各種信號。狀態跳轉條件來自DMA寄存器,IP核以及DMA FIFO。狀態機流程圖如圖3所示。

        圖3 DMA狀態機

        以鏈式DMA傳輸為例介紹其流程:主機首先把多組字節寄存器和地址寄存器的值寫入描述符FIFO,每一組字節寄存器和地址寄存器就是一個描述符;主機再寫本地地址寄存器和控制狀態寄存器即啟動了DMA狀態機,開始鏈式的數據傳輸。狀態機跳入裝載DMA狀態,通過對DMA FIFO的讀取將需要的值寫入寄存器中,經寄存器有效狀態進入等待請求狀態。當外部FIFO數據準備好,DMA狀態機向主機發送總線請求信號,并等待主機的總線允許信號,此時狀態機進入等待允許狀態;一旦接收到主機的總線允許信號,整個DMA傳輸開始,狀態機也進入數據傳輸狀態。在數據傳輸周期中,字節寄存器的值逐漸減少直到零時,一個描述符傳輸完成,每一個描述符傳輸完成的時候,狀態機并不進入結束狀態,而是直接進入空閑狀態,開始下一次描述符的傳輸,所以不產生中斷。等到DMA FIFO為空的時候,狀態機認為本次鏈式DMA傳輸完成,進入到結束狀態,此時產生中斷,一次鏈式DMA傳輸結束。

        實驗調試及分析

        PCI_MT64 IP核在CPCI數據采集卡中的應用主要是完成數據的高速傳輸,包括從模式寫傳輸方式的數據下傳(控制命令)和DMA方式的數據上傳(采集卡數據)。在QuartusII9.0環境下,運用Megacore PCI Complier對PCI_MT64進行設置,并對CPCI本地端邏輯進行了綜合編譯,生成網表文件,運用Testbench工具對從模式寫傳輸方式進行仿真,驗證了PCI_MT64 IP核的穩定性。其時序仿真如圖4所示。

        圖4 從模式單周期寫仿真時序

        圖4中是一個對地址為8000H的MEM域空間的單周期寫操作,在第3個時鐘周期,FRAME#低電平有效,此時pci_ad的值是8000H,pci_cben的值是0111B,表示存儲器寫,在TRDY#和IRDY#同時有效的時候,數據由pci_ad傳給l_dato,這里寫入的數據是66666666H。由仿真圖可以看到,pci_ad和l_dato的數據是一樣的,所以從模式單周期寫傳輸正確。單周期讀寫適合少量數據傳輸,不同寄存器控制命令的發送及DMA寄存器的設置都是通過從模式下單周期讀寫實現的。

        為測試PCI_MT64 IP核的本地端邏輯設計,調用基于Windriver編寫的驅動程序和用戶界面實現數據的傳輸。這樣,既驗證了CPCI數據采集卡硬件邏輯的正確性,又驗證了軟件的正確性。其測試結果如圖5所示。


        圖5 應用軟件測試界面

        圖5中數據采樣率為500MHz,輸入信號頻率為16MHz,一個周期的采樣點數N=500/16=31.25,故250個點內應有250/31.25=8個周期的數據。采樣數據的幅值以十六進制格式在列表框中顯示。波形顯示了有限數據的連續傳輸,沒有任何數據丟失,驗證了基于PCI_MT64 IP核在數據采集卡中采用DMA方式傳輸數據的完整性及傳輸速度。

        結束語

        PCI_MT64 IP核能有效的滿足CPCI數據采集卡對數據高速傳輸的要求,實現CPCI接口功能,并能與用戶邏輯配合工作,實現數據的緩存和傳輸。相較于使用PCI專用芯片實現接口功能的方法,本設計具有電路板集成性能高、功耗低、成本低、方便移植等優點。

        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 杭锦旗| 渝北区| 镇雄县| 荆州市| 广州市| 翁牛特旗| 巴林左旗| 游戏| 沅陵县| 古浪县| 福海县| 涟水县| 抚远县| 托克逊县| 梁河县| 大渡口区| 武冈市| 光泽县| 库伦旗| 康马县| 兴山县| 平陆县| 祁连县| 利川市| 荣成市| 精河县| 阳东县| 宁武县| 赫章县| 方正县| 瓮安县| 沽源县| 建宁县| 读书| 望奎县| 资溪县| 通江县| 两当县| 景德镇市| 德江县| 佛山市|