7天內完成基礎USB開發(1)——免韌體USB開發介紹
USB介面廣泛應用於各種外設與PC或嵌入式系統的通訊,在各行各業發揮著巨大的作用。如今已經成為最常見的數字介面,全球總裝置量超過150億,並以每年20億的數量遞增(by CNN)。
然而USB的裝置的開發卻有著不小的難度。USB功能主要由USB介面晶片來實現,主流的方案有Cypress、FTDI。其中Cypress的FX2(CY7C68013A)/FX3(CYUSB3014)系列由於技術領先,最受市場青睞。
介面晶片廠商一般會提供一套基礎的函式庫給使用者用來開發上位機程式和介面晶片韌體程式用於與外設的資料通訊及控制。
為了提高和外部裝置的適應性,Cypress內建了模擬FPGA狀態機功能的GPIF介面(FX3是8/16/32位),能夠幫助使用者實現一些基礎的介面通訊。
然而GPIF的狀態機功能是模擬出來的,有諸多限制,易用度上和真正的FPGA狀態機有一定的差距,很多朋友普遍反映比較難搞,比如:
- 能使用的輸入輸出控制訊號只有14根@32bits位寬;
- 每一個狀態的跳出路徑不能超過2個;
- 狀態機跳轉條件不能使用超過4個觸發變數;
- 只能使用3個計數器功能,其中一個計數器是16位,另外兩個是32位;
- 內建的標誌訊號在不同的GPIF配置下會有不同的延遲時間;
- 最讓人頭疼的是GPIF狀態機沒有辦法像FPGA狀態機一樣靈活除錯,如果碰上覆雜一些的應用,需要花費大量的時間在除錯上。
USB介面的通訊速度比較快,3.0達到300MiB/s+,3.1能達到600MiB/s+。在設計的過程中需要加入大容量SDRAM快取來提高傳輸可靠性,由於USB介面晶片沒有整合SDRAM控制器,並且下一代介面晶片的資料介面由並行口升級成了LVDS(FX3PD),這些都需要加入FPGA來提供輔助支援。
所以,USB產品開發的軟體部分和硬體部分都有著一定的難度,如果想實現複雜的功能,必須衝破介面晶片廠商提供的軟硬體資料設計出更完善的硬體系統和更復雜的上層軟體。
如果能夠把USB各種應用下的複雜開發過程歸納總結,在軟硬體上將其公共部分提取出來,把USB介面晶片的韌體做成統一化,並重新開發出一套面向FPGA的上位機API和FPGA IPcore。會極大的縮減USB新專案的開發風險、難度和花費,提升開發靈活度,開發出更復雜的USB產品應用。這就是USB免韌體開發方案。
免韌體開發並不是指沒有韌體程式而是韌體不需要修改,直接呼叫上位機API開發FPGA USB應用。
如需更多資訊,請搜尋www.pionway.com
預告:7天內完成基礎USB開發(2)——FPGA+USB高速資料採集系統的硬體設計技巧