计算机系统中一般都有两条总线数据总线和地址总线,其实这两条总线都和内存有关,地址总线上的信息标识需要读取内存的那个部分,数据总线则是对应的数据。
cpu控制数据到底是从存储(内存)中读还是写。其实cpu真正使用的数据是cpu内部寄存器。
指令上一个读指令会包含 至少1个地址,此外另外一个可以是地址也可以是寄存器,它们一个是源,一个是目标,数据链路就相当于它们间有一条高速公路,数据就复制过去了(读取到新的目标中)。
CPU读写存储器
1初始化存储器
2对存储器寻址
3获取或写入数据
4关闭存储器占用
1)存储器的读操作。
对存储单元的读操作,不会破坏其原来的内容。相当于复制。
2)存储器的写操作
内部RAM可以直接读写,内部flash需要加锁才能进行读写
外部RAM需要对RAM进行初始化配置,对IO进行初始化配置,然后才能进行操作。外部flash也是要先配置IO,初始化等。外部flash也是同时只能对一块区域进行操作,否则会出错
CPU属于高速运算状态所以存储器的数据读取速度跟不上CPU的处理速度。存储器会把数据寄放在存储器提前调用,这样不会浪费CPU的资源。所以程序运行时会把数据线放到寄存器,寄存器里面的数据可以随时高速的调用。这样能更好地支持CPU的运算。所以内存这个寄存器相当于一个临时仓库的形式。方便CPU随时调用。
1)CPU可访问的最大存储空间看地址位数地址总线18条故2^18 2)CPU可提供数据总线8条存储空间为16KB故要拼凑一个16K*8--->(16K*8)/(4K×4 )=8 3)要求用138译码器实现地址译码应该就是3-8译码器那么有3根地址线做译码输入。 全部用4K×4位的RAM芯片构成,那么4K=2^12需要12根地址线A11-A0,之前3根就是A14-A12---这里的推算的没考虑要求其地址范围为08000H——0BFFFH的。 这里是从低位考虑的。 考虑地址空间必须先把地址从16进制转成2进制观察他们“1”最高位的位置然后设计。
1)存储器的读操作。例如,若要将存储器40H中的内容50H读出,其过程如下: