當前位置:
首頁 > 科技 > 拋磚引玉,教你學習各種匯流排技術

拋磚引玉,教你學習各種匯流排技術

如果一座只能容一個人來往的獨木橋,兩端的人都想要過橋,為了不擁擠、阻塞,那我們就得採取有效的辦法。比如規定某段時間哪端的人過橋,另一端的人就等著該他過橋的時間段的到來,同時也還可以規定人多時要按先來後到或年齡長幼的次序過橋。在這不經意間,我們就體會到了現代電子信息數據通過匯流排按時分系統傳輸的最原始的思想。

現代網路信息的發展,特別是對於成本和空間而言,匯流排傳輸替代點對點傳輸是目前發展的熱點,它的出現將給信息傳輸上提供了最大的方便和最有效的技術解決方案。假如一個微處理器與它的部件和外圍設備都分別用點對點的線路來連接通訊,則所有連線將會錯綜複雜,甚至難以實現。

目前與我們生活習習相關的一系列活動都無不牽涉到匯流排技術的應用,如我們上英特網、給親戚朋友打電話、用U盤來存儲信息等。雖然流行的匯流排所採取的形式不同,但他們主要的原則性思想無非就是時分系統、頻分系統、相分系統和碼分系統等。常言道「兵來將擋,水來土淹」,面對種類繁多的匯流排,我們只有從基本原理出發,從骨子裡去了解它的實質,而不要被它形式多樣的外表所迷惑,才能熟練掌握和靈活運用眼下正在或將要用到的各種匯流排技術。

1. 匯流排的定義及分類

1.1 定義

匯流排,英文叫作「BUS」,即我們中文的「公共車」,這是非常形象的比如,公共車走的路線是一定的,我們任何人都可以坐公共車去該條公共車路線的任意一個站點。如果把我們人比作是電子信號,這就是為什麼英文叫它為「BUS」而不是「CAR」的真正用意。當然,從專業上來說,匯流排是一種描述電子信號傳輸線路的結構形式,是一類信號線的集合,是子系統間傳輸信息的公共通道。通過匯流排能使整個系統內各部件之間的信息進行傳輸、交換、共享和邏輯控制等功能。如在計算機系統中,它是CPU、內存、輸入、輸出設備傳遞信息的公用通道,主機的各個部件通過主機相連接,外部設備通過相應的介面電路再於匯流排相連接。

1.2 分類

匯流排分類的方式有很多,如被分為外部和內部匯流排、系統匯流排和非系統匯流排等等,下面是幾種最常用的分類方法。

1.2.1 按功能分

最常見的是從功能上來對數據匯流排進行劃分,可以分為地址匯流排(address bus)、數據匯流排(data bus)和控制匯流排(control bus)。在有的系統中,數據匯流排和地址匯流排可以在地址鎖存器控制下被共享,也即復用。

地址匯流排是專門用來傳送地址的。在設計過程中,見得最多的應該是從CPU地址匯流排來選用外部存儲器的存儲地址。地址匯流排的位數往往決定了存儲器存儲空間的大小,比如地址匯流排為16位,則其最大可存儲空間為216(64KB)。

數據匯流排是用於傳送數據信息,它又有單向傳輸和雙向傳輸數據匯流排之分,雙向傳輸數據匯流排通常採用雙向三態形式的匯流排。數據匯流排的位數通常與微處理的字長相一致。例如Intel 8086微處理器字長16位,其數據匯流排寬度也是16位。在實際工作中,數據匯流排上傳送的並不一定是完全意義上的數據。

控制匯流排是用於傳送控制信號和時序信號。如有時微處理器對外部存儲器進行操作時要先通過控制匯流排發出讀/寫信號、片選信號和讀入中斷響應信號等。控制匯流排一般是雙向的,其傳送方向由具體控制信號而定,其位數也要根據系統的實際控制需要而定。

1.2.2 按傳輸方式分

按照數據傳輸的方式劃分,匯流排可以被分為串列匯流排和並行匯流排。從原理來看,並行傳輸方式其實優於串列傳輸方式,但其成本上會有所增加。通俗地講,並行傳輸的通路猶如一條多車道公路,而串列傳輸則是只允許一輛汽車通過單線公路。目前常見的串列匯流排有SPI、I2C、USB、IEEE1394、RS232、CAN等;而並行匯流排相對來說種類要少,常見的如IEEE1284、ISA、PCI等。

1.2.3 按時鐘信號方式分

按照時鐘信號是否獨立,可以分為同步匯流排和非同步匯流排。同步匯流排的時鐘信號獨立於數據,也就是說要用一根單獨的線來作為時鐘信號線;而非同步匯流排的時鐘信號是從數據中提取出來的,通常利用數據信號的邊沿來作為時鐘同步信號。

2. 匯流排傳輸基本原理

依據前面對匯流排的定義可知匯流排的基本作用就是用來傳輸信號,為了各子系統的信息能有效及時的被傳送,為了不至於彼此間的信號相互干擾和避免物理空間上過於擁擠,其最好的辦法就是採用多路復用技術,也就是說匯流排傳輸的基本原理就是多路復用技術。所謂多路復用就是指多個用戶共享公用信道的一種機制,目前最常見的主要有時分多路復用、頻分多路復用和碼分多路復用等。

