張俊謨
4.MSP430系列的內(nèi)部結(jié)構(gòu)概述
MSP430系列器件包含CPU、程序存儲器(ROM、 OTP和Flash ROM)、數(shù)據(jù)存儲器(RAM)、運行控制、外圍模塊、振蕩器和倍頻器等主要功能模塊。其基本結(jié)構(gòu)如圖1所示??梢钥闯?,MSP430內(nèi)部包含了計算機(jī)的所有部件,是一個真正的單片機(jī)(微控制器MCU)。
CPUCPU 由一個16位的ALU、16個寄存器和一套指令控制邏輯組成,其邏輯簡圖如圖2所示。在16個寄存器中,程序計數(shù)器PC、堆棧指針SP、狀態(tài)寄存器SR和常數(shù)發(fā)生器CGl、CG2這4個寄存器有特殊用途。除了R3和R2外,所有寄存器都可作為通用寄存器來用于所有指令操作。常數(shù)發(fā)生器是為指令執(zhí)行時提供常數(shù)的,而不是用于存儲數(shù)據(jù)的。對CGl、CG2訪問的尋址模式可以區(qū)分常數(shù)的數(shù)據(jù)。
在CPU內(nèi)部有一組16位數(shù)據(jù)總線和16位的地址總線;CPU運行正交設(shè)計、對模塊高度透明的精簡指令集;PC、SR和SP配合精簡指令組所實現(xiàn)的控制,使應(yīng)用開發(fā)可實現(xiàn)復(fù)雜的尋址模式和軟件算法。
存儲器 MSP430系列采用 “馮-紐曼結(jié)構(gòu)”。因此,RAM、ROM和全部外圍模塊都位于同一個地址空間內(nèi),即用一個公共的空間對全部功能模塊進(jìn)行尋址。支持外部擴(kuò)展存儲器是將來性能增強(qiáng)的目標(biāo)。特殊功能寄存器及外圍模塊安排在000H~1FFH區(qū)域;RAM和ROM共享0200H~FFFFH區(qū)域,數(shù)據(jù)存儲器(RAM)的起始地址是0200H。
存儲器與CPU及存儲器數(shù)據(jù)總線(MDB)、存儲器地址總線(MAB)的連接關(guān)系如圖3所示。
(1)程序存儲器MSP430系列程序存儲器的類型有ROM、OTP和Flash ROM三種,存儲器的類型和容量示于本刊網(wǎng)站的表1中。
ROM的容量在1~60KB之間;對于Flash型的芯片,內(nèi)部還集成有兩段128B(共256B)的信息存儲器以及1KB存放自舉程序的自舉存儲器(BOOT ROM);對代碼存儲器的訪問總是以字形式取得代碼,而對數(shù)據(jù)可以用字或字節(jié)方式訪問。每次訪問需要16條數(shù)據(jù)總線(MDB)和訪問當(dāng)前存儲器模塊所需的地址總線(MAB);存儲器模塊由模塊允許信號自動選中。最低的64KB空間的頂部16個字,即0FFFFH~0FFE0H,保留存放復(fù)位和中斷的向量;在程序存儲器中還可以存放表格數(shù)據(jù),以實現(xiàn)查表處理等應(yīng)用;程序?qū)Τ绦虼鎯ζ骺梢匀我庾x取,但不能寫入。
(2)數(shù)據(jù)存儲器數(shù)據(jù)存儲器(RAM)經(jīng)兩條總線與CPU相連,即存儲器地址總線MAB和存儲器數(shù)據(jù)總線MDB(見圖3)。
數(shù)據(jù)存儲器可以以字或字節(jié)寬度集成在片內(nèi),其容量在128B~10KB之間;所有指令可以對字節(jié)或字進(jìn)行操作。但是對堆棧和PC的操作是按字寬度進(jìn)行的,尋址時必須對準(zhǔn)偶地址。
運行控制MSP430系列微控制器的運行主要受控于存儲在特殊寄存器(SFR)中的信息。不同SFR中的位可以允許中斷,以支持取決于中斷標(biāo)志狀態(tài)的軟件以及定義外圍模塊的工作模式。
禁止外圍模塊,停止它的功能,可以減少電流消耗,而所有存儲在模塊寄存器中的數(shù)據(jù)仍被保留。外圍模塊的工作模式可以用SFR的特定位置來標(biāo)明。
外圍模塊 外圍模塊包括基本定時器(Basic Timer)、16位定時器(Timer_A及Timer_B)、ADC轉(zhuǎn)換器、I/O端口、異步及同步串行通訊口(USART)以及液晶顯示驅(qū)動模塊等。
外圍模塊經(jīng)MAB、MDB與CPU相連。圖4所示為外圍模塊的連接總線示意圖。從圖中可以看出,外圍模塊可分為字(16位)模塊和字節(jié)(8位)模塊兩種。對大多數(shù)外圍模塊,MAB通常是5位,MDB是8位或16位。
字節(jié)(8位)模塊的數(shù)據(jù)總線是8位的,需經(jīng)總線轉(zhuǎn)換電路與16位的CPU相連。這些模塊的數(shù)據(jù)交換毫無例外地要用字節(jié)指令處理;對字(16位)模塊,其數(shù)據(jù)總線是16位的,無需經(jīng)過轉(zhuǎn)換而直接與CPU的16位數(shù)據(jù)總線相連。模塊的操作指令就沒有任何限制。MSP430系列所包含的字節(jié)(8位)模塊和字(16位)模塊,請參看本刊網(wǎng)站上的表2和表3。
振蕩器和時鐘發(fā)生器 振蕩器LFXT1(LF)是專門為通用的低功耗32768 Hz時鐘晶振設(shè)計的。除了晶體外接外,所有的模擬元件都集成在片內(nèi)。但是也可以用一個高速的晶振工作,這時需要外接負(fù)載電容。
對于F13X、F14X、F15X和F16X以及F4XX系列,片內(nèi)還有一個可接入高速晶振的XT2振蕩器。除了晶體振蕩器之外,F(xiàn)13X、F14X、F15X和F16X系列都有一個數(shù)字控制RC振蕩器(DCO),用它實現(xiàn)對振蕩器的數(shù)字控制和頻率調(diào)節(jié);對于F4XX系列,將晶振頻率用一個鎖頻環(huán)電路(FLL或FLL+)進(jìn)行倍頻。FLL或FLL+在上電后以最低頻率開始工作,并通過控制一個數(shù)控振蕩器(DCO)來調(diào)整到適當(dāng)?shù)念l率。供處理器工作的時鐘發(fā)生器的頻率固定在晶振的倍頻上,并提供時鐘信號MCLK。
外圍模塊及CPU的時鐘源選擇非常靈活??梢杂靡詫崿F(xiàn)各種低功耗模式下的運行。