一種可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)方法及裝置制造方法
【專利摘要】本發(fā)明提供了一種可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)方法及裝置,所述方法包括:中央處理單元通過第一雙口RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第一雙口RAM中的狀態(tài)轉(zhuǎn)移表進(jìn)行重構(gòu);中央處理單元通過第二雙口RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第二雙口RAM中的信號(hào)輸出編碼表進(jìn)行重構(gòu)。本發(fā)明通過中央處理器對(duì)雙口RAM存儲(chǔ)狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移表和信號(hào)輸出編碼表進(jìn)行重構(gòu),實(shí)現(xiàn)狀態(tài)機(jī)的可重構(gòu),不僅可以實(shí)現(xiàn)Moore型狀態(tài)機(jī),也可以實(shí)現(xiàn)Mealy型狀態(tài)機(jī),實(shí)現(xiàn)結(jié)構(gòu)簡(jiǎn)單,成本較低,在可編程邏輯器件中可以有效地、動(dòng)態(tài)地重構(gòu)復(fù)雜狀態(tài)機(jī),易維護(hù),靈活地滿足實(shí)際設(shè)計(jì)的需要。
【專利說明】一種可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)字信號(hào)控制領(lǐng)域,尤其涉及一種可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)方法及裝置。【背景技術(shù)】
[0002]大部分?jǐn)?shù)字系統(tǒng)都包括控制單元和數(shù)據(jù)單元,控制單元通常由狀態(tài)機(jī)組成,控制單元接收外部信號(hào)以及數(shù)據(jù)單元產(chǎn)生的狀態(tài)信息,產(chǎn)生控制信號(hào),是實(shí)現(xiàn)數(shù)字系統(tǒng)可靠、有效控制的重要途徑。
[0003]有限狀態(tài)機(jī)(Finite State Machine, FSM),又稱有限狀態(tài)自動(dòng)機(jī),簡(jiǎn)稱狀態(tài)機(jī),是表示有限個(gè)狀態(tài)以及在這些狀態(tài)之間轉(zhuǎn)移和動(dòng)作等行為的數(shù)學(xué)模型,在數(shù)字可編程邏輯器件的設(shè)計(jì)中,有限狀態(tài)機(jī)是由寄存器組和組合邏輯構(gòu)成的硬件時(shí)序電路,其狀態(tài)在時(shí)鐘跳變沿時(shí)刻從一個(gè)狀態(tài)轉(zhuǎn)向另一個(gè)狀態(tài),下一個(gè)狀態(tài)不但可以取決于各個(gè)輸入值,還可以取決于當(dāng)前狀態(tài),這里,所述狀態(tài)是指由寄存器組的I和O的組合狀態(tài)構(gòu)成的有限個(gè)狀態(tài),通常用二進(jìn)制數(shù)編碼表示;同時(shí),狀態(tài)機(jī)可產(chǎn)生在時(shí)鐘跳變沿時(shí)刻進(jìn)行開關(guān)的復(fù)雜控制邏輯,是數(shù)據(jù)邏輯的控制核心。進(jìn)一步地,根據(jù)狀態(tài)機(jī)的輸出是否與輸入有關(guān),可將狀態(tài)機(jī)分為兩大類:Moore型狀態(tài)機(jī)和Mealy型狀態(tài)機(jī)。Moore型狀態(tài)機(jī)的輸出僅與當(dāng)前狀態(tài)有關(guān);Mealy型狀態(tài)機(jī)的輸出不僅與當(dāng)前狀態(tài)有關(guān),而且和輸入值也有關(guān)。
[0004]按傳統(tǒng)方法設(shè)計(jì)的狀態(tài)機(jī)是一種定制狀態(tài)的寄存器,寄存器是固定的,不具備可重構(gòu)功能,通常只能滿足一組控制單元的需求,如果需要實(shí)現(xiàn)多組控制單元,就需要設(shè)計(jì)多個(gè)狀態(tài)機(jī)來滿足,通常的方法是編譯新的可編程邏輯版本,通過中央處理器或者單片機(jī)重新加載版本進(jìn)行狀態(tài)機(jī)的切換,可編程邏輯的加載和配置進(jìn)入存儲(chǔ)器需要較長(zhǎng)的時(shí)間,不能及時(shí)工作,因此,狀態(tài)機(jī)不能動(dòng)態(tài)地、快速地進(jìn)行重構(gòu),造成使用上的不便。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明的主要目的在于提供一種可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)方法及裝置,能夠根據(jù)需要實(shí)現(xiàn)狀態(tài)機(jī)的重構(gòu),降低實(shí)現(xiàn)成本。
[0006]為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0007]一種可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)方法,所述方法包括:
[0008]中央處理單元通過第一雙口隨機(jī)存儲(chǔ)器RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第一雙口 RAM中的狀態(tài)轉(zhuǎn)移表進(jìn)行重構(gòu);
[0009]中央處理單元通過第二雙口 RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第二雙口RAM中的信號(hào)輸出編碼表進(jìn)行重構(gòu)。
[0010]所述中央處理單元通過第一雙口 RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第一雙口 RAM中的狀態(tài)轉(zhuǎn)移表進(jìn)行重構(gòu)為:
[0011]中央處理單元通過第一雙口 RAM的寫地址線和寫數(shù)據(jù)線,以狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移條件作為地址進(jìn)行尋址,將對(duì)應(yīng)的狀態(tài)機(jī)的下一個(gè)狀態(tài)作為數(shù)據(jù)寫入存儲(chǔ)于所述第一雙口RAM中的狀態(tài)轉(zhuǎn)移表中。[0012]述中央處理單元通過第二雙口 RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第二雙口 RAM中的信號(hào)輸出編碼表進(jìn)行重構(gòu)為:
[0013]中央處理單元通過第二雙口 RAM的寫地址線和寫數(shù)據(jù)線,以輸出變換條件作為地址進(jìn)行尋址,將對(duì)應(yīng)的控制信號(hào)作為數(shù)據(jù)寫入存儲(chǔ)于所述第二雙口 RAM中的信號(hào)輸出編碼表中。
[0014]所述方法還包括:
[0015]地址計(jì)算單元根據(jù)第一雙口 RAM輸出的狀態(tài)機(jī)的當(dāng)前狀態(tài)和接收到的外部輸入信號(hào)計(jì)算得到第一讀地址和第二讀地址;
[0016]所述第一雙口 RAM根據(jù)所述第一讀地址讀取所述狀態(tài)轉(zhuǎn)移表,進(jìn)行狀態(tài)轉(zhuǎn)移,所述第二雙口 RAM根據(jù)所述第二讀地址讀取信號(hào)輸出編碼表,輸出控制信號(hào)。
[0017]所述地址計(jì)算單元根據(jù)第一雙口 RAM輸出的狀態(tài)機(jī)的當(dāng)前狀態(tài)和接收到的外部輸入信號(hào)計(jì)算得到第一讀地址和第二讀地址為:
[0018]地址計(jì)算單元對(duì)接收到的當(dāng)前狀態(tài)進(jìn)行左移位處理,將移位后的當(dāng)前狀態(tài)和所述外部輸入信號(hào)相加,得到第一讀地址,其中,所述第一讀地址的高位表示狀態(tài)機(jī)的當(dāng)前狀態(tài),所述第一讀地址的低位表示狀態(tài)機(jī)當(dāng)前的輸入條件;或?qū)λ鐾獠枯斎胄盘?hào)進(jìn)行左移位處理,將所述當(dāng)前狀態(tài)和移位后的外部輸入信號(hào)相加,得到第一讀地址,其中,所述第一讀地址的高位表示狀態(tài)機(jī)當(dāng)前的輸入條件,所述第一讀地址的低位表示狀態(tài)機(jī)的當(dāng)前狀態(tài);
[0019]當(dāng)狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移只與狀態(tài)機(jī)的當(dāng)前狀態(tài)相關(guān)時(shí),將當(dāng)前狀態(tài)作為第二讀地址進(jìn)行輸出,否則,將所述第一讀地址作為第二讀地址進(jìn)行輸出。
[0020]當(dāng)?shù)刂酚?jì)算單元將所述第一讀地址作為第二讀地址進(jìn)行輸出時(shí),所述方法還包括:
[0021]將所述第二雙口 RAM存儲(chǔ)的信號(hào)輸出編碼表和所述第一雙口 RAM存儲(chǔ)的狀態(tài)轉(zhuǎn)移表進(jìn)行合并,得到狀態(tài)轉(zhuǎn)移及信號(hào)輸出編碼表,并存儲(chǔ)于所述第一雙口 RAM或第二雙口RAM;其中,所述狀態(tài)轉(zhuǎn)移及信號(hào)輸出編碼表中存儲(chǔ)數(shù)據(jù)的高位或低位表示狀態(tài)機(jī)的下一個(gè)狀態(tài)輸出,所述存儲(chǔ)數(shù)據(jù)的低位或高位表示輸出的控制信號(hào)。
[0022]所述第一雙口 RAM根據(jù)所述第一讀地址讀取所述狀態(tài)轉(zhuǎn)移表,進(jìn)行狀態(tài)轉(zhuǎn)移為:
[0023]所述第一雙口 RAM根據(jù)所述第一讀地址,讀取所述第一讀地址對(duì)應(yīng)的存儲(chǔ)內(nèi)容,作為所述狀態(tài)機(jī)的當(dāng)前狀態(tài)進(jìn)行輸出;其中,所述第一讀地址的高位或低位表示狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài),所述第一讀地址的低位或高位表示狀態(tài)機(jī)的當(dāng)前外部輸入條件。
[0024]所述第二雙口 RAM根據(jù)所述第二讀地址讀取信號(hào)輸出編碼表,輸出控制信號(hào)為:
[0025]所述第二雙口 RAM根據(jù)所述第二讀地址,讀取所述第二讀地址對(duì)應(yīng)的存儲(chǔ)內(nèi)容,并將所述存儲(chǔ)內(nèi)容作為控制信號(hào)進(jìn)行輸出;其中,所述第二讀地址的高位或低位表示狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài),所述第二讀地址的低位或高位表示狀態(tài)機(jī)的當(dāng)前輸入條件。
[0026]所述中央處理單元為中央處理器CPU或單片機(jī)。
[0027]一種可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)裝置,所述裝置包括:中央處理單元、第一雙口 RAM和第二雙口 RAM ;其中,
[0028]所述中央處理單元,用于通過所述第一雙口 RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第一雙口 RAM中的狀態(tài)轉(zhuǎn)移表進(jìn)行重構(gòu);還用于通過第二雙口 RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第二雙口 RAM中的信號(hào)輸出編碼表進(jìn)行重構(gòu)。
[0029]所述中央處理單元,具體用于通過第一雙口 RAM的寫地址線和寫數(shù)據(jù)線,以狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移條件作為地址進(jìn)行尋址,將對(duì)應(yīng)的狀態(tài)機(jī)的下一個(gè)狀態(tài)作為數(shù)據(jù)寫入存儲(chǔ)于所述第一雙口 RAM中的狀態(tài)轉(zhuǎn)移表中。
[0030]所述中央處理單元,具體用于通過第二雙口 RAM的寫地址線和寫數(shù)據(jù)線,以輸出變換條件作為地址進(jìn)行尋址,將對(duì)應(yīng)的控制信號(hào)作為數(shù)據(jù)寫入存儲(chǔ)于所述第二雙口 RAM中的信號(hào)輸出編碼表中。
[0031]所述裝置還包括:地址計(jì)算單元;其中,
[0032]所述地址計(jì)算單元,用于根據(jù)第一雙口 RAM輸出的狀態(tài)機(jī)的當(dāng)前狀態(tài)和接收到的外部輸入信號(hào)計(jì)算得到第一讀地址和第二讀地址;
[0033]所述第一雙口 RAM,用于根據(jù)所述第一讀地址讀取所述狀態(tài)轉(zhuǎn)移表,進(jìn)行狀態(tài)轉(zhuǎn)移;
[0034]所述第二雙口 RAM,用于根據(jù)所述第二讀地址讀取信號(hào)輸出編碼表,輸出控制信號(hào)。
[0035]所述地址計(jì)算單元,包括移位器、加法器和選擇器;其中,
[0036]所述移位器,用于對(duì)接收到的當(dāng)前狀態(tài)或外部輸入信號(hào)進(jìn)行移位處理;
[0037]所述加法器,用于將移位后的當(dāng)前狀態(tài)和所述外部輸入信號(hào)相加,得到第一讀地址;或者將當(dāng)前狀態(tài)和移位后的外部輸入信號(hào)相加,得到第一讀地址;
[0038]所述選擇器,用于當(dāng)狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移只與狀態(tài)機(jī)的當(dāng)前狀態(tài)相關(guān)時(shí),將當(dāng)前狀態(tài)作為第二讀地址進(jìn)行輸出,否則,將所述第一讀地址作為第二讀地址進(jìn)行輸出。
[0039]所述第一雙口 RAM,具體用于根據(jù)所述第一讀地址,讀取所述第一讀地址對(duì)應(yīng)的存儲(chǔ)內(nèi)容,作為所述狀態(tài)機(jī)的當(dāng)前狀態(tài)進(jìn)行輸出;其中,所述第一讀地址的高位或低位表示狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài),所述第一讀地址的低位或高位表示狀態(tài)機(jī)當(dāng)前的輸入條件。
[0040]所述第二雙口 RAM,具體用于根據(jù)所述第二讀地址,讀取所述第二讀地址對(duì)應(yīng)的存儲(chǔ)內(nèi)容,并將所述存儲(chǔ)內(nèi)容作為控制信號(hào)進(jìn)行輸出;其中,所述第二讀地址的高位或低位表示狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài),所述第二讀地址的低位或高位表示狀態(tài)機(jī)當(dāng)前的輸入條件。
[0041]所述中央處理單元為中央處理器CPU或單片機(jī)。
[0042]本發(fā)明通過中央處理器對(duì)雙口 RAM存儲(chǔ)狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移表和信號(hào)輸出編碼表進(jìn)行重構(gòu),實(shí)現(xiàn)狀態(tài)機(jī)的可重構(gòu),不僅可以實(shí)現(xiàn)Moore型狀態(tài)機(jī),也可以實(shí)現(xiàn)Mealy型狀態(tài)機(jī),實(shí)現(xiàn)結(jié)構(gòu)簡(jiǎn)單,成本較低,在可編程邏輯器件中可以有效地、動(dòng)態(tài)地重構(gòu)復(fù)雜狀態(tài)機(jī),易維護(hù),靈活地滿足實(shí)際設(shè)計(jì)的需要。
【專利附圖】
【附圖說明】
[0043]圖1為本發(fā)明可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)方法的流程示意圖;
[0044]圖2為本發(fā)明可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)方法實(shí)施例的具體流程示意圖;
[0045]圖3為本發(fā)明可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖;
[0046]圖4為圖3所示實(shí)現(xiàn)裝置的地址計(jì)算單元的結(jié)構(gòu)細(xì)化示意圖;
[0047]圖5為本發(fā)明可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)方法實(shí)施例一中Mealy型狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移示意圖;
[0048]圖6為本發(fā)明可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)方法實(shí)施例二中Moore型狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移示意圖。
【具體實(shí)施方式】
[0049]雙口隨機(jī)存儲(chǔ)器(Random Access Memory,RAM)具有兩套完全獨(dú)立的數(shù)據(jù)線、地址線和讀寫控制線,其最大的特點(diǎn)是存儲(chǔ)數(shù)據(jù)共享,適用于實(shí)時(shí)的數(shù)據(jù)緩存。
[0050]本發(fā)明的基本思想為:中央處理單元通過第一雙口 RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第一雙口 RAM中的狀態(tài)轉(zhuǎn)移表進(jìn)行重構(gòu);中央處理單元通過第二雙口 RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第二雙口 RAM中的信號(hào)輸出編碼表進(jìn)行重構(gòu)。 [0051]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下舉實(shí)施例并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。
[0052]圖1示出了本發(fā)明數(shù)據(jù)同步的方法實(shí)現(xiàn)流程示意,如圖1所示,所述方法包括下述步驟:
[0053]步驟101,中央處理單元通過第一雙口隨機(jī)存儲(chǔ)器RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第一雙口 RAM中的狀態(tài)轉(zhuǎn)移表進(jìn)行重構(gòu);
[0054]這里,所述狀態(tài)轉(zhuǎn)移表包括雙口 RAM地址和存儲(chǔ)內(nèi)容兩個(gè)表項(xiàng),其中,所述雙口RAM地址中的高位(或低位)表示所述狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài);所述雙口 RAM地址中的低位(或高位)表示狀態(tài)機(jī)當(dāng)前的外部輸入條件;所述存儲(chǔ)內(nèi)容表示所述狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移的下一個(gè)狀態(tài)。當(dāng)所述狀態(tài)機(jī)含有最多的狀態(tài)數(shù)量為N,最多的輸入信號(hào)數(shù)量為X時(shí),則該狀態(tài)轉(zhuǎn)移表的深度為2X+M,存儲(chǔ)內(nèi)容的數(shù)據(jù)位寬為M,其中,所述M的取值大于等于Log2N。
[0055]另外,當(dāng)狀態(tài)機(jī)的狀態(tài)數(shù)量小于。^'時(shí),不可避免地會(huì)出現(xiàn)剩余狀態(tài)。而當(dāng)該剩余狀態(tài)沒有進(jìn)行合理的處理時(shí),狀態(tài)機(jī)可能進(jìn)入不可預(yù)測(cè)的狀態(tài),后果是狀態(tài)機(jī)對(duì)外界出現(xiàn)短暫失控或者始終無法擺脫剩余狀態(tài)而失去正常功能。因此,通常將剩余狀態(tài)所在的地址空間設(shè)置為:所述地址空間的值一般可指向狀態(tài)機(jī)的初始態(tài),使?fàn)顟B(tài)機(jī)在出錯(cuò)時(shí)仍然能回到初始狀態(tài);而且應(yīng)當(dāng)理解,當(dāng)狀態(tài)機(jī)的輸入信號(hào)的有效位數(shù)小于預(yù)留的輸入信號(hào)位數(shù)X時(shí),在狀態(tài)表中會(huì)產(chǎn)生冗余的地址空間,但這些地址空間的值是明確的,因?yàn)檫@些多余位數(shù)的值是O還是I將不會(huì)應(yīng)該影響狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移結(jié)果。
[0056]具體地,中央處理單元通過第一雙口 RAM的寫地址線和寫數(shù)據(jù)線,以狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移條件作為地址進(jìn)行尋址,將對(duì)應(yīng)的狀態(tài)機(jī)的下一個(gè)狀態(tài)作為數(shù)據(jù)寫入存儲(chǔ)于所述第一雙口 RAM中的狀態(tài)轉(zhuǎn)移表中;這里,所述狀態(tài)轉(zhuǎn)移條件包括所述狀態(tài)機(jī)的當(dāng)前狀態(tài)和當(dāng)前的外部輸入條件,根據(jù)狀態(tài)轉(zhuǎn)移條件對(duì)所述狀態(tài)轉(zhuǎn)移表的雙口 RAM地址表項(xiàng)進(jìn)行尋址;將對(duì)應(yīng)的所述狀態(tài)機(jī)的下一個(gè)狀態(tài)寫入所述狀態(tài)轉(zhuǎn)移表的存儲(chǔ)內(nèi)容表項(xiàng)。這段有點(diǎn)問題,雙口 RAM存儲(chǔ)的數(shù)據(jù)是寫入的,但是地址不是,地址是本身固有的,如果你選擇了固定的地址,只要對(duì)相應(yīng)的地址的內(nèi)容進(jìn)行寫操作即可。修改如下:
[0057]步驟102,中央處理單元通過第二雙口 RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第二雙口 RAM中的信號(hào)輸出編碼表進(jìn)行重構(gòu);
[0058]這里,所述信號(hào)輸出編碼表包括雙口 RAM地址和存儲(chǔ)內(nèi)容兩個(gè)表項(xiàng),其中,所述雙口 RAM地址中的高位(或低位)表示所述狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài);所述雙口 RAM地址中的低位(或高位)表示狀態(tài)機(jī)當(dāng)前的輸入條件;所述存儲(chǔ)內(nèi)容表示所述狀態(tài)機(jī)輸出的控制信號(hào)。當(dāng)所述狀態(tài)機(jī)輸出的控制信號(hào)包含最多的數(shù)量為K時(shí),所述信號(hào)輸出編碼表的深度為2X+M,存儲(chǔ)內(nèi)容的數(shù)據(jù)位寬為K。
[0059]具體地,中央處理單元通過第二雙口 RAM的寫地址線和寫數(shù)據(jù)線分別將輸出變換條件和控制信號(hào)寫入存儲(chǔ)于所述第二雙口 RAM中的信號(hào)輸出編碼表中;這里,所述輸出變換條件包括所述狀態(tài)機(jī)的當(dāng)前狀態(tài)和當(dāng)前的外部輸入條件,以輸出變換條件作為地址對(duì)所述信號(hào)輸出編碼表的雙口 RAM地址表項(xiàng)進(jìn)行尋址,將對(duì)應(yīng)的所述控制信號(hào)作為數(shù)據(jù)寫入所述信號(hào)輸出編碼表的存儲(chǔ)內(nèi)容表項(xiàng)。
[0060]進(jìn)一步地,如圖2所示,所述方法不僅可以包括如上所述的步驟101-102,還可以包括下述步驟:
[0061]步驟103,地址計(jì)算單元根據(jù)第一雙口 RAM輸出的狀態(tài)機(jī)的當(dāng)前狀態(tài)和接收到的外部輸入信號(hào)計(jì)算得到第一讀地址和第二讀地址;
[0062]這里,地址計(jì)算單元對(duì)接收到的當(dāng)前狀態(tài)進(jìn)行左移位處理,將移位后的當(dāng)前狀態(tài)和所述輸入信號(hào)相加,得到第一讀地址;這里,所述移位處理具體是將用二進(jìn)制表示的當(dāng)前狀態(tài)左移X位,這里,所述X為接收到的輸入信號(hào)個(gè)數(shù),此時(shí),所述第一讀地址的高位表示狀態(tài)機(jī)的當(dāng)前狀態(tài),所述第一讀地址的低位表示狀態(tài)機(jī)當(dāng)前的輸入條件;應(yīng)當(dāng)理解,所述地址計(jì)算單元還可以對(duì)所述外部輸入信號(hào)進(jìn)行左移位處理,將所述當(dāng)前狀態(tài)和移位后的外部輸入信號(hào)相加,得到第一讀地址,這里,所述移位處理具體是將用二進(jìn)制表示的輸入信號(hào)左移M位,這里,所述M為存儲(chǔ)內(nèi)容的數(shù)據(jù)位寬,所述第一讀地址的高位表示狀態(tài)機(jī)當(dāng)前的輸入條件,所述第一讀地址的低位表示狀態(tài)機(jī)的當(dāng)前狀態(tài);
[0063]當(dāng)狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移只與狀態(tài)機(jī)的當(dāng)前狀態(tài)相關(guān)時(shí),即所述狀態(tài)機(jī)都是Moore型狀態(tài)機(jī)時(shí),將當(dāng)前狀態(tài)作為第二讀地址進(jìn)行輸出;否則,即所述狀態(tài)機(jī)包含Mealy型狀態(tài)機(jī),將所述第一讀地址作為第二讀地址進(jìn)行輸出。
[0064]進(jìn)一步地,當(dāng)所述地址計(jì)算單元將所述第一讀地址作為第二讀地址進(jìn)行輸出時(shí),即當(dāng)所述狀態(tài)機(jī)包含Mealy型狀態(tài)機(jī)時(shí),還可以將所述第二雙口 RAM存儲(chǔ)的信號(hào)輸出編碼表和所述第一雙口 RAM存儲(chǔ)的狀態(tài)轉(zhuǎn)移表進(jìn)行合并,得到狀態(tài)轉(zhuǎn)移及信號(hào)輸出編碼表,并存儲(chǔ)于所述第一雙口 RAM或第二雙口 RAM ;其中,所述狀態(tài)轉(zhuǎn)移及信號(hào)輸出編碼表的深度為2X+M,存儲(chǔ)內(nèi)容的數(shù)據(jù)位寬為(K+M),所述存儲(chǔ)內(nèi)容的高位(或低位)表示狀態(tài)機(jī)的下一個(gè)狀態(tài)輸出,所述存儲(chǔ)數(shù)據(jù)的低位(或高位)表示輸出的控制信號(hào)。
[0065]步驟104,所述第一雙口 RAM根據(jù)所述第一讀地址讀取所述狀態(tài)轉(zhuǎn)移表,進(jìn)行狀態(tài)轉(zhuǎn)移,所述第二雙口 RAM根據(jù)所述第二讀地址讀取信號(hào)輸出編碼表,輸出控制信號(hào);
[0066]具體地,所述第一雙口 RAM根據(jù)所述第一讀地址,讀取所述第一讀地址對(duì)應(yīng)的存儲(chǔ)內(nèi)容,作為所述狀態(tài)機(jī)的當(dāng)前狀態(tài)進(jìn)行輸出;其中,所述第一讀地址的高位(或低位)表示狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài),所述第一讀地址的低位(或高位)表示狀態(tài)機(jī)當(dāng)前的外部輸入條件。
[0067]所述第二雙口 RAM根據(jù)所述第二讀地址,讀取所述第二讀地址對(duì)應(yīng)的存儲(chǔ)內(nèi)容,并將所述存儲(chǔ)內(nèi)容作為控制信號(hào)進(jìn)行輸出;其中,所述第二讀地址的高位(或低位)表示狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài),所述第二讀地址的低位(或高位)表示狀態(tài)機(jī)當(dāng)前的外部輸入條件。[0068]另外,應(yīng)當(dāng)理解,所述步驟101-102和步驟103-104沒有必然的先后順序。
[0069]圖3示出了本發(fā)明可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)裝置的結(jié)構(gòu),如圖3所示,所述裝置包括:中央處理單元31、第一雙口 RAM 32和第二雙口 RAM 33 ;其中,
[0070]所述中央處理單元31,用于通過所述第一雙口 RAM 32的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第一雙口 RAM 32中的狀態(tài)轉(zhuǎn)移表進(jìn)行重構(gòu);還用于通過第二雙口 RAM 33的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第二雙口 RAM 33中的信號(hào)輸出編碼表進(jìn)行重構(gòu)。這里,所述狀態(tài)轉(zhuǎn)移表包括雙口 RAM地址和存儲(chǔ)內(nèi)容兩個(gè)表項(xiàng),其中,所述雙口 RAM地址中的高位(或低位)表示所述狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài);所述雙口 RAM地址中的低位(或高位)表示狀態(tài)機(jī)當(dāng)前的外部輸入條件;所述存儲(chǔ)內(nèi)容表示所述狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移的下一個(gè)狀態(tài)。
[0071]所述信號(hào)輸出編碼表包括雙口 RAM地址和存儲(chǔ)內(nèi)容兩個(gè)表項(xiàng),其中,所述雙口 RAM地址中的高位(或低位)表示所述狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài);所述雙口 RAM地址中的低位(或高位)表示狀態(tài)機(jī)當(dāng)前的外部輸入條件;所述存儲(chǔ)內(nèi)容表示所述狀態(tài)機(jī)輸出的控制信號(hào)。
[0072]進(jìn)一步地,所述中央處理單元31,具體用于通過第一雙口 RAM 32的寫地址線和寫數(shù)據(jù)線,以狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移條件作為地址進(jìn)行尋址,將狀態(tài)機(jī)的下一個(gè)狀態(tài)作為數(shù)據(jù)寫入存儲(chǔ)于所述第一雙口 RAM 32中的狀態(tài)轉(zhuǎn)移表中。
[0073]進(jìn)一步地,所述中央處理單元31,具體用于通過第二雙口 RAM 33的寫地址線和寫數(shù)據(jù)線,以輸出變換條件為地址進(jìn)行尋址,將控制信號(hào)作為數(shù)據(jù)寫入存儲(chǔ)于所述第二雙口RAM 33中的信號(hào)輸出編碼表中。
[0074]進(jìn)一步地,所述裝置還包括:地址計(jì)算單元34 ;其中,
[0075]所述地址計(jì)算單元34,用于根據(jù)第一雙口 RAM 32輸出的狀態(tài)機(jī)的當(dāng)前狀態(tài)和接收到的外部輸入信號(hào)計(jì)算得到第一讀地址和第二讀地址;
[0076]所述第一雙口 RAM 32,用于根據(jù)所述第一讀地址讀取所述狀態(tài)轉(zhuǎn)移表,進(jìn)行狀態(tài)轉(zhuǎn)移;
[0077]所述第二雙口 RAM 33,用于根據(jù)所述第二讀地址讀取信號(hào)輸出編碼表,輸出控制信號(hào)。
[0078]進(jìn)一步地,參照?qǐng)D4,所述地址計(jì)算單元34包括移位器341、加法器342和選擇器343 ;其中,
[0079]所述移位器341,用于對(duì)接收到的當(dāng)前狀態(tài)或外部輸入信號(hào)進(jìn)行移位處理;這里,所述移位處理具體是將用二進(jìn)制表示的當(dāng)前狀態(tài)左移X位,這里,所述X為接收到的輸入信號(hào)的個(gè)數(shù);或者,將用二進(jìn)制表示的輸入信號(hào)左移M位,這里,所述M為存儲(chǔ)內(nèi)容的數(shù)據(jù)位寬;
[0080]所述加法器342,用于將移位后的當(dāng)前狀態(tài)和所述外部輸入信號(hào)相加,得到第一讀地址;或者將當(dāng)前狀態(tài)和移位后的外部輸入信號(hào)相加,得到第一讀地址;
[0081]所述選擇器343,用于當(dāng)狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移只與狀態(tài)機(jī)的當(dāng)前狀態(tài)相關(guān)時(shí),將當(dāng)前狀態(tài)作為第二讀地址進(jìn)行輸出,否則,將所述第一讀地址作為第二讀地址進(jìn)行輸出。
[0082]其中,所述第一雙口 RAM 32,具體用于根據(jù)所述第一讀地址,讀取所述第一讀地址對(duì)應(yīng)的存儲(chǔ)內(nèi)容,作為所述狀態(tài)機(jī)的當(dāng)前狀態(tài)進(jìn)行輸出;其中,所述第一讀地址的高位(或低位)表示狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài),所述第一讀地址的低位(或高位)表示狀態(tài)機(jī)當(dāng)前的輸入條件。
[0083]其中,所述第二雙口 RAM 33,具體用于根據(jù)所述第二讀地址,讀取所述第二讀地址對(duì)應(yīng)的存儲(chǔ)內(nèi)容,并將所述存儲(chǔ)內(nèi)容作為控制信號(hào)進(jìn)行輸出;其中,所述第二讀地址的高位(或低位)表示狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài),所述第二讀地址的低位(或高位)表示狀態(tài)機(jī)當(dāng)前的輸入條件。
[0084]進(jìn)一步地,所述中央處理單元具體可以由中央處理器(CPU)或單片機(jī)實(shí)現(xiàn)。
[0085]下面結(jié)合圖5和圖6分別示出的本發(fā)明可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)方法實(shí)施例一中Mealy型狀態(tài)機(jī)和實(shí)施例二中Moore型狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移示意進(jìn)行進(jìn)一步說明。
[0086]圖5示出了 Mealy型狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移,該狀態(tài)機(jī)共包含四個(gè)狀態(tài):A、B、C和D,外部有二個(gè)輸入信號(hào)Itl和Ip狀態(tài)A有三個(gè)分支:當(dāng)Itl = O時(shí),狀態(tài)A保持;當(dāng)Itl = UI1=O的時(shí),從狀態(tài)A跳轉(zhuǎn)到狀態(tài)B ;當(dāng)10 = K I1 = I時(shí),從狀態(tài)A跳轉(zhuǎn)到狀態(tài)C ;狀態(tài)B的下一個(gè)狀態(tài)為C ;狀態(tài)C的下一個(gè)狀態(tài)為D ;狀態(tài)D有2個(gè)分支:當(dāng)Itl = O時(shí),從狀態(tài)D跳轉(zhuǎn)到狀態(tài)A ;當(dāng)Itl = I時(shí),狀態(tài)D保持。同時(shí),該狀態(tài)機(jī)對(duì)應(yīng)的輸入信號(hào)、當(dāng)前狀態(tài)和輸出信號(hào)的關(guān)系如表一所示:
[0087]
【權(quán)利要求】
1.一種可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)方法,其特征在于,所述方法包括: 中央處理單元通過第一雙口隨機(jī)存儲(chǔ)器RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第一雙口 RAM中的狀態(tài)轉(zhuǎn)移表進(jìn)行重構(gòu); 中央處理單元通過第二雙口 RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第二雙口 RAM中的信號(hào)輸出編碼表進(jìn)行重構(gòu)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述中央處理單元通過第一雙口RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第一雙口 RAM中的狀態(tài)轉(zhuǎn)移表進(jìn)行重構(gòu)為: 中央處理單元通過第一雙口 RAM的寫地址線和寫數(shù)據(jù)線,以狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移條件作為地址進(jìn)行尋址,將對(duì)應(yīng)的狀態(tài)機(jī)的下一個(gè)狀態(tài)作為數(shù)據(jù)寫入存儲(chǔ)于 所述第一雙口 RAM中的狀態(tài)轉(zhuǎn)移表中。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述中央處理單元通過第二雙口RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第二雙口 RAM中的信號(hào)輸出編碼表進(jìn)行重構(gòu)為: 中央處理單元通過第二雙口 RAM的寫地址線和寫數(shù)據(jù)線,以輸出變換條件作為地址進(jìn)行尋址,將對(duì)應(yīng)的控制信號(hào)作為數(shù)據(jù)寫入存儲(chǔ)于所述第二雙口 RAM中的信號(hào)輸出編碼表中。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 地址計(jì)算單元根據(jù)第一雙口 RAM輸出的狀態(tài)機(jī)的當(dāng)前狀態(tài)和接收到的外部輸入信號(hào)計(jì)算得到第一讀地址和第二讀地址; 所述第一雙口 RAM根據(jù)所述第一讀地址讀取所述狀態(tài)轉(zhuǎn)移表,進(jìn)行狀態(tài)轉(zhuǎn)移,所述第二雙口 RAM根據(jù)所述第二讀地址讀取信號(hào)輸出編碼表,輸出控制信號(hào)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述地址計(jì)算單元根據(jù)第一雙口RAM輸出的狀態(tài)機(jī)的當(dāng)前狀態(tài)和接收到的外部輸入信號(hào)計(jì)算得到第一讀地址和第二讀地址為: 地址計(jì)算單元對(duì)接收到的當(dāng)前狀態(tài)進(jìn)行左移位處理,將移位后的當(dāng)前狀態(tài)和所述外部輸入信號(hào)相加,得到第一讀地址,其中,所述第一讀地址的高位表示狀態(tài)機(jī)的當(dāng)前狀態(tài),所述第一讀地址的低位表示狀態(tài)機(jī)當(dāng)前的輸入條件;或?qū)λ鐾獠枯斎胄盘?hào)進(jìn)行左移位處理,將所述當(dāng)前狀態(tài)和移位后的外部輸入信號(hào)相加,得到第一讀地址,其中,所述第一讀地址的高位表示狀態(tài)機(jī)當(dāng)前的輸入條件,所述第一讀地址的低位表示狀態(tài)機(jī)的當(dāng)前狀態(tài); 當(dāng)狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移只與狀態(tài)機(jī)的當(dāng)前狀態(tài)相關(guān)時(shí),將當(dāng)前狀態(tài)作為第二讀地址進(jìn)行輸出,否則,將所述第一讀地址作為第二讀地址進(jìn)行輸出。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,當(dāng)?shù)刂酚?jì)算單元將所述第一讀地址作為第二讀地址進(jìn)行輸出時(shí),所述方法還包括: 將所述第二雙口 RAM存儲(chǔ)的信號(hào)輸出編碼表和所述第一雙口 RAM存儲(chǔ)的狀態(tài)轉(zhuǎn)移表進(jìn)行合并,得到狀態(tài)轉(zhuǎn)移及信號(hào)輸出編碼表,并存儲(chǔ)于所述第一雙口 RAM或第二雙口 RAM ;其中,所述狀態(tài)轉(zhuǎn)移及信號(hào)輸出編碼表中存儲(chǔ)數(shù)據(jù)的高位或低位表不狀態(tài)機(jī)的下一個(gè)狀態(tài)輸出,所述存儲(chǔ)數(shù)據(jù)的低位或高位表示輸出的控制信號(hào)。
7.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述第一雙口RAM根據(jù)所述第一讀地址讀取所述狀態(tài)轉(zhuǎn)移表,進(jìn)行狀態(tài)轉(zhuǎn)移為: 所述第一雙口 RAM根據(jù)所述第一讀地址,讀取所述第一讀地址對(duì)應(yīng)的存儲(chǔ)內(nèi)容,作為所述狀態(tài)機(jī)的當(dāng)前狀態(tài)進(jìn)行輸出;其中,所述第一讀地址的高位或低位表示狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài),所述第一讀地址的低位或高位表示狀態(tài)機(jī)的當(dāng)前外部輸入條件。
8.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述第二雙口RAM根據(jù)所述第二讀地址讀取信號(hào)輸出編碼表,輸出控制信號(hào)為: 所述第二雙口 RAM根據(jù)所述第二讀地址,讀取所述第二讀地址對(duì)應(yīng)的存儲(chǔ)內(nèi)容,并將所述存儲(chǔ)內(nèi)容作為控制信號(hào)進(jìn)行輸出;其中,所述第二讀地址的高位或低位表示狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài),所述第二讀地址的低位或高位表示狀態(tài)機(jī)的當(dāng)前輸入條件。
9.根據(jù)權(quán)利要求1至8任一項(xiàng)所述的方法,其特征在于,所述中央處理單元為中央處理器CPU或單片機(jī)。
10.一種可重構(gòu)狀態(tài)機(jī)的實(shí)現(xiàn)裝置,其特征在于,所述裝置包括:中央處理單元、第一雙口 RAM和第二雙口 RAM ;其中, 所述中央處理單元,用于通過所述第一雙口 RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第一雙口 RAM中的狀態(tài)轉(zhuǎn)移表進(jìn)行重構(gòu);還用于通過第二雙口 RAM的寫地址線和寫數(shù)據(jù)線對(duì)存儲(chǔ)于所述第二雙口 RAM中的信號(hào)輸出編碼表進(jìn)行重構(gòu)。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述中央處理單元,具體用于通過第一雙口 RAM的寫地址線和寫數(shù)據(jù)線,以狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移條件作為地址進(jìn)行尋址,將對(duì)應(yīng)的狀態(tài)機(jī)的下一個(gè)狀態(tài)作為數(shù)據(jù)寫入存儲(chǔ)于所述第一雙口 RAM中的狀態(tài)轉(zhuǎn)移表中。
12.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述中央處理單元,具體用于通過第二雙口 RAM的寫地址線和寫數(shù)據(jù)線,以輸出變換條件作為地址進(jìn)行尋址,將對(duì)應(yīng)的控制信號(hào)作為數(shù)據(jù)寫入存儲(chǔ)于所述第二雙口 RAM中的信號(hào)輸出編碼表中。
13.根據(jù)權(quán)利要求10所述·的裝置,其特征在于,所述裝置還包括:地址計(jì)算單元;其中, 所述地址計(jì)算單元,用于根據(jù)第一雙口 RAM輸出的狀態(tài)機(jī)的當(dāng)前狀態(tài)和接收到的外部輸入信號(hào)計(jì)算得到第一讀地址和第二讀地址; 所述第一雙口 RAM,用于根據(jù)所述第一讀地址讀取所述狀態(tài)轉(zhuǎn)移表,進(jìn)行狀態(tài)轉(zhuǎn)移; 所述第二雙口 RAM,用于根據(jù)所述第二讀地址讀取信號(hào)輸出編碼表,輸出控制信號(hào)。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述地址計(jì)算單元,包括移位器、加法器和選擇器;其中, 所述移位器,用于對(duì)接收到的當(dāng)前狀態(tài)或外部輸入信號(hào)進(jìn)行移位處理; 所述加法器,用于將移位后的當(dāng)前狀態(tài)和所述外部輸入信號(hào)相加,得到第一讀地址;或者將當(dāng)前狀態(tài)和移位后的外部輸入信號(hào)相加,得到第一讀地址; 所述選擇器,用于當(dāng)狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移只與狀態(tài)機(jī)的當(dāng)前狀態(tài)相關(guān)時(shí),將當(dāng)前狀態(tài)作為第二讀地址進(jìn)行輸出,否則,將所述第一讀地址作為第二讀地址進(jìn)行輸出。
15.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述第一雙口RAM,具體用于根據(jù)所述第一讀地址,讀取所述第一讀地址對(duì)應(yīng)的存儲(chǔ)內(nèi)容,作為所述狀態(tài)機(jī)的當(dāng)前狀態(tài)進(jìn)行輸出;其中,所述第一讀地址的高位或低位表示狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài),所述第一讀地址的低位或高位表示狀態(tài)機(jī)當(dāng)前的輸入條件。
16.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述第二雙口RAM,具體用于根據(jù)所述第二讀地址,讀取所述第二讀地址對(duì)應(yīng)的存儲(chǔ)內(nèi)容,并將所述存儲(chǔ)內(nèi)容作為控制信號(hào)進(jìn)行輸出;其中,所述第二讀地址的高位或低位表示狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移前的當(dāng)前狀態(tài),所述第二讀地址的低位或高位表示狀態(tài)機(jī)當(dāng)前的輸入條件。
17.根據(jù)權(quán)利要求1 0至16任一項(xiàng)所述的裝置,其特征在于,所述中央處理單元為中央處理器CPU或單片機(jī)。
【文檔編號(hào)】G06F15/76GK103544132SQ201210245677
【公開日】2014年1月29日 申請(qǐng)日期:2012年7月16日 優(yōu)先權(quán)日:2012年7月16日
【發(fā)明者】周恒箴, 鬲莉, 張永智 申請(qǐng)人:中興通訊股份有限公司