2.1 時分多路復用(TDMA)

時分復用是將信道按時間加以分割成多個時間段,不同來源的信號會要求在不同的時間段內得到響應,彼此信號的傳輸時間在時間坐標軸上是不會重疊。

2.2 頻分多路復用(FDMA)

頻分復用就是把信道的可用頻帶劃分成若干互不交疊的頻段,每路信號經過頻率調製後的頻譜佔用其中的一個頻段,以此來實現多路不同頻率的信號在同一信道中傳輸。而當接收端接收到信號後將採用適當的帶通濾波器和頻率解調器等來恢復原來的信號。

2.3 碼分多路復用(CDMA)

碼分多路復用是所被傳輸的信號都會有各自特定的標識碼或地址碼,接收端將會根據不同的標識碼或地址碼來區分公共信道上的傳輸信息,只有標識碼或地址碼完全一致的情況下傳輸信息才會被接收。

3. 匯流排的通信協議

對於匯流排的學習,了解其通訊協議是整個過程中最關鍵的一步,所有介紹匯流排技術的資料都會花很大的篇幅來描述其協議,特別是ISO/OSI的那七層定義。其實要了解一種匯流排的協議,最主要的就是去了解匯流排的幀數據每一位所代表的特性和意義,匯流排各節點間有效數據的收發都是通過各節點對幀數據位或段的判斷和確信來得以實現。

如圖1所示是常見的I2C匯流排上傳輸的一位元組數據的數據幀,其匯流排形式是由數據線SDA和時鐘SCL構成的雙線制串列匯流排,並接在匯流排上的電路模塊即可作為發送器(主機)又可作為接收器(從機)。幀數據中除了控制碼(包括從機標識碼和訪問地址碼)與數據碼外還包括起始信號、結束信號和應答信號。

起始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數據。

控制碼:用來選澤操作目標與對象,即接通需要控制的電路,確定控制的種類對象。在讀期間,也即SCL時鐘線處於時鍾脈衝高電平時,SDA上的數據位不會跳變。

數據碼:是主機向從機發送的具體的有用的數據(如對比度、亮度等)和信息。在讀期間,SDA上的數據位不會跳變。

應答信號:接收方收到8bit數據後,向發送方發出特定的低電平。讀/寫的方向與其它數據位正好相反,也即是由從機寫出該低電平,主機來讀取該低電平。

結束信號:SCL為高電平時,SDA由低電平向高電平跳變表示數據幀傳輸結束。

當然不同的匯流排其數據位或段的定義肯定不同,但依據同樣的原理可以更快的去了解它的協議的特性和特點。雖然其信息幀的大小不一,但具體的某一數據位或數據段都類似於本文所提及的I2C匯流排,會依據它的協議的要求來定義它所達標的意義和功能。

4. 主要技術指標

評價匯流排的主要技術指標是匯流排的帶寬(即傳輸速率)、數據位的寬度(位寬)、工作頻率和傳輸數據的可靠性、穩定性等。

4.1 帶寬(傳輸速率)、位寬和工作頻率

匯流排的帶寬指的是單位時間內匯流排上傳送的數據量,即每鈔傳送MB的最大數據傳輸率。匯流排的位寬指的是匯流排能同時傳送的二進位數據的位數,或數據匯流排的位數,即32位、64位等匯流排寬度的概念;匯流排的位寬越寬,數據傳輸速率越大,匯流排的帶寬就越寬。匯流排的工作時鐘頻率以MHz為單位,它與傳輸的介質、信號的幅度大小和傳輸距離有關。在同樣硬體條件下,我們採用差分信號傳輸時的頻率常常會比單邊信號高得多,這是因為差分信號的的幅度只有單邊信號的一半而已。

匯流排的帶寬、位寬和工作頻率,這三者密切相關,它們之間的關係:

4.2 傳輸數據的可靠性

可靠性是評定匯流排最關鍵的參數,沒有可靠性,傳輸的數據都是錯誤的信息,便就失去了匯流排的實際意義。為了提高匯流排的可靠性,通常採用的措施有:

採用數據幀發送前發送器對匯流排進行偵聽,只有偵聽到匯流排處於空閑狀態下時才可向匯流排傳送數據幀,這樣避免了不同節點的數據衝突。

採用雙絞線差分信號來傳送數據,以降低單線的電壓升降幅度,減小信號的邊沿產生的高次諧波。

適當的讓數據的邊沿具有一定的斜坡。

增加匹配電阻和電容等來減少匯流排上信號的發射和平衡匯流排上的分布電容等。

採用合適的網路拓撲結構和屏蔽技術等來減少受其他信號的干擾。

還有就是在軟體上通過數字濾波、數據校驗糾錯等措施來提高數據傳輸的可靠性。

5. 結束語

學習是一個循序漸進的過程,對匯流排技術的學習和理解也是隨著其技術的不斷發展而不斷更新的過程。子曰「工欲善其事,必先利其器。」只有從最基本的原理出發,打好基礎,才能在今後的學習中融會貫通,前仆後繼,更進一步深入該知識點和拓寬知識面。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!


請您繼續閱讀更多來自 21IC中國電子 的精彩文章:

書本里不會講的C語言關鍵詞volatile用法