基于USB 2.0總線的航天設備地面檢測系統
本系統分別采用2和6號端點分別負責輸出和輸入數據的處理工作,兩個端點分別有512 B×4的FIFO,此時CY7C68013A的內部FIFO配置如圖4所示。本文引用地址:http://www.104case.com/article/202441.htm
2.2 上位機應用軟件
2.2.1 DMA傳輸方式
除了通信協議開銷、帶寬分配以及USB使用的電磁環境等之外,在高速數據傳輸系統中,還必須考慮操作系統對USB數據傳輸速率的影響。
PC機的通用操作系統Windows并不是一個嚴格的實時操作系統,所以在進行USB數據傳輸的過程中,操作系統的分時調度策略會給數據傳輸速率帶來很大的影響。Windows的每個時間片長度約為20 ms,如果要經過操作系統的調度,USB數據收發進程將會在占用CPU一個時間片之后就交出控制權,等待下次獲得CPU控制權,從而導致數據收發速率的降低。
因此,為了提高USB傳輸速率,系統應當采用DMA方式傳輸數據,也就是使數據的傳輸不用經過CPU的處理,從而減去操作系統分時機制的影響。Cypress公司提供了相關的支持DMA傳輸方式的接口即“CYAPI”,它較好將底層操作函數封裝為9個類,便于操作;同時CYAPI內部集成了多線程的操作,數據開始傳輸之后用戶便可以返回繼續操作其他的內容,不需要用戶在程序中自己處理相關的線程操作或者等到數據收發完畢再繼續進行其他工作。
2.2.2 軟件操作
為了提高數據處理能力,本系統不在數據接收的過程中處理數據,而是將數據直接存儲,數據傳輸完畢之后再進行相關分析處理,因為數據處理過程也會引入操作系統時間片的延時。為了提高數據的接收和存儲速度,系統采用多線程結合乒乓存儲的方式接收、存儲數據。乒乓存儲是通常在硬件設計中使用的快速存儲方式,應用到本系統中,一個線程接收數據的時候,另一個線程便存儲數據,來回對2個內存區域分別進行操作,從而減少系統延時,加快系統的處理速度,詳細的流程如圖5所示。
如圖5所示,本系統采用了兩個線程Read和Write用于數據的接收和存儲,線程Read專用于讀取USB接口傳輸的數據并存儲到Buffer中,線程Write則從Buffer中提取數據并存儲到文件中。兩個線程通過Full和Empty來互斥其對緩存操作,從而保證數據存儲的正確。
本系統采用Cypress公司設計的專用函數接口CYAPI進行軟件設計,CYAPI相對于以前的接口具有很大的優點,它集成了DMA和多線程的操作,提高系統速度的同時簡化了用戶的軟件開發。使用CYAPI進行數據傳輸操作最主要的是正確的使用Begin-DataXfer、WaitForXfer和Fini-sh DataXfer三個函數,同時應該注意的是,在數據接收發送過程中應該對函數FinishDataXfer的返回值加以判斷,否則在惡劣的電磁環境中會出現數據傳輸錯誤的情況。
3 結語
本系統利用USB 2.0總線實現了各種接口的轉換,利用PC機的一個USB口便轉換為多種接口,很好的契合了航天設備檢測中設備接口種類多,數據格式雜的應用背景。利用一個USB接口便完成了系統需求,極大的節省了PC機資源,同時一個電路板便可以解決大量設備的檢測驗證工作,大大簡化便捷了相關的工作。采用可編程邏輯器件處理相關接口轉換及數據收發工作,只需要改變FPGA代碼便可以實現不同任務的需求,極大的提高的系統的可重復利用率。
實踐證明,USB 2.0的高速性能夠滿足多種接口速度的需要,熱插拔性極大的方便了該系統的使用,該地面檢測系統已經運用于多個航天器的檢測中,很好的滿足了項目的需求,實現了系統設計的目的。
評論