国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

高延遲信道下CAN總線控制器芯片的優(yōu)化設(shè)計(jì)

2022-09-22 08:55
關(guān)鍵詞:延時(shí)總線比特

靳 旭

(1.北京全路通信信號(hào)研究設(shè)計(jì)院集團(tuán)有限公司,北京 100070;2.北京市高速鐵路運(yùn)行控制系統(tǒng)工程技術(shù)研究中心,北京 100070)

1 概述

在軌道交通領(lǐng)域,CAN總線因其較高的實(shí)時(shí)性、可靠性等特點(diǎn)被廣泛應(yīng)用[1]。在對(duì)已流片的CAN控制器芯片進(jìn)行大量測(cè)試的過(guò)程中,發(fā)現(xiàn)了一些單片測(cè)試時(shí)沒(méi)有發(fā)現(xiàn)的問(wèn)題,其中最值得注意的,是芯片在總線負(fù)載較大或收發(fā)器延時(shí)較大的情況下,容易發(fā)生通信錯(cuò)誤、甚至無(wú)法通信的問(wèn)題[2]。這主要是由于總線的延時(shí)超過(guò)原芯片設(shè)計(jì)的極限值,導(dǎo)致芯片內(nèi)無(wú)法及時(shí)處理總線上的數(shù)據(jù)。在單片測(cè)試過(guò)程中,主要測(cè)試功能的正確性,器件選用的也都比較常規(guī),對(duì)一些極限性能測(cè)試考慮不足。而在芯片設(shè)計(jì)時(shí),選擇性地忽略一些特殊的情況,使整體電路簡(jiǎn)化,也是比較常見(jiàn)的,但實(shí)際應(yīng)用如果處于某些極端情況下,就會(huì)出現(xiàn)問(wèn)題。本文基于原始芯片的設(shè)計(jì)方案,在對(duì)測(cè)試過(guò)程中發(fā)生的故障問(wèn)題進(jìn)行仿真、分析的基礎(chǔ)上,對(duì)芯片進(jìn)行優(yōu)化,將其中發(fā)送器進(jìn)行重新設(shè)計(jì),并完成仿真驗(yàn)證,得到符合優(yōu)化設(shè)計(jì)思想的結(jié)果,達(dá)到了流片的條件。

2 CAN總線相關(guān)概念

在介紹CAN總線控制器芯片的優(yōu)化設(shè)計(jì)之前,首先需要了解一下有關(guān)CAN總線的一些基本概念。由于完整的CAN總線協(xié)議涉及相關(guān)內(nèi)容較繁瑣復(fù)雜,下文只介紹與本次優(yōu)化設(shè)計(jì)關(guān)系緊密的部分概念。

2.1 線與原理

CAN總線符合“線與原理”,即多個(gè)節(jié)點(diǎn)并接到同一總線上時(shí),只要其中一個(gè)節(jié)點(diǎn)輸出低電平,總線就為低電平;只有所有節(jié)點(diǎn)輸出高電平時(shí),總線才為高電平[3]。如圖1所示,類(lèi)似并聯(lián)接地,只要有一個(gè)節(jié)點(diǎn)輸出低電平,總線電平就會(huì)被拉低。

圖1 CAN總線“線與原理”示意Fig.1 Schematic diagram of CAN bus “Wire-And principle”

2.2 總線優(yōu)先級(jí)判定準(zhǔn)則

CAN總線上所有設(shè)備會(huì)隨時(shí)監(jiān)控總線數(shù)據(jù),當(dāng)檢測(cè)到總線上有數(shù)據(jù)發(fā)送時(shí),當(dāng)前設(shè)備會(huì)等待總線空閑之后再發(fā)送。如遇同時(shí)發(fā)送的情況,當(dāng)有設(shè)備監(jiān)測(cè)到其他節(jié)點(diǎn)在發(fā)送時(shí),發(fā)送幀優(yōu)先級(jí)較低的節(jié)點(diǎn)會(huì)自動(dòng)停止發(fā)送[4]。一般來(lái)說(shuō),接收與發(fā)送的信號(hào)可能會(huì)在仲裁段發(fā)生相異,即兩個(gè)節(jié)點(diǎn)同時(shí)發(fā)送的情況。這時(shí),發(fā)送ID編號(hào)更小的節(jié)點(diǎn)因?yàn)椤熬€與原理”的存在,有更高的優(yōu)先級(jí),可以繼續(xù)發(fā)送下去,而ID編號(hào)較大的節(jié)點(diǎn)因?yàn)闄z測(cè)到發(fā)送和接收的數(shù)據(jù)不一致,會(huì)停止發(fā)送。而如果檢測(cè)到接收與發(fā)送不同的比特在仲裁段之外,則意味著發(fā)生了其他錯(cuò)誤,這不屬于總線優(yōu)先級(jí)判定問(wèn)題,可從錯(cuò)誤寄存器中讀取相關(guān)錯(cuò)誤類(lèi)型,如圖2所示。

