1、 什麼是並行傳輸、串列傳輸、非同步傳輸?
傳輸可以分為串列傳輸和並行傳輸。
串列傳輸可分為非同步傳輸、同步傳輸和等時傳輸。
下圖2是並行傳輸的示意圖:
在並行傳輸中,使用多根並行的數據線一次同時傳輸多個比特。
例如在圖2中,共有8根數據線,一次同時傳輸8個比特,每個比特佔用一根數據線。
下圖3是串列傳輸的示意圖:
在串列傳輸中,使用一根數據線傳輸數據,一次傳輸1個比特,多個比特需要一個接一個依次傳輸。
下面簡單介紹一下串列傳輸與並行傳輸的發展歷史,從而了解他們倆各自的優缺點,以及發展趨勢。
最早的計算機(電子管計算機和晶體管計算機),其各個介面,例如輸入介面、輸出介面和存儲器介面等,一般採用串列介面,以串列傳輸的方式傳輸數據。
下圖4為電子管計算機ENIAC
電子管計算機ENIAC誕生於美國賓夕法尼亞大學。重30多噸,佔地約170平方米,裝有約18000隻電子管。
下圖5為電子管計算機中使用的電子管
圖5中小玻璃瓶狀的東西就是電子管,電子管的體積比較大
下圖6為晶體管計算機TRADIC
1954年,貝爾實驗室使用800隻晶體管組裝了世界上第一台晶體管計算機TRADIC。相比電子管,晶體管體積小、重量輕、壽命長、發熱少、功耗低,大大改進了計算機中的電子線路的結構,大幅度提高了運算速度。
下圖7為晶體管計算機TRADIC中使用的晶體管
電子管計算機和晶體管計算機以串列傳輸的方式傳輸數據,其原因是當時各個部件都是分立的部件,而不是像今天這樣使用集成電路設計。如果採用並行線路的話,元件的數量和佔用的空間將成倍增長。比如,一個8比特並行線路的元件數量是串列線路的元件數量的8倍(因為需要為每根線路配置一套接收元件)。另外,元件的數量成倍增長的話,耗電量也會大幅增加。
集成電路技術出現後,大量元件可以集成到一個小小的晶元上,並行傳輸變得方便而便宜。不論是8比特、16比特還是更高比特位數的並行線路,只需要一個並行介面晶元就可以處理,而且並行介面晶元只比串列介面晶元貴一點。
除了方便便宜外,在相同的工作頻率下並行傳輸的傳輸速度是串列傳輸的數倍,迎合了人們對速度的追求,所以硬碟、印表機等設備開始使用並行傳輸以提高傳輸速度。PATA(Parallel
Advanced Technology Attachment,並行高級技術附件)介面、並口(Parallel
Port)和PCI(Peripheral
Component Interconnect,外設部件互連)介面成為流行的並行介面。
下圖8為電腦主板上的PATA介面(並行傳輸),用於連接硬碟和光碟機
下圖9為用於PATA介面的連接線纜
下圖10中的編號2為電腦上的並口(並行傳輸),用於連接印表機、掃描儀等
下圖11為電腦主板上的PCI介面(並行傳輸),用於插接外置網卡、音效卡、顯卡和數據機卡等)
下圖12為採用PCI介面的顯卡
圖12中的顯卡使用時是插入圖11中的PCI介面(插槽)中。
在相同的工作頻率下並行傳輸的傳輸速度是串列傳輸的數倍,但並行線路有一些難以克服的缺點,導致依靠並行線路的並行傳輸無法用於長距離通信。計算機與外界的長距離通信,例如與網路中的另外一台計算機進行通信時,只能使用串列傳輸。
在計算機內部,如今串列傳輸也顯示出了它的優勢,有取代並行傳輸的趨勢。
例如,
SATA介面取代PATA介面;
USB介面取代並口;
PCI Express介面取代PCI介面。
為什麼串列傳輸有取代並行傳輸的趨勢呢?
與串列傳輸相比,並行傳輸的缺點是:
一、線路的成本高
並行傳輸如果每個時鐘節拍發送16個比特,則需要16根數據線(另外還需要多根控制線)。
PATA(並行傳輸)連接線纜包含40根導線(16根數據線,24根用於接地和進行控制);
SATA(串列傳輸)連接線纜包含7根導線(4數據線+3接地線)。
如果是長距離通信,並行傳輸的線路成本是串列傳輸的若干倍。
另外,只有一對傳輸線時,串列傳輸也可以實現雙向通信,所以可以直接利用現有的電話線路進行數據傳輸;而並行傳輸要多根並行的傳輸線,沒有現有的線路可以利用,要另外專門鋪設線路,成本高。
二、體積大
並行介面佔用空間大,對應線纜佔用空間也大。
如圖14所示,PATA的介面與連接線纜的尺寸大大於SATA的介面與連接線纜的尺寸
如果是長距離通信,要求使用比較粗的信號線,以便降低信號的衰減,並行傳輸需要使用多根較粗的信號線捆紮在一起組成通信線纜,占很大空間。
即使是計算機內部通信,並行傳輸的線纜所佔用的空間也比串列傳輸的線纜所佔用的空間大很多。
並行介面的尺寸比串列介面的尺寸大很多,則不利於設備的小型化。例如,在手機和穿戴式設備等領域,希望零件的尺寸越小越好。
三、信號線之間的干擾大,不能用於長距離傳輸
並排的信號線在進行高速傳輸時,會在每條信號線的周圍產生微弱的電磁場,出現串音干擾,進而影響到其它信號線中的數據傳輸。傳輸距離越長,串音干擾越嚴重。
所以,PATA線纜的長度不能超過0.4米,而SATA線纜可以達到1米。
四、並行傳輸具有同步問題
並行傳輸中,如果並行的線路之間的物理性質不一致,例如長度上有細微差別,會導致並行線路中傳輸的比特不是同時到達接收方,接收器接收數據時容易出錯。
五、傳輸頻率低
在並行傳輸中,如果傳輸頻率高的話,數據線之間會產生很大的干擾,造成數據出錯,即使為數據線添加屏蔽層,也不能保證屏蔽掉高頻率產生的干擾。所以,並行傳輸的最高傳輸頻率有一定限制。
PATA介面的最高傳輸頻率為33MHz,這個幾乎已經達到了並行介面的極限。
串列傳輸每次只傳輸一個比特,但是它的傳輸頻率可以非常高,達到10GHz,是33MHz的300倍。相當於並行傳輸每發送1次,串列傳輸可以發送300次。並行傳輸每次發送300比特,才能趕上串列傳輸的速度,但是每次發送300比特,就需要300根並行的數據線,這是不現實的。
因為並行傳輸和串列傳輸各自的這些優缺點,導致並行傳輸僅僅用於短距離傳輸,而長距離傳輸則採用串列傳輸;同時,在短距離傳輸中,串列傳輸也在逐步取代並行傳輸。
什麼是非同步傳輸呢?
計算機的鍵盤與主機之間的數據傳輸就是非同步傳輸。
在鍵盤上按下一個字母鍵、數字鍵或特殊字元鍵,鍵盤就需要向主機發送一個對應的長度為8比特的ASCII字元,這個8比特的ASCII字元就是需要發送的數據,大小為1個位元組。
如上圖所示:例如,當用戶按下小寫字母鍵「k」,鍵盤需要向主機發送字元「01101011」
用戶可能在任意時刻按鍵盤,所以鍵盤向主機發送數據的時間不是固定的,也不會事先約好,任何時刻都有可能發送。
主機事先並不知道鍵盤什麼時候會給自己發送數據,只能靜靜地等待,一旦發現鍵盤向自己發送數據,則馬上接收。
主機如何發現鍵盤開始向自己發送數據了呢?
當鍵盤不需要向主機發送有效數據時,也就是鍵盤處於空閑(idle)時,鍵盤會連續不斷地向主機發送比特「1」,告訴主機自己處於空閑狀態。比特「1」用正電平表示,也就是鍵盤一直向主機發送正電平,表示當前沒有有效數據發送給主機。
當鍵盤被按下,鍵盤需要向主機發送數據時,鍵盤會先在數據前添加比特「0」,組成新字元,再發送。
例如,如上圖所示,發送數據「01101011」之前,先在「01101011」的前面添加「0」,組成新字元「011010110」
比特「0」可以用零電平表示。
如上圖所示,鍵盤處於空閑時,主機接收的一直是比特「1」(正電平),當主機突然接收到比特「0」(零電平)時,馬上反應過來,鍵盤在向自己發送有效數據,則主機開始接收「0」後面的有效數據,這個「0」相當於這個新字元的起始位(start
bit)。
主機開始接收有效數據後,怎麼才能知道有效數據接收完了要停下來呢?
為了解決這個問題,鍵盤和主機事先約定好:
1. 每次發送的有效數據為1個位元組,即8個比特
2. 數據的傳輸速率(例如1000比特/秒)
3. 鍵盤在有效數據前面添加起始位(比特0),以通知主機,數據開始發送
4. 鍵盤在有效數據後面添加停止位(比特1),以通知主機,數據發送結束
下圖顯示的是:鍵盤根據和主機的約定,發送給主機的數據和對應的信號。
當按鍵「k」被按下時,鍵盤實際上發送的是「起始位」+k對應的ASCII碼+「停止位」。
鍵盤發送信號的過程:
鍵盤在空閑時,連續地發送正電平給主機,表示當前沒有有效數據發送給主機。
當按鍵「k」被按下時,鍵盤發送「起始位」+k對應的ASCII碼+「停止位」這3者所對應的信號。然後緊跟著繼續發送正電平,表示又處於空閑狀態。
主機接收信號的過程:
主機開始接收到的一直是正電平,表示當前沒有有效數據發送給主機。
主機接收到起始位比特「0」(零電平)後,開始接收比特「0」後面的有效數據。
根據約定,有效數據為1個位元組,共8個比特;數據的傳輸速率例如為1000比特/秒,也就是每毫秒傳輸1個比特,則8個比特的傳輸時間為8毫秒。
所以主機根據自己的時鐘,在起始位比特「0」後面的8毫秒內接收有效數據。
具體的接收方式(舉例說明)是:
主機在起始位後面的0.5毫秒、1.5毫秒、2.5毫秒、3.5毫秒、4.5毫秒、5.5毫秒、6.5毫秒、7.5毫秒分別對信號進行採樣,也就是在每個比特的正中間進行採樣,以獲得這8比特的有效數據。
根據約定,8比特的有效數據後面跟著的是停止位。
如果主機在第8.5毫秒接收到比特「1」(停止位),則主機可以確定數據的發送確實結束了,則結束有效數據的接收,並接受所接收的數據。
如果主機在第8.5毫秒接收到的不是比特「1」(停止位),則主機判斷傳輸過程中發生錯誤,就放棄所接收到的數據。
無論接受還是放棄所接收到的數據,主機都不會向鍵盤進行反饋。
鍵盤向主機發送數據後,就撒手不管了,不會等待主機的確認或其他任何反饋。
在停止位之後,主機接收到的是表示空閑的正電平,繼續等待鍵盤發送數據。
我最近會將上面的內容製作成視頻,並放到http://www.shiyibao.com/CampDetails/195(這裡已經有一些通信技術術語和原理方面的視頻,並會不斷補充)
參考資料:
[1] Behrouz A. Forouzan著. Data Communications and Networking (數據通信與網路,英文版第5版). 北京:機械工業出版社, 2013. 125-129
[2] 並行通信和串列通信. 知乎,作者:張雄傑:https://www.zhihu.com/question/29033993/answer/55891882
[3] 為什麼需要SATA?——串列與並行:http://itbbs.pconline.com.cn/diy/50417951.html
[4] 並行通信與串列通信. 新浪博客:http://blog.sina.com.cn/s/blog_6df127760101kl4t.html
[5] 並行傳輸和串列傳輸. 華為論壇:http://forum.huawei.com/enterprise/thread-189785.html
[6] 陳向陽、淡宏華、巨修鍊編著. 計算機網路與通信. 北京:清華大學出版社, 2005. 18-19
[7] 並行介面和串列介面. 博客園:http://www.cnblogs.com/xuyinghui/p/5962945.html
[8] 串列通信. 維基百科:https://en.wikipedia.org/wiki/Serial_communication
[9] 並行通信. 維基百科:https://en.wikipedia.org/wiki/Parallel_communication
[10] 劉雲、劉志華、鄭宏雲編著. 計算機網路實用教程(第二版). 北京:清華大學出版社, 2006. 50-52
[11] 計算機發展史簡介:http://www.museum.uestc.edu.cn/index.php?m=Articlea=showid=187
[12] 電子管計算機:http://www.chipsetc.com/mit-lincoln-laboratory.html
[13] 電子管計算機:https://freewechat.com/a/MzI5MzIwNDI1MQ==/2650115205/5
[14] 超級計算機發展史:http://hpc.csu.edu.cn/trends/TrendsDetaillInfo.aspx?NewsID=1117
[15] 晶體管計算機:http://www.computerhistory.org/storageengine/transistors-make-fast-memories/
[16] 並口:https://en.wikipedia.org/wiki/Parallel_port
[17] PCI介面:https://en.wikipedia.org/wiki/Conventional_PCI
[18] PATA和SATA介面對比圖片:https://0cch.com/minikernel/2013/08/17/e4-bd-bf-e7-94-a8pci-ide-controller-e8-af-bb-e5-86-99-e7-a1-ac-e7-9b-98-0.html
[19] PATA介面:https://en.wikipedia.org/wiki/Parallel_ATA
[20] PATA介面圖片:https://www.techpowerup.com/reviews/AOpen/i945Ga-PHS/images/pata.jpg
[21] PATA和SATA區別:http://showstopp3r.blogspot.com/2005_10_01_archive.html
[22] SCSI介面圖片:https://mbhs.edu/~keleigh/InsideAComputer/motherboard/scsi.html
[23]並口圖片:https://support.hp.com/lv-en/document/c00496280
[24] PCI介面圖片:http://www.elvigilantedeseguridad.com/index.php/medios-tecnicos/informatica/informatica-conceptos-basicos
[25] 非同步串列傳輸:https://en.wikipedia.org/wiki/Asynchronous_serial_communication
[26] 非同步傳輸和同步傳輸:https://www.ibm.com/support/knowledgecenter/ssw_aix_71/com.ibm.aix.networkcomm/asynch_synch.htm
[27] 非同步傳輸和同步傳輸:http://techdifferences.com/difference-between-synchronous-and-asynchronous-transmission.html
[28] 什麼是並行傳輸、串列傳輸、非同步傳輸:https://www.zhihu.com/question/29033993/answer/55891882
[29] 劉毅主編,郝興偉、鞏裕偉副主編. 計算機應用基礎. 北京:清華大學出版社, 2005. 26-27
[30] 非同步傳輸和同步傳輸:https://www.quora.com/What-is-the-difference-between-synchronous-asynchronous-and-isochronous-data-transfer
[31] 非同步傳輸、同步傳輸和等時傳輸:http://www.techexams.net/forums/ccna-ccent/117669-asynchronous-vs-synchronous-vs-isochronous-communication.html
[32] 非同步傳輸:http://stackoverflow.com/questions/275544/start-bit-vs-start-byte
[33] 非同步傳輸:http://www.erg.abdn.ac.uk/users/gorry/course/phy-pages/async.html
[34] 非同步傳輸和同步傳輸:http://ecomputernotes.com/computernetworkingnotes/communication-networks/asynchronous-vs-synchronous
[35] 非同步傳輸、同步傳輸和等時傳輸:http://www.fishercom.xyz/packet-switched/asynchronous-vs-synchronous-vs-isochronous.html
[36] 電腦圖片來源:http://www.gadgetreview.com/reviews/desktop-computer-reviews
串列通訊
一條信息的各位數據被逐位按順序傳送的通訊方式稱為串列通訊。串列通訊的特點是:數據位傳送,傳按位順序進行,最少只需一根傳輸線即可完成,成本低但送速度慢。串列通訊的距離可以從幾米到幾千米。 根據信息的傳送方向,串列通訊可以進一步分為單工、半雙工和全雙工三種。信息只能單向傳送為單工;信息能雙向傳送但不能同時雙向傳送稱為半雙工;信息能夠同時雙向傳送則稱為全雙工。 串列通訊又分為非同步通訊和同步通訊兩種方式。在單片機中,主要使用非同步通訊方式。
串列通訊中,兩個設備之間通過一對信號線進行通訊,其中一根為信號線,另外一根為信號地線,信號電流通過信號線到達目標設備,再經過信號地線返回,構成一個信號迴路。
初級讀者會產生疑問:為何不讓信號電流從電源地線返回?答案:公共地線上存在各種雜亂的電流,可以輕而易舉地把信號淹沒。因此所有的信號線都使用信號地線而不是電源地線,以避免干擾。
這一對信號線每次只傳送1bit(比特)的信號,比如1Byte(位元組)的信號需要8次才能發完。傳輸的信號可以是數據、指令或者控制信號,這取決於採用的是何種通訊協議以及傳輸狀態。串列信號本身也可以帶有時鐘信息,並且可以通過演算法校正時鐘。因此不需要額外的時鐘信號進行控制。
並行通訊中,基本原理與串列通訊沒有區別。只不過使用了成倍的信號線路,從而一次可以傳送更多bit的信號。
並行通訊通常可以一次傳送8bit、16bit、32bit甚至更高的位數,相應地就需要8根、16根、32根信號線,同時需要加入更多的信號地線。比如傳統的PATA線路有40根線,其中有16根信號線和7根信號地線,其他為各種控制線,一次可以傳送2Byte的數據。並行通訊中,數據信號中無法攜帶時鐘信息,為了保證各對信號線上的信號時序一致,並行設備需要嚴格同步時鐘信號,或者採用額外的時鐘信號線。
通過串列通訊與並行通訊的對比,可以看出:串列通訊很簡單,但是相對速度低;並行通訊比較複雜,但是相對速度高。更重要的是,串列線路僅使用一對信號線,線路成本低並且抗干擾能力強,因此可以用在長距離通訊上;而並行線路使用多對信號線(還不包括額外的控制線路),線路成本高並且抗干擾能力差,因此對通訊距離有非常嚴格的限制。
歷史
最早的計算機設備之間全部採用串列介面,比如硬碟介面、印表機介面、通訊埠等等。那時候都是分立元件的電路設計,如果採用並行介面,元件的數量和佔用的空間將成倍增長。比如一個8bit並行線路的介面元件數量將是串列線路的8倍(你得為每根信號線配置一套接收電路)。這個時期的數據通訊只能是非常簡單而低速的。
但是集成電路技術的出現帶來了一個轉變,當大量元件可以集成到一個小小的晶元上時,並行通訊變得廉價而方便了。不論是8bit、16bit還是更高位數的並行線路,只需要一個並行介面晶元就可以處理,這比一個處理串列通訊的晶元成本高不到哪裡去。與串列通訊相比,並行通訊在同樣的工作頻率下,通訊速度就可以整倍提高。因此適應了當時計算機設備發展的需要,硬碟、印表機等速度較快的設備開始使用並行通訊,PATA、SCSI、Parallel Port成為最為流行的並行通訊介面,被大眾所熟知。不過並行線路固有的一些缺點仍然限制了並行通訊的應用範圍,至於超高速通訊和長距離通訊方面,由於線路成本比介面成本要重要得多,因此一直都是串列通訊的應用領域。
除了並行通訊具有速度優勢以外,串列通訊自身也有一個問題。在計算機內部,數據往往都是並行方式傳送的,當採用串列方式與外界通訊時必須經過串/並轉換處理。在早期集成電路規模較小的時代,串/並轉換電路的處理能力十分有限,因此串列通訊的速度無法提高。隨著如今集成技術的發展,邏輯電路的集成能力大大提高,甚至超過了IO連接單元的集成水平,從而逐步解決了串/並轉換速度的限制。另一方面,現在集成邏輯處理電路的成本也比IO連接單元更便宜,因此串列通訊再次顯示出它的優勢。如果說集成電路技術一度幫助並行通訊流行起來,那麼現在的高度集成水平則幫助串列通訊重返主流應用領域。
我來說說非同步傳輸。非同步傳輸理解為「握手動作」,傳輸發起的一端需要在數據傳輸前檢測信道質量,接收端是否存在,是否可以接收,然後再決定是否傳輸。對應的同步傳輸就是發送端發數據需要接收端立即接收,無需像非同步傳輸一樣先判斷。當然,非同步傳輸也可由發送端先發給接收端緩存,再有接收端覺得我到底要不要,不要就丟掉。
推薦閱讀:
TAG:無線傳輸 |