專利名稱:八位高速微控制器ip軟核的制作方法
技術(shù)領域:
本發(fā)明涉及一種八位高速微控制器IP軟核,屬于集成電路設計技術(shù)領域。
背景技術(shù):
隨著集成電路設計的不斷發(fā)展,集成電路的規(guī)模越來越大,設計難度日趨復雜,傳統(tǒng)的設計方法已越來越不能適應集成電路設計發(fā)展的需要?;贗P復用的數(shù)字集成電路 IC設計方法是有效提高IC設計產(chǎn)能的關鍵技術(shù),有助于快速實現(xiàn)工藝先進、功能強大的產(chǎn)品。同時,IP軟核具有靈活的設計和可定制的外設組,可以保護處理器不過時,在一個芯片 (FPGA)中支持多個處理器,軟核微控制器還具有硬件加速功能,將類似乘、除等耗時的運算指令采用硬件來實現(xiàn),從而大大挺高了軟核微控制器的性能。傳統(tǒng)的基于硬核的嵌入式開發(fā)需要根據(jù)不同的應用需求選用不同的硬核,而不同廠家的硬核采用不同的軟件開發(fā)工具,這就迫使嵌入式系統(tǒng)開發(fā)工程師花大量的時間和精力來熟悉不同的軟件開發(fā)工具。而軟核微控制器的可定制可裁剪特性使它幾乎適用于任何應用需求,嵌入式系統(tǒng)開發(fā)工程師就可以長期使用熟悉的軟件開發(fā)工具。
發(fā)明內(nèi)容
本發(fā)明的目的是解決傳統(tǒng)的基于硬核的微控制器的通用性差的問題,提供一種八位高速微控制器IP軟核。本發(fā)明所述八位高速微控制器IP軟核,它由有限狀態(tài)機控制器、數(shù)據(jù)通道、數(shù)據(jù)存儲器和程序存儲器組成,數(shù)據(jù)通道的數(shù)據(jù)信號輸入輸出端連接數(shù)據(jù)存儲器的數(shù)據(jù)信號輸出輸入端,數(shù)據(jù)存儲器的控制信號輸入端連接有限狀態(tài)機控制器控制數(shù)據(jù)存儲器讀寫使能的控制信號輸出端,有限狀態(tài)機控制器的數(shù)據(jù)通道控制信號輸出端連接數(shù)據(jù)通道的控制信號輸入端,數(shù)據(jù)通道的狀態(tài)信號輸出端連接有限狀態(tài)機控制器的狀態(tài)信號輸入端,有限狀態(tài)機控制器的地址信號輸出端連接程序存儲器的地址信號輸入端,程序存儲器的指令信號輸出端連接有限狀態(tài)機控制器的指令信號輸入端。所述數(shù)據(jù)通道由算術(shù)邏輯單元、寄存器堆和選擇單元組成,算術(shù)邏輯單元用于按照有限狀態(tài)機控制器輸出的控制信號,實現(xiàn)算術(shù)運算、邏輯運算和循環(huán)移位操作,在算術(shù)邏輯單元中做運算的操作數(shù)包括來自于寄存器堆的操作數(shù), 算術(shù)邏輯單元的運算結(jié)果由有限狀態(tài)機控制器譯碼后的控制信號決定存放位置;數(shù)據(jù)存儲器用于存放待操作的數(shù)據(jù)和算術(shù)邏輯單元運算后的結(jié)果;寄存器堆用于存儲有限狀態(tài)機控制器在數(shù)據(jù)處理過程中產(chǎn)生的中間數(shù)據(jù);選擇單元用于根據(jù)有限狀態(tài)機控制器輸出的控制信號選擇接收數(shù)據(jù)存儲器輸出的數(shù)據(jù)、寄存器堆輸出的數(shù)據(jù)或者外部輸入的數(shù)據(jù)給算術(shù)邏輯單元。所述有限狀態(tài)機控制器包括三個狀態(tài),分別為取指令狀態(tài)、指令譯碼狀態(tài)和指令執(zhí)行狀態(tài),
取指令狀態(tài),用于產(chǎn)生對程序存儲器進行讀取的相關控制信號指令,并將取出的指令存儲在指令寄存器中;然后進行指令譯碼狀態(tài);指令譯碼狀態(tài),用于根據(jù)指令寄存器中存儲的指令,產(chǎn)生控制算術(shù)邏輯單元、寄存器堆或數(shù)據(jù)存儲器的數(shù)據(jù)通道信號,并將該數(shù)據(jù)通道信號存儲在相應的寄存器中,同時更新程序存儲器,為下次讀取指令產(chǎn)生目的地址;然后進行指令執(zhí)行狀態(tài);指令執(zhí)行狀態(tài)用于產(chǎn)生讀寫數(shù)據(jù)存儲器的控制信號和讀寫狀態(tài)寄存器的使能信號,將算術(shù)邏輯單元、寄存器堆或數(shù)據(jù)存儲器的數(shù)據(jù)通道處理后的結(jié)果寫回數(shù)據(jù)存儲器和狀態(tài)寄存器。本發(fā)明的優(yōu)點是本發(fā)明為嵌入式系統(tǒng)的核心,具有很高的通用性和靈活性,可廣泛地應用于工業(yè)控制、機械設備、家用電器以及汽車電子等各個領域。本發(fā)明采用自頂向下的設計思想實現(xiàn)了八位高速微控制器IP軟核的硬件結(jié)構(gòu),并通過仿真實驗驗證了它的可行性和正確性,通用性強。在實際硬件電路中,經(jīng)實驗證實,該IP核的運行頻率可達到 25MHz,因此可應用于高速控制領域。本發(fā)明中,將數(shù)據(jù)存儲器和程序存儲器分開設置,有利于提高IP軟核的運行速度,使工作效率高。
圖1為本發(fā)明的結(jié)構(gòu)示意圖;圖2為數(shù)據(jù)通道的結(jié)構(gòu)圖;圖3為有限狀態(tài)機控制器三個狀態(tài)的狀態(tài)切換圖;圖4為有限狀態(tài)機控制器的三級流水線操作過程示意圖;圖5為有限狀態(tài)機控制器的具體輸入輸出控制信號圖。
具體實施例方式具體實施方式
一下面結(jié)合圖1說明本實施方式,本實施方式由有限狀態(tài)機控制器1-1、數(shù)據(jù)通道1-2、數(shù)據(jù)存儲器1-3和程序存儲器1-4組成,數(shù)據(jù)通道1-2的數(shù)據(jù)信號輸入輸出端連接數(shù)據(jù)存儲器1-3的數(shù)據(jù)信號輸出輸入端,數(shù)據(jù)存儲器1-3的控制信號輸入端連接有限狀態(tài)機控制器1-1控制數(shù)據(jù)存儲器讀寫使能的控制信號輸出端,有限狀態(tài)機控制器1-1的數(shù)據(jù)通道控制信號輸出端連接數(shù)據(jù)通道 1-2的控制信號輸入端,數(shù)據(jù)通道1-2的狀態(tài)信號輸出端連接有限狀態(tài)機控制器1-1的狀態(tài)信號輸入端,有限狀態(tài)機控制器1-1的地址信號輸出端連接程序存儲器1-4的地址信號輸入端,程序存儲器1-4的指令信號輸出端連接有限狀態(tài)機控制器1-1的指令信號輸入端。數(shù)據(jù)存儲器1-3的功能是存放待操作的數(shù)據(jù)和運算后的結(jié)果。數(shù)據(jù)存儲器1-3的數(shù)據(jù)位寬為8位,地址位寬為8位,為了實現(xiàn)對數(shù)據(jù)存儲器1-3同時讀寫,可采用Xilinx或 Altera提供的雙端口存儲器模塊來實現(xiàn)數(shù)據(jù)存儲器。本實施方式在使用時,要與外設配合使用,可有時鐘模塊、按鍵消抖模塊、輸入輸出模塊和數(shù)碼管顯示模塊,時鐘模塊用于為本發(fā)明的IP軟核內(nèi)的所有組件提供時鐘信號, 按鍵消抖模塊用于輸出消抖信號給有限狀態(tài)機控制器1-1,數(shù)據(jù)通道1-2的數(shù)碼顯示信號輸出給數(shù)碼管顯示模塊進行數(shù)碼顯示,輸入輸出模塊用于實現(xiàn)IP軟核與外界進行數(shù)據(jù)交互。有限狀態(tài)機控制器1-1由包含三個狀態(tài)的有限狀態(tài)機構(gòu)成,它會根據(jù)指令產(chǎn)生相應的指示信號控制系統(tǒng)的協(xié)調(diào)運行。時鐘模塊可采用Xilinx的DCM時鐘管理模塊,以實現(xiàn)時鐘的靈活精確控制。按鍵消抖模塊用來對復位等功能的按鍵進行消抖。輸入輸出模塊I/O提供了系統(tǒng)內(nèi)部的數(shù)據(jù)總線與外界總線的連接接口,實現(xiàn)數(shù)據(jù)的輸入/輸出,用來對IP軟核進行調(diào)試和驗證。輸入輸出模塊I/O在本實施方式中只包含一個8位的PORTB和一個波特率固定38400的UART。 數(shù)碼管顯示模塊可用于分擔在C程序中編碼的任務,使IP軟核專注于其它數(shù)據(jù)處理,進一步提高了 IP軟核的性能。
具體實施方式
二 下面結(jié)合圖2說明本實施方式,本實施方式為對實施方式一的進一步說明,所述數(shù)據(jù)通道1-2由算術(shù)邏輯單元1-21、寄存器堆1-22和選擇單元1-23組成,算術(shù)邏輯單元1-21用于按照有限狀態(tài)機控制器1-1輸出的控制信號,實現(xiàn)算術(shù)運算、邏輯運算和循環(huán)移位操作,在算術(shù)邏輯單元1-21中做運算的操作數(shù)包括來自于寄存器堆1-22的操作數(shù),算術(shù)邏輯單元1-21的運算結(jié)果由有限狀態(tài)機控制器1-1譯碼后的控制信號決定存放位置;數(shù)據(jù)存儲器1-3用于存放待操作的數(shù)據(jù)和算術(shù)邏輯單元1-21運算后的結(jié)果;寄存器堆1-22用于存儲有限狀態(tài)機控制器1-1在數(shù)據(jù)處理過程中產(chǎn)生的中間數(shù)據(jù);選擇單元1-23用于根據(jù)有限狀態(tài)機控制器1-1輸出的控制信號選擇接收數(shù)據(jù)存儲器1-3輸出的數(shù)據(jù)、寄存器堆1-22輸出的數(shù)據(jù)或者外部輸入的數(shù)據(jù)給算術(shù)邏輯單元 1-21。寄存器堆1-22可為32X8位,系統(tǒng)可以對數(shù)據(jù)存儲器1_3用多種尋址方式進行訪問。數(shù)據(jù)通道1-2能夠完成對操作數(shù)的加工、處理和存儲工作。算術(shù)邏輯單元1-21是IP軟核運算電路的核心部分,它的字寬為8位,算術(shù)邏輯單元1-21中做運算的2個操作數(shù)來自寄存器堆1-22或外部10,最后運算的結(jié)果由指令譯碼后的控制信號決定存放在寄存器堆1-22中或傳遞到外部10。寄存器堆1-22用來存儲有限狀態(tài)機控制器1-1數(shù)據(jù)處理過程中的中間數(shù)據(jù)。由于訪問存儲器的時間要比訪問寄存器的時間長,所以采用寄存器堆1-22來存儲有限狀態(tài)機控制器1-1數(shù)據(jù)處理過程中的中間數(shù)據(jù)可以顯著提升IP軟核的性能。寄存器堆1-22由通用寄存器堆、堆棧寄存器和狀態(tài)寄存器組成。通用寄存器堆由32個8位的寄存器組成, 堆棧寄存器和狀態(tài)寄存器的位寬分別是16和8。
具體實施方式
三下面結(jié)合圖3說明本實施方式,本實施方式為對實施方式一或二的進一步說明,所述有限狀態(tài)機控制器1-1包括三個狀態(tài),分別為取指令狀態(tài)、指令譯碼狀態(tài)和指令執(zhí)行狀態(tài),取指令狀態(tài),用于產(chǎn)生對程序存儲器1-4進行讀取的相關控制信號指令,并將取出的指令存儲在指令寄存器中;然后進行指令譯碼狀態(tài);指令譯碼狀態(tài),用于根據(jù)指令寄存器中存儲的指令,產(chǎn)生控制算術(shù)邏輯單元1-21、寄存器堆1-22或數(shù)據(jù)存儲器1-3的數(shù)據(jù)通道信號,并將該數(shù)據(jù)通道信號存儲在相應的寄存器中,同時更新程序存儲器1-4,為下次讀取指令產(chǎn)生目的地址;然后進行指令執(zhí)行狀態(tài);指令執(zhí)行狀態(tài)用于產(chǎn)生讀寫數(shù)據(jù)存儲器1-3的控制信號和讀寫狀態(tài)寄存器的使能信號,將算術(shù)邏輯單元1-21、寄存器堆1-22或數(shù)據(jù)存儲器1-3的數(shù)據(jù)通道處理后的結(jié)果寫回數(shù)據(jù)存儲器1-3和狀態(tài)寄存器。
具體實施方式
四下面結(jié)合圖4和圖5說明本實施方式,本實施方式為對實施方式三的進一步說明,所述有限狀態(tài)機控制器1-1的取指令狀態(tài)、指令譯碼狀態(tài)和指令執(zhí)行狀態(tài)采用三級流水線控制,該三級流水線控制過程為在第一指令周期,取指令狀態(tài)從程序存儲器1-4中取出一條待執(zhí)行的指令,并存儲在指令寄存器中,同時程序計數(shù)器加1 ;在第二個指令周期,指令譯碼狀態(tài)從所述指令寄存器中取出第一條指令,進行第一條指令譯碼,并把譯碼后的控制信號鎖存起來;同時取指令狀態(tài)從程序存儲器1-4中取出下一條待執(zhí)行的指令,并鎖存在指令寄存器中,此時程序計數(shù)器再加1 ;在第三個指令周期,指令執(zhí)行狀態(tài)取出前一指令周期鎖存起來的譯碼后的控制信號進行第一條指令的執(zhí)行,同時指令譯碼狀態(tài)進行第二條指令的譯碼,取指令狀態(tài)進行第三條指令的取指,此時程序計數(shù)器再加1 ;依次循環(huán)進行。圖5所示有限狀態(tài)機控制器1-1包含三個狀態(tài),它能夠產(chǎn)生控制整個IP軟核協(xié)調(diào)運行的控制信號。本發(fā)明中時鐘源采用60MHz外接晶振,經(jīng)FPGA專用時鐘輸入引腳引入。使用 Xilinx的DCM或Altera的PLL分頻得到穩(wěn)定可靠且相位占空比等可控的時鐘信號,然后送給所有需要時鐘信號的模塊。三級流水線本發(fā)明中三級流水線劃分為取指、指令譯碼和執(zhí)行三級。從時序上看,取指令與指令譯碼、指令執(zhí)行是并行執(zhí)行的,即在當前指令取指的同時,前二條指令分別處于指令譯碼和指令執(zhí)行階段。程序跳轉(zhuǎn)指令與其它單周期指令一樣進入流水線,在執(zhí)行程序跳轉(zhuǎn)時,屏蔽下一條指令進入指令譯碼單元,用空操作指令NOP代替。這樣,控制邏輯不需要做太大修改就能滿足流水線的執(zhí)行。本發(fā)明的總線采用了哈佛結(jié)構(gòu),16/32位指令字長,8位數(shù)據(jù)字長,指令集與 ATMEG8兼容。它具有133(實現(xiàn)了 74條)條指令,在連續(xù)工作的情況下,除了程序跳轉(zhuǎn)類指令要用2個指令周期外,其它的所有指令都可以在1個指令周期內(nèi)完成。由于哈佛結(jié)構(gòu)總線具有獨立的指令總線和數(shù)據(jù)總線,可同時從數(shù)據(jù)存儲器1-3和程序存儲器1-4中分別讀取數(shù)據(jù),大大提高了 IP軟核內(nèi)部執(zhí)行的并行性,簡化了控制電路的設計。本發(fā)明三級流水線的實現(xiàn)方式。與更深級流水線相比,簡單的指令周期避免了深度流水線造成的增加電路結(jié)構(gòu)復雜性和芯片面積。有限狀態(tài)機控制器1-1本發(fā)明的指揮中心,它根據(jù)每一條指令的操作碼譯出相應的控制信號,來控制數(shù)據(jù)通道1-2協(xié)調(diào)有序地對操作數(shù)進行加工、處理和存儲。本發(fā)明在設計的過程中,需要進行IP軟核的仿真測試,通過自主建立的測試平臺,編寫了覆蓋所有指令的測試文件,對軟核的多種指令、地址和數(shù)據(jù)組合進行了仿真測試,提高了軟核功能仿真的測試覆蓋率,保證了設計的正確性。由PC、0PC、ALU_0P等的信號變化來驗證設計的正確性。在正常情況下,程序計數(shù)器是在每個指令周期進行加1,當遇到長指令(32位的指令)時程序計數(shù)器加2,當遇到跳轉(zhuǎn)類指令時程序計數(shù)器跳轉(zhuǎn)到目的地址。當中斷使能信號INT_ENA = 1時,地址在下一指令周期跳到中斷向量地址,同時屏蔽下一條指令進入指令譯碼單元,用NOP指令代替。IP軟核在不同的硬件平臺上實現(xiàn)時的邏輯資源使用情況如表1所示。通過分析發(fā)現(xiàn)本發(fā)明中的IP軟核能在現(xiàn)存的主流FPGA中占用很少的邏輯資源的情況下大大改善傳統(tǒng) MegaS微控制的性能,有很好的應用前景。表 權(quán)利要求
1.一種八位高速微控制器IP軟核,其特征在于它由有限狀態(tài)機控制器(1-1)、數(shù)據(jù)通道(1-2)、數(shù)據(jù)存儲器(1-3)和程序存儲器(1-4)組成,數(shù)據(jù)通道(1-2)的數(shù)據(jù)信號輸入輸出端連接數(shù)據(jù)存儲器(1-3)的數(shù)據(jù)信號輸出輸入端,數(shù)據(jù)存儲器(1-3)的控制信號輸入端連接有限狀態(tài)機控制器(1-1)控制數(shù)據(jù)存儲器讀寫使能的控制信號輸出端,有限狀態(tài)機控制器(1-1)的數(shù)據(jù)通道控制信號輸出端連接數(shù)據(jù)通道(1-2)的控制信號輸入端,數(shù)據(jù)通道(1- 的狀態(tài)信號輸出端連接有限狀態(tài)機控制器(1-1)的狀態(tài)信號輸入端,有限狀態(tài)機控制器(1-1)的地址信號輸出端連接程序存儲器(1-4)的地址信號輸入端,程序存儲器(1-4)的指令信號輸出端連接有限狀態(tài)機控制器 (1-1)的指令信號輸入端。
2.根據(jù)權(quán)利要求1所述的八位高速微控制器IP軟核,其特征在于所述數(shù)據(jù)通道 (1-2)由算術(shù)邏輯單元(1-21)、寄存器堆(1-2 和選擇單元(1-2 組成,算術(shù)邏輯單元(1-21)用于按照有限狀態(tài)機控制器(1-1)輸出的控制信號,實現(xiàn)算術(shù)運算、邏輯運算和循環(huán)移位操作,在算術(shù)邏輯單元(1-21)中做運算的操作數(shù)包括來自于寄存器堆(1-22)的操作數(shù),算術(shù)邏輯單元(1-21)的運算結(jié)果由有限狀態(tài)機控制器(1-1)譯碼后的控制信號決定存放位置;數(shù)據(jù)存儲器(1-3)用于存放待操作的數(shù)據(jù)和算術(shù)邏輯單元(1-21)運算后的結(jié)果;寄存器堆(1-2 用于存儲有限狀態(tài)機控制器(1-1)在數(shù)據(jù)處理過程中產(chǎn)生的中間數(shù)據(jù);選擇單元(1-2 用于根據(jù)有限狀態(tài)機控制器(1-1)輸出的控制信號選擇接收數(shù)據(jù)存儲器(1- 輸出的數(shù)據(jù)、寄存器堆(1-2 輸出的數(shù)據(jù)或者外部輸入的數(shù)據(jù)給算術(shù)邏輯單元 (1-21)。
3.根據(jù)權(quán)利要求1或2所述的八位高速微控制器IP軟核,其特征在于所述有限狀態(tài)機控制器(1-1)包括三個狀態(tài),分別為取指令狀態(tài)、指令譯碼狀態(tài)和指令執(zhí)行狀態(tài),取指令狀態(tài),用于產(chǎn)生對程序存儲器(1-4)進行讀取的相關控制信號指令,并將取出的指令存儲在指令寄存器中;然后進行指令譯碼狀態(tài);指令譯碼狀態(tài),用于根據(jù)指令寄存器中存儲的指令,產(chǎn)生控制算術(shù)邏輯單元(1-21)、寄存器堆(1-2 或數(shù)據(jù)存儲器(1- 的數(shù)據(jù)通道信號,并將該數(shù)據(jù)通道信號存儲在相應的寄存器中,同時更新程序存儲器(1-4),為下次讀取指令產(chǎn)生目的地址;然后進行指令執(zhí)行狀態(tài);指令執(zhí)行狀態(tài)用于產(chǎn)生讀寫數(shù)據(jù)存儲器(1- 的控制信號和讀寫狀態(tài)寄存器的使能信號,將算術(shù)邏輯單元(1-21)、寄存器堆(1-22)或數(shù)據(jù)存儲器(1-3)的數(shù)據(jù)通道處理后的結(jié)果寫回數(shù)據(jù)存儲器(1-3)和狀態(tài)寄存器。
4.根據(jù)權(quán)利要求3所述的八位高速微控制器IP軟核,其特征在于所述有限狀態(tài)機控制器(1-1)的取指令狀態(tài)、指令譯碼狀態(tài)和指令執(zhí)行狀態(tài)采用三級流水線控制,該三級流水線控制過程為在第一指令周期,取指令狀態(tài)從程序存儲器(1-4)中取出一條待執(zhí)行的指令,并存儲在指令寄存器中,同時程序計數(shù)器加1 ;在第二個指令周期,指令譯碼狀態(tài)從所述指令寄存器中取出第一條指令,進行第一條指令譯碼,并把譯碼后的控制信號鎖存起來;同時取指令狀態(tài)從程序存儲器(1-4)中取出下一條待執(zhí)行的指令,并鎖存在指令寄存器中,此時程序計數(shù)器再加1 ;在第三個指令周期,指令執(zhí)行狀態(tài)取出前一指令周期鎖存起來的譯碼后的控制信號進行第一條指令的執(zhí)行,同時指令譯碼狀態(tài)進行第二條指令的譯碼,取指令狀態(tài)進行第三條指令的取指,此時程序計數(shù)器再加1 ;依次循環(huán)進行。
全文摘要
八位高速微控制器IP軟核,屬于集成電路設計技術(shù)領域。它解決了傳統(tǒng)的基于硬核的微控制器的通用性差的問題。它由有限狀態(tài)機控制器、數(shù)據(jù)通道、數(shù)據(jù)存儲器和程序存儲器組成,數(shù)據(jù)通道的數(shù)據(jù)信號輸入輸出端連接數(shù)據(jù)存儲器的數(shù)據(jù)信號輸出輸入端,數(shù)據(jù)存儲器的控制信號輸入端連接有限狀態(tài)機控制器控制數(shù)據(jù)存儲器讀寫使能的控制信號輸出端,有限狀態(tài)機控制器的數(shù)據(jù)通道控制信號輸出端連接數(shù)據(jù)通道的控制信號輸入端,數(shù)據(jù)通道的狀態(tài)信號輸出端連接有限狀態(tài)機控制器的狀態(tài)信號輸入端,有限狀態(tài)機控制器的地址信號輸出端連接程序存儲器的地址信號輸入端,程序存儲器的指令信號輸出端連接有限狀態(tài)機控制器的指令信號輸入端。本發(fā)明作為一種微控制器。
文檔編號G06F9/22GK102214084SQ20111016330
公開日2011年10月12日 申請日期2011年6月17日 優(yōu)先權(quán)日2011年6月17日
發(fā)明者廖祺昌, 李志強, 桂太龍, 汪浩淼, 王建民, 王歡, 高貞 申請人:哈爾濱理工大學