居水榮
(江蘇信息職業技術學院 微電子學院,江蘇 無錫214153)
微控制器(MCU)是集成電路中應用最廣泛的產品類型,其中八位MCU 又是對使用者來說性價比最佳的系列。MCU 的設計中最重要的部分是其內核(CORE)的設計,在內核設計完成后,再配上一些外圍資源,即可形成一個能夠實際使用的產品。由于整機市場對MCU 的規格在不斷變化,對產品設計來說如何設計一種能夠針對不同應用內核并且不受工藝條件限制的產品是一項重要且有意義的工作。
本文針對一種八位MCU 進行內核的行為設計,形成一個通用的、通過邏輯綜合可以對應到不同工藝的內核;即采用top-down 設計方法,作core-based 設計,形成所需產品。在此基礎上可以接受不同用戶開發不同的產品。
本文所設計的八位MCU CORE 結構如圖1 所示。
圖1 中,ALU 為算術邏輯運算單元;A-Reg 為累加寄存器;X-Reg 為變址寄存器;PC 為程序計數器;SP 為堆棧指針;CCR 為條件碼寄存器;MOPGEN 為微操作產生單元,包括指令寄存器、指令周期狀態機及微操作編碼電路;MOP 為微操作接口單元;INTERUPT 為內、外部中斷模塊;CLOCK 為時鐘產生單元;RESET 為復位模塊。

圖1 8bit MCU CORE 的結構示意圖
ALU 為CORE 的核心單元之一,是一個8 位的算術邏輯運算單元,它完成所有的邏輯和算術運算。
累加寄存器和變址寄存器均為8 位寄存器,累加寄存器用于存放算術或數據處理運算時的第一操作數和結果,而變址寄存器則主要用于變址尋址,它包含一個8 位值,可與0、8 或16 位立即數相加,產生有效地址。
程序計數器PC 是一個最高3 位始終為0 的16 位寄存器,它包含下一條將執行指令的地址;堆棧指針SP 是一個13 位寄存器,它包含堆棧中下一個空閑單元的地址,實際的堆棧為6 位,高7 位始終為0000011。
CCR 又可稱之為程序狀態字(PSW)寄存器,它有5位,其中半進位H、負標志位N、零標志位Z 和進位/借位標志位C 指示剛剛執行完的指令的結果,I 位用于禁止/允許中斷。這些狀態位可由程序分別測試,并按它們的狀態執行指定的操作。CCR 可看作一個8 位寄存器,它的高3 位始終為1。
MOPGEN 為CORE 的另一核心單元,它主要完成以下操作:從內部數據總線選擇進入指令的數據;根據指令類型確定指令時序周期;根據指令所需完成工作給出指令操作每一節拍內控制ALU 及內部寄存器的微操作,其內部數據流如圖2 所示。

圖2 MOPGEN 中的數據流
DB 為CPU 中的數據總線,它上面的數據包含指令數據和操作數據。在先行脈沖的控制下指令寄存器從數據總線上獲取指令,產生16 位數據;這16 位數據一方面進入指令周期狀態機產生一組10 位狀態數據,另一方面與狀態數據一起進入微操作編碼器產生67 個微操作,用來控制ALU 的運算方式及內部寄存器的數據流。指令周期狀態機輸出決定指令執行周期,當指令執行完之后,產生先行脈沖,去控制指令寄存器從CPU 數據總線上選擇下一個指令。
從MOPGEN 產生的67 個微操作在控制ALU 的運算及內部數據流之前先要經過MOP 這一模塊,在CPU主時鐘的作用下,該模塊產生以下幾類控制信號:基本運算方式及運算結果控制信號;移位及負操作控制信號;內部數據總線與外部數據總線之間的數據交換控制信號;程序計數器控制信號;堆棧指針控制信號。
INTERRUPT 模塊主要完成以下功能:產生外部中斷、定時器中斷、SCI 中斷及SPI 中斷的標志信號;產生以上這些中斷的中斷向量;產生STOP 及WAIT 低功耗方式的控制信號。
外接晶振經過時鐘產生單元分頻等處理后產生以下時鐘:CPU 主時鐘;定時器、串行通信接口SCI、串行外圍接口SPI 時鐘;CPU、I/O 口、ROM、RAM 時鐘;定時器、串行通信接口SCI、串行外圍接口SPI 時鐘;SCI、CPU 時鐘;I/O 外圍擴展時鐘。
復位模塊的功能:外部復位信號及電路內部上電清零信號,經過與CPU 時鐘之間的邏輯組合產生CORE 的復位信號。
本文設計的8 位MCU 共有210 條指令,所有指令均在MCU 內核(CORE)中適用。
指令調試是在由MCU CORE、ROM 和RAM 等組成的結構上進行的,該結構如圖3 所示;在指令調試過程中,編寫了包括210 條指令的程序,盡可能考慮各種應用條件;另外在調試過程中還包括了上電復位、外部Reset 腳復位和各種中斷請求。

圖3 指令調試結構示意圖
下面以帶進位加指令來示意指令的執行,該指令有六種尋址方式,其指令形式、操作碼、完成操作、執行周期及該指令影響的條件碼等列入了表1。

表1 帶進位加指令
本文設計的MCU CORE 覆蓋了微處理芯片的CPU、時鐘、RESET、內部及外部中斷請求等,占芯片總邏輯的一半左右,在它的基礎上加上存儲器、定時器、SCI、SPI 和I/O 口等之后即構成了一完整的微處理芯片,若配置其他模塊,可進行以MCU68HC05 CORE 為基礎的core-based 設計,研發系列產品,框架結構舉例如圖4 所示。

圖4 MCU CORE 的配置舉例
本文設計了一種MCU 的內涵模塊,用Verilog 語言作行為描述,通過210 條指令的執行證明所設計的CORE 基本上反映了一款微處理器的CPU 行為,再輔之以一些存儲器及外圍元件即可形成一塊完整的8 位微處理器。
通過本項目研究,我們基本掌握了一種8 位CPU CORE 的工作機理和core-based 設計要點。