居水榮
(江蘇信息職業(yè)技術(shù)學(xué)院 微電子學(xué)院,江蘇 無(wú)錫214153)
微控制器(MCU)是集成電路中應(yīng)用最廣泛的產(chǎn)品類型,其中八位MCU 又是對(duì)使用者來(lái)說性價(jià)比最佳的系列。MCU 的設(shè)計(jì)中最重要的部分是其內(nèi)核(CORE)的設(shè)計(jì),在內(nèi)核設(shè)計(jì)完成后,再配上一些外圍資源,即可形成一個(gè)能夠?qū)嶋H使用的產(chǎn)品。由于整機(jī)市場(chǎng)對(duì)MCU 的規(guī)格在不斷變化,對(duì)產(chǎn)品設(shè)計(jì)來(lái)說如何設(shè)計(jì)一種能夠針對(duì)不同應(yīng)用內(nèi)核并且不受工藝條件限制的產(chǎn)品是一項(xiàng)重要且有意義的工作。
本文針對(duì)一種八位MCU 進(jìn)行內(nèi)核的行為設(shè)計(jì),形成一個(gè)通用的、通過邏輯綜合可以對(duì)應(yīng)到不同工藝的內(nèi)核;即采用top-down 設(shè)計(jì)方法,作core-based 設(shè)計(jì),形成所需產(chǎn)品。在此基礎(chǔ)上可以接受不同用戶開發(fā)不同的產(chǎn)品。
本文所設(shè)計(jì)的八位MCU CORE 結(jié)構(gòu)如圖1 所示。
圖1 中,ALU 為算術(shù)邏輯運(yùn)算單元;A-Reg 為累加寄存器;X-Reg 為變址寄存器;PC 為程序計(jì)數(shù)器;SP 為堆棧指針;CCR 為條件碼寄存器;MOPGEN 為微操作產(chǎn)生單元,包括指令寄存器、指令周期狀態(tài)機(jī)及微操作編碼電路;MOP 為微操作接口單元;INTERUPT 為內(nèi)、外部中斷模塊;CLOCK 為時(shí)鐘產(chǎn)生單元;RESET 為復(fù)位模塊。
圖1 8bit MCU CORE 的結(jié)構(gòu)示意圖
ALU 為CORE 的核心單元之一,是一個(gè)8 位的算術(shù)邏輯運(yùn)算單元,它完成所有的邏輯和算術(shù)運(yùn)算。
累加寄存器和變址寄存器均為8 位寄存器,累加寄存器用于存放算術(shù)或數(shù)據(jù)處理運(yùn)算時(shí)的第一操作數(shù)和結(jié)果,而變址寄存器則主要用于變址尋址,它包含一個(gè)8 位值,可與0、8 或16 位立即數(shù)相加,產(chǎn)生有效地址。
程序計(jì)數(shù)器PC 是一個(gè)最高3 位始終為0 的16 位寄存器,它包含下一條將執(zhí)行指令的地址;堆棧指針SP 是一個(gè)13 位寄存器,它包含堆棧中下一個(gè)空閑單元的地址,實(shí)際的堆棧為6 位,高7 位始終為0000011。
CCR 又可稱之為程序狀態(tài)字(PSW)寄存器,它有5位,其中半進(jìn)位H、負(fù)標(biāo)志位N、零標(biāo)志位Z 和進(jìn)位/借位標(biāo)志位C 指示剛剛執(zhí)行完的指令的結(jié)果,I 位用于禁止/允許中斷。這些狀態(tài)位可由程序分別測(cè)試,并按它們的狀態(tài)執(zhí)行指定的操作。CCR 可看作一個(gè)8 位寄存器,它的高3 位始終為1。
MOPGEN 為CORE 的另一核心單元,它主要完成以下操作:從內(nèi)部數(shù)據(jù)總線選擇進(jìn)入指令的數(shù)據(jù);根據(jù)指令類型確定指令時(shí)序周期;根據(jù)指令所需完成工作給出指令操作每一節(jié)拍內(nèi)控制ALU 及內(nèi)部寄存器的微操作,其內(nèi)部數(shù)據(jù)流如圖2 所示。
圖2 MOPGEN 中的數(shù)據(jù)流
DB 為CPU 中的數(shù)據(jù)總線,它上面的數(shù)據(jù)包含指令數(shù)據(jù)和操作數(shù)據(jù)。在先行脈沖的控制下指令寄存器從數(shù)據(jù)總線上獲取指令,產(chǎn)生16 位數(shù)據(jù);這16 位數(shù)據(jù)一方面進(jìn)入指令周期狀態(tài)機(jī)產(chǎn)生一組10 位狀態(tài)數(shù)據(jù),另一方面與狀態(tài)數(shù)據(jù)一起進(jìn)入微操作編碼器產(chǎn)生67 個(gè)微操作,用來(lái)控制ALU 的運(yùn)算方式及內(nèi)部寄存器的數(shù)據(jù)流。指令周期狀態(tài)機(jī)輸出決定指令執(zhí)行周期,當(dāng)指令執(zhí)行完之后,產(chǎn)生先行脈沖,去控制指令寄存器從CPU 數(shù)據(jù)總線上選擇下一個(gè)指令。
從MOPGEN 產(chǎn)生的67 個(gè)微操作在控制ALU 的運(yùn)算及內(nèi)部數(shù)據(jù)流之前先要經(jīng)過MOP 這一模塊,在CPU主時(shí)鐘的作用下,該模塊產(chǎn)生以下幾類控制信號(hào):基本運(yùn)算方式及運(yùn)算結(jié)果控制信號(hào);移位及負(fù)操作控制信號(hào);內(nèi)部數(shù)據(jù)總線與外部數(shù)據(jù)總線之間的數(shù)據(jù)交換控制信號(hào);程序計(jì)數(shù)器控制信號(hào);堆棧指針控制信號(hào)。
INTERRUPT 模塊主要完成以下功能:產(chǎn)生外部中斷、定時(shí)器中斷、SCI 中斷及SPI 中斷的標(biāo)志信號(hào);產(chǎn)生以上這些中斷的中斷向量;產(chǎn)生STOP 及WAIT 低功耗方式的控制信號(hào)。
外接晶振經(jīng)過時(shí)鐘產(chǎn)生單元分頻等處理后產(chǎn)生以下時(shí)鐘:CPU 主時(shí)鐘;定時(shí)器、串行通信接口SCI、串行外圍接口SPI 時(shí)鐘;CPU、I/O 口、ROM、RAM 時(shí)鐘;定時(shí)器、串行通信接口SCI、串行外圍接口SPI 時(shí)鐘;SCI、CPU 時(shí)鐘;I/O 外圍擴(kuò)展時(shí)鐘。
復(fù)位模塊的功能:外部復(fù)位信號(hào)及電路內(nèi)部上電清零信號(hào),經(jīng)過與CPU 時(shí)鐘之間的邏輯組合產(chǎn)生CORE 的復(fù)位信號(hào)。
本文設(shè)計(jì)的8 位MCU 共有210 條指令,所有指令均在MCU 內(nèi)核(CORE)中適用。
指令調(diào)試是在由MCU CORE、ROM 和RAM 等組成的結(jié)構(gòu)上進(jìn)行的,該結(jié)構(gòu)如圖3 所示;在指令調(diào)試過程中,編寫了包括210 條指令的程序,盡可能考慮各種應(yīng)用條件;另外在調(diào)試過程中還包括了上電復(fù)位、外部Reset 腳復(fù)位和各種中斷請(qǐng)求。
圖3 指令調(diào)試結(jié)構(gòu)示意圖
下面以帶進(jìn)位加指令來(lái)示意指令的執(zhí)行,該指令有六種尋址方式,其指令形式、操作碼、完成操作、執(zhí)行周期及該指令影響的條件碼等列入了表1。
表1 帶進(jìn)位加指令
本文設(shè)計(jì)的MCU CORE 覆蓋了微處理芯片的CPU、時(shí)鐘、RESET、內(nèi)部及外部中斷請(qǐng)求等,占芯片總邏輯的一半左右,在它的基礎(chǔ)上加上存儲(chǔ)器、定時(shí)器、SCI、SPI 和I/O 口等之后即構(gòu)成了一完整的微處理芯片,若配置其他模塊,可進(jìn)行以MCU68HC05 CORE 為基礎(chǔ)的core-based 設(shè)計(jì),研發(fā)系列產(chǎn)品,框架結(jié)構(gòu)舉例如圖4 所示。
圖4 MCU CORE 的配置舉例
本文設(shè)計(jì)了一種MCU 的內(nèi)涵模塊,用Verilog 語(yǔ)言作行為描述,通過210 條指令的執(zhí)行證明所設(shè)計(jì)的CORE 基本上反映了一款微處理器的CPU 行為,再輔之以一些存儲(chǔ)器及外圍元件即可形成一塊完整的8 位微處理器。
通過本項(xiàng)目研究,我們基本掌握了一種8 位CPU CORE 的工作機(jī)理和core-based 設(shè)計(jì)要點(diǎn)。