具有硬件互斥的控制電路設計方法
在控制系統設計時(shí),硬件互斥現象是很常見(jiàn)的,互斥電路功能可用硬件實(shí)現,也可以用系統加軟件實(shí)現。用硬件電路來(lái)實(shí)現指定的控制功能比用軟件來(lái)實(shí)現穩定性好,處理速度更快得多。隨著(zhù)大規模集成電路技術(shù)發(fā)展,用硬件來(lái)處理特定的功能的發(fā)展趨勢日趨明顯,隨著(zhù)SOPC技術(shù)的發(fā)展,軟體的硬化已日益成為人們研究的熱點(diǎn),專(zhuān)用功能的ASIC芯片越來(lái)越多。在進(jìn)行計算機操作系統設計時(shí),互斥理論用來(lái)處理并發(fā)過(guò)程對臨界資源的共享;在進(jìn)行控制系統設計時(shí),電路的不同邏輯狀態(tài)也常有互斥現象。如多個(gè)輸入信號共享一個(gè)處理電路而輸入信號同時(shí)作用于電路或多個(gè)信號同時(shí)互斥作用執行機構。同樣控制系統內的互斥同步也可以用硬件來(lái)實(shí)現,研究其互斥同步的硬件實(shí)現的理論和方法,則有追求高穩定性、高處理速度的重要意義。硬件實(shí)現互斥同步速度快,穩定性高,不必浪費CPU的指令周期,但另一方面硬件實(shí)現功能固定,升級不方便,功能的軟體化與軟體的硬化是互相矛盾的兩個(gè)相對的方向。采用何種方法取決于被控對象和控制功能,控制功能專(zhuān)一,變化不頻繁,控制對象要求穩定性高則用硬件實(shí)現;控制功能易變,被控對象復雜,則用軟件實(shí)現。自1962年T.Dekker提出多處理器互斥問(wèn)題以來(lái),經(jīng)Edsger Dijkslra,Donald Knuth,Leslie Lamport,Gray Peterson等人的研究,已形成系統的理論,而互斥同步的硬件實(shí)現雖然業(yè)界早已有自覺(jué)或不自覺(jué)的實(shí)踐,但尚為形成理論化的成果。硬件互斥理論及其設計方法是數學(xué)理論,控制理論,算法的綜合,它的發(fā)展依賴(lài)于業(yè)界及學(xué)界大量的實(shí)踐及研究。
互斥理論基礎
互斥理論用來(lái)研究解決計算機操作系統進(jìn)程的并發(fā)與資源的共享的矛盾。并發(fā)性、共享性、不確定性是操作系統的主要特性,因此并發(fā)進(jìn)程之間必須相互制約。一次僅允許一個(gè)進(jìn)程使用的資源稱(chēng)為臨界資源,在每個(gè)進(jìn)程中訪(fǎng)問(wèn)臨界資源的那段程序代碼稱(chēng)為臨界區。若能保證諸進(jìn)程互斥地進(jìn)入自已的臨界區,便可實(shí)現它們對臨界資源的互斥訪(fǎng)問(wèn)。進(jìn)程互斥就是兩個(gè)進(jìn)程不能同時(shí)訪(fǎng)問(wèn)同一臨界資源的臨界區的現象。這種制約關(guān)系又可分為直接相互制約和間接相互制約。直接相互制約源于多個(gè)進(jìn)程相互合作完成某一項任務(wù),一組在異步環(huán)境下的并發(fā)進(jìn)程,各自的執行結果互為對方的執行條件,從而限制各進(jìn)程的執行速度的過(guò)程稱(chēng)為并發(fā)進(jìn)程的直接制約。直接制約的并發(fā)進(jìn)程相互合作的制約關(guān)系稱(chēng)為同步關(guān)系。間接相互制約源于資源共享,由于共享某一公有資源而引起的在臨界區內不允許并發(fā)進(jìn)程交叉執行的現象,稱(chēng)為由共享公有資源而造成的對并發(fā)進(jìn)程執行速度的間接制約。這種制約關(guān)系稱(chēng)為互斥(MutualExclusion)。
為了實(shí)現進(jìn)程互斥的同步,操作系統的進(jìn)程同步機制必須遵循如下準則:空閑讓進(jìn),忙則等待,有限等待,讓權等待?;コ馔降谋举|(zhì)就是合理地為互斥進(jìn)程分配臨界資源。在軟件領(lǐng)域內,實(shí)現互斥編程的算法有銀行家算法,生產(chǎn)者-消費者算法等,而在硬件設計中,軟件的方法可以借鑒和參考。需要對硬件互斥象進(jìn)行分析和轉換,進(jìn)行一些抽象化和具體化的過(guò)程。
邏輯電路互斥分析
邏輯電路的互斥分為兩種情況。其一:電路的多個(gè)輸入信號同時(shí)作用于控制電路則會(huì )引起輸出的混亂或誤動(dòng)作,另一方面,一個(gè)產(chǎn)品具有多種功能,而這些功能不能在同一時(shí)刻在該產(chǎn)品實(shí)現,這種互斥現象本文定義為輸入互斥(Input-Mutual-Exclusion),亦即多個(gè)輸入信號對其臨界處理電路的互斥共享。如鍵盤(pán)編碼控制電路、多線(xiàn)組合邏編碼器、CPU的數據總線(xiàn)控制電路、內存讀寫(xiě)控制線(xiàn)路。前兩者屬于組合邏輯電路的互斥,后兩者屬于時(shí)序邏輯電路的互斥。其二:電路的多個(gè)輸出部件作用于同一資源會(huì )引起系統的誤動(dòng)作或燒毀系統設備。這種互斥現象本文定義為輸出互斥(Output-Mutual-ExcIusion),亦即多個(gè)輸出信號對其臨界的執行機構的互斥共享。如多個(gè)控制電路作用于同一執行機構的控制系統,又如前述的CPU的數據總線(xiàn)控制電路、內存讀寫(xiě)控制線(xiàn)路從控制電路的輸出端看亦可歸入此類(lèi)。輸人互斥和輸出互斥本質(zhì)上是無(wú)區別的,只是針對不同的電路部分而言,對于接收輸入信號的控制部分被共享則是輸入互斥,控制部分輸出多個(gè)信號共享系統外的臨界資源則是輸出互斥,這種劃分是基于系統的控制部分而言的。硬件系統互斥抽象地是信號(調用信號、請求信號)與臨界資源(信號處理電路、執行機構等)的互斥共享。因此,將共享訪(fǎng)問(wèn)或使用臨界資源的互斥信號定義為硬件互斥系統的顧客;一個(gè)被共享使用且具有一定功能的臨界資源體為服務(wù)者(executive-waiter);將信號與臨界資源的各種組合名為狀態(tài)(state)。
互斥電路同步的設計方法
對于互斥電路同步的設計,需要對硬件互斥象進(jìn)行分析和轉換,進(jìn)行一些抽象化和具體化的過(guò)程。抽象化和具體化是邏輯思維的兩個(gè)相反過(guò)程,是人類(lèi)進(jìn)行理性思維與科學(xué)研究的一般模式。抽象化是通過(guò)分析和綜合,建立起普遍適合于被研究對象的一般模型,并建立模型的普遍算法;具體化是從已建立的抽象模型出發(fā),用之指導研究具體的對象,完成具體的認識和進(jìn)行具體實(shí)踐。在硬件系統的互斥同步設計的同時(shí),從具體到抽象的過(guò)程為:分析所要設計的系統的功能,指出哪些信號為顧客,那些資源為服務(wù)者,確定互斥體為何物,何為信號量,并劃分互斥過(guò)程為先后相繼的序列狀態(tài);用已有的軟件互斥理論的模型來(lái)分析硬件互斥問(wèn)題,并設計出其互斥進(jìn)程同步程序的偽代碼,如此建立起其軟件互斥的模型和算法,即完成了從具體到抽象的思維過(guò)程。設計的具體化過(guò)程則如此:將互斥狀態(tài)轉為邏輯狀態(tài),將互斥進(jìn)程的請求轉化為互斥的邏輯信號,將互斥體具體化為某個(gè)元件或某個(gè)電路部分電路的信號(Mutex),在Mutex作用下,各個(gè)互斥信號可實(shí)現互斥同步,若互斥過(guò)程有時(shí)間的分配,則Mutex與延時(shí)電路合一。信號量由傳感器產(chǎn)生或由延時(shí)電路產(chǎn)生,它控制Mutex的翻轉,將互斥進(jìn)程同步過(guò)程具體化為系統硬件的邏輯動(dòng)作,這一過(guò)程既要進(jìn)行邏輯思維,也要進(jìn)行創(chuàng )造性的想象。不同的互斥現象的硬件實(shí)現的設計有所差別。 對于輸入互斥電路,在同步的實(shí)現方法上,分析其互斥關(guān)系,組合關(guān)系的互斥無(wú)時(shí)序限制,其狀態(tài)的轉換以輸入為條件,可以用組合邏輯電路實(shí)現,通過(guò)規定輸入信號的優(yōu)先級別和邏輯功能的真值表,按優(yōu)先級別分配臨界資源,然后用卡諾圖來(lái)設計其實(shí)現電路。如優(yōu)先編碼器,對輸出同為0的兩種輸入狀態(tài)選用其中一個(gè)由各輸入信號組合輸出信號作為輸出使能信號實(shí)現互斥同步。然而,多數互斥具有時(shí)序關(guān)系,其狀態(tài)的轉換與時(shí)間有關(guān),必須通過(guò)時(shí)序電路來(lái)實(shí)現,通過(guò)增加時(shí)鐘信號、使能信號、片選信號或其他指令信號作為輸入信號,實(shí)現臨界資源的加鎖-解鎖,使之協(xié)調各級與門(mén)或三態(tài)門(mén)的動(dòng)作,實(shí)現互斥同步:對于CPU的內部數據總線(xiàn)通過(guò)軟件的指令來(lái)完成,對于內存單元,互斥通過(guò)讀與控制線(xiàn)和地址總線(xiàn)來(lái)實(shí)現。
輸出互斥類(lèi)似于操作系統進(jìn)程的間接互斥,發(fā)生在控制部件之外,輸出信號之間具有互為條件的邏輯關(guān)系,如機床的聯(lián)動(dòng)控制,即一個(gè)狀態(tài)是另一個(gè)狀態(tài)使用臨界資源的條件,有時(shí)條件還有優(yōu)先次序。對于輸出互斥可設立一個(gè)控制部件,產(chǎn)生符合邏輯功能的具有互斥狀態(tài)的互斥信號或互斥函數,類(lèi)似于操作系統的互斥變量(Mutex),用以控制輸入信號的作用狀態(tài)或作用時(shí)間。這一互斥變量可以是一個(gè)延時(shí)部件的控制信號,也可以是一個(gè)組合邏輯部件的控制信號如觸發(fā)器組件或具有CPU的智能部件的輸出信號。
對于具有復雜的狀態(tài)轉換關(guān)系的互斥系統的設計,可以使用Petri Net和有限狀態(tài)機FSM來(lái)分析。兩者都是軟件工程里的圖形工具方法,也可以用來(lái)為解決互斥狀態(tài)建模。有限狀態(tài)機已為人所熟知,而Petri Net對于硬件工程帥也許比較陌生。PetriNet圖包含四個(gè)元素:Place,Transition,Arc和Token。Place是一種狀態(tài),中文意譯為"所",一般用圓圈表示。Transition是一個(gè)狀態(tài)向另一狀態(tài)轉移的過(guò)程,用矩形框表示,中文意譯為"遷移"。Arc豐要是連接Place及Transition的一個(gè)有方向的線(xiàn)段,可以從Place指向Transition或從Transition指向Place,但Place與Place或Transition與Transition之間不能有Arc相連,因為它的狀態(tài)不能直接變成另一個(gè)狀態(tài),中間一定要經(jīng)過(guò)一個(gè)過(guò)程,而過(guò)程與過(guò)程之間也會(huì )存在著(zhù)一種狀態(tài)。Token指的就是一個(gè)物件或條件,可以代表任何東西,中文意譯為"令牌",用實(shí)心圓點(diǎn)表示。每個(gè)Place或Transition中可以有零個(gè)或多個(gè)Token,當Token足夠時(shí)才能由一個(gè)狀態(tài)變成另一個(gè)狀態(tài)。除了以上四個(gè)元素之外,在進(jìn)階的Petri Net中,還會(huì )給每個(gè)Token不同的顏色及屬性,還會(huì )再加上時(shí)間及階層架構。PetriNet用來(lái)分析復雜的,動(dòng)態(tài)的硬件互斥是非常有效的工具。有限狀態(tài)機適則合于用來(lái)分析靜態(tài)的硬件互斥。
輸出互斥同步的實(shí)現實(shí)例
以通信機房電源自動(dòng)交替方案來(lái)說(shuō)明。功能要求:當主電源(市電)有電時(shí),備用電源不得接通,當主電源無(wú)電時(shí),備用電源自動(dòng)接通,主電源停電后來(lái)電時(shí)先斷開(kāi)備用電源,再接通主電源。這個(gè)問(wèn)題是輸出互斥問(wèn)題,可以用有限狀態(tài)機FSM分析。
當主電源(main power)有電時(shí),記為MP(1),無(wú)電時(shí),記為MP(0),當備用電源(backuppower)有電時(shí),記為BP(1),無(wú)電時(shí),記為BP(0),則其邏輯功能如表1所列。
從上表可知,主電源是否有電的狀態(tài)MP可作為互斥變量,可用一個(gè)中間繼電器JZ,其線(xiàn)胞接在豐電源上,用它來(lái)控制J1和J2的開(kāi)合,從而控制主電源與備用電源的自動(dòng)交替,J1接常閉觸點(diǎn),MP1時(shí)斷開(kāi),MP0時(shí)閉合,J2、J3接常開(kāi)觸點(diǎn),在性能上J1的動(dòng)作速度要比J2快。其實(shí)現方案如圖1所示。在此MP是互斥變量,MP控制著(zhù)JZ的動(dòng)作,JZ是瓦斥同步的執行機構。
輸入互斥同步的實(shí)現實(shí)例
要設計一個(gè)能進(jìn)行加法運算和減法運算的電路,就需要對輸入信號:返算輸人變量實(shí)現互斥,可設立一個(gè)互斥變最用來(lái)控制電路的運算功能。根據異或邏輯的規律:L=X1⊕X2,當X1=0時(shí),L=X2的原碼,當X1=1時(shí),L=X2的反碼,因此欲用一個(gè)電路求加法和減法D=A
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論