楊加龍,金 翊,歐陽(yáng)山,周時(shí)強(qiáng)
隨著千位三值光學(xué)計(jì)算機(jī)(ternary optical computer,TOC)整機(jī)系統(tǒng)SD11和圖1所示的SD16日趨完善,這種以數(shù)據(jù)位數(shù)眾多、數(shù)據(jù)位能任意分組獨(dú)立使用和各數(shù)據(jù)位的計(jì)算功能可在運(yùn)行時(shí)重構(gòu)[1]為特色的新型計(jì)算機(jī)進(jìn)入了人們的視野,為解決超級(jí)計(jì)算機(jī)系統(tǒng)面臨的棘手問(wèn)題帶來(lái)了希望.
圖1 TOC(SD16)Fig.1 TOC(SD16)
TOC采用“光計(jì)算、電控制、盡量利用已有器件”的構(gòu)建策略,其輸入輸出設(shè)備、通信設(shè)備和存儲(chǔ)設(shè)備都盡量采用電子計(jì)算機(jī)的常見(jiàn)部件,以此來(lái)加快整機(jī)系統(tǒng)的研發(fā)過(guò)程,同時(shí)降低研發(fā)難度.因此,在TOC中不可避免地存在光信號(hào)和電信號(hào)的相互轉(zhuǎn)換過(guò)程,其中將電信號(hào)轉(zhuǎn)換成三值光信號(hào)的設(shè)備被稱(chēng)為編碼器[2-3],將三值光信號(hào)轉(zhuǎn)換成電信號(hào)的設(shè)備被稱(chēng)為解碼器[2-3],二者都是TOC特有的基本部件.隨著解碼器理論的成熟和各個(gè)功能模塊的逐漸完善,開(kāi)發(fā)一種可靠的將解碼結(jié)果傳輸給其他部件的通信方式,已成為迫切需要解決的課題之一.本研究通過(guò)對(duì)TOC系統(tǒng)解碼器的分析和歸納[4-6],制定了有效的通信技術(shù)方案,包括通信機(jī)制、控制策略、容錯(cuò)技術(shù)、數(shù)據(jù)格式、沖突規(guī)避和物理信道擇取等方面,并按這一方案構(gòu)造了實(shí)際的通信系統(tǒng),進(jìn)行了實(shí)驗(yàn)測(cè)試,為T(mén)OC解碼器通信子系統(tǒng)的后續(xù)研究提供參考.
在TOC中,解碼器子系統(tǒng)包含結(jié)果解碼器和控制解碼器兩個(gè)部分:結(jié)果解碼器用在三值光學(xué)運(yùn)算器主光路的輸出端,其功能是將三值光學(xué)運(yùn)算器輸出的光學(xué)信號(hào)(計(jì)算結(jié)果)轉(zhuǎn)換成表達(dá)同一信息的電學(xué)信號(hào);控制解碼器用在三值光學(xué)處理器控制光路的輸出端,其功能是將控制光路輸出的光信號(hào)轉(zhuǎn)換成對(duì)應(yīng)的電信號(hào).二者的通信子系統(tǒng)需要與監(jiān)控系統(tǒng)所在的上位機(jī)進(jìn)行通信,將各自的解碼結(jié)果發(fā)送到位于上位機(jī)的對(duì)應(yīng)接收緩沖區(qū).
在TOC的不同研究階段,研究目標(biāo)、部件性能、整機(jī)結(jié)構(gòu)、集成度、數(shù)據(jù)位數(shù)多少、運(yùn)算速度等方面都不相同,因此對(duì)解碼器通信系統(tǒng)的技術(shù)要求也就不同.本研究以SD11為背景,討論了TOC解碼器通信系統(tǒng)的各種技術(shù)和設(shè)計(jì),但技術(shù)本身對(duì)各種TOC都適用.
對(duì)本通信子系統(tǒng)的需求進(jìn)行了仔細(xì)分析和歸納,可以得到如下要點(diǎn).
(1)由監(jiān)控系統(tǒng)啟動(dòng)通信過(guò)程.TOC的各種硬件,包括控制解碼器和結(jié)果解碼器,都是在TOC的監(jiān)控系統(tǒng)管理下進(jìn)行工作[7],因此什么時(shí)刻將哪個(gè)解碼器生成的數(shù)據(jù)傳送給哪個(gè)部件只有監(jiān)控系統(tǒng)知道.因此,本通信子系統(tǒng)也必須在監(jiān)控系統(tǒng)的管理下工作,由監(jiān)控系統(tǒng)適時(shí)啟動(dòng)本通信子系統(tǒng),并考察傳送過(guò)程的可靠性.
(2)有檢錯(cuò)和重發(fā)能力.鑒于本通信子系統(tǒng)的信道距離限于一臺(tái)TOC內(nèi)部,通信環(huán)境較好,且通信頻度較低,但不允許傳送的數(shù)據(jù)有任何差錯(cuò).因此,要求本通信子系統(tǒng)有檢錯(cuò)和數(shù)據(jù)重發(fā)能力,漏檢率低于10?10,不要求糾錯(cuò)能力.
(3)故障檢測(cè)和示警機(jī)制.本通信子系統(tǒng)應(yīng)能感知自身出現(xiàn)的各種故障,并能在自身不可恢復(fù)時(shí)向監(jiān)控系統(tǒng)示警且給出故障提示,以便于檢修.
(4)控制傳輸過(guò)程的能力.由于解碼器各部分的工作過(guò)程、處理器的計(jì)算過(guò)程、控制光路的工作過(guò)程、計(jì)算結(jié)果接收部件的工作過(guò)程和通信過(guò)程都是并行工作、相互關(guān)聯(lián)又各自獨(dú)立的,因此本通信子系統(tǒng)在工作時(shí)必須考慮到解碼器提供數(shù)據(jù)的及時(shí)性和接收端的空閑情況.為應(yīng)對(duì)二者之間出現(xiàn)不同步的情況,要求本通信子系統(tǒng)能夠自動(dòng)實(shí)施通信延遲,以避免發(fā)生通信錯(cuò)誤.當(dāng)數(shù)據(jù)全部傳送完成時(shí),又要求本通信子系統(tǒng)能自動(dòng)停止工作并向監(jiān)控系統(tǒng)報(bào)告.
(5)占用解碼器端資源少.結(jié)果解碼器和控制解碼器都是TOC的基本硬件,從系統(tǒng)的效率、能耗、幾何尺寸、可靠性等方面考慮,要求它們的結(jié)構(gòu)盡量簡(jiǎn)單.因?yàn)榻獯a器的軟硬件資源都十分緊張,所以要求本通信子系統(tǒng)盡量少占用解碼器端的資源.
(6)對(duì)其他部件干擾小.對(duì)其他部件的干擾將直接損害TOC系統(tǒng)的整體性能,因此要求本通信技術(shù)有較小的信號(hào)輻射泄漏,不會(huì)干擾其他部件的工作.
(7)接口簡(jiǎn)單、技術(shù)成熟.本通信技術(shù)僅是TOC多種重要技術(shù)之一,既不能在這項(xiàng)技術(shù)上投入很多研究精力,又要求其穩(wěn)定可靠地工作,因此必須采用接口簡(jiǎn)單的成熟技術(shù)[8-9],避免過(guò)多的研究風(fēng)險(xiǎn).
(8)保證1.2 m的可靠傳輸距離.SD11的光學(xué)處理器到計(jì)算結(jié)果接收設(shè)備的距離、控制光路到重構(gòu)電路輸入端的距離都在0.8~1.2 m之間.因此,針對(duì)SD11的通信子系統(tǒng)要求其可靠通信距離達(dá)到1.2 m.
根據(jù)上述8個(gè)需求分析要點(diǎn),本研究設(shè)計(jì)的通信子系統(tǒng)包含接收數(shù)據(jù)緩存池、字節(jié)數(shù)據(jù)重復(fù)發(fā)送檢錯(cuò)機(jī)制、容忍通信系統(tǒng)偶發(fā)瞬態(tài)錯(cuò)誤的重新發(fā)送機(jī)制、容忍周邊部件偶發(fā)瞬態(tài)錯(cuò)誤的重啟通信系統(tǒng)機(jī)制、對(duì)永久性故障的停機(jī)示警機(jī)制、用中斷方式啟動(dòng)發(fā)送端機(jī)制和通信用的數(shù)據(jù)格式等核心內(nèi)容[10-11],并將這些設(shè)計(jì)結(jié)合內(nèi)部集成電路(inter-integrated circuit,IIC)技術(shù),實(shí)現(xiàn)了以接收端為主控設(shè)備的TOC解碼器的通信子系統(tǒng)[12].這些設(shè)計(jì)的要點(diǎn)如下.
(1)在上位機(jī)建立由監(jiān)控系統(tǒng)管理的數(shù)據(jù)接收池.
由于接收緩存區(qū)設(shè)在上位機(jī),則接收端軟件也必須運(yùn)行在上位機(jī).只需將接收端軟件構(gòu)造成一個(gè)可獨(dú)立運(yùn)行的模塊(如構(gòu)成進(jìn)程或線程),并由本通信子系統(tǒng)程序調(diào)用接收端軟件,即可啟動(dòng)接收端設(shè)備,并使其進(jìn)入就緒狀態(tài).再為本通信子系統(tǒng)設(shè)計(jì)一個(gè)遠(yuǎn)程啟動(dòng)發(fā)送端的機(jī)制,則監(jiān)控系統(tǒng)就能適時(shí)啟動(dòng)本通信子系統(tǒng),并給出發(fā)送端編號(hào)和接收緩存區(qū)地址,從而啟動(dòng)通信過(guò)程,滿(mǎn)足了需求分析(1)的要求.
(2)采用字節(jié)數(shù)據(jù)重復(fù)和出錯(cuò)重發(fā)策略.
鑒于解碼器的輸出數(shù)據(jù)是處理器的計(jì)算結(jié)果或控制處理器工作的數(shù)據(jù),因此不允許在傳送中發(fā)生任何差錯(cuò).常用的奇偶校驗(yàn)不能感知偶數(shù)位出錯(cuò);海明碼、循環(huán)冗余校驗(yàn)[13]或其他校驗(yàn)方法的算法又比較復(fù)雜,檢驗(yàn)過(guò)程占用較多的軟硬件資源,因此它們都不適合在本研究中使用.經(jīng)過(guò)對(duì)各種校驗(yàn)方法的認(rèn)真分析,最終本研究采用了如下的校驗(yàn)策略:每個(gè)字節(jié)的數(shù)據(jù)都連續(xù)傳送兩遍,若接收端收到的兩個(gè)字節(jié)完全相同,就認(rèn)可該數(shù)據(jù),否則就要求重發(fā),重發(fā)時(shí)仍然將該字節(jié)數(shù)據(jù)連續(xù)傳送兩遍.這一策略的漏檢概率估算如下:對(duì)于物理連接可靠的有線鏈路,線路噪聲造成的誤碼率應(yīng)低于10?6,即傳送百萬(wàn)個(gè)碼元最多可能出現(xiàn)一個(gè)碼元錯(cuò)誤[14].例如,第一個(gè)字節(jié)中有一個(gè)碼元出錯(cuò)的概率為8×10?6,同時(shí)在第二個(gè)字節(jié)也有一個(gè)碼元出錯(cuò)的概率為(8×10?6)2,于是兩個(gè)字節(jié)在同一個(gè)位上出錯(cuò)的概率為(8×10?6)2/8=8×10?12.這是一個(gè)可以忽略的小概率.由于任何在兩個(gè)字節(jié)的不同位上發(fā)生的錯(cuò)誤都可以通過(guò)重發(fā)機(jī)制加以糾正,因此本策略可以滿(mǎn)足需求分析(2)的要求.
(3)設(shè)置重發(fā)計(jì)數(shù)器和重啟通信計(jì)數(shù)器構(gòu)成的容錯(cuò)與示警機(jī)制.
在長(zhǎng)期工作中,通信系統(tǒng)發(fā)生故障的可能性始終存在.對(duì)于瞬態(tài)故障,只需待故障原因掠過(guò)后,系統(tǒng)即可恢復(fù)工作,而因元器件損壞造成的故障則必須停機(jī)檢修方能排除.于是本系統(tǒng)設(shè)置重發(fā)計(jì)數(shù)器以應(yīng)對(duì)通信系統(tǒng)內(nèi)部的瞬態(tài)故障;設(shè)置重啟通信計(jì)數(shù)器以應(yīng)對(duì)包括整個(gè)通信系統(tǒng)在內(nèi)的有關(guān)部件發(fā)生的瞬態(tài)故障;以退出通信系統(tǒng)時(shí)返回給監(jiān)控系統(tǒng)的代碼來(lái)表達(dá)故障類(lèi)型,達(dá)到向監(jiān)控系統(tǒng)示警的目的.考慮到本通信系統(tǒng)的接收端與監(jiān)控系統(tǒng)都位于上位機(jī),為方便計(jì),將重發(fā)計(jì)數(shù)器設(shè)置在接收端,而重啟通信計(jì)數(shù)器感知的范圍超出了通信系統(tǒng),因此必須設(shè)置在監(jiān)控系統(tǒng)中.這一示警方案的主要工作原理如下:
①在接收端設(shè)置重發(fā)計(jì)數(shù)器,并設(shè)定計(jì)數(shù)閾值為5.每當(dāng)接收端發(fā)生數(shù)據(jù)校驗(yàn)錯(cuò)誤,就將重發(fā)計(jì)數(shù)器加1,然后送出“不認(rèn)可”應(yīng)答,以此要求重發(fā)本字節(jié)數(shù)據(jù).如果通信故障是瞬態(tài)的,幾次重發(fā)后應(yīng)能等到故障掠過(guò),系統(tǒng)恢復(fù)正常,從而實(shí)現(xiàn)對(duì)瞬態(tài)故障的容錯(cuò).如果故障是非瞬態(tài)的,則重發(fā)過(guò)程會(huì)持續(xù)下去,直到計(jì)數(shù)器達(dá)到5次(計(jì)數(shù)閾值).這時(shí)主機(jī)終止通信(應(yīng)仍向IIC總線給出終止命令),退回監(jiān)控系統(tǒng),并通過(guò)通信狀況寄存器帶回出口參數(shù),以方便管理人員檢修.
②監(jiān)控系統(tǒng)設(shè)置一個(gè)重啟計(jì)數(shù)器,并設(shè)定計(jì)數(shù)閾值為3.每當(dāng)監(jiān)控系統(tǒng)啟動(dòng)一次本通信子系統(tǒng)軟件時(shí)就將該計(jì)數(shù)器加1.當(dāng)該計(jì)數(shù)器達(dá)到閾值時(shí),監(jiān)控系統(tǒng)將使TOC停機(jī),并在日志中給出通信故障的出錯(cuò)碼,以方便管理人員檢修.每當(dāng)本通信子系統(tǒng)退出時(shí),監(jiān)控系統(tǒng)都會(huì)查看通信狀況寄存器,并將其記錄在日志中,以便管理人員查閱.若通信狀況寄存器的值是標(biāo)示通信成功的00H,則清零并重啟通信計(jì)數(shù)器;若通訊狀況寄存器為其他值,則監(jiān)控系統(tǒng)就重啟本通信子系統(tǒng)一次.如果本通信子系統(tǒng)的故障是由于其外部瞬態(tài)原因造成的,則經(jīng)過(guò)幾次重啟,這些外部瞬態(tài)原因會(huì)掠過(guò),系統(tǒng)恢復(fù)正常;如果是由非瞬態(tài)原因造成的,則該TOC停止工作,以免給出錯(cuò)誤結(jié)果.
(4)建立啟動(dòng)發(fā)送端的中斷機(jī)制.
由于接收端軟件與本通信子系統(tǒng)軟件都運(yùn)行在上位機(jī),故啟動(dòng)接收端的方式比較簡(jiǎn)單,只需調(diào)用接收端程序模塊即可.但發(fā)送端軟件運(yùn)行于解碼器的處理器上,必須用遠(yuǎn)程方式通知發(fā)送端處理器啟動(dòng)發(fā)送端軟件.待通信兩端都進(jìn)入就緒狀態(tài)后,再依據(jù)具體的通信協(xié)議建立通信鏈路,進(jìn)而完成通信任務(wù).
考慮到SD11的各個(gè)發(fā)送端處理器在其他工作中都沒(méi)有使用外部中斷機(jī)制,本研究設(shè)計(jì)了采用外部中斷技術(shù)來(lái)通知發(fā)送端處理器啟動(dòng)相應(yīng)的發(fā)送端軟件.設(shè)計(jì)要點(diǎn)有二:①將接收端處理器的一個(gè)輸出引腳連接到發(fā)送端處理器的外部中斷輸入引腳;②將發(fā)送端軟件(或該軟件的入口)設(shè)定為對(duì)應(yīng)于該外部中斷的服務(wù)子程序.
(5)采用IIC通信技術(shù).
第1節(jié)中的需求分析(4)~(8)都是對(duì)通信技術(shù)的要求.但僅從這幾個(gè)要求來(lái)看,串行外設(shè)接口(serial peripheral interface,SPI),IIC,RS-232[8-9]等目前常用的通信技術(shù)都能勝任.考慮到接收端所在的上位機(jī)和發(fā)送端所在的解碼器都具有IIC通信的硬件設(shè)置,因此選用IIC通信能更好地滿(mǎn)足需求分析(6)~(8)的要求.
IIC具有傳輸控制能力,當(dāng)收發(fā)雙方有一個(gè)暫時(shí)不能通信時(shí),需要暫停通信的一方只需將時(shí)鐘線接零,待恢復(fù)通信時(shí),恢復(fù)時(shí)鐘線即可[15-16].這項(xiàng)協(xié)議方便了異步工作的收發(fā)雙方協(xié)調(diào)步調(diào),能夠滿(mǎn)足需求分析(5)的要求.當(dāng)通信距離不超過(guò)3 m時(shí),IIC能夠保證通信質(zhì)量,故能夠滿(mǎn)足需求分析(8)的要求.
IIC通信時(shí),接收端每收到一個(gè)字節(jié)數(shù)據(jù),都會(huì)在第9個(gè)時(shí)鐘期間向數(shù)據(jù)線上發(fā)送1位應(yīng)答信號(hào).應(yīng)答信號(hào)的值是由接收端處理器向IIC通信控制寄存器的應(yīng)答控制位寫(xiě)入的值來(lái)決定的,而發(fā)送端在這個(gè)時(shí)鐘期間接收數(shù)據(jù)線上的應(yīng)答信號(hào),并將其記錄在IIC通信狀態(tài)寄存器的應(yīng)答位中.本研究利用這個(gè)應(yīng)答位設(shè)計(jì)并實(shí)現(xiàn)了數(shù)據(jù)重發(fā)機(jī)制.但是,在IIC通信中,若接收端被設(shè)定為主機(jī),接收端就會(huì)在收到最后一個(gè)數(shù)據(jù)時(shí),應(yīng)答一個(gè)“不認(rèn)可”信號(hào),使數(shù)據(jù)線處于低電平狀態(tài),然后再以主機(jī)身份發(fā)送通信結(jié)束命令.這一用法在本通信子系統(tǒng)中就造成最后一個(gè)數(shù)據(jù)的應(yīng)答位具有雙重含義.為解決這個(gè)問(wèn)題,本通信子系統(tǒng)設(shè)計(jì)收發(fā)雙方確定的通信數(shù)據(jù)個(gè)數(shù)比實(shí)際數(shù)據(jù)個(gè)數(shù)多1,并在實(shí)際數(shù)據(jù)之后增加一個(gè)附加數(shù)據(jù),主機(jī)在附加數(shù)據(jù)后發(fā)出通信結(jié)束命令.同時(shí),進(jìn)一步規(guī)定該附加數(shù)據(jù)為6EH,可利用這個(gè)數(shù)據(jù)來(lái)判斷IIC數(shù)據(jù)線是否正常.因?yàn)楫?dāng)數(shù)據(jù)線意外接地時(shí),接收端收到的數(shù)據(jù)都是0,收到的附加數(shù)據(jù)是00H;當(dāng)數(shù)據(jù)線意外接高電平時(shí),收到的數(shù)據(jù)都是1,收到的附加數(shù)據(jù)是0FFH;當(dāng)數(shù)據(jù)線受時(shí)鐘干擾時(shí),收到的數(shù)據(jù)是高低電平的交替信號(hào),收到的附加數(shù)據(jù)是55H或0AAH,因此當(dāng)接收端收到的附加數(shù)據(jù)是6EH,就認(rèn)可本次通信收到的所有數(shù)據(jù),否則,就放棄收到的所有數(shù)據(jù),并給出數(shù)據(jù)線出錯(cuò)警示,要求通信子系統(tǒng)重啟.這項(xiàng)設(shè)計(jì)的要點(diǎn)如下:①接收端收到每個(gè)字節(jié)數(shù)據(jù)的第一次通信值時(shí),給出“認(rèn)可”應(yīng)答;②接收端收到每個(gè)字節(jié)數(shù)據(jù)的第二次通信值時(shí),首先和第一次收到的值進(jìn)行對(duì)比,若二者相同,給出“認(rèn)可”信號(hào),否則就給出“不認(rèn)可”信號(hào);③發(fā)送端每發(fā)送完一個(gè)字節(jié),就在第9個(gè)時(shí)鐘后讀通信狀態(tài)寄存器的應(yīng)答位,當(dāng)讀得“認(rèn)可”值時(shí),發(fā)送當(dāng)前數(shù)據(jù)的第二遍或下一個(gè)數(shù)據(jù)的第一遍,若讀得“不認(rèn)可”值,則再次發(fā)送當(dāng)前數(shù)據(jù)的第一遍,實(shí)現(xiàn)數(shù)據(jù)重發(fā);④收發(fā)雙方設(shè)定的傳送數(shù)據(jù)總數(shù)比實(shí)際數(shù)據(jù)數(shù)量多1,即傳送的最后一個(gè)數(shù)據(jù)為附加數(shù)據(jù)6EH,其作用包括保證最后一個(gè)實(shí)際數(shù)據(jù)在接收端得到驗(yàn)證、設(shè)定主控設(shè)備發(fā)送結(jié)束命令的時(shí)機(jī)以及接收端判讀本次通信過(guò)程中的數(shù)據(jù)線是否正常.
根據(jù)第2節(jié)系統(tǒng)設(shè)計(jì)給出的5個(gè)要點(diǎn),本研究設(shè)計(jì)并構(gòu)建的解碼器通信子系統(tǒng)如圖2所示,其中實(shí)線框表示硬件,虛線框表示軟件模塊,箭頭線表示硬件或模塊之間的聯(lián)系.
圖2 解碼器通信子系統(tǒng)軟硬件結(jié)構(gòu)及關(guān)系Fig.2 Structures and relationships of the software and hardware for the communication subsystem of the decoders
本通信子系統(tǒng)給出了兩個(gè)解碼器和一個(gè)上位機(jī).上位機(jī)的通用I/O引腳GPG 5和GPG 6分別與解碼器1或解碼器2的中斷輸入引腳EINT 11相連,構(gòu)成了本通信子系統(tǒng)軟件啟動(dòng)解碼器上發(fā)送端軟件的中斷通道.當(dāng)本通信子系統(tǒng)中包含更多的解碼器時(shí),需要使用相應(yīng)數(shù)量的上位機(jī)I/O引腳與各個(gè)解碼器建立中斷通道.遵循IIC協(xié)議,上位機(jī)和解碼器的IIC時(shí)鐘線SCL(serial clock line)和數(shù)據(jù)線SDA(serial date line)分別相連.SCL上的時(shí)鐘信號(hào)由IIC主機(jī)(接收端)發(fā)出,而SDA為雙向傳輸線.
鑒于SD11的一個(gè)處理器模塊有576位,故其解碼結(jié)果共有576位三值數(shù)據(jù).為了使這些三值數(shù)據(jù)能夠被電子計(jì)算機(jī)的設(shè)備接受,解碼器用兩位二值數(shù)據(jù)來(lái)表示一位三值數(shù)據(jù).因此576位三值數(shù)據(jù)形成了1 152位二值數(shù)據(jù),正好是144個(gè)字節(jié),故而本通信子系統(tǒng)每次傳送的數(shù)據(jù)總量為144個(gè)字節(jié),收發(fā)雙方的數(shù)據(jù)計(jì)數(shù)器閾值也均為144.
考慮到第2節(jié)系統(tǒng)設(shè)計(jì)要點(diǎn)(3)中設(shè)計(jì)重發(fā)計(jì)數(shù)器的閾值為5,故一次通信的最長(zhǎng)時(shí)間是每個(gè)數(shù)據(jù)都被重發(fā)5次.這種極端情況下發(fā)送的總字節(jié)數(shù)為144×2×5=1 440個(gè)字節(jié),每個(gè)字節(jié)后跟隨一個(gè)應(yīng)答位,故共有1 440×9=12 960位.而IIC的通信速率為100 kHz,故一次正常通信需要的最長(zhǎng)時(shí)間為0.129 6 s.
本通信子系統(tǒng)設(shè)計(jì)的工作步驟如下.
步驟1 當(dāng)需要將某個(gè)解碼器的解碼結(jié)果傳給上位機(jī)時(shí),監(jiān)控系統(tǒng)指令重啟計(jì)數(shù)器清零,然后調(diào)用解碼器通信子系統(tǒng)軟件的通信準(zhǔn)備程序來(lái)啟動(dòng)傳輸過(guò)程,其入口參數(shù)為本次通信的解碼器編號(hào).
步驟2 通信準(zhǔn)備程序根據(jù)入口參數(shù)選擇GPG-5或GPG-6來(lái)引發(fā)指定解碼器處CPU的外部中斷.
步驟3 解碼器的CPU進(jìn)入中斷服務(wù)程序后啟動(dòng)相關(guān)聯(lián)的發(fā)送端程序.發(fā)送端程序啟動(dòng)相關(guān)聯(lián)的IIC接口進(jìn)入就緒等待狀態(tài).
步驟4 通信準(zhǔn)備程序給通信狀況寄存器賦成功碼00H,然后適度延時(shí)以確保發(fā)送端進(jìn)入就緒等待狀態(tài),最后調(diào)用接收端程序(主機(jī)),其入口參數(shù)為從機(jī)ID.
步驟5 主機(jī)發(fā)出起始命令并廣播從機(jī)ID和通信方向,在第9個(gè)時(shí)鐘收取從機(jī)的應(yīng)答信號(hào),并從獲得從機(jī)應(yīng)答信號(hào)后開(kāi)始接收數(shù)據(jù).如果從機(jī)發(fā)生故障或主機(jī)廣播的從機(jī)ID不對(duì),則得不到從機(jī)應(yīng)答,主機(jī)將通信狀況寄存器修改成無(wú)從機(jī)應(yīng)答碼10H,然后返回通信準(zhǔn)備程序,并通過(guò)通信狀況寄存器向系統(tǒng)報(bào)告發(fā)生了無(wú)從機(jī)應(yīng)答故障.
步驟6 從機(jī)對(duì)主機(jī)的廣播給出應(yīng)答信號(hào)后,發(fā)送端程序從解碼結(jié)果存儲(chǔ)區(qū)取出第一個(gè)數(shù)據(jù),并將其寫(xiě)入IIC寄存器中的發(fā)送寄存器,引發(fā)IIC傳送數(shù)據(jù)給接收端,并將發(fā)送數(shù)據(jù)計(jì)數(shù)器加1、發(fā)送遍數(shù)計(jì)數(shù)器加1.
步驟7 接收端IIC部件收到數(shù)據(jù)后立刻通知主機(jī)端CPU讀取接收寄存器的值:①若接收遍數(shù)計(jì)數(shù)器為0,則將數(shù)據(jù)暫存入數(shù)據(jù)第一遍寄存器,并將接收遍數(shù)計(jì)數(shù)器加1,然后給出“認(rèn)可”應(yīng)答信號(hào);②若接收遍數(shù)計(jì)數(shù)器為1,則將收到的新數(shù)據(jù)與數(shù)據(jù)第一遍寄存器的值進(jìn)行比較,若相同,則給出“認(rèn)可”應(yīng)答信號(hào),然后將接收遍數(shù)計(jì)數(shù)器清零、重發(fā)計(jì)數(shù)器清零,并將數(shù)據(jù)存入相應(yīng)的接收緩存區(qū),將接收數(shù)據(jù)計(jì)數(shù)器加1;③若收到的新數(shù)據(jù)與數(shù)據(jù)第一遍寄存器的值不相同,且重發(fā)計(jì)數(shù)器未達(dá)到閾值,則給出“不認(rèn)可”應(yīng)答信號(hào),然后將接收遍數(shù)計(jì)數(shù)器清零、重發(fā)計(jì)數(shù)器加1;④若收到的新數(shù)據(jù)與數(shù)據(jù)第一遍寄存器的值不相同,且重發(fā)計(jì)數(shù)器達(dá)到閾值(5次),則給出通信結(jié)束命令,將通信狀況寄存器修改為數(shù)據(jù)校驗(yàn)出錯(cuò)碼12H,返回通信準(zhǔn)備程序.
步驟8 發(fā)送端收到接收端的應(yīng)答后,立刻通知從機(jī)端CPU檢查應(yīng)答信號(hào):①若從機(jī)端CPU獲得的應(yīng)答信號(hào)為“認(rèn)可”,且發(fā)送遍數(shù)計(jì)數(shù)器為1,則將發(fā)送寄存器中的當(dāng)前數(shù)據(jù)再次發(fā)送,并將發(fā)送遍數(shù)計(jì)數(shù)器清零;②若從機(jī)端CPU獲得的應(yīng)答信號(hào)為“認(rèn)可”,且發(fā)送遍數(shù)計(jì)數(shù)器為0,則從解碼結(jié)果存儲(chǔ)區(qū)取出下一個(gè)數(shù)據(jù)寫(xiě)入發(fā)送寄存器,引發(fā)IIC傳送,并將發(fā)送數(shù)據(jù)計(jì)數(shù)器加1,發(fā)送遍數(shù)計(jì)數(shù)器加1;③若從機(jī)端CPU獲得的應(yīng)答信號(hào)為“不認(rèn)可”,則將發(fā)送寄存器中的當(dāng)前數(shù)據(jù)再次發(fā)送,并將發(fā)送遍數(shù)計(jì)數(shù)器加1.
步驟9 交替執(zhí)行步驟7和8,直至收發(fā)雙方的數(shù)據(jù)計(jì)數(shù)器都達(dá)到閾值(144).此時(shí),發(fā)送端送出附加數(shù)據(jù)6EH,接收端收到附加數(shù)據(jù)后,主機(jī)立刻給出通信結(jié)束命令,并將通信狀況寄存器修改為成功碼00H,返回通信準(zhǔn)備程序.如果接收端收到的數(shù)據(jù)不是6EH,則說(shuō)明數(shù)據(jù)線有故障,將通信狀況寄存器修改為數(shù)據(jù)故障碼11H,放棄收到的全部數(shù)據(jù),返回通信準(zhǔn)備程序.
步驟10 接收端程序返回通信準(zhǔn)備程序后,通信準(zhǔn)備程序立刻返回監(jiān)控系統(tǒng):①監(jiān)控系統(tǒng)檢查通信狀況寄存器的內(nèi)容,若為00H則結(jié)束本次通信;②若通信狀況寄存器的內(nèi)容非00H,且重啟計(jì)數(shù)器未達(dá)到閾值(3次),則將重啟計(jì)數(shù)器加1,然后調(diào)用通信準(zhǔn)備程序來(lái)再次啟動(dòng)傳輸過(guò)程,其入口參數(shù)仍為本次通信的發(fā)送端解碼器編號(hào);③若通信狀況寄存器的內(nèi)容非00H,且重啟計(jì)數(shù)器達(dá)到閾值(3次),則發(fā)出系統(tǒng)故障警示,并停止三值光學(xué)處理器的運(yùn)行.
根據(jù)第2節(jié)中的系統(tǒng)設(shè)計(jì)要點(diǎn)(2)和(5),結(jié)合IIC通信協(xié)議[15]的規(guī)定,本通信子系統(tǒng)的數(shù)據(jù)格式和時(shí)序如圖3所示.本通信子系統(tǒng)每次要傳送144字節(jié)的數(shù)據(jù),每個(gè)數(shù)據(jù)都連續(xù)傳送2次,第144個(gè)字節(jié)數(shù)據(jù)后又附加了數(shù)據(jù)6EH,故正常通信時(shí)每次要傳送289個(gè)字節(jié),且每發(fā)生一次校驗(yàn)錯(cuò)誤就會(huì)多傳送2個(gè)字節(jié).在每個(gè)字節(jié)數(shù)據(jù)的第1遍傳送后,接收端總是給出“認(rèn)可”應(yīng)答(A,低電平),但是在每個(gè)字節(jié)數(shù)據(jù)的第2遍傳送后,接收端先將兩次收到的值進(jìn)行對(duì)比,若相同就給出“認(rèn)可”應(yīng)答,并保存該數(shù)據(jù),若不同,就給出“不認(rèn)可”應(yīng)答(A,高電平),并放棄收到的字節(jié)數(shù)據(jù).發(fā)送端在送完一個(gè)字節(jié)數(shù)據(jù)后就檢查接收端給出的應(yīng)答信號(hào),若應(yīng)答為“認(rèn)可”,則發(fā)送當(dāng)前字節(jié)數(shù)據(jù)的第2遍或下一個(gè)字節(jié)數(shù)據(jù)的第1遍,若應(yīng)答為“不認(rèn)可”,則再次發(fā)送當(dāng)前數(shù)據(jù)的第1遍.當(dāng)發(fā)送完附加數(shù)據(jù)后,發(fā)送端放棄SDA線,主機(jī)發(fā)出通信結(jié)束命令.
圖3 數(shù)據(jù)格式和時(shí)序Fig.3 Data format and timing sequence
顯然,接收端CPU要在時(shí)鐘線SCL為低電平的半個(gè)周期內(nèi)完成對(duì)收到數(shù)據(jù)的校驗(yàn)和賦值IIC部件的應(yīng)答寄存器,以便在其后標(biāo)示為9的時(shí)鐘線高電平之前形成應(yīng)答信號(hào).IIC允許接收端處理器將SCL拉低來(lái)獲得足夠的計(jì)算用時(shí).本系統(tǒng)接收端CPU的主頻為400 MHz,而IIC通信采用的時(shí)鐘頻率為100 kHz,即在SCL為低電平的半個(gè)周期中,接收端CPU可以執(zhí)行約20萬(wàn)條指令.這足以完成字節(jié)數(shù)據(jù)校驗(yàn)和給應(yīng)答寄存器賦值,因此在圖3中標(biāo)示為9的時(shí)鐘前沒(méi)有將SCL拉低的時(shí)序.同理,發(fā)送端在SCL的半個(gè)周期中也足以完成對(duì)應(yīng)答信號(hào)的解讀、確定要發(fā)送的數(shù)據(jù)、將數(shù)據(jù)送到發(fā)送緩存區(qū)和啟動(dòng)發(fā)送,因此在圖3中標(biāo)示為1的時(shí)鐘前也沒(méi)有將SCL拉低來(lái)獲取額外時(shí)間的時(shí)序.
本研究設(shè)計(jì)的SD11解碼器通信子系統(tǒng)軟件部分可分為5個(gè)邏輯模塊:通信準(zhǔn)備程序、接收端程序、發(fā)送端程序、監(jiān)控程序中的相關(guān)部分和解碼器程序中的相關(guān)部分,其中監(jiān)控程序的相關(guān)部分完成設(shè)立接收緩存區(qū)、調(diào)用通信準(zhǔn)備程序、設(shè)立重啟計(jì)數(shù)器、修改重啟計(jì)數(shù)器、解讀通信準(zhǔn)備程序的返回參數(shù)等任務(wù).這些工作本身比較簡(jiǎn)單,但都與監(jiān)控系統(tǒng)的其他工作密切相關(guān),在此不作詳細(xì)論述.與此類(lèi)似,解碼器程序中的相關(guān)部分主要是設(shè)立解碼結(jié)果存儲(chǔ)區(qū),而這也是解碼軟件的主要任務(wù)之一,在此也不作詳細(xì)論述.剩余的3個(gè)模塊是本通信子系統(tǒng)軟件的主體程序,其流程圖分別如圖4~6所示.
圖4 通信準(zhǔn)備程序流程Fig.4 Preparing program diagram of the communication
通信準(zhǔn)備程序向上與監(jiān)控程序?qū)?接受監(jiān)控程序的調(diào)用并匯報(bào)通信狀況;向下為通信雙方準(zhǔn)備條件并啟動(dòng)接收端程序和發(fā)送端程序.通信準(zhǔn)備程序的重要作用在于對(duì)監(jiān)控系統(tǒng)遮蔽通信過(guò)程的細(xì)節(jié),從而使通信系統(tǒng)的更新,甚至通信技術(shù)的更換都不再影響監(jiān)控程序.
發(fā)送端程序的第一個(gè)有效操作是“保護(hù)現(xiàn)場(chǎng)”,最后兩個(gè)有效操作是“恢復(fù)現(xiàn)場(chǎng)”和“中斷返回”(見(jiàn)圖6).這源于發(fā)送端程序被設(shè)計(jì)為中斷服務(wù)程序,對(duì)它的調(diào)用是隨機(jī)發(fā)生的,CPU不可能及時(shí)整理好現(xiàn)場(chǎng).接收端程序中沒(méi)有“保護(hù)現(xiàn)場(chǎng)”和“恢復(fù)現(xiàn)場(chǎng)”操作(見(jiàn)圖5),因?yàn)榻邮斩顺绦虮辉O(shè)計(jì)為子程序,在通信準(zhǔn)備程序適時(shí)調(diào)用它之前就已整理好了CPU的現(xiàn)場(chǎng).
本研究對(duì)所設(shè)計(jì)完成的通信子系統(tǒng)在SD11上進(jìn)行了詳細(xì)測(cè)試,包括通信實(shí)驗(yàn)、重發(fā)實(shí)驗(yàn)和重啟實(shí)驗(yàn),其實(shí)驗(yàn)規(guī)劃、實(shí)驗(yàn)過(guò)程和實(shí)驗(yàn)結(jié)果如下.
(1)發(fā)送數(shù)據(jù)設(shè)置.本通信子系統(tǒng)發(fā)送的數(shù)據(jù)是SD11各解碼器輸出的數(shù)據(jù).這些數(shù)據(jù)由解碼器程序放置在各自名為JMSJ[144]的字節(jié)型數(shù)組變量中,因此在本實(shí)驗(yàn)使用的解碼器替代程序中也設(shè)置了JMSJ[144]的字節(jié)型數(shù)組變量,并通過(guò)給JMSJ[144]寫(xiě)入值來(lái)更新測(cè)試用例.實(shí)驗(yàn)用例來(lái)自?xún)煞N方法:一是由選擇數(shù)據(jù)組成的測(cè)試?yán)?稱(chēng)為A類(lèi)用例,用于對(duì)臨界數(shù)值和特別數(shù)值進(jìn)行測(cè)試,如00H,FFH,10H,6EH,7FH和E6H等;二是在隨機(jī)函數(shù)給出的1 000個(gè)值中再隨機(jī)抽取數(shù)據(jù)組成的測(cè)試?yán)?稱(chēng)為B類(lèi)用例.
圖5 接收端程序流程Fig.5 Program diagram of the reciever
(2)第2遍發(fā)送數(shù)據(jù)設(shè)置.由于系統(tǒng)出現(xiàn)數(shù)據(jù)傳送錯(cuò)誤的概率很低,在有限的實(shí)驗(yàn)時(shí)間內(nèi),幾乎沒(méi)有發(fā)生這種錯(cuò)誤的機(jī)會(huì),因此必須人為制造“數(shù)據(jù)傳送錯(cuò)誤”來(lái)驗(yàn)證數(shù)據(jù)檢驗(yàn)和出錯(cuò)重發(fā)機(jī)制的可靠性.在相應(yīng)的實(shí)驗(yàn)中給真實(shí)程序臨時(shí)增加兩部分內(nèi)容:一是在解碼器替代程序中設(shè)置一個(gè)DRC[200]字節(jié)數(shù)組變量;二是在“遍數(shù)計(jì)數(shù)器=0”的分支開(kāi)始位置增加從DRC[200]中取一個(gè)元素放入發(fā)送寄存器,并將DRC[200]的下標(biāo)指針加1的指令.于是,通過(guò)給DRC[200]和JMSJ[144]對(duì)應(yīng)單元寫(xiě)入相同值或不同值,可以制作“數(shù)據(jù)傳送錯(cuò)誤”的實(shí)驗(yàn)用例.若DRC[j]到DRC[j+4]的值都和JMSJ[j]不同,就人為制造了“重發(fā)計(jì)數(shù)器=5”的錯(cuò)誤狀況.仔細(xì)安排DRC[200]和JMSJ[144]的值,可以分別測(cè)試重發(fā)機(jī)制和重啟機(jī)制的有效性,以及重啟次數(shù)達(dá)到閾值時(shí)系統(tǒng)停機(jī)并且給出警示的能力.用1組A類(lèi)用例和5組B類(lèi)用例進(jìn)行了此測(cè)試.
圖6 發(fā)送端程序流程Fig.6 Program diagram of the sender
(3)接收端收到數(shù)據(jù)記錄.接收端收到的數(shù)據(jù)都存放在名為SDSJ1[144]或SDSJ2[144]的字節(jié)型數(shù)組變量中,因此在本實(shí)驗(yàn)使用的監(jiān)控替代程序中也設(shè)置了SDSJ1[144]和SDSJ2[144]字節(jié)型數(shù)組變量,以此來(lái)測(cè)試調(diào)用通信準(zhǔn)備程序和調(diào)用接收端程序時(shí)傳送入口參數(shù)的正確性,以及是否正確地存儲(chǔ)了已接收到的數(shù)據(jù),為分析整個(gè)軟件的運(yùn)行過(guò)程提供依據(jù).
(4)發(fā)送端收到應(yīng)答信號(hào)記錄.真實(shí)程序中發(fā)送端不記錄收到的應(yīng)答信號(hào),但為了分析發(fā)送端和接收端的配合情況,必須在實(shí)驗(yàn)中記錄發(fā)送端收到的所有應(yīng)答信號(hào),并將它們與DRC[200],JMSJ[144],SDSJ1[144]和SDSJ2[144]的數(shù)據(jù)對(duì)照,就可完整分析通信過(guò)程.于是在發(fā)送端程序中設(shè)置數(shù)組變量FSDSDYD[400],并在“等待應(yīng)答操作”的最后,臨時(shí)增加將應(yīng)答信號(hào)存入FSDSDYD[400],并將下標(biāo)指針加1的指令.
(5)接收端發(fā)送應(yīng)答信號(hào)記錄.與實(shí)驗(yàn)規(guī)劃(4)同理,在接收端程序中設(shè)置數(shù)組變量JSDFSYD[400],并在“發(fā)送‘認(rèn)可’應(yīng)答信號(hào)”和“發(fā)送‘不認(rèn)可’應(yīng)答信號(hào)”之后,臨時(shí)增加將應(yīng)答信號(hào)存入JSDFSYD[400],并將下標(biāo)指針加1的指令.
值得注意的是,給真實(shí)程序增加的所有臨時(shí)指令都在實(shí)驗(yàn)完成后刪除.
(6)設(shè)置發(fā)送端的解碼器替代程序.該替代程序有兩個(gè)作用:一是模擬解碼器程序?qū)Πl(fā)送程序的調(diào)用過(guò)程;二是為測(cè)試實(shí)驗(yàn)設(shè)置附加變量和顯示這些變量的值,以便分析程序的運(yùn)行結(jié)果和運(yùn)行過(guò)程.由于發(fā)送端程序被設(shè)計(jì)成外部中斷服務(wù)程序,故該替代程序包含3個(gè)主要操作(見(jiàn)圖7):第一是設(shè)置變量,其中有真實(shí)程序必需的解碼結(jié)果存儲(chǔ)區(qū)數(shù)組變量JMSJ[144],還有為測(cè)試實(shí)驗(yàn)服務(wù)的臨時(shí)數(shù)組變量DRC[200]和FSDSDYD[400],另外還要設(shè)置初值為0的中斷服務(wù)程序退出標(biāo)識(shí)ZDFH,并在圖6所示的發(fā)送端程序的“中斷返回”指令之前將ZDFH標(biāo)識(shí)設(shè)為1;第二是等待外部中斷發(fā)生,以進(jìn)入發(fā)送端程序,實(shí)現(xiàn)方法是查詢(xún)ZDFH標(biāo)識(shí)是否為0,若為0則繼續(xù)查詢(xún),若為1則退出查詢(xún),進(jìn)入下一操作;第三是顯示變量JMSJ[144],DRC[200]和FSDSDYD[400].
圖7 解碼器替代程序流程Fig.7 Replacement program of the decoders
(7)設(shè)置接收端監(jiān)控替代程序.該替代程序有三個(gè)作用:一是模擬監(jiān)控程序?qū)νㄐ艤?zhǔn)備程序的調(diào)用過(guò)程;二是驗(yàn)證重啟機(jī)制的有效性;三是為測(cè)試實(shí)驗(yàn)設(shè)置附加變量和顯示這些變量的值(見(jiàn)圖8).
圖8 監(jiān)控替代程序流程Fig.8 Replacement program of the monitor
該程序有4個(gè)主要操作:第一是設(shè)置變量SDSJ1[144],SDSJ2[144],JSDFSYD[400]和重啟計(jì)數(shù)器CQJSQ=0;第二是調(diào)用通信準(zhǔn)備程序,入口參數(shù)為解碼器編號(hào)和SDSJ1[144]或SDSJ2[144];第三是待通信準(zhǔn)備程序返回后,檢查出口參數(shù)并決定是否重啟;第四是顯示通信準(zhǔn)備程序出口參數(shù),SDSJ1[144],SDSJ2[144],CQJSQ和JSDFSYD[400].
(1)正常通信實(shí)驗(yàn).
實(shí)驗(yàn)?zāi)康?驗(yàn)證系統(tǒng)的有效性.
實(shí)驗(yàn)過(guò)程:不改動(dòng)通信準(zhǔn)備程序、接收端程序和發(fā)送端程序,在監(jiān)控替代程序和解碼器替代程序環(huán)境下,用3組A類(lèi)用例和20組B類(lèi)用例進(jìn)行實(shí)驗(yàn).
(2)重發(fā)機(jī)制應(yīng)對(duì)瞬態(tài)錯(cuò)誤實(shí)驗(yàn).
實(shí)驗(yàn)?zāi)康?驗(yàn)證數(shù)據(jù)校驗(yàn)策略有效性和容忍鏈路瞬態(tài)錯(cuò)誤的能力.
實(shí)驗(yàn)過(guò)程:完成正常通信實(shí)驗(yàn)后,在發(fā)送端程序的“遍數(shù)計(jì)數(shù)器=0?”為“是”的判斷后增加將DRC[j]的值賦給發(fā)送寄存器,并將下標(biāo)指針加1的指令;在“等待應(yīng)答信號(hào)”的最后增加將應(yīng)答信號(hào)存入FSDSDYD[k],并將下標(biāo)指針加1的指令.在接收端程序的“認(rèn)可”應(yīng)答和“不認(rèn)可”應(yīng)答之后增加將應(yīng)答信號(hào)存入JSDFSYD[k],并將下標(biāo)指針加1的指令.
本研究任選了1組A類(lèi)用例和5組B類(lèi)用例進(jìn)行實(shí)驗(yàn).通過(guò)給DRC[200]各元素的賦值來(lái)驗(yàn)證重發(fā)機(jī)制的有效性.表1為一個(gè)對(duì)DRC[200]賦值的例子.可見(jiàn),表中數(shù)據(jù)在JMSJ[6]進(jìn)行了1次重發(fā)測(cè)試,在JMSJ[10]進(jìn)行了2次重發(fā)測(cè)試,在JMSJ[18]進(jìn)行了3次重發(fā)測(cè)試,在JMSJ[28]進(jìn)行了4次重發(fā)測(cè)試,并把這種重發(fā)測(cè)試在JMSJ[31]~JMSJ[61],JMSJ[62]~JMSJ[92]和JMSJ[93]~JMSJ[123]區(qū)段分別重復(fù)了一次.
表1 DRC[200]賦值示例Table 1 Examples of DRC[200]assignment
(3)重發(fā)超次,程序退出實(shí)驗(yàn).
實(shí)驗(yàn)?zāi)康?驗(yàn)證重發(fā)次數(shù)達(dá)到閾值時(shí),系統(tǒng)的自動(dòng)退出能力.
實(shí)驗(yàn)過(guò)程:完成重發(fā)機(jī)制應(yīng)對(duì)瞬態(tài)錯(cuò)誤實(shí)驗(yàn)后,將表1中的DRC[176]~DRC[181]這6個(gè)元素設(shè)置為與JMSJ[140]不同,DRC[182]~DRC[185]設(shè)置為與JMSJ[140]~JMSJ[143]相同,DRC[200]的其他元素不變.
(4)數(shù)據(jù)線故障,程序退出實(shí)驗(yàn).
實(shí)驗(yàn)?zāi)康?驗(yàn)證發(fā)生數(shù)據(jù)線故障時(shí),系統(tǒng)重啟策略的有效性.
實(shí)驗(yàn)過(guò)程:以正常通信實(shí)驗(yàn)為基礎(chǔ),僅將附加數(shù)據(jù)改為00H,重復(fù)正常通信實(shí)驗(yàn).
(5)無(wú)從機(jī)設(shè)備應(yīng)答故障,程序退出實(shí)驗(yàn).
實(shí)驗(yàn)?zāi)康?驗(yàn)證系統(tǒng)應(yīng)對(duì)無(wú)從機(jī)設(shè)備應(yīng)答故障和警示的能力.
實(shí)驗(yàn)過(guò)程:以正常通信實(shí)驗(yàn)為基礎(chǔ),僅將從機(jī)的地址寄存器設(shè)定為某個(gè)無(wú)效地址.重復(fù)正常通信實(shí)驗(yàn).
實(shí)驗(yàn)開(kāi)始前將各次實(shí)驗(yàn)的目的、輸入數(shù)據(jù)和預(yù)測(cè)結(jié)果匯總在“實(shí)驗(yàn)記錄表”(見(jiàn)表2)中.
表2 實(shí)驗(yàn)記錄表Table 2 Experimental record
每次實(shí)驗(yàn)后將得到的實(shí)際結(jié)果與“結(jié)果預(yù)測(cè)”對(duì)比,二者完全相同時(shí)在“結(jié)果認(rèn)可”欄中打“√”,二者有差異時(shí)不填寫(xiě)“結(jié)果認(rèn)可”欄,而是在“結(jié)果差異”欄中描述差異.全部實(shí)驗(yàn)完成后,分析實(shí)驗(yàn)結(jié)果出現(xiàn)差異的原因,改進(jìn)程序和實(shí)驗(yàn)過(guò)程,重新實(shí)驗(yàn).當(dāng)所有實(shí)驗(yàn)的結(jié)果都與預(yù)測(cè)結(jié)果一致后,再重復(fù)全部實(shí)驗(yàn)兩次,以保證實(shí)驗(yàn)的可再現(xiàn)性.實(shí)驗(yàn)的最終結(jié)果表明,本研究設(shè)計(jì)的通信子系統(tǒng)能滿(mǎn)足TOC整機(jī)系統(tǒng)SD11的要求,具有良好的可靠性和克服瞬態(tài)故障的能力.
本研究設(shè)計(jì)完成了千位三值光學(xué)計(jì)算機(jī)SD11解碼器的一款通信子系統(tǒng).本系統(tǒng)采用重復(fù)發(fā)送字節(jié)數(shù)據(jù)兩次的技術(shù)進(jìn)行數(shù)據(jù)檢錯(cuò);采用數(shù)據(jù)傳送自動(dòng)重發(fā)5次的策略來(lái)容忍通信系統(tǒng)本身的偶發(fā)性瞬態(tài)錯(cuò)誤;采用通信系統(tǒng)自動(dòng)重啟3次的策略來(lái)容忍周邊部件的偶發(fā)性瞬態(tài)錯(cuò)誤;采用在傳送數(shù)據(jù)最后附加傳送6EH值的策略來(lái)判定是否發(fā)生數(shù)據(jù)線接地、或接電源、或接時(shí)鐘錯(cuò)誤;采用通信狀態(tài)寄存器來(lái)收集通信故障的類(lèi)型,并在意外發(fā)生永久性故障時(shí)通知監(jiān)控系統(tǒng)及時(shí)停機(jī),以免引發(fā)連鎖錯(cuò)誤,同時(shí)用這個(gè)寄存器給出故障類(lèi)型,以便于維護(hù);采用在接收端建立數(shù)據(jù)緩存區(qū)的策略來(lái)應(yīng)付與多種不同性質(zhì)部件的通信問(wèn)題;采用對(duì)發(fā)送端處理器進(jìn)行外部中斷的方式來(lái)實(shí)現(xiàn)發(fā)送端與接收端的通信準(zhǔn)備同步,并將這些策略結(jié)合IIC通信技術(shù),實(shí)現(xiàn)了符合SD11解碼器需要的通信子系統(tǒng).同時(shí)通過(guò)對(duì)所設(shè)計(jì)的通信系統(tǒng)的實(shí)驗(yàn)測(cè)試,驗(yàn)證了上述各項(xiàng)策略的有效性以及本通信子系統(tǒng)的實(shí)用性.下一步工作將詳細(xì)收集本通信子系統(tǒng)在SD11運(yùn)行中的實(shí)際表現(xiàn),然后對(duì)其進(jìn)行針對(duì)性維護(hù),最后將這個(gè)系統(tǒng)的軟件固定成一個(gè)可以被方便移植到TOC系統(tǒng)其他機(jī)型中的解碼器通信模塊.
致謝 徐凌宇教授給予本研究許多支持,在此表示感謝!