伍巧鳳,賀 理,李 昱,孫詩(shī)炎,王明星
(核反應(yīng)堆系統(tǒng)設(shè)計(jì)技術(shù)重點(diǎn)實(shí)驗(yàn)室,成都 610213)
數(shù)字化儀控平臺(tái)[1,2]中控制器單元通過(guò)背板AT96總線與各功能單元進(jìn)行數(shù)據(jù)交互,以實(shí)現(xiàn)了不同功能需求[3]。AT96總線是由德國(guó)西門(mén)子公司發(fā)起制定的工控機(jī)總線標(biāo)準(zhǔn),其作為ISA總線的兼容協(xié)議,采用PC的Wintel架構(gòu),具有抗沖擊力強(qiáng)、機(jī)械結(jié)構(gòu)合理、適合工業(yè)現(xiàn)場(chǎng)使用,易于維護(hù)等特點(diǎn)。AT96總線內(nèi)存使用機(jī)制與PC計(jì)算機(jī)完全一致??刂破鲉卧膬?nèi)存只能有640K~1M內(nèi)存區(qū)間,并且這里面的大多數(shù)內(nèi)存已經(jīng)被顯卡等設(shè)備占用,因而可以使用的空間很小,基本上只能提供一個(gè)幾十KB的頁(yè)面給功能單元使用,但若功能單元數(shù)量眾多,顯然無(wú)法滿(mǎn)足系統(tǒng)設(shè)計(jì)要求,所以需要通過(guò)一種機(jī)制來(lái)擴(kuò)展內(nèi)存。因此,采用內(nèi)存分段和頁(yè)面擴(kuò)充技術(shù),將一個(gè)內(nèi)存空間擴(kuò)充為多個(gè)頁(yè)面,來(lái)實(shí)現(xiàn)控制器單元與多個(gè)功能單元的信息交互,并且在系統(tǒng)中通過(guò)180°跟隨機(jī)制來(lái)防止控制器對(duì)功能單元的訪問(wèn)沖突。
圖1 數(shù)字化儀控平臺(tái)構(gòu)架Fig.1 Digital instrument control platform architecture
圖2 內(nèi)存地址分配圖Fig.2 Memory address assignment diagram
數(shù)字化儀控平臺(tái)由主控制器、AT96總線、智能IO功能單元(模擬量輸入單元、模擬量輸出單元、開(kāi)關(guān)量輸入單元、開(kāi)關(guān)量輸出單元、以太網(wǎng)通信單元、CAN通信單元等)組成,其構(gòu)架見(jiàn)圖1。
IO功能單元為智能設(shè)計(jì),各功能單元自帶微處理器,獨(dú)立進(jìn)行數(shù)據(jù)采集和處理,數(shù)據(jù)存放于各功能單元的雙口RAM??刂破魍ㄟ^(guò)AT96總線與功能單元雙口RAM進(jìn)行數(shù)據(jù)交換。
一般控制器的內(nèi)存只能在640K~1M內(nèi)存區(qū)間,并且這里面的大多數(shù)內(nèi)存已經(jīng)被顯卡等設(shè)備占用。因此,可以使用的空間很小,平臺(tái)中的控制器基本上只能提供一個(gè)64KB的頁(yè)面給IO功能單元使用,但平臺(tái)中板卡數(shù)量眾多,顯然無(wú)法滿(mǎn)足系統(tǒng)設(shè)計(jì)要求,需要通過(guò)一種機(jī)制來(lái)擴(kuò)展內(nèi)存。
圖2是內(nèi)存地址分配圖。在圖2中,將內(nèi)存分為16個(gè)內(nèi)存段,每個(gè)內(nèi)存段4KB,標(biāo)識(shí)為0~F。例如,第1段內(nèi)存為0xD0000~0xD0FFF,第2段內(nèi)存為0xD1000~0xD1FFF……以此類(lèi)推。標(biāo)識(shí)為0~E的60KB為用戶(hù)內(nèi)存空間,一旦切換以后,為該功能單元獨(dú)占使用。標(biāo)識(shí)為F的4KB為共享區(qū)間,為所有功能單元共用。在共享區(qū)間中,其低端的256Bytes區(qū)間為搶旗幟區(qū)間,其地址為0XDF000~0XDF0FF;其次為頁(yè)面選擇區(qū)間,占用256Bytes區(qū)間,其地址為0XDF100~0XDF1FF;依次往上的256Bytes區(qū)間為段地址選擇區(qū)間,其地址為0XDF200~0XDF2FF,剩余的區(qū)間為保留區(qū)間,暫不使用。
基于2.1節(jié)內(nèi)存分配技術(shù)進(jìn)行頁(yè)面擴(kuò)展,本系統(tǒng)將64KB頁(yè)面擴(kuò)充成64個(gè)頁(yè)面,每個(gè)頁(yè)面64KB,以4KB為段單位,包含16個(gè)內(nèi)存段,前15個(gè)內(nèi)存段(編號(hào)0~E)為用戶(hù)內(nèi)存空間,用以存儲(chǔ)交互數(shù)據(jù),每個(gè)功能單元可以根據(jù)實(shí)際需求占用1~15個(gè)內(nèi)存段,第16個(gè)內(nèi)存段(編號(hào)F)作為共享區(qū)間,用于命令發(fā)送等控制使用。
本系統(tǒng)各個(gè)頁(yè)面分配如下:
頁(yè)面0:為I/O類(lèi)型功能單元使用區(qū)間,每個(gè)板卡占用一個(gè)4KB內(nèi)存段,最大同時(shí)支持15個(gè)板卡,板卡的內(nèi)存段通過(guò)4bit撥碼開(kāi)關(guān)選擇。
頁(yè)面1~8:為隔離CAN通信單元使用區(qū)間,每個(gè)CAN通信單元占用2個(gè)內(nèi)存段,內(nèi)存段通過(guò)6bit撥碼開(kāi)關(guān)選擇,其中3bit為頁(yè)面選擇,3bit為內(nèi)存段地址選擇。
頁(yè)面9~16:為隔離RS485通信單元使用區(qū)間,每個(gè)RS485通信單元占用2個(gè)內(nèi)存段,內(nèi)存段通過(guò)6bit撥碼開(kāi)關(guān)選擇,其中3bit為頁(yè)面選擇,3bit為內(nèi)存段地址選擇。
頁(yè)面17~24:為隔離以太網(wǎng)通信單元使用區(qū)間,每個(gè)以太網(wǎng)通信單元占用2個(gè)內(nèi)存段,內(nèi)存段通過(guò)6bit撥碼開(kāi)關(guān)選擇,其中3bit為頁(yè)面選擇,3bit為內(nèi)存段地址選擇。
圖3 內(nèi)存頁(yè)面擴(kuò)展Fig.3 Memory page extensions
圖4 180°跟隨機(jī)制示意圖Fig.4 Diagram of 180°following mechanism
頁(yè)面25~63:系統(tǒng)保留,可擴(kuò)展。
系統(tǒng)內(nèi)存擴(kuò)展由一個(gè)CPLD和雙口RAM來(lái)實(shí)現(xiàn),CPLD負(fù)責(zé)進(jìn)行地址譯碼和命令解析,同時(shí)輸出控制信號(hào),以及對(duì)沖突進(jìn)行檢測(cè)。
因功能單元為智能設(shè)計(jì),各功能單元自帶微處理器,所以可在智能單元工作循環(huán)中準(zhǔn)備數(shù)據(jù)的時(shí)刻,與控制器訪問(wèn)數(shù)據(jù)的時(shí)刻錯(cuò)開(kāi)180°。即根據(jù)控制器的訪問(wèn)周期,功能單元自行測(cè)算出控制器每?jī)纱卧L問(wèn)周期的中間時(shí)刻,在這個(gè)中間時(shí)刻智能單元準(zhǔn)備數(shù)據(jù)。這樣,即使控制器出現(xiàn)突發(fā)情況,造成訪問(wèn)功能單元的時(shí)間點(diǎn)提前或者延后,但由于這個(gè)中間時(shí)刻的存在,可以盡最大可能避免控制器訪問(wèn)功能單元時(shí)出現(xiàn)沖突或者無(wú)效。
圖5 時(shí)間片同步示意圖Fig.5 Time slice synchronization diagram
圖6 時(shí)間片同步調(diào)整示意圖Fig.6 Time slice synchronous adjustment diagram
在實(shí)際工作中,功能單元微處理器在空閑時(shí)刻時(shí),一直監(jiān)視硬件雙口RAM標(biāo)志的訪問(wèn)變化,并根據(jù)該變化確定控制器的訪問(wèn)時(shí)刻,每經(jīng)過(guò)一段時(shí)間,微處理器都會(huì)評(píng)估自己和控制器之間時(shí)刻的同步性,然后根據(jù)評(píng)估結(jié)果,調(diào)整自己對(duì)雙口RAM的訪問(wèn)時(shí)刻,以實(shí)現(xiàn)與控制器的同步跟隨功能。在這種跟隨機(jī)制下,功能單元會(huì)隨時(shí)測(cè)量控制器的訪問(wèn)周期,隨時(shí)保持與控制器訪問(wèn)周期錯(cuò)開(kāi)180°的間隔。
圖5為正常情況下控制器對(duì)功能單元的訪問(wèn)示意圖,功能單元準(zhǔn)備好數(shù)據(jù),控制器稍后就可以訪問(wèn),二者和諧共處,不會(huì)因此發(fā)生沖突。
當(dāng)運(yùn)行一段時(shí)間后,可能出現(xiàn)圖6所示情況。
在圖6中,控制器和功能單元循環(huán)周期沒(méi)有改變,改變是控制器對(duì)功能單元的訪問(wèn)時(shí)刻,導(dǎo)致控制器每次訪問(wèn)功能單元時(shí),均與功能單元數(shù)據(jù)準(zhǔn)備相沖突,從而只能放棄當(dāng)前時(shí)間片。功能單元微處理器記錄每次控制器的訪問(wèn)時(shí)間點(diǎn),當(dāng)其探測(cè)這種沖突情況后,功能單元會(huì)自動(dòng)避開(kāi)控制器的訪問(wèn)時(shí)間點(diǎn),前移自己的數(shù)據(jù)準(zhǔn)備周期,從而有效處理沖突的情況。功能單元在前移時(shí),可以計(jì)算好時(shí)間,使得數(shù)據(jù)準(zhǔn)備時(shí)間正好與控制器訪問(wèn)時(shí)間錯(cuò)開(kāi)180°。這樣聯(lián)動(dòng)處理后,一是解決了控制器對(duì)功能單元數(shù)據(jù)訪問(wèn)的及時(shí)性,二是提高了帶寬的利用率。
數(shù)字化儀控平臺(tái)通過(guò)AT96總線實(shí)現(xiàn)控制器與智能IO功能單元的數(shù)據(jù)交互,在控制器內(nèi)存不足的情況下,通過(guò)內(nèi)存分段和頁(yè)面擴(kuò)展技術(shù)實(shí)現(xiàn)控制器內(nèi)存擴(kuò)展,從而實(shí)現(xiàn)控制器與眾多智能IO功能單元的數(shù)據(jù)交互。因IO單元的智能化設(shè)計(jì),在IO功能單元微處理器中設(shè)置180°跟隨機(jī)制,實(shí)現(xiàn)功能單元準(zhǔn)備數(shù)據(jù)和控制器訪問(wèn)數(shù)據(jù)的180°延時(shí),在有效處理沖突的同時(shí),提高了帶寬的利用率。