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