今天開始將會通過4~5篇文章介紹FPGA和USB3.0通信的相關(guān)知識,這其實是《FPGA和外圍接口(繼續(xù)更新)基于FPGA的網(wǎng)口通信設(shè)計》后續(xù)。PCIe也在籌備中。
完成后也是《Xilinx 7系列FPGA入門級圖像處理-完整版V1》初、中級篇的開始,圖像處理部分也會通過攝像頭前端算法(主要ISP)和后端算法組成,最后應(yīng)該會形成一個初級工業(yè)UVC攝像頭和IPC,平臺還沒選定(不知道有沒有贊助,哈哈),算法基本驗證完畢。
USB3.0介紹
總線、接口和協(xié)議
這里首先提幾個概念,大家應(yīng)該常見到:
USB3.0協(xié)議
USB3.0接口
USB3.0總線
是不是很懵逼?
其實理解了這幾個概念,對于USB的具體協(xié)議就可以有得放矢,不需要看整個復雜又冗長的協(xié)議,針對自己的崗位去選擇。
總線是一組傳輸通道,是各種邏輯器件構(gòu)成的傳輸數(shù)據(jù)的通道,一般由由數(shù)據(jù)線、地址線、控制線等構(gòu)成。接口是一種連接標準,又常常被稱之為物理接口。協(xié)議就是傳輸數(shù)據(jù)的規(guī)則。
我們通常說的USB,既可以是USB信號,也可以是USB接口、USB總線,還可以是USB協(xié)議。之所以這么復雜,主要原因就是每個人對概念認知的差異。舉個簡單的例子,USB總線說的是一組傳輸通道,而USB接口是一種連接標準,兩者之間的關(guān)系就是USB接口的設(shè)備都要通過USB總線來進行通信,而USB總線上走的設(shè)備并不全是USB接口的,像集成USB聲卡,走的就是USB總線,但是沒有走USB接口。在這里USB總線提供了一種通道,這個通道上可以有不同的符合這種通道要求的接口設(shè)備或信號(USB信號或Audio信號)。
USB板載聲卡
對于USB聲卡,外置聲卡時走的就是USB接口,板載聲卡時時走的USB總線而不包含USB接口(物理層滿足要求即可)。
所以總結(jié)一下:
協(xié)議即總體框架,定義接口設(shè)備、器件及信號、總線及通道之間需要滿足的關(guān)系,即要實現(xiàn)信號的傳輸,所有這些組成成員必須通力合作,各自滿足協(xié)議要求的各種必要條件。
對于USB,下圖可以說明這三者關(guān)系:
通過上面的分析,后面會在簡單介紹USB3.0中規(guī)定的幾個重要方面。
USB3.0的分層機制
大家都知道PCIe具有三層結(jié)構(gòu)(事務(wù)層(Transaction Layer),數(shù)據(jù)鏈路層(Data Link Layer)和物理層(Physical Layer)),TCP/IP五層結(jié)構(gòu)(物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層),為什么復雜協(xié)議都具有分層結(jié)構(gòu)呢?
這個由來主要來源于OSI五層參考模型(例說七層OSI參考模型)。
即使簡單的RS232也是遵守上面的分層結(jié)構(gòu),只不過RS232只規(guī)定了物理層,所以現(xiàn)實中很少有人用分層結(jié)構(gòu)進行分析。
USB3.0的分層機制其實和PCIe類似(協(xié)議層(Protocol Layer),鏈路層(Link Layer)和物理層(Physical Layer)),從某種意義上看,可以把USB3.0看做是PCIe變形版本。下圖是分層的通訊結(jié)構(gòu):
這種分層結(jié)構(gòu)即方便標準化,又方便擴展,所以現(xiàn)今大部分協(xié)議都遵循OSI參考模型,希望大家可以理解一下這個模型(推薦的文章中有很多形象的解釋)。
以上部分解釋包含了個人理解,為了通俗易懂,有些表述不是很準確,希望大家留言交流,下面就很俗套的簡單講解官方的文檔了。
USB3.0 與USB2.0的特性比較
硬件接口
物理層
高亮顯示部分:
本層主要定義了高速組件之間互操作性所需的電氣層參數(shù)。
物理層Tx框圖
物理層Rx框圖
不帶電纜(頂部)和帶電纜(底部)的通道示意圖
USB3.0使用8b/10b傳輸代碼。該傳輸代碼的定義與ANSI X3.230-1994(也稱為ANSI INCITS 230-1994)第11條中規(guī)定的定義相同。
加擾功能使用線性反饋移位寄存器(LFSR)實現(xiàn)。在發(fā)送端,加擾應(yīng)用于8b/10b編碼之前的字符。在接收端,對8b/10b解碼后的字符應(yīng)用解擾。無論何時發(fā)送或接收COM符號,LFSR都會重置。
以上就是物理層大致的規(guī)定,詳情請見《USB3.0協(xié)議規(guī)范(英文完整版)(第六節(jié))》。
Link Layer鏈路層
高亮顯示部分:
Link Layer鏈路層主要包括:
?數(shù)據(jù)包幀
?鏈路命令
?鏈路管理和流量控制
?鏈路錯誤規(guī)則/恢復
?重置
?鏈路狀態(tài)機描述
具有幀符號、CRC-16和鏈路控制字的分組報頭
鏈接控制字
鏈接命令結(jié)構(gòu)
鏈接命令字結(jié)構(gòu)
鏈路訓練和狀態(tài)機的狀態(tài)圖
協(xié)議層
高亮顯示部分:
協(xié)議層主要包括:
?數(shù)據(jù)包類型
?數(shù)據(jù)包的格式
?對主機和設(shè)備發(fā)送的數(shù)據(jù)包的預期響應(yīng)
?描述了四種USB 3.0事務(wù)類型
?支持批量傳輸類型的流式傳輸支持
?設(shè)備/主機可能接收/發(fā)送的各種響應(yīng)和數(shù)據(jù)包的定時參數(shù)
整個協(xié)議層非常復雜,數(shù)據(jù)包就差不多十幾種類型,所以這里就不過多介紹了。
編輯:jq
-
主機
+關(guān)注
關(guān)注
0文章
995瀏覽量
35136 -
RS232
+關(guān)注
關(guān)注
13文章
748瀏覽量
94349 -
PCIe
+關(guān)注
關(guān)注
15文章
1239瀏覽量
82657 -
數(shù)據(jù)包
+關(guān)注
關(guān)注
0文章
261瀏覽量
24396
原文標題:FPGA和USB3.0通信-USB3.0協(xié)議介紹
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論