基于PCI Express總線的高速數據傳輸卡設計與實現
本文引用地址:http://www.104case.com/article/162618.htm
在上面的配置原理圖中有兩個下載口:一個是JTAG下載口,一個是AS下載口。其中JTAG下載口是用來下載.sof文件的,下載.sof文件后可以使用quartus II 6.0的邏輯分析儀進行在線調試;另一個下載口是下載.pof文件的,其作用是把程序燒寫進EPCS4配置芯片,在FPGA每次加電開始工作之后,把程序導引到FPGA的內部RAM中,使器件實現設計者要求的邏輯功能。
FPGA作為本地總線的邏輯控制器,負責協調好與FIFO和PEX8311之間的時序關系。系統接收數據時, 首先由驅動程序向PEX8311發送復位信號,通過LRESET復位本地端的FPGA和FIFO,清空FIFO內部數據,并將HF和FF標志置為無效,然后等待數據的輸入。數據和時鐘進入FPGA后, 首先將外界傳入到FPGA中的16位并行數據在兩個CLK周期下合并為32位并行數據, 并在每一個寫時鐘WCLK的上升沿寫入FIFO2。當 FIFO2中的數據達到半滿狀態時, HF標志位有效,通過FPGA向PEX8311發出DMA中斷請求。PC機響應中斷后, 設置 DMA傳輸模式, 傳輸字節數及地址信號等。PEX8311通過LHOLD申請控制本地總線, 待收到FPGA發出的 LHOLDA響應信號后獲得本地總線的控制權, 并立即啟動4字節突發模式的Block DMA周期。FPGA在收到有效的LW/R讀信號和ADS地址選通信號后, 發出Ready本地準備好應答信號, 同時使能FIFO2的讀允許 REN和輸出允許OE。在傳輸最后一個數據時, PEX8311發出BLAST信號, FPGA置FIFO讀使能和輸出使能無效, 并取消Ready從而結束DMA周期。系統發送數據時,FPGA將計算機寫入FIFO1中的32位數據拆分成兩個16位數據送入并串轉換芯片再經過驅動芯片發送到測試臺。
3 軟件設計
本系統軟件設計包括驅動程序和應用程序兩部分。為了降低開發難度、縮短時間,又不使所開發的驅動程序效率太低,本文選用DriverStudio來開發PCI-E的功能驅動程序。應用層軟件采用VC++6.0編寫,按用戶要求運行于Windows2000/WindowsXP平臺。通過和人機交互界面接收用戶的設置,然后把這些設置傳遞至驅動程序中,由驅動程序對硬件進行初始化和配置,最后應用程序從驅動程序中讀寫數據。本應用程序采用了多線程的方式與驅動程序進行交互通信。
4 性能測試
信號源的數據格式可以根據需要設置,軟件默認設置為遞增數據。圖5為自檢信號源數據,該數據為00-FF遞增數據。將信號源數據下載到地面控制臺RAM中。
下載信號源成功后,將地面控制臺RAM中的數據讀入上位機來驗證是否信號源正確。通過圖6所示的數據分析軟件可以詳細地檢驗從RAM中讀回的數據是否準確。
此數據波形驗證了PCI Express傳輸卡能夠實時無誤地傳輸數據。通過功能測試及數據分析可知,系統實現了任務中提出的功能要求,達到了技術指標。
評論