MC9S08AW系列MCU内部除了HCS08 CPU之外,还有RAM存储器、ROM(或Flash)存储器和片内外围模块(如I/O、AD、Timer、SCI、SPI、IIC等),如图 2-1 所示。
图 2-1 系统框图中高亮显示的片内存储器及其他模块
CPU读/写存储器需要通过存储器的地址来进行读/写,CPU和片内外围模块通信需要通过外围模块的地址(寄存器地址)来进行访问。CPU和存储器、外围模块通信本质上都是CPU和不同地址通信,不同地址可以代表不同对象。RAM存储器具有地址,Flash存储器也具有地址,不同存储器和CPU连接就有两种编址方式:独立编址或统一编址。同样,存储器具有地址,各个外围模块(称为模块寄存器)也有地址,存储器、寄存器和CPU连接也有两种编址方式:独立编址或统一编址。
存储器独立编址方式如图 2-2 所示,RAM和Flash的地址各自独立编址,这种编址方式也称为哈佛结构,如MCS-51 系列MCU就采用这种结构。独立编址的好处是可以生成双倍的存储器空间,独立编址的存储器地址出现重迭,但通过不同的控制线并配合不同的指令就可以区分不同存储器。例如在MCS-51 指令系统中,用MOVC指令访问Flash存储器,用MOV或MOVX指令访向RAM存储器。
图 2-2 存储器独立编址方式
存储器统一编址方式如图 2-3 所示,RAM和Flash的统一编址在一个地址范围内,分段使用,这种编址方式也称为普林斯顿结构,如Freescale的 08、S08、S12 等系列MCU,Microchip的PIC430 系列MCU就采用这种结构。统一编址所获得的存储器空间比分离编址减半,但通过同一指令再配合不同地址参数就可以区分不同存储器。
在MCU系统中,CPU将片内外围模块如I/O、AD、Timer、SCI、SPI、IIC等都视为内部寄存器处理,这些模块的寄存器统称为模块控制和状态寄存器。与存储器结构相类似,控制和状态寄存器的编址也有相应的两种方案。分离编址方案为寄存器再独立开辟一个空间,用专门的I/O访问控制线与指令实现对其访问。例如,PC中的外围模块就使用独立编址,在汇编指令系统中就使用IN指令与OUT指令对外围模块进行访问。MCS-51 系列MCU的模块控制和状态寄存器独立于RAM存储器和Flash存储器空间,仍属于分离编址。Freescale的 08、S08、S12 系列MCU则将模块控制和状态寄存器与存储器统一编址在一个空间,仅仅分配不同的单元地址而已,因而属于普林斯顿型的统一编址方案。
Freescale的 08、S08、S12 等系列MCU的模块寄存器、RAM、Flash采用统一编址方式,即模块寄存器、RAM、Flash占用同一$0000~$FFFF存储空间的不同范围,分段使用,如图 2-4 所示。它同MCS-51 系列MCU采用的独立编址有极大的差别。可见学习Freescale的MCU能够了解另一种体系结构的MCU,为今后应用Freescale的MCU进行系统设计打下良好基础,对于以后学习与应用其他一些公司的MCU也是极有帮助的。
图 2-3 存储器统一编址方式
图 2-4 Freescale MCU统一编址模型