基于FPGA的LVDS高速數據通信卡設計
1.4 FPGA內部結構設計
FPGA內部結構的邏輯設計是本板卡設計的核心部分,圖3所示為本系統FPGA內部結構框圖。本文引用地址:http://www.104case.com/article/154880.htm
LVDS信號接收器接收外部的LVDS數據幀,檢出幀頭,并將幀數據傳送給雙口RAM進行處理,一個數據幀包含32 bit的幀頭和256×32 bit的幀數據。接收的雙口RAM實現數據的乒乓存儲,寫數據的寬度為1 bit,讀數據的寬度為32 bit,以此來實現數據的串并轉換,同時實現數據時鐘域的轉換。LVDS接收數據控制模塊用于產生雙口RAM和SDRAM控制器的地址總線、數據總線和控制總線,實現各接收模塊聯合控制和數據轉移,同時它還負責從SDRAM控制器讀取數據送至FPGA內的FIFO緩沖區,用于PCI總線交互。
LVDS信號發送部分由LVDS發送數據控制、雙口RAM、FIFO緩沖、LVDS信號發送器和DDS控制器組成。LVDS發送數據控制用于產生各模塊的地址、數據和控制總線,實現數據轉移和交互。雙口RAM實現并串轉換和乒乓存儲。LVDS信號發送器為數據幀添加包頭,并連同幀數據以AD98 51產生的發送頻率串行發送出去。
另外,SDRAM控制器是FPGA內用于外部SDRAM控制的模塊,PCI本地總線控制器是FPGA內用于控制PCI9054本地總線交互的模塊,DDS控制器是FPGA內用于外部AD9851控制的模塊。PLL是Ahera FPGA內提供的模擬延遲鎖相環模塊,可以實現系統時鐘的倍頻、分頻及延遲等時鐘控制操作。通過該模塊可以實現系統內不同時鐘域的時鐘分配。
2 軟件設計
系統設備的驅動程序采用Windows下的WDM(Windows Driver Model)驅動程序。目前開發WDM驅動程序通常有3種工具,即Windows DDK、DriverStudio和WinDriver。由于DriverStudio包含完善的源代碼生成工具以及相應的類庫和驅動程序樣本,提供了在VC++下進行驅動程序開發的支持,因此設計中使用DdverStudio來開發WDM驅動程序。
設計的上層應用程序采用Microsoft Virtual Studio作為開發平臺,通過MFC設計了人機交互界面,主要用于完成接收數據顯示存儲、發送數據載入、發送頻率控制字以及PCI控制命令等功能。其程序面板如圖4所示。
3 結果測試
在Ahium Designer 2009平臺上進行板卡硬件原理圖和PCB圖設計,FPGA芯片采用Altera公司的EP1C6Q240C6,使用Quartus II 9.0開發系統實現編程和仿真,完成對電路設計的功能仿真和時序仿真。
在Quartus II中進行引腳分配并編譯完工程后,將設計文件下載到FPGA的配置芯片中。在硬件上將LVDS的發送端和接收端連接以實現自發自收。在PC機的應用程序中設置發送頻率為50 MHz,然后點擊“發送頻率控制字”按鈕發送頻率控制字,載入從0開始的連續累加數字,點擊“開始發送”按鈕發送數據,然后點擊“開始接收”按鈕接收數據。從圖4所示的發送與接收數據顯示可以發現,接收到的LVDS數據與發送的LVDS數據完全一致,系統的發送功能與接收功能符合設計要求。
4 結束語
介紹了基于FPGA和PCI9054的LVDS數據通信卡的設計,通過FPGA實現了LVDS數據的接收發送控制、PCI9054實現了與上位機的數據交互,實現了10~200 Mbit·s-1速率的LVDS數據接收以及10~50 Mbit·s-1任意速率的LVDS數據發送。此板卡的設計,可以有效地應用于某遙測模擬信號源,并對待測設備的LVDS總線協議進行全面測試。
評論