毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

MCS51单片机反向解剖以及正向设计的研究 第15页

更新时间:2009-5-22:  来源:毕业论文
MCS51单片机反向解剖以及正向设计的研究 第15页
应值就输入该位或者从该位输出。如果第二功能控制线不为高,则将该位的值
为高阻‘Z’,由P3口锁存器来决定其取值情况。
IFintoetrl=’1’THEN
p3(2)<=into_in;
ELSE
p3(2)<=‘Z’;
ENDIF;
4.2.2译码电路模块的设计
指令译码与硬布线控制是MCS一51单片机芯片设计中是非常重要的部分,
也是微控制单元MCU设计中最重要的部分之一。指令在译码电路模块中完成译
码后,驱动控制逻辑,控制数据流在芯片内部各个功能模块中合理的流动,完
相应的指令功能。
单片机指令数量较少,指令集也相对比较简单,而且单片机芯片要求结构
练,因此译码电路模块多采用硬布线的控制方法,而不同于中央处理单元CPU、
协处理器NPX芯片内部所使用的微程序控制。实际中,反向解剖芯片所得到
译码控制电路是由大量NMOS管子构成的。由于正向设计中采用硬布线控制
法的前提是必须完全理解芯片设计者的思想以及实现逻辑控制的方法,所以在开
始正向设计译码电路模块时只是根据指令格式、二进制代码直接对各条指令进行
了译码,并且以CASE语句形式列出。当反向解剖芯片提取原理图并完成功能
仿真后,就可以解读硬布线电路的思想,并且在译码模块的正向设计中利用其算
法。通过不断完善硬布线控制逻辑,同时改进VHDL源代码的书写风格!31],
可以大大减少正向设计芯片的硬件代价,提高运行速度。
设计译码电路模块时,使用了CASE语句。CASE语句从许多不同语句
序列中选择其中满足条件的一个执行,适用于描述总线或编码、译码的行为。使
用CASE语句来描述译码行为,可读性比较强,很容易找出条件式和动作的对
应关系。
CASE语句的书写格式:
CASE表达式IS
WHEN条件表达式=>顺序处理语句;
ENDCASE;
第四章MCS一51单片机的正向设计
根据表2一7指令集的“整体一矩阵”式检索,书写源代码时将各种情况分别
一一列出。由于CASE语句要求表达式中的所有取值都必须列出来,所以将指
令表达式的保留值ASH(IOIOO101B)处理为空操作。
Pl:PROCESS(int_elk)
BEGIN
CASEirinstr15
WHEN’·00000000‘’!‘’10100101’‘=>一NOP,reserved
tl_emd<=zeros;
dat之tl<””000”;
tZ_emd<=zeros;
data一2<=”000”;
alu_emd<=Pass_tmPI;
dest--emd<=nothing;
书写源代码时,同一种类型或者是完成同一功能的指令放在一起,便于总结
规律、改进程序。译码后输出译码结果,包含的信息有指令的寻址方式、控制算
术运算单元ALU进行运算的操作代码(alu_cmd)、控制TMPI、TMPZ两个暂
存器的操作代码(tl_cmd、t2_cmd)、控制程序状态字PSW寄存器各位信息的
代码以及控制其它特殊功能寄存器的代码等。整个译码电路在同一个process
中,所有值并行处理。执行到哪一条指令,就对其进行译码,并且利用译码结果
去控制其它模块,执行该条指令的功能。
译码电路模块是将正向设计的MCS一51单片机芯片的软核商业化、产业化
时要特别注意优化的模块之一。当反向解剖完全实现后,要根据反向解剖分析得
到的时序和对反向解剖逻辑图微控制码点的理解,总结出同一类型或者实现同一
功能指令的共性。有经验的IC设计者可以将时序进行编码,按照不同节拍下指
令的动作类型来优化源代码程序【32)。采用这种方法优化的源程序经过综合后所
需要的门数只是优化前的1/3左右。
结合反向解剖硬件的经验,译码电路模块改进时可以多加入用“或逻辑”表
达数据通道的控制条件。提取指令代码中的共性来区别于其它指令,也可以简化
源代码综合后所需要的控制逻辑。指令译码中大部分的电路应该是组合逻辑电
路,不需要全部用时钟来控制,因此在进行语言描述时应该尽量避免定义不必要
的寄存器。如果一个信号的负载太大,可以考虑增加一个寄存器,以便于增加它
57
第四章MCS一51单片机的正向设计
的负载能力。
4.2.3包集合模块的设计
包集合类似于C语言中的indude语句,将信号定义、常数定义、数据类
型、元件语句、函数定义、过程定义等放在一起,是一个可以编译的设计单元。
使用包集合时用USE语句说明,常用的VHDL包集合有:
①IEEE.STD_LOGIC_1164.ALL;
②STD_LOGIC业RITH;
③STD_LOGIC_UNSIGNED;
前一个是IEEE提供的VHDL标准包集合,后两个则是由Synopsys公司提供
的常用包集合。
MCS一51单片机芯片设计中另外还包括两个包集合的设计:timing--pack
和cpucore一paekotimin象paek包主要用来定义单片机芯片工作时ePu的时
序状态。由于每个机器周期由6个状态组成,而每个状态又分成两个时相P1、
PZ,因此采用4位二进制数表示12个不同状态,即0100、0101、0110、0111、
1000、1001、1010、1011、1100、1101、1110、1111分别对应表示SIPI、
5IP2、SZPI、SZPZ、S3PI、S3PZ、S4PI、S4PZ、SSPI、SSPZ、S6PI、
S6PZ。采用包集合的方式可以方便在各个子功能模块中调用其定义,从而控制
不同指令在不同时相期间完成指令的取指、算术运算、数据的传送等操作。
CpuCore--pack包主要用来定义译码模块译码后输出的控制其它功能模块的信
号,以常数的形式给出主要是为了程序的可读性。在cpucore--pack包中,译
码输出的控制代码也是4位二进制常数的形式。在整个芯片其它模块设计中,都
可以调用包集合中的定义。
包集合的描述形式:
PACKAGEtiming--Paek15
CONSTANT5IPI:std_logie少eetor(3DOWNTOO):=”0100”:
CONSTANT5lp2:std_logie_veetor(3DOWNTOO):==”0101”:
CONSTANTsZPI:std_logie_veetor(3DOWNTOO):=”0110”;
包集合调用的描述形式:
LIBRARYIEEE;
USEieee.std一ogie_1164.all:
第四章MCS一51单片机的正向设计
USEieee.numerie_std.all;
USEwork.ePueoreesPaek.all:
USEwork.timing‘Paek.all;
4.2.4程序计数器PC模块的设计
程序计数器PC存放程序存贮器的地址,是一个16位的专用寄存器,寻址
范围。一65535(64K)。当一条指令被执行时,程序计数器中存放下一条指令的
地址。程序存储器的操作完全由程序计数器PC来控制,如果PC值指向程序指
令操作码单元,则程序执行该指令操作;如果PC值指向常数、表格单元,则实
现取数、查表操作。
设计两个程序计数器PC模块,其中一个模块专门用于操作程序转移类指令
的控制,例如:相对短转移SJMPre卜长调用LCALLaddr16以及累加器为
零转移JZ、累加器为非零转移JNZ等;另一个模块用于算术逻辑运算、数据传
送等指令。设计PC模块时,注意到指令地址的变化可能发生在S3PI状态。
4.2.5算术运算单元ALU模块的设计
算术运算单元ALU有两个数据源,分别是数据暂存器TMPI和TMPZ。数
据进入ALu之后,就由ALU的操作控制信号控制ALU执行具体的算术逻辑操
作,操作结果送入内部数据总线。TMPI、TMPZ的数据来自内部数据总线、累
加器或者B寄存器。例如进行乘法运算时,其中一个乘数就通过内部数据总线
送入了B寄存器,然后送入TMPZ。
八八CCCC
斧斧蔽而丫丫丫降石新新
叼叼叼
da讯‘gb
da饱‘gb
图4一3ALU结构示意图
对于输出来说,ALU除了输出算术运算结果,还需要输出运算结果的状态
位到状态字寄存器PSW中。执行结果将使进位标志CY、辅助进位标志AC以
及溢出标志OV置位或复位等。

 << 上一页  [11] [12] [13] [14] [15] [16] [17] [18] [19] 下一页

MCS51单片机反向解剖以及正向设计的研究 第15页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。