圖2 總線優(yōu)先級(jí)判定說(shuō)明Fig.2 Determination description of bus priority

假設(shè)節(jié)點(diǎn)A、B和C都發(fā)送相同格式、相同類(lèi)型的幀,如標(biāo)準(zhǔn)格式數(shù)據(jù)幀,它們競(jìng)爭(zhēng)總線的過(guò)程如圖3所示。優(yōu)先級(jí)最高的節(jié)點(diǎn)A一直在發(fā)送,節(jié)點(diǎn)B和節(jié)點(diǎn)C則先后檢測(cè)到總線上接收的數(shù)據(jù)與發(fā)送數(shù)據(jù)不同而停止發(fā)送。

圖3 總線優(yōu)先級(jí)判定Fig.3 Determination diagram of bus priority

2.3 CAN總線ACK應(yīng)答機(jī)制

在CAN總線通信過(guò)程中,總線上出現(xiàn)的幀按時(shí)間順序依次為幀起始、仲裁段、控制段、數(shù)據(jù)段、CRC段、ACK段和幀結(jié)束[5]。當(dāng)一個(gè)接收節(jié)點(diǎn)接收的幀從起始到CRC段之間的內(nèi)容都沒(méi)有發(fā)生錯(cuò)誤時(shí),它將在接下來(lái)的ACK段發(fā)送一個(gè)顯性電平,這是CAN總線的ACK應(yīng)答機(jī)制。而發(fā)送節(jié)點(diǎn)會(huì)在ACK段發(fā)送隱形電平,經(jīng)過(guò)線與之后,如果有正確的ACK顯性信號(hào),則表示總線上有節(jié)點(diǎn)正確地接收到了本次發(fā)送的數(shù)據(jù)。發(fā)送節(jié)點(diǎn)可以根據(jù)是否收到顯性電平來(lái)判斷發(fā)送的幀是否被接收到,進(jìn)而判斷是否發(fā)送失敗需要重新發(fā)送。數(shù)據(jù)幀結(jié)構(gòu)及ACK段詳細(xì)說(shuō)明如圖4所示。

圖4 ACK應(yīng)答信號(hào)的位置和判斷方式Fig.4 Position and judgement method of ACK response signal

3 原始設(shè)計(jì)的優(yōu)點(diǎn)和問(wèn)題

3.1 設(shè)計(jì)優(yōu)點(diǎn)

CAN總線控制器芯片初版設(shè)計(jì),基于CAN通信的特點(diǎn),即總線上需要實(shí)時(shí)監(jiān)控對(duì)比發(fā)送和接收數(shù)據(jù),沒(méi)有設(shè)計(jì)獨(dú)立的發(fā)送器,而是用接收器作為一切判斷的基礎(chǔ)。芯片在內(nèi)部對(duì)接收總線做了定時(shí)心跳脈沖采樣來(lái)監(jiān)測(cè)總線上數(shù)據(jù),同時(shí),出于對(duì)設(shè)計(jì)簡(jiǎn)化的考慮,發(fā)送總線也采用了類(lèi)似定時(shí)脈沖的方式進(jìn)行處理,即做出同樣一系列定時(shí)心跳脈沖信號(hào)來(lái)控制發(fā)送時(shí)的數(shù)據(jù)內(nèi)部采樣。

CAN總線控制器中通常通過(guò)在一比特?cái)?shù)據(jù)的時(shí)間內(nèi)進(jìn)行采樣來(lái)判斷當(dāng)前數(shù)據(jù)是“0”還是“1”。芯片通常會(huì)有配置采樣點(diǎn)的寄存器,來(lái)調(diào)整在每比特?cái)?shù)據(jù)中間采樣的位置,可以設(shè)置1次采樣或3次采樣,比如NXP公司的SJA1000T芯片[6]中就有類(lèi)似的設(shè)置,如圖5所示。應(yīng)用中一次采樣使用較多,下文也都以一次采樣為例來(lái)敘述。

