信號速率與線(xiàn)纜長(cháng)度的關(guān)系:CAN 總線(xiàn)計時(shí)權衡因素
有一個(gè)關(guān)于得克薩斯州民間英雄 Pecos Bill 的故事:那時(shí),有人打賭他不能從從得克薩斯州的加爾維斯敦游過(guò)墨西哥灣到達弗羅里達州的基韋斯特。他訓練了一個(gè)月,當這一天到來(lái)時(shí)他便一頭扎進(jìn)了墨西哥灣。Bill 不分晝夜地游了一個(gè)星期,期間戰鯊魚(yú)斗颶風(fēng)。最終,他離自己的目標越來(lái)越近。然而,當他在海浪中看到遠處的基韋斯特時(shí),他意識到他已經(jīng)太累,無(wú)法再繼續向前游了,因此他轉身游回了得克薩斯!
本文引用地址:http://dyxdggzs.com/article/163267.htm致力于 CAN 通信的設計人員就像 Pecos Bill 一樣面對他們所遇到的種種挑戰,往返信號傳輸成為一個(gè)重要的考慮因素。
當一個(gè)以上節點(diǎn)要在共用總線(xiàn)上發(fā)送信號時(shí),控制器局域網(wǎng) (CAN) 協(xié)議的一個(gè)關(guān)鍵特性就是如何處理總線(xiàn)爭用問(wèn)題。CAN 使用逐位仲裁 (bit-wise arbitration) 來(lái)選擇哪一個(gè)節點(diǎn)應該繼續信號傳輸。由于這些節點(diǎn)對每一個(gè)比特位進(jìn)行監聽(tīng),并且必須服從于更高優(yōu)先級的消息,因此它們的響應時(shí)間必須快到能夠在破壞下一個(gè)比特以前終止傳輸。如下面三種情況所述,這就對容許組件延遲和線(xiàn)纜長(cháng)度以及可用信號速率構成了一些限制。
情況 1:無(wú)爭用正常 CAN 總線(xiàn)運行
通常每次只有一個(gè)節點(diǎn)要通過(guò)共用 CAN 總線(xiàn)通信。沒(méi)有一般性損耗的情況下,我們來(lái)討論一種二節點(diǎn)網(wǎng)絡(luò ),然后再將這種討論延伸至更多節點(diǎn)。圖 1 描述了其工作原理。首先,兩個(gè)節點(diǎn)都處于非占用狀態(tài),因此總線(xiàn)上沒(méi)有差動(dòng)信號,如(1a)所示。如果節點(diǎn) A 開(kāi)始通信,則其使用一個(gè)占用位啟動(dòng)一個(gè) CAN 消息。向 CAN 收發(fā)器發(fā)送的傳輸數據 (TXD) 輸入是一個(gè)邏輯 0,其命令差動(dòng)驅動(dòng)器在總線(xiàn)線(xiàn)路上生成一個(gè)差動(dòng)信號,如(1b)所示。節點(diǎn) A 的接收機感應到該差動(dòng)信號,并在已接收數據引腳 (RXD) 上輸出一個(gè)邏輯 0。差動(dòng)電壓根據 (1c) 和(1d) 所示雙絞線(xiàn)對的傳輸線(xiàn)路屬性進(jìn)行傳輸。最終,差動(dòng)信號到達節點(diǎn) B,節點(diǎn) B 的接收機也在 RXD 上輸出一個(gè)邏輯 0,如 (1e) 所示。這時(shí),節點(diǎn) B 注意到節點(diǎn) A 已經(jīng)開(kāi)始一個(gè) CAN 消息,這樣節點(diǎn) B 便不會(huì )在節點(diǎn) A 完成以前發(fā)起消息。

