MCS51单片机反向解剖以及正向设计的研究 第9页
MCS一51单片机具有片上振荡器,可以用作CPU的时钟源。使用片上振荡
器时,在芯片的引脚XTALI和XTALZ之间连接一个晶体或者陶瓷谐振器,并
且XTALI和XTALZ到地之间各连接一个小电容(例如:选用石英晶振、30PF
电容)。如果使用外部时钟驱动,应该将时钟信号加在XTALI引脚上。图3一12、
3一13分别给出了McS一51单片机CMOS型芯片的片上振荡器电路和由时钟信
号产生2组内部时钟信号的电路。
XTA口
图3一12片上振荡器电路
分析图3一12可以得到:
①对于CMOS电路来说,其抗静电干扰能力、抗高压能力较差,甚至人体
所带静电都可能击穿管子、损坏芯片。而XTALI、XTALZ均为CMOS型芯片
的外引脚,因此在XTALI、XTALZ端均加上保护电路如虚线框内电路1、电路
2所示,相当于分别连接了2个二极管。如果芯片外部突然加上一个正向较高电
压时,正向高压可以通过二极管Dl泄放;如果芯片外部突然加上一个反向较高
电压时,反向高压将通过二极管DZ泄放,这样保证了芯片的抗静电、抗高压能
力。实际电路中Pl、Nl管子较大。
②MOS管PZ、NZ的栅极分别接到低电平和高电平上,使PZ、NZ处于恒
导通状态,相当于Pl、Nl的栅极分别通过一个电阻后接到高电平和低电平上,
而不是直接将Pl、Nl的栅极接到芯片电源的高、低电平上。电路的这种设计方
法可以保护管子Pl、NI在误操作芯片电源时不被击穿。
③当L端信号为低时,K端信号与其相反,为高。此时P3、N3、NS管导
通,P3、NS构成了一个传输门而P4、N4、N3构成了一个倒相器,如虚线框
电路3所示。传输门相当于一个较大电阻(IM左右),与倒相器一起做为外部晶
第三章MCS一51单片机的反向解剖
振、电容的反馈回路,产生芯片内所需要的时钟信号。当L端信号为高时,K为
低,此时N3、P3、NS截止,芯片处于掉电方式下,振荡器被冻结起来,时钟
信号发生器不再工作。
图3一13产生2组内部时钟信号电路
分析图3一13可以得到:
①CLK端为时钟信号,与XTALI端时钟信号频率相同。当E=1时,芯片
处在正常工作状态下,分析电路可知:Cl端信号与CLK端信号相反,CZ端信
号与CLK端信号相同;C3与CLK相反,C4与CLK相同。从而得到2组时
钟Cl=瓦又、CZ=eLK和C3=己厄又、C4=CLK。当E=0时,Cl恒为低而CZ
恒为高,此时不提供Cl、CZ时钟信号,芯片不正常工作,处于低功耗状态。
②每组时钟信号产生电路中,同组信号CI、CZ或C3、C4互相影响,并
分别与原来的时钟信号己〔又、CLK相或,然后输出C么Cl或C4、C3。由反
馈回的时钟信号共同作用的设计方法可以保证同组时钟完全同步。
第三章MCS一51单片机的反向解剖
③芯片内部电路中,许多功能单元(例如DFF)需要在2组时钟的同步下执行
功能,另外,硬件电路中构成时钟网络来控制指令执行可以减少管子数目、减小
芯片面积,因此需要由CLK信号产生2组时钟信号电路。
3.3.2算术运算单元ALU
算术运算单元ALU是CPU核心中十分重要的部件,主要用于对数据和逻
辑进行操作。MCS一51系列单片机中由累加器ACC、B寄存器以及两个临时存
储器TMPI、TMPZ来实现ALU的功能。ALU可以进行加、减、乘、除算术运
算,分别以bs*89=60(高位)dd(低位)H和as一04=OZH(商)29H(余数
为例说明ALU如何进行乘法以及除法运算。
算术运算单元ALU的乘法运算过程如表3一1所示,其中TMPZ、B分别表
示8位暂存器TMPZ以及B寄存器里乘法运算过程中值的变化。ALU做乘法运
算bSH*89H时,bs、89分别为乘数、被乘数。乘法运算前要先进行取数操作,
取数后将乘数bs放在累加器ACC中,另一个乘数89放在B寄存器中。乘法
运算的整个过程之中,累加器保持bs值不变化。B寄存器中的数先送到临时存
储器TMPZ内,同时将累加器ACC中数也要送到B寄存器。然后,TMPZ与B
寄存器里的值共同右移,如果移动后B寄存器最后一位是“1”,则TMPZ中的
值加上最初放入TMPZ中的乘数值(部分积),而B寄存器中的值保持不变。例
如表3一1中从“0010001001101101”到“1010101101101101”。TMPZ
与B寄存器的内容需要共同右移8次,才得到最后的运算结果。运算完成后将
B寄存器中的内容送到累加器,并且将TMPZ的内容送到B寄存器中。最终乘
法运算结果的低8位就放入累加器,而高8位放入B寄存器。
表3一1乘法运算过程
TTTMPZ(Bin)))B(Bin)……TMPZ(Hex)))B(Hex)))
111000100111一0110101!!!8999B555
00010001000011011010004444daaa
000010001000011011011122226ddd
11101010111101101101111Abbb6ddd
00010101011110110110005555B666
00001010100011011011112aaadb
第三章MCS一51单片机的反向解剖
1110110011111101101111b333dbbb
00010110011111101101115999eddd
11111000100011101101}}}e222eddd
lllllllllll
000111000111011101100071117666
00001110000010111011113888bbbb
1111000001111011101111C111bbbb
00011000000011011101116OOOdddd
事实上,本芯片中乘法运算的算法原理与普通的竖式乘法运算所采用的左移
相加是完全一致的。我们做竖式乘法时,从第二个乘数的最低位开始相乘,以其
为参照是左移相加。这里的乘法运算相当于从第二个乘数的最高位开始相乘,以
其为参照就是右移相加。
ALU的除法运算过程如表3一2所示,其中TMPZ、B仍然分别表示8位暂
存器TMPZ以及B寄存器内除法运算过程中值的变化。ALU做除法运算a5H
于O4H,as为被除数,04为除数。运算前要进行取数操作,取数后先将被除数
as放在累加器ACC中,除数04放在B寄存器中。整个除法运算过程中,累加
器的值保持as不变化。除法运算开始,将TMPZ置为“00000000”,并将累
加器中的值送到B寄存器。
TMPZ与B寄存器的内容需要共同右移8次,才得到最后的运算结果。运
算完成后将B寄存器中的内容送到累加器,并且将TMPZ的内容送到B寄存器
中。最终乘法运算结果的低8位就放入累加器,而高8位放入B寄存器。然后,
TMPZ与B寄存器中的数共同左移,如果移动到TMPZ中的值大于除数,也就
是大于“00000100,,,则TMPZ中的值减去除数(“00000100,,),而B寄存
器中的值保持不变。例如表3一2中从“0000010100一01000”变化到
“0000000100101000,,。每次完成如上调整,下一次TMPZ与B寄存器中
的值共同左移后将B寄存器中的最后一位置为“1”。整个运算过程TMPZ与B
寄存器的内容需要共同左移9次。运算完成之后,将TMPZ中的值送入累加器。
最终除法的运算结果商就存放在累加器里,而余数放入B寄存器。
表3一2除法运算过程
1TMPZ(Bin)IB(Bin)1TMPZ(Hex)IB
00000000}10100101
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>
MCS51单片机反向解剖以及正向设计的研究 第9页下载如图片无法显示或论文不完整,请联系qq752018766