圖5 CAN總線接收端采樣點(diǎn)配置Fig.5 Sampling point configuration at the receiver of CAN bus

如上文所述,原設(shè)計(jì)中,發(fā)送器脈沖沒(méi)有獨(dú)立的控制信號(hào),發(fā)送脈沖在配置完成后一直存在,它和接收脈沖的時(shí)間差即為每比特?cái)?shù)據(jù)開(kāi)始的時(shí)刻與采樣點(diǎn)位置的時(shí)間差。在通信速率不高(小于500 kbit/s)的情況下,幾百納秒的延時(shí)對(duì)于一位數(shù)據(jù)長(zhǎng)達(dá)幾微秒的時(shí)間來(lái)說(shuō)影響較小。理論上,這種設(shè)計(jì)方式?jīng)]有太大的問(wèn)題,總線上理想狀態(tài)下沒(méi)有延時(shí),實(shí)際應(yīng)用中即使有延時(shí),如果不運(yùn)行在高速通信狀態(tài)或者遇到延時(shí)特別大的情況,通信也不會(huì)發(fā)生問(wèn)題。而這種設(shè)計(jì)方法減少了一套發(fā)送器的設(shè)計(jì),降低了一定的復(fù)雜度。同時(shí),發(fā)送、接收耦合在一起也不容易發(fā)生兩者匹配的問(wèn)題。實(shí)際應(yīng)用中,在較低通信速度、較小的總線延時(shí)條件下,信道情況接近理想情況,通信并不會(huì)出現(xiàn)問(wèn)題。

3.2 風(fēng)險(xiǎn)問(wèn)題

在高速通信的情況下,常用的芯片外部電路連接方式如圖6所示。

圖6 常見(jiàn)的CAN總線連接方式Fig.6 Common connection type of CAN bus

在實(shí)際設(shè)計(jì)過(guò)程中,需要在總線控制器和總線收發(fā)器間增加光耦隔離器件,保證信號(hào)隔離[7]??梢钥吹剑瑥腁發(fā)送信號(hào)開(kāi)始,整體延時(shí)時(shí)間為從控制器A 發(fā)送 → 隔離A → 收發(fā)器A →總線傳播→收發(fā)器B → 隔離B → 控制器B接收。而如果控制器B要回應(yīng)信號(hào),則總延時(shí)翻倍。

當(dāng)通信速度到達(dá)1 Mbit/s(CAN2.0協(xié)議允許的最大通信速率)時(shí),由于每個(gè)比特只有16個(gè)周期(在16 MHz晶振條件下),即1 μs,而CAN總線通信在輸入/輸出端都要連接收發(fā)器和隔離器件,器件性能較差時(shí),兩者的最大延時(shí)均可達(dá)100 ns左右。從上述收發(fā)過(guò)程可以看出,從發(fā)送端發(fā)送出數(shù)據(jù)到接收端收到數(shù)據(jù)并回復(fù),外部延時(shí)可達(dá)800 ns,再加上內(nèi)部數(shù)據(jù)同步和CAN總線上的延時(shí),最大可能會(huì)超過(guò)1 μs。這與1 Mbit/s通信速率下,一比特?cái)?shù)據(jù)的時(shí)間已經(jīng)可以匹配。對(duì)于ACK應(yīng)答功能,即使將采樣點(diǎn)移至最右端(87.5%處位置),在最壞情況下仍然無(wú)法保證發(fā)送節(jié)點(diǎn)在一比特?cái)?shù)據(jù)時(shí)間內(nèi)能夠收到應(yīng)答信號(hào),這就會(huì)造成發(fā)送節(jié)點(diǎn)進(jìn)入不斷發(fā)送的死循環(huán)狀態(tài),直至超出錯(cuò)誤限值進(jìn)入靜默。

4 優(yōu)化設(shè)計(jì)的分析和方案