圖 1 A 到 B 的正常信號傳輸
需要注意的是,節點(diǎn) B 并非馬上就知道節點(diǎn) A 已經(jīng)開(kāi)始一條消息,因為從 A 到 B 的信號具有一定的延遲。這種情況下的總延遲為通過(guò) A 處收發(fā)器(以及相關(guān)的隔離和緩沖電路)的延遲加上通過(guò)線(xiàn)纜的傳輸延遲,再加上 B 處收發(fā)器、隔離和緩沖電路的延遲的總和。乍一看,似乎這種單向延遲就是確保節點(diǎn) B 不同節點(diǎn) A 發(fā)送消息相沖突所需的關(guān)鍵計時(shí)限制。正如我們在情況 2 中所看到的一樣,這并非故事的全部。
情況 2:延遲爭用,后發(fā)消息具有更高的優(yōu)先級
我們的下一種情況(圖 2)假設,節點(diǎn) A 再次發(fā)起一條消息,但是節點(diǎn) B 在稍后發(fā)起的一條消息具有更高的優(yōu)先級。如前所述,這種情況以?xún)蓚€(gè)節點(diǎn)均處在非占用模式作為開(kāi)始,如 (2a 所示,隨后節點(diǎn) A 變?yōu)檎加茫ㄈ纾?b)所示)發(fā)起一條消息。該占用差動(dòng)電壓再次沿線(xiàn)纜傳輸。在信號到達 B 處的收發(fā)器以前,該節點(diǎn)剛好利用如(2c)所示占用位發(fā)起一條消息。這時(shí),兩個(gè)節點(diǎn)都正傳輸一個(gè)占用位,并且兩個(gè)節點(diǎn)都正接收一個(gè)占用位(如(2d)所示),然后兩個(gè)節點(diǎn)都沒(méi)意識到另一個(gè)節點(diǎn)也已啟用。由于在我們的假設情況中,節點(diǎn) A 具有比節點(diǎn) B 更低的優(yōu)先級,因此有時(shí)節點(diǎn) A 會(huì )通過(guò)將其 TXD 設置為 0(如(2e)所示)來(lái)發(fā)出一個(gè)非占用位。但是,由于節點(diǎn) B 的作用,RXD 會(huì )感應到總線(xiàn)仍然處在占用狀態(tài)下。

圖 2 延遲爭用―B 具有高優(yōu)先級
通過(guò)研究某個(gè)具有實(shí)際延遲值的假設案例,我們可以更加具體地介紹這些計時(shí)要求。在我們的二節點(diǎn)例子中,設定總單向延遲為 200ns,信號傳輸速率為 1Mbps,也就是 ISO 11898-2 標準規定的最大值。這樣,位時(shí)間便為 1000ns。除節點(diǎn) B 的第二位會(huì )是同節點(diǎn) A 的消息優(yōu)先級匹配的 0(非占用)以外,其同情況 2 所述一樣。(情況 2 中,節點(diǎn) B 具有一個(gè)占用第二位,表明更高的消息優(yōu)先級。)
圖 3 中,節點(diǎn) A 在時(shí)間 t=0 時(shí)開(kāi)始一條消息,從而在總線(xiàn)(b)上傳輸一個(gè)占用位。如圖 2 所示,其可能出現的情況是,節點(diǎn) B 剛好在節點(diǎn) A 的信號被接收到以前(c)開(kāi)始發(fā)送,也即時(shí)間t=199ns。當時(shí)間 t=1000ns 的第二位開(kāi)始之初,在節點(diǎn) A 轉到非占用狀態(tài)以前兩個(gè)節點(diǎn)都沒(méi)意識到對方的有效性。然后,節點(diǎn) B 在時(shí)間 t=1199ns 的第二位開(kāi)始之初,轉到非占用狀態(tài)。另一個(gè)單向延遲以后,該非占用信號到達節點(diǎn)A,時(shí)間 t=1399ns。只有在這時(shí),節點(diǎn) A 才讀取 RXD 信號,并且可以確定其代表網(wǎng)絡(luò )的真實(shí)狀態(tài)。

圖 3 延遲爭用―節點(diǎn) A 和 B 具有相同的優(yōu)先級
評論