总线及数据传输技术【待完善】
作者:桂。
時間:2017-08-05 ?14:41:36
鏈接:http://www.cnblogs.com/xingshansi/p/7290224.html?
前言
最近的工作內容涉及硬件,三個高頻詞匯:總線、接口、協議,例如I2C、PCIe、RS-232C、RapidIO(SRIO)以及Aurora等等,往細里說還有數據的帶寬、位寬、工作頻率、數據傳輸可靠性等等,打算不定期更新,梳理出一篇文章,理理頭緒。
知識范疇:高速串行接口、計算機網絡基礎(OSI-Open System Interconnection的七層協議:不同設備的互聯以及數據交換)、總線(BUS)技術
?一、OSI七層協議
OSI 模型各層間關系和通訊時的數據流向如圖所示:
這個類似于今天的快遞:一個名叫主機A的男孩有封信(數據)要寄給名叫主機B的姑娘:
主機A → 快遞小哥,快遞小哥根據數據特性對物品打包并填寫的信息 → 成為包裹(數據添加了一些協議頭)→ 根據地址特性,不同的卡車/飛機運往其他城市 → 流程逆過來,直到一個名叫主機B的用戶收到包裹,流程結束。
各層的解釋:
- 應用層:就是應用軟件使用的協議,如郵箱使用的POP3,SMTP、遠程登錄使用的Telnet、獲取IP地址的DHCP、域名解析的DNS、網頁瀏覽的http協議等;這部分協議主要是規定應用軟件如何去進行通信的。
- 表示層:決定數據的展現(編碼)形式,如同一部電影可以采樣、量化、編碼為RMVB、AVI,一張圖片能夠是JPEG、BMP、PNG等。
- 會話層:為兩端通信實體建立連接(會話),中間有認證鑒權以及檢查點記錄(供會話意外中斷的時候可以繼續,類似斷點續傳)。
- 傳輸層:將一個數據/文件斬件分成很多小段,標記順序以被對端接收后可以按順序重組數據,另外標記該應用程序使用的端口號及提供QOS。(不同的應用程序使用不同計算機的端口號,同樣的應用程序需要使用一樣的端口號才能正常通信)
- 網絡層:路由選路,選擇本次通信使用的協議(http、ftp等),指定路由策略及訪問控制策略。(IP地址在這一層)
- 數據鏈路層:根據端口與MAC地址,做分組(VLAN)隔離、端口安全、訪問控制。(MAC地址在這一層)處理VLAN內的數據幀轉發,跨VLAN間的訪問,需要上升到網絡層。
- 物理層:將數據最終編碼為用0、1標識的比特流,然后傳輸。(例如將題主頭像的圖片,變為一串01100111100這樣的數字來表示)。
以上參考知乎。
例如一些常見的網絡互聯設備:
1)中繼器(repeater):物理層的網絡互聯設備;
2)網橋(bridge):網橋屬于作用在物理層和數據鏈路層的存儲轉發設備,在兩個相同類型的網段之間進行幀中繼,在局域網之間存儲或轉發數據幀。
網橋用于在局域網中連接同一類型的不同網段,互連采用不同傳輸速率、不同傳輸介質的網絡,即網橋所鏈接的不同網段之間,在網橋兩側的網絡中,其網絡協議和地址應該一致。
3)路由器(router):路由器工作在物理層、數據鏈路層和網絡層,它比中繼器和網橋更復雜一點,并包含有軟件。在路游擊所包含的地址之間,可能存在若干路徑,路由器可以為某次特定的傳輸選擇一條最好的路徑。
4)網關:網關又被稱為網間協議變換器,用以實現不同通信協議的網絡之間的互聯,一個普通的網關可用于連接兩個不同的總線/網絡,并由網關進行協議轉換,提供更高層次的接口。網關允許在具有不同協議和報文組的兩個網絡之間傳輸數據,在報文從一個網段到另一個網段的傳送中,網關提供了一種方式把報文重新封裝,形成新的報文組。
?
二、高速數據傳輸
目前涉及的高速數據傳輸都是利用串口(并口不是更快?參考知乎)。Xilinx的V7系列有GTX/H/Z模塊,以提供高速串行通信支持。同時Xilinx提供多種串行通信協議IP核,Aurora 8B/10B,PCI Express 2.0和Serial RapidIO 2.0是其中較為常用的三種協議。
幾種傳輸的實現方式:
A-Aurora 8B/10B
Aurora協議是Xilinx公司提供的一個鏈路層協議,可以用來進行點到點的串行數據傳輸。Aurora允許器件之間以下圖方式通過多個MGT通道綁定完成通信。單個GTX可以實現現750Mbit/s-6.5Gbit/s的通信傳輸,多個GTX通道的組合可實現幾十Gbit/s 甚至上百Gbit/s的通信傳輸。
8B/10B即把8位數據編碼為10位數據。Aurora提供了可直接與FIFO對接的用戶接口,而其他協議通常需要用戶自行編寫GTP接口邏輯。
Aurora核初始化的Aurora通道可傳輸任意大小的數據幀,且能在任意時刻打斷。數字信號T0經過FPGA存入FIFO,通過FIFO對數據的存取實現光纖對數據的收發,再由光纖自接收,通過FOGA恢復T0信號。 高速收發器、Aurora、光纖幾個概念便串了起來。
?
B-PCI-Express 2.0
?參考:http://xilinx.eetrend.com/article/7995
PCI Express(簡稱PCIe)總線技術是取代PCI的第三代IO技術。PCIe采用串行點對點互聯,允許每個設備擁有專屬的一條連接,不爭奪帶寬資源,同時保證了數據的完整性。PCI Express 2.0協議的鏈路線速率達到5Gb/s,最高支持32X鏈路。
PCIe總線以包的形式在不同器件之間交換信息,數據按照協議首先被封裝成一個包頭,該包頭長度在32bit地址下為12字節,當數據進入數據鏈路層后,會添加2字節的序列號和4字節的LCRC字段,數據包進入物理層后,使用1字節的開始字符和1字節的結束字符將其封裝成幀。
C-Serial RapidIO 2.0
? RapidIO是針對嵌入式系統芯片間和板間互聯而設計的一種基于包交換的高速串行標準。
SRIO是物理層采用串行差分模擬信號傳輸的RapidIO標準。SRIO 2.0協議性能進一步增強,鏈路線速率可達6.25Gb/s.
D-三種協議比較
1)協議結構:Aurora僅定義鏈路層+物理層,PCIe 2.0以及 SRIO 2.0都比Aurora復雜;
2)網絡拓撲結構:
- Aurora 8B/10B協議不支持網絡拓撲結構
- PCIe規定了生成樹拓撲結構,這種結構適合于單個主機,多個外圍設備通信模式,但限制了端點數量,且不支持任意節點與節點間直接通信。PCIe的典型網絡拓撲結構如下圖所示:
- SRIO的拓撲結構比PCIe更為靈活,可設計成網型,星型,雛菊鏈或樹形拓撲結構,支持節點對節點通信,各節點間可對等的發起數據傳輸。
3)線路速率(目前V7能力?待確認):Aurora 8B/10B協議在鏈路數目和鏈路線速率選擇上比較靈活,鏈路數目可以在1x至16x之間自由選擇,鏈路線速率可以在0.5Gb/s到6.6Gb/s間自由選擇。PCIe 2.0支持1x,2x,4x,8x,12x,16x,32x鏈路,鏈路線速率支持2.5Gb/s和5.0Gb/s。SRIO 2.0支持1x、2x、4x、8x和16x鏈路,鏈路線速率支持1.25Gb/s、2.5Gb/s、3.125Gb/s、5.0Gb/s和6.25Gb/s。
E-RocketIO
RocketIO收發器是在Virtex2 Pro以上系列FPGA中集成的專用串行通信模塊,在使用時不占用FPGA其他邏輯與片上存儲資源。在Virtex5 LXT和SXT系列FPGA中,RocketIO稱為GTP,每兩個GTP共用一個PLL,組成一個GTP_Dual。其結構框圖如下圖所示。后來的GTX/H/Z都可以理解成升級版的RocketIO,指的是串行的高速收發模塊。
DMA介紹:http://www.51hei.com/stm32/3864.html
?
三、總線技術
A-總線分類
總線(BUS,即公共汽車,數據的公共傳輸路線)分類的方式有很多,如被分為外部和內部總線、系統總線和非系統總線等等,下面是幾種最常用的分類方法。
另外,總線的傳輸核心思想是多路復用:時分多路復用-TDMA/頻分多路復用-FDMA/碼分多路復用-CDMA。
1.2.1按功能分
以微機系統為例:
(1)?片總線(Chip?Bus,?C-Bus)?又稱元件級總線,是把各種不同的芯片連接在一起構成特定功能模塊(如CPU模塊)的信息傳輸通路,它的寬度可以是8、16、32或64位。目前比較流行的幾種內部總線技術:I2C總線、SCI總線等。
(2)?內總線(Internal?Bus,?I-Bus)?又稱系統總線或板級總線,是微機系統中各插件(模塊)之間的信息傳輸通路。例如CPU模塊和存儲器模塊或I/O接口模塊之間的傳輸通路。常用的有PC總線、AT總線(ISA總線)、PCI總線等。
(3)?外總線(External?Bus,?E-Bus)
又稱通信總線,是微機系統之間或微機系統與其他系統(儀器、儀表、控制裝置等)之間信息傳輸的通路,如EIA?RS-232C、IEEE-488等。
其中的系統總線,即通常意義上所說的總線,一般又含有三種不同功能的總線,即數據總線DB、地址總線AB和控制總線CB。
地址總線是專門用來傳送地址的。在設計過程中,見得最多的應該是從CPU地址總線來選用外部存儲器的存儲地址。地址總線的位數往往決定了存儲器存儲空間的大小,比如地址總線為16位,則其最大可存儲空間為216(64KB)。
數據總線是用于傳送數據信息,它又有單向傳輸和雙向傳輸數據總線之分,雙向傳輸數據總線通常采用雙向三態形式的總線。數據總線的位數通常與微處理的字長相一致。例如Intel 8086微處理器字長16位,其數據總線寬度也是16位。在實際工作中,數據總線上傳送的并不一定是完全意義上的數據。
控制總線是用于傳送控制信號和時序信號。如有時微處理器對外部存儲器進行操作時要先通過控制總線發出讀/寫信號、片選信號和讀入中斷響應信號等。控制總線一般是雙向的,其傳送方向由具體控制信號而定,其位數也要根據系統的實際控制需要而定。
1.2.2按傳輸方式分
按照數據傳輸的方式劃分,總線可以被分為串行總線和并行總線。從原理來看,并行傳輸方式其實優于串行傳輸方式,但其成本上會有所增加。通俗地講,并行傳輸的通路猶如一條多車道公路,而串行傳輸則是只允許一輛汽車通過單線公路。目前常見的串行總線有SPI、I2C、USB、IEEE1394、RS232、CAN等;而并行總線相對來說種類要少,常見的如IEEE1284、ISA、PCI等。
1.2.3按時鐘信號方式分
按照時鐘信號是否獨立,可以分為同步總線和異步總線。同步總線的時鐘信號獨立于數據,也就是說要用一根單獨的線來作為時鐘信號線;而異步總線的時鐘信號是從數據中提取出來的,通常利用數據信號的邊沿來作為時鐘同步信號。
B-總線評價指標
總線的帶寬指的是單位時間內總線上傳送的數據量,即每鈔傳送MB的最大數據傳輸率。
總線的位寬指的是總線能同時傳送的二進制數據的位數,或數據總線的位數,即32位、64位等總線寬度的概念;總線的位寬越寬,數據傳輸速率越大,總線的帶寬就越寬。
總線的工作時鐘頻率以MHz為單位,它與傳輸的介質、信號的幅度大小和傳輸距離有關。在同樣硬件條件下,我們采用差分信號傳輸時的頻率常常會比單邊信號高得多,這是因為差分信號的的幅度只有單邊信號的一半而已。
總線的帶寬、位寬和工作頻率,這三者密切相關,它們之間的關系:
C-總線通信協議
對于總線的學習,了解其通訊協議是整個過程中最關鍵的一步,所有介紹總線技術的資料都會花很大的篇幅來描述其協議,特別是文中第一部分關于ISO/OSI的那七層定義。其實要了解一種總線的協議,最主要的就是去了解總線的幀數據每一位所代表的特性和意義,總線各節點間有效數據的收發都是通過各節點對幀數據位或段的判斷和確信來得以實現。
上圖所示是常見的I2C總線上傳輸的一字節數據的數據幀,其總線形式是由數據線SDA和時鐘SCL構成的雙線制串行總線,并接在總線上的電路模塊即可作為發送器(主機)又可作為接收器(從機)。幀數據中除了控制碼(包括從機標識碼和訪問地址碼)與數據碼外還包括起始信號、結束信號和應答信號。
起始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數據。
控制碼:用來選澤操作目標與對象,即接通需要控制的電路,確定控制的種類對象。在讀期間,也即SCL時鐘線處于時鐘脈沖高電平時,SDA上的數據位不會跳變。
數據碼:是主機向從機發送的具體的有用的數據(如對比度、亮度等)和信息。在讀期間,SDA上的數據位不會跳變。
應答信號:接收方收到8bit數據后,向發送方發出特定的低電平。讀/寫的方向與其它數據位正好相反,也即是由從機寫出該低電平,主機來讀取該低電平。
結束信號:SCL為高電平時,SDA由低電平向高電平跳變表示數據幀傳輸結束。
當然不同的總線其數據位或段的定義肯定不同,但依據同樣的原理可以更快的去了解它的協議的特性和特點。雖然其信息幀的大小不一,但具體的某一數據位或數據段都類似于本文所提及的I2C總線,會依據它的協議的要求來定義它所達標的意義和功能。
?
四、常用總線協議
記錄用到的總線的細節信息。
A-I2C總線
http://blog.csdn.net/ce123_zhouwei/article/details/6877000
http://www.cnblogs.com/Camilo/p/3778868.html
EEPROM讀寫例程(用到IIC協議)
B-
?
C-
參考:
- 總線:http://blog.csdn.net/ce123_zhouwei/article/details/6853195
總結
以上是生活随笔為你收集整理的总线及数据传输技术【待完善】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网易宣布暴雪停服:感谢玩家相伴14年 期
- 下一篇: 新一代安卓机皇!三星Galaxy S23