新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 一種基于SoPC的FPGA在線測試方法

        一種基于SoPC的FPGA在線測試方法

        作者: 時間:2011-03-31 來源:網絡 收藏


        2 平臺架構
        系統部件組成見圖2,系統包括Nios II處理器、On-Chip RAM、JTAG UART、EPCS控制器,SYSID、定時器、DMA讀控制器dma_0、DMA寫控制器dam_1,以及自定義DMA讀從外設fifo_control與自定義DMA寫從外設ext_rdfifo_controller。NiosⅡ的復位地址為EPCS控制器,異常地址為On_ChipRAM。DMA讀控制器的讀主端口連接至自定義DMA讀從外設,寫主端口連接至On-Chip RAM,DMA寫控制器的讀主端口連接至On-Chip RAM,寫主端口連接至自定義DMA寫從外設。系統的JTAG UART主要實現JTAG接口的控制,使能夠通過JTAG接口與PC機進行通信。

        3 DMA讀、寫從外設的設計
        測試數據在DMA控制器讀數據之前是存儲在片上FIFO的,而激勵數據是通過DMA控制器寫入片上FIFO的。然而DMA控制器數據讀、寫主端口采用的是Avalon存儲器映射接口(Avalon Memory Mapped Interface,Avalon-MM接口),不能直接對FIFO進行操作,Altera公司也沒有提供相應的控制器核,需要用戶自己開發DMA讀從外設用于控制FIFO把測試數據傳送給DMA控制器,以及DMA寫從外設用于控制FIFO接收DMA控制器的激勵數據。本文開發的DMA讀從外設模塊結構框圖如圖3所示。

        本文引用地址:http://www.104case.com/article/191263.htm

        2.JPG


        DMA讀從外設包括了3個端口,即控制從端口、DMA從端口以及FIFO寫端口。DMA讀從外設的控制從端口包括3個寄存器,分別是狀態寄存器status、控制寄存器control、FIFO已使用字數寄存器usedw。NiosⅡ通過讀/寫這些寄存器獲取此外設的狀態以及實現對此外設的控制。另外,控制端口還包含了中斷接口用于此外設向NiosⅡ發起中斷請求。DMA讀從外設產生中斷請求有2種情況:一是內部FIFO寫滿;二是收到外部測試數據的包結束信號。此時,即使FIFO未寫滿,DMA讀從外設也會發起中斷請求,從而實現采集的測試數據的立即傳輸。DMA從端口采用帶流控制信號的AvalonMM總線,用于實現DMA控制器的測試數據讀操作;管道接口是測試數據寫入此外設的FIFO接口,包括數據總線、寫有效信號和一些狀態信號(如FIFO寫滿信號等)。DMA寫從外設的結構與DMA讀從外設類似,只是沒有中斷請求信號,這里不再詳述。

        4 數據傳輸的NiosⅡ控制
        4.1 DMA控制器的操作
        Altera公司為DMA控制器提供了硬件抽象層(HAL)接口函數,使用這些函數編程需要注意的地方主要有2點:一是要考慮到Cache數據的一致性問題,在調用發送/接收函數之前需要調用相關函數清除數據Cache中的內容;另外一個需要注意的地方是DMA控制器的alt_dma_txchan _send()函數以及alt_dma_rxchan_prepare()函數的第3個參數表示的是請求DMA控制器發送/接收的字節數,而不是字或者雙字、四字數。
        4.2 Host-Base File System
        Altera公司提供的Host-Base File System組件可以使正在目標板上執行的程序讀/寫存儲在主機上的文件,文件的數據是NiosⅡIDE通過Altera下載線纜與目標板進行數據交互的。目標板上的程序可以使用ANSIC標準庫函數如fopen、fread等函數來進行文件的操作,用戶使用Host-Base File System前必須先在NtosII IDE工程中添加這個軟件組件,而且只能運行在Debug模式下。另外,對于上傳至PC的測試數據,也可以使用設置標準輸入/輸出信息存放于主機上的某個文件(在NiosⅡIDE/Run/Run…/Common下指定)而繞開Host-BaseFile System,但是對于主機文件數據下載給目標板的情況,對文件的操作必須添加這個組件。
        4.3 測試數據讀、寫控制
        當需要采集測試數據時,首先在內部用硬件語言編寫模塊把測試數據存入DMA讀從外設的FIFO,然后DMA讀從外設產生中斷請求,NiosⅡ接到中斷請求后,首先查看中斷產生的原因是FIFO寫滿還是數據包結束。若中斷原因是數據包結束,則NiosⅡ讀DMA讀從外設的usedw寄存器獲取FIFO已使用字數,并把這個值作為DMA控制器的傳輸長度發起DMA傳輸;若是FIFO寫滿,則發起固定長度(如FIFO深度)的DMA讀傳輸,DMA傳輸完畢后用ANSIC標準函數fwrite()把數據寫入PC機的數據文件。
        對于存儲在PC機上的數據激勵文件,NiosⅡIDE首先通過ANSIC標準函數fread()讀入NiosⅡ的數據存儲器,在查詢DMA寫從外設中FIFO未滿時,把數據寫入外部的FIFO,完成數據激勵文件的傳輸。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 乐陵市| 石城县| 商丘市| 鄂州市| 大悟县| 洱源县| SHOW| 射洪县| 翁源县| 伊宁县| 昭平县| 葵青区| 长子县| 高平市| 高邮市| 松溪县| 山阴县| 镇赉县| 闽清县| 新绛县| 吴堡县| 清河县| 鱼台县| 遂川县| 康乐县| 扶沟县| 石柱| 武夷山市| 太谷县| 嘉定区| 桂东县| 富蕴县| 长阳| 乌兰浩特市| 博乐市| 溧阳市| 新绛县| 深泽县| 云林县| 称多县| 黄大仙区|