在51扩展系统中,程序存储器和数据存储器共用16位地址线和8位数据线,为什么两个存储空间不会发生冲突?

作者:cambrain     发布时间:2025-01-22     点击数:0    

在51扩展系统中,尽管程序存储器和数据存储器共用16位地址线和8位数据线,但它们不会发生冲突,原因主要在于以下几方面:

独立的控制信号

程序存储器: 依靠程序存储允许信号(PSEN)进行读操作控制。当CPU要从程序存储器取指令或常数时,PSEN信号有效,使得程序存储器能将相应地址处的数据通过8位数据线传送给CPU 。在整个取指令周期内,PSEN信号会根据指令执行的节奏适时产生,严格控制程序存储器的数据读取。

数据存储器:数据存储器的读写操作由读写控制信号(RD和WR)分别控制。当执行读外部数据存储器指令(如MOVX A, @DPTR )时,RD信号有效,从数据存储器指定地址读取数据到累加器A;当执行写外部数据存储器指令(如MOVX @DPTR, A)时,WR信号有效,将累加器A中的数据写入数据存储器指定地址。这些控制信号在逻辑上与程序存储器的PSEN信号相互独立,互不干扰。

不同的指令操作

程序存储器访问指令:CPU访问程序存储器主要通过取指令操作,这些指令是单片机指令系统中专门用于从程序存储器读取指令代码的,例如各种指令的取指周期,由PC(程序计数器)提供程序存储器地址,通过PSEN信号控制读取。

数据存储器访问指令:对数据存储器的访问使用专门的MOVX指令。这类指令明确地指示CPU对数据存储器进行读写操作,地址通常由数据指针DPTR或堆栈指针SP提供,通过RD或WR信号控制数据的传输。两种不同类型的指令在功能和执行机制上清晰区分,不会导致对两种存储器的混淆访问。

分离的存储空间逻辑

地址空间映射:程序存储器和数据存储器在逻辑上被映射到不同的地址空间。尽管它们都使用16位地址线,但从单片机的体系结构角度,这两个空间是相互独立的。程序存储器地址范围一般为0000H - FFFFH,用于存储程序代码和常数;数据存储器地址范围同样为0000H - FFFFH,用于存储程序运行过程中的变量、中间结果等数据。这种地址空间的逻辑划分,使得CPU能够根据指令和控制信号,准确无误地访问对应的存储器空间。