影響總延時(shí)的一個(gè)很重要的原因是開(kāi)始計(jì)算“延時(shí)”的時(shí)刻,即從發(fā)送節(jié)點(diǎn)剛剛發(fā)送數(shù)據(jù)的時(shí)候,這是原方案中無(wú)獨(dú)立發(fā)送器設(shè)計(jì)的結(jié)果,然而對(duì)于CAN總線上的一個(gè)節(jié)點(diǎn)來(lái)說(shuō),它對(duì)一段數(shù)據(jù)的判斷應(yīng)該是從接收到這段數(shù)據(jù)的時(shí)間開(kāi)始。比如節(jié)點(diǎn)A發(fā)送數(shù)據(jù)給B的時(shí)候,A并不是在發(fā)送出去數(shù)據(jù)的時(shí)刻就立即收到了自己發(fā)送的數(shù)據(jù),在CAN總線的通信中,A同樣需要在通過(guò)隔離器件和收發(fā)器之后,才能收到自己發(fā)送的數(shù)據(jù),所以這種情況下,使用A接收到數(shù)據(jù)的時(shí)間作為A進(jìn)行一切判斷的基準(zhǔn)才是更為合理的。而原設(shè)計(jì)中因?yàn)榘l(fā)送、接收緊密耦合,發(fā)送“開(kāi)始”和接收“采樣”的時(shí)間差在配置之后即為恒定值,在原本時(shí)間裕量就不大的情況下,“多一倍”的外部延時(shí)會(huì)造成芯片內(nèi)部如何優(yōu)化都無(wú)法補(bǔ)償?shù)臅r(shí)序問(wèn)題。

4.1 時(shí)序分析

下面以ACK應(yīng)答錯(cuò)誤為例對(duì)發(fā)生錯(cuò)誤的時(shí)序情況進(jìn)行分析。如圖7所示,CAN_A為幀發(fā)送節(jié)點(diǎn),CAN_B為幀接收節(jié)點(diǎn),按照CAN通信協(xié)議,CAN_B需要在ACK槽期間內(nèi)向CAN_A回復(fù)一位低信號(hào),來(lái)表示接收正常。在理想(或延時(shí)較小)情況下,回復(fù)時(shí)間很容易滿足要求;而在實(shí)際情況下,由于CAN_B端的發(fā)送和CAN_A端的接收都有延時(shí),時(shí)間很可能超過(guò)以CAN_A發(fā)送時(shí)刻為起始時(shí)間的一比特位寬絕對(duì)時(shí)間,內(nèi)部如果以發(fā)送接收都用固定脈沖方式來(lái)設(shè)計(jì),就無(wú)法通過(guò)調(diào)節(jié)采樣點(diǎn)以規(guī)避這個(gè)問(wèn)題。實(shí)際上,即使關(guān)閉應(yīng)答機(jī)制,較大延時(shí)造成的影響同樣會(huì)使得通信過(guò)程中發(fā)生其他錯(cuò)誤,例如位錯(cuò)誤或CRC校驗(yàn)錯(cuò)誤等,但都不及ACK應(yīng)答錯(cuò)誤表現(xiàn)得明顯,限于篇幅在這里不再展開(kāi)分析其他錯(cuò)誤情況。

圖7 ACK應(yīng)答錯(cuò)誤時(shí)序分析Fig.7 Timing analysis of ACK response errors

4.2 優(yōu)化方案

發(fā)生這種問(wèn)題的核心原因其實(shí)就在于接收采樣脈沖與發(fā)送采樣脈沖采用了同一套邏輯,兩者之間的時(shí)間差是不依賴(lài)于外部電路、絕對(duì)的時(shí)間差。也就是說(shuō),這種情況下是以發(fā)送時(shí)刻為起始點(diǎn)計(jì)算,即發(fā)送“開(kāi)始”和接收“采樣”的時(shí)間差恒定,調(diào)整采樣點(diǎn)最多也只能到當(dāng)前比特位的結(jié)尾。然而,如果外部的電路出現(xiàn)較差延時(shí)的情況,絕對(duì)的時(shí)間相位差調(diào)整是不足以應(yīng)對(duì)的。

實(shí)際上,采樣點(diǎn)的概念本就應(yīng)該是對(duì)接收信號(hào)而言,只有這樣,才能把總線上發(fā)送節(jié)點(diǎn)自身從發(fā)送到接收的延時(shí)抵消掉,減少對(duì)通信產(chǎn)生的影響。而原版的設(shè)計(jì)中,是忽略了這一點(diǎn)的。所以?xún)?yōu)化設(shè)計(jì)的關(guān)鍵就是重新設(shè)計(jì)獨(dú)立的發(fā)送器,解開(kāi)發(fā)送器和接收器的耦合關(guān)系,將所謂的“延時(shí)時(shí)間”的起始,修改成從發(fā)送節(jié)點(diǎn)“接收到自己發(fā)送到總線上的數(shù)據(jù)”的時(shí)刻,其實(shí)這也更符合“接收”這個(gè)行為的定義。

