威海職業(yè)學(xué)院 孔憲青
三段式狀態(tài)機(jī)在單片機(jī)中的實(shí)現(xiàn)
威海職業(yè)學(xué)院 孔憲青
本文提供一種用于單片機(jī)的編程方法。通過(guò)介紹VHDL中的狀態(tài)機(jī),本文陳述如何將其應(yīng)用于單片機(jī)中,其闡述的方法是一種優(yōu)化的實(shí)時(shí)處理方式,比順序編程更有效/更具實(shí)時(shí)性。
狀態(tài)機(jī);單片機(jī)
對(duì)于PLD,編程時(shí)一般使用狀態(tài)機(jī),這是一種行之有效的編程方法。狀態(tài)機(jī)是以事件行為為描述核心,并通過(guò)狀態(tài)機(jī)體現(xiàn)事件之間的轉(zhuǎn)移機(jī)制。由于PLD使用并行宏單元,因此事件都可描述為宏單元組,而事件的關(guān)聯(lián)使用開(kāi)關(guān)門(mén)和線路實(shí)現(xiàn),因此說(shuō)狀態(tài)機(jī)是PLD器件中主要的編程方法。
有限狀態(tài)機(jī)在PLD的應(yīng)用中有四種類型,分別是一段式、兩段式和三段式和多段式。其中多段式狀態(tài)機(jī)對(duì)條件描述比較繁瑣,而兩段式狀態(tài)機(jī)實(shí)際就是三段式的精簡(jiǎn)。因此實(shí)際類型就是一段式和三段式兩種。其中一段狀態(tài)機(jī)用于描述和順序時(shí)間相關(guān)的控制進(jìn)程,例如對(duì)于單總線器件ds1820的控制。但是一段式加深了宏單元深度和綜合難度。而標(biāo)準(zhǔn)的三段式狀態(tài)機(jī)對(duì)深度和綜合都較好。以米勒狀態(tài)機(jī)結(jié)構(gòu)為例,見(jiàn)圖1。

圖1 米勒狀態(tài)機(jī)
在VHDL中的代碼如下:


代碼中有三個(gè)并行宏單元,相對(duì)于順序描述有更快的實(shí)時(shí)響應(yīng)。因此,如果把上述結(jié)構(gòu)使用在單片機(jī)上,使用類似的三段式狀態(tài)機(jī)會(huì)比單純的順序和中斷結(jié)構(gòu)有更好的實(shí)時(shí)性。
單片機(jī)由于CPU在同一時(shí)間段內(nèi)只能唯一執(zhí)行一個(gè)任務(wù),因此唯一的方式是把CPU運(yùn)行時(shí)間分為若干時(shí)間段分段執(zhí)行,類似于時(shí)鐘脈沖CLK。……