单片机的数据空间和程序空间

单片机的数据空间和程序空间,第1张

AT89C52的程序空间是8KB是确认无疑的,但指的是存放纯二进制的机器码,就是二进制数。而KeilC编译的HEX代码文件并不是纯二进制数,是以ASCII码格式存放的文件,而且其中还有一些编译信息,如地址、校验和等。所以,不能看HEX文件的大小来确定下载到单片机内的真正的程序空间大小,也就是说HEX文件的大小并不是真正下载的单片机的程序大小。而下载到单片机的代码空间大小要看Keilc编译时给出的代码数的提示,才是真正要下载到单片机内的代码空间。举个例子,下图是一个程序编译后的提示,真正的二进制代码是337个字节,而HEX文件却是1KB。这里还有一个误区,你看到的HEX文件的大小是 *** 作系统给出的大小吧,它是取整KB的,就是说HEX文件不足1KB时,也显示是1KB。再明确一点说吧,假如编译后的代码是750418,用纯二进制数(即BIN格式,有些汇编程序的编译器输出的就是BIN格式)的代码保存就是3个字节,而用HEX格式保存就是6个字节,因为要用6个ASCII码来表示。这来算来,HEX文件大小是BIN文件的二倍,加上一些地址信息,是大于二倍的。好,回到你的问题来,你的HEX文件是19KB,你看一下编译后的代码大小提示,肯定是不会超过8KB的,否则编译时肯定会报错的。

1、DSP芯片内部采用改进的哈佛结构,允许同时取指令和取数据,而且还允许在程序空间和数据空间之间相互传送数据。

所谓哈佛结构,是将程序和数据的存贮空间分开,各有各的地址总线和数据总线。这样同一条指令可以同时对不同的存贮空间进行读 *** 作或写 *** 作,从而提高了处理速度。

和哈佛结构相配合的就是流水线 *** 作。如果一条指令仅仅对一个数据空间 *** 作,哈佛结构就失去其存在的意义。而DSP指令又不可避免地需要一些单 *** 作数指令。

所谓流水线 *** 作,就是将各条指令执行过程的几个阶段(取指、译码、取 *** 作数、执行)重迭进行,执行完第一条指令的第一步后,紧接执行该指令的第二步,同时执行下条指令的第一步,使得指令执行加快,使大多数指令都可以在单个指令周期内完成。

2、DSP芯片内部采用多总线结构,C54X内部有8条16位总线,即1条程序总线,3条数据总线,和4条地址总线。程序总线PB传送取自程序存贮器的指令代码和立即 *** 作数或系数表中的数据数据总线CB和DB传送读自数据存贮器的 *** 作数数据总线EB传送写到存贮器的数据地址总线传送执行指令所需的地址。

3、DSP执行一条指令,需要经过取指、译码、取 *** 作数和执行等几个阶段。由于采用流水线结构,使指令执行的这几个阶段重迭进行。C54X有一个6级深度的流水线,在任何一个机器周期内,可以有1~6条不同的指令在同时工作,每条指令工作在不同级的流水线上。

4、C54X可寻址64K字程序空间,64K字数据空间,64K字I/O空间,总共可寻址192K字空间,而C548和C549的程序空间可扩展到8M(即8192K)字。

5、C54X中,内部存贮器的形式有DARAM、SARAM和ROM三种,RAM(包括DARAM和SARAM)总是安排到数据存贮空间,也可以构成程序存贮空间ROM一般构成程序存贮空间,也可部分地安排到数据存贮空间。所谓双寻址RAM(DARAM)就是每个机器周期内可以进行两次存取 *** 作的RAM存贮器,而单寻址RAM(SARAM)就是每个机器期间内只能进行一次存取 *** 作的RAM存贮器。

6、在处理器工作方式状态寄存器PMST中有3个状态位MP/ 、OVLY和DROM,用来安排C54X片内存贮器作为程序或数据空间。

若MP/ =0,则片内ROM安排到程序空间。

若MP/ =1,则片内ROM不安排到程序空间。

若OVLY=0,则片内RAM只安排到数据存贮空间。

若OVLY=1,则片内RAM安排到程序和数据空间。

若DROM=0,则片内ROM不安排到数据空间。

若DROM=1,则片内ROM安排到数据空间。

7、为了增强处理器的性能,C54X对片内ROM进行分块,这样可以在对片内ROM的某一块取指的同时,又可对片内ROM别的块读数据。为了增强处理器的性能,C54X对片内RAM也进行分块,分块以后,可以在同一周期内从同一块DARAM中取出两个 *** 作数并将数据写入另一块DARAM中。

8、C548和C549采用分页扩展方法,把程序空间分成128页,每页64K字,使其程序空间可扩展到8M字。因此,它们有23根地址线,增加了一个额外的存贮器映象寄存器——程序计数器扩展寄存器(XPC)。当片内RAM安排到程序空间时,每页程序存贮器分成两部分:一部分是公共的32K字另一部分是各自独立的32K字当片内ROM被寻址(MP/MC=0),它只能在0页,不能映象到程序存贮器的其它页。

9、C54X有两类特殊功能寄存器,它们都映象到数据存贮器空间的0页,第一类是CPU寄存器,它们映象到数据空间的0000~001FH地址范围内,主要用于程序的运算处理和寻址方式的选择及设定,第二类是外围电路寄存器,它们映象到数据空间的0020H~005FH区域内,主要用于控制片内外设,包括串行通信控制寄存器组、定时器控制寄存器组、机器周期设定寄存器组等。

10、指数编码器可以在单个周期内执行EXP指令,求得累加器中数的指数值,并以2的补码的形式存放到T寄存器中。累加器的指数值=冗余符号位-8,也就是为消去多余符号位而将累加器中的数值左移的位数,当累加器数值超过32位时指数时个负值。

11、对于C54X来说,不同型号器件的CPU是相同的,它由以下基本部件组成:40位的ALU、2个40位累加器、桶形移位寄存器(移位数为-16~31)、乘法器/加法器单元、比较选择和存储单元CSSU、指数编码器、CPU状态和控制寄存器。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11186978.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存