當(dāng)然,由于CAN總線存在總線信號(hào)監(jiān)控的需求,發(fā)送和接收不可能完全獨(dú)立。其中比對(duì)發(fā)送數(shù)據(jù)和接收數(shù)據(jù)就是解耦合過(guò)程中遇到的最大挑戰(zhàn)。可以使用的一個(gè)解決方案是人為設(shè)定一個(gè)最大的延時(shí)閾值。例如設(shè)置為不超過(guò)隨后一比特?cái)?shù)據(jù)的時(shí)間,這個(gè)閾值以外的信號(hào)不再進(jìn)行比對(duì)。在可容忍的延時(shí)時(shí)間之內(nèi),根據(jù)外部電路不同的情況,采樣點(diǎn)正在采樣的信號(hào)可能是在發(fā)送的當(dāng)前信號(hào),也有可能在發(fā)送的下一周期信號(hào)(延時(shí)較大),但是總信號(hào)的順序編號(hào)是可以記錄下來(lái)的,這樣就可以根據(jù)當(dāng)前信號(hào)的編號(hào)來(lái)比對(duì)數(shù)據(jù),即可解決發(fā)送、接收數(shù)據(jù)比對(duì)的問(wèn)題。

5 優(yōu)化后仿真

在按照優(yōu)化思路對(duì)原設(shè)計(jì)進(jìn)行修改之后,對(duì)新設(shè)計(jì)進(jìn)行仿真驗(yàn)證是必須要做的。如圖8所示,在1 Mbit/s的通信速率下,當(dāng)把外部延時(shí)設(shè)置為800 ns(從發(fā)送端發(fā)出信號(hào),經(jīng)過(guò)隔離器件、收發(fā)器、總線延時(shí),再經(jīng)過(guò)接收端的收發(fā)器、隔離器件到達(dá)接收端的時(shí)間)時(shí),芯片仍然保證可以進(jìn)行正常通信,而在原設(shè)計(jì)中,超過(guò)300 ns就會(huì)出現(xiàn)仿真失敗的情況。

圖8 在1 Mbit/s通信速率下,模擬總延時(shí)800 ns時(shí)的仿真結(jié)果Fig.8 Simulation results when the total delay is 800 ns under 1 Mbit/s communication rate

為了在芯片流片之前保證功能沒(méi)有錯(cuò)誤,需要進(jìn)行大量仿真來(lái)盡可能覆蓋更多的功能。經(jīng)過(guò)比較完備的仿真案例驗(yàn)證,新的芯片設(shè)計(jì)在優(yōu)化發(fā)送器的基礎(chǔ)上,成功改善了芯片在高延遲信道下通信性能,同時(shí)并沒(méi)有引入其他的錯(cuò)誤,可以認(rèn)為優(yōu)化設(shè)計(jì)后的芯片從功能層面具備了流片的條件。

6 結(jié)論

本文針對(duì)已流片的CAN控制器芯片在測(cè)試中發(fā)現(xiàn)的通信問(wèn)題,從CAN總線協(xié)議的特點(diǎn)出發(fā),介紹CAN總線相關(guān)的基本信息,闡述原設(shè)計(jì)的思路和存在的弊端,在此基礎(chǔ)上通過(guò)分析出現(xiàn)問(wèn)題信號(hào)的相互時(shí)序關(guān)系,確定了優(yōu)化設(shè)計(jì)的方案。并在執(zhí)行方案后對(duì)芯片的功能進(jìn)行了完整的仿真驗(yàn)證,最終使得優(yōu)化設(shè)計(jì)的芯片具備了重新流片的條件。

猜你喜歡
延時(shí)總線比特
日光燈斷電關(guān)閉及自動(dòng)延時(shí)開(kāi)關(guān)設(shè)計(jì)
一種基于CAN總線的誤碼測(cè)試方法
比特幣還能投資嗎
比特幣分裂
比特幣一年漲135%重回5530元
基于CD4060 的室內(nèi)換氣系統(tǒng)延時(shí)關(guān)機(jī)電路設(shè)計(jì)
宋湘延時(shí)答妙對(duì)
CAN總線并發(fā)通信時(shí)下位機(jī)應(yīng)用軟件設(shè)計(jì)
基于CAN總線的水下通信系統(tǒng)設(shè)計(jì)
神秘的比特幣