MCS51单片机反向解剖以及正向设计的研究摘要StudyonMCS一5IMieroController’sReverseAnatomizationandToP一DownDesignAbstraetTheworldwideeleetroniesindustry15raPidlymovingforwardovethePastdeeades.Assilieonteehnologyhaserossedthedeesubmieronthreshold,eeandesigntensofmillionsoftransistorsonsingleehiP.That15tosaysemieonduetorhasenteredintotherealm“SystemonaChip(SoC)”.TheresearehontheteehnoloofIpeordesign15eoneernedbybothresearehsoeietyandindustryworlBeeauseofthewideuseofMCS一51MieroControllerandtheimPortanmeaningofMCUeoredesign,westudyonMCS一51reverseanatomiztionandToP一DownDesignThegoalofthisartiele15todesignaMCS一51MieroControllerehiTheMainworkandaehievementsareasfollows:①MCS一5一ieroController15studied.Theresultoftheresearehtiminganalysis、featurepiekingup,②MCS一1MieroControllerehiPhasbeenanatomized.Basedontehip’5photo,wegetthewholesehematiesandfinishedthelayodesign.Duringthelayoutdesign,usingL一Edittools,DRCandERhavebeendone.ThedesignoftheehiP15totallyaeeomPlishedbydetasimulation.③ThedesignofMCS一51MieroController15followedtheToP一Dowdesignway,ineludingsystemPartition、eoding(VHDL)、RTLsimulationsynthesis、gatelevelsimulationeet,DifferentEDAtoolsareuseddifferentPhase,suehasCadenee、Modelsim、SynPlify6,0、MaxPlus10.0and50on.TheteehnologyofoPtimizationdesignbasedonMCSMieroContr0llerreserVeanatomization15alsodiseussed.Inaword,theehiPwillbesoldoPenlyinthemarketsoon.ThereushardwareeoreandsoftwareeorearePrimarilysueeeeded.:MCS一51MieroController、EDA、HDL、Ip在过去的几十年中,电子工业飞速发展。集成电路制造工艺已经通过了深亚微米极限,使得IC设计者可以在单个芯片上集成上千万个晶体管,集成电路进入了片上系统(SOC)王国。IP核的设计也就越来越受到理论界和工业界的关注,而MCS一51单片机芯片应用非常广泛,同时掌握MCU设计技术也非常重要。因此,本论文对MCS一51单片机芯片进行了反向解剖和正向设计的研究。本论文的目的是设计MCS一51单片机芯片,主要工作和取得的成果如下:①对MCS一51单片机进行分析研究,包括MCS一51单片机工作原理、指令系统、时序分析、特征提取等。并在此基础上完成反向解剖和正向设计MCS一51芯片。②对MCS一51单片机进行反向解剖,根据解剖芯片的照片提取电路图,并利用L一Edit完成版图设计。版图设计过程中要进行设计规则检查、电气规则检查等。完成逻辑图划分、整理功能块以及版图与逻辑图一致性验证后,进行硬核仿真,以便于确保芯片功能完全正确。③对MCS一51单片机进行正向设计,包括系统划分、编写代码、RTL级仿真与综合、门级仿真等。在设计的不同阶段分别使用了Cadence、Moddsim、SynPlity6.0、MaxptusH10.0等EDA工具。同时基于MCS一51单片机的反向解剖讨论了优化正向设计,减少综合后门数的设计方法。总之,通过反向解剖和正向设计,我们得到一个即将投入市场的MCS一51单片机芯片,初步实现一个可以重复使用的硬核和软核模块。关夔何:Mcs一51单片机,电子设计自动化,硬件描述语言、知识产权摘要目录录第一章绪论1引言······························……12集成电路的发展趋势与现状3集成电路的设计方法········……34我有J的工作···········....……5第二章MCS一51单片机的原理1MCS一51单片机芯片的概述2MCS一51单片机的内部结构与工作原理3MCS一51单片机的时序功能分析4MCS一51单片机的指令系统2.4.1MCS一51单片机的指令集························……122.4.2MCS一51单片机的寻址方式175MCS一51单片机指令集的分类检索与特征提取······················……18第三章MCS一51单片机的反向解剖1反向解剖概述·············.................……212MCS一51的基本器件模型···········……223.2.1CMOS集成电路的特点········……223.2.2门电路················……223.2.3锁存器、D触发器····…253.2.4数据选择器·······…‘.…263.2.5RAM单元··········...……273.2.6异或电路············……283MCS一51子电路的逻辑功能分析·····················……293.3.1时钟电路·····,··················……,.29一323.3.3定时器/计数器····································……344MCS一51单片机的总体电路································……36目录363.5.1版图的设计方法·································……363.5.2版图的设计规则···························..,··……,373.5.3MCS一51的总体版图·······,········~········……423.5.4逻辑图与版图的一致性验证·················一436MCS一51硬核的仿真44第四章MCS一51单片机的正向设计1正向设计概述·····。······················.·......·......……522MCS一51单片机各功能模块的正向设计····……544.2.1端口模块的设计·····························……544.2.2译码电路模块的设计················……564.2.3包集合模块的设计··························,··……584.2.4程序计数器PC模块的设计··········……594.2.5算术运算单元ALU模块的设计··············……594.2.6时钟模块的设计····4······,·,···················……603MCS一51单片机总体框图与总体功能的正向设计····,··············……614MCS一51单片机软核的仿真···························……624.1RTL级的仿真流程···········……624.2RTL级的仿真测试程序········,··········……634.3RTL级的仿真结果············,···……644.4RTL级程序综合、后仿真··,·,···············一66第五章总结与展望···········……70致谢一71参考文献····································……72附录·························,·…75附录AMCS一51单片机芯片总体版图·,···············……75附录B累加器ACC的部分源代码··················……76附录C仿真测试程序之一·············.......……,.·……78附录D硬核仿真的部分程序源代码··················……407
MCS51单片机反向解剖以及正向设计的研究第一章绪论1.1引言从1948年晶体管的发明、1958年采用硅平面工艺集成电路的诞生到1971年微处理器的出现,经过了半个多世纪的发展,微电子产业已经成为战略性的基础产业,微电子科学技术也已经成为现代科学技术的关键基础。二战之后,美国正是抓住了以微电子技术为基础的电子信息技术,经济才得到迅猛发展。日本和亚洲一些国家和地区也都是抓住了这一点而使经济迅速振兴。当今,微电子工业的产值占世界经济总产值的4%,成为了全世界第一大产业。预测表明:在今后的25年里,微电子产业将占到世界总产值的8%【11。因此,微电子科学技术将是21世纪上半叶科学技术竞争的焦点,微电子产业规模和技术水平成为了衡量一个国家综合实力的主要标志。四十年前,INTEL创始人之一GordonMoore曾预言:集成电路芯片的集成度每18个月增加一倍,而对应于集成电路制作工艺的特征线宽则每三年左右缩小30%!2},这个规律被学术界和工业界称为摩尔定律(MOOre’5Law)。直到现在,lC技术仍然按照这个规律迅速发展,并且不断细化,派生出三个相互基本独立的部分:微电子工艺、微电子设计和微电子检测。微电子工艺继承了传统微电子学的主体领域一光刻、腐蚀等加工工艺,奔腾一111的0.25/。.18“m线宽技术代表了1999年的最高加工水平;微电子设计是产生于传统电子电路设计与微电子学之间的一门边缘学科,目前的主要领域包括硬件描述语言HDL{31、仿真和综合工具141!5]、FPGA仿真工具!61、ASIC设计和可复用模块库等,INTEL的1000万门设计环境代表了1999年的最大设计能力;微电子检测则是现代检测技术在硅晶片加工过程中的应用,KLA仪器公司的AIT一11(每小时在线检测40片0.18砰m线宽图案的300mm晶圆)和Surasean一SPI(每小时在线检测100片无图案30Omm晶圆)代表了1999年微电子检测技术的最高水平。八十年代中期以来,微电子学这三个基本领域以很高的速度细分下去,出现了第三层、第四层甚至第五层的子领域。进入九十年代后,集成电路电路更是以高速度向前发展,以ASIC为例又划分为数字逻辑电路设计、模拟电路设计、混第一章绪论合电路设计和后端设计【7]等等。在不断地细分以及各子领域的相互交叉中,微电子学已经成为一个庞大的多学科交叉体,微电子技术也己经渗透到科学技术、工业生产、国防安全等各个领域。集成电路的迅速发展改变了电子技术的面貌,对一系列科学技术以及人们的生活都发生了强烈的影响。从小规模551、中规模Msl、大规模LSI到超大规模vLsl、甚大规模集成电路uLsl,从单个芯片上集成几个、几十个晶体管到儿百万个、几千万个晶体管,从1948年巴丁发明第一个晶体管到目前的深亚微米理论、片上系统SOC。总之,在这个新世纪中,科学技术的巨大进步必将使集成电路产业得到更大的发展。1.2集成电路的发展趋势与现状1.集成电路的发展趋势集成电路技术发展的目标是不断提高集成电路系统的性能以及性能/价格比,这就成为增加芯片的集成度、不断缩小半导体器件特征尺寸的动力源泉。现在,以0.25pmCMOS工艺为主流的微电子技术已经进入大规模生产中。预计到2010年,特征尺寸为0.07pm的64GDRAM将投入批量生产;到2030年集成电路工业生产可能稳定在。.035砰m工艺【sl。工艺技术的发展使得IC设计者可以在单个芯片上集成系统,SOC成为集成电路产业未来发展的总趋势。在芯片设计中大量复用知识产权模块IP,可以使IC设计者把精力集中在更高层次上的设计,加快芯片的开发速度。2.我国集成电路产业的现状集成电路产业具有规模大、增长快、投资多、关联强、回报高等显著特点,是当今世界发展最为迅速和竞争最为激烈的产业。我国在这一领域与发达国家的差距很大,从技术上来看,国际上例如1NTEL公司已进入了奔腾IV时代,而我国最先进的水平仅停留在实验室内研制奔腾11阶段;从市场份额来看,国产芯片年销售额为83亿元人民币!9],仅占全球份额的百分之一左右。而且我国国内集成电路需求的自给率也较低,只占整个产业的19%左右。大量集成电路依赖进口造成了我国信息产业的档次难以大幅度提高,并且对我国的信息安全也构成了一定的威胁。更重要的是如果国防电子产品过分依赖于第一章绪论国外,对国防安全将会造成负面影响。另外,即使是国内目前较高水平的芯片制造公司,其技术、市场和管理的主导权也是由外国专家来控制的。因此必须要尽快提高国内集成电路的设计开发能力和生产加工技术,将我国自己的集成电路作为基础性、战略性产业大力进行发展。3.发展我国集成电路产业的举措基于我国集成电路的现状,国家实施了一系列、全局性举措【10]:①科技部在“九五”国家重点科技公关项目、863计划中成立专项,加强对微电子设计技术的研究;②在上海、北京、西安等地成立“集成电路设计产业化基地”;③教育部建立“IC设计网上合作研究中心”,积极推动高校间集成电路设计教学、研发工作的开展④国家发布了《国务院鼓励软件产业和集成电路产业发展若干政策》,制定了扶持集成电路产业发展的优惠政策,加速IC产业的发展速度。国家政策为集成电路产业的发展提供了良好的外部环境,多吸引、储备高层次人才,消化吸收国外先进设计的精髓,提高设计人员的工业设计水平,丰富IC设计者的工业经验,对改变我国集成电路产业与世界水平的差距有重要意义。1.3集成电路的设计方法集成电路设计指的是从硬件的一种描述形式到另一种描述形式的变换,设计的最终目标是得到集成电路某种可制造的描述形式【111。一个数字系统主要分为两大部分的设计,即系统的硬件设计和系统的软件设计。传统的硬件系统设计多采用自下至上(BottomUp)的方法:首先根据系统对硬件的要求,合理划分功能模块;然后进行各个子电路及系统设计、调试;最后当电路设计完成后,再根据工艺线的具体工艺条件进行物理设计、制作掩模版以及制造芯片。采用自下至上的设计方法,整个系统的功能验证要在所有的底层模块设计完成后进行。如果系统功能不符合设计要求,就有可能要对底层模块和系统进行重新设计、仿真和验证【12]。传统的硬件设计方法对系统进行设计、调试的过程中,所形成的硬件设计文件主要是电原理图。随着大规模集成电路的开发和研制,计算机辅助设计技术(CAD)的不断应用和发展,IC设计者可以借助于先进的电子设计自动化EDA第一章绪论开发工具,采用自上至下(T。pDown)、硬件描述语言(HDL)、结构化设计、设计再利用等方法来实现集成电路的设计。1.采用自上至下的设计方法自上至下的设计方法就是从系统总体出发,先确定系统的技术要求;然后自上至下将设计内容细化,选择和设计构造系统所需要的单元;最后完成系统硬件的整体设计【13]。在整个设计过程中,不论是总体的行为设计,还是最终的逻辑综合,每一步都要进行仿真测试。在版图设计完成后,还要进行版图验证,包括设计规则检查(DRC)、版图的电路提取(NE)、电学规则检查(ERC)和寄生参数提取(PE)等,以确保版图满足制造工艺要求和符合系统的设计规范。采用自上至下的设计方法有利于在设计早期发现问题,这时发现的问题比较容易改正而且花费较少。设计中的多次仿真测试可以保证设计的正确性,减少设计的反复次数,从而缩短产品进入市场的时间(timetomarket)。2.采用硬件描述语言的设计方法随着大规模专用集成电路的开发和研制,为了提高开发效率,增加已有开发成果的可继承性,各个大公司纷纷开发各自的硬件描述语言。目前最有代表性的为美国国防部开发的VHDL语言(VHSICHardwareDeseriptionLan,age)和Viewlogie公司开发的VerilogHDL语言,并且VHDL和VerilogHDL语言分别成为IEEE标准IEEEStd一1076和IEEEStd2364一1995。所谓硬件描述语言,就是可以描述硬件电路的功能,信号连接关系以及定时关系的语言,能够有效地表示硬件电路的特性。利用HDL语言设计硬件系统一般分成三个层次进行1131:①行为描述,就是对整个系统的数学模型的描述。在此阶段,主要考虑系统的结构及其工作过程是否能达到系统设计规格书的要求。②寄存器传输级RTL方式描述,主要是将行为方式描述的硬件描述语言程序改写为RTL方式描述的HDL语言程序,从而导出系统的逻辑表达式,进行逻辑综合。③逻辑综合,利用逻辑综合工具,将RTL方式描述的程序转换成用基本逻辑元件表示的文件,即门级网表文件。在用HDL语言设计硬件系统的过程中,从总体行为设计到逻辑综合,从行为级HDL源程序到最终形成网表,每一个层次中都要进行仿真检查。这样有利于尽早发现系统设计中的问题,缩短设计周期。
MCS51单片机反向解剖以及正向设计的研究3.采用结构化的设计方法结构化的设计方法就是将一个复杂系统分解成多个层次独立的子模块,然后分别进行设计。由于每个层次独立于其上层的设计进程,这样,设计者能够并行地进行子模块的设计与仿真,并且对子模块的设计修改只影响该模块本身,而不会影响到其它的子模块。总之,用结构化的设计方法不但可以大大降低设计的复杂度,而且可以提高开发效率。4.采用设计再利用的设计方法由于集成电路规模的不断增大,设计者如果从头实现一个硬件系统的设计不仅需要很长的设计开发时间和大量的NRE(Non一recurringEngineering)费用,产品还可能会彻底失去市场。因此,IC设计者在设计过程中需要大量复用自行设计开发或其它第三方拥有知识产权的IP(Intelligentproperty)模块。设计再利用避免重复设计,调用已有的库单元组件、IP模块,并在此基础上考虑系统新的功能以及与IP模块的接口部分,就能完成硬件系统设计。运用IP复用的设计方法使芯片设计提高到一个较高的层次上,因此IC设计者可以把注意力更多的集中在系统级设计上。芯片设计进入到系统级设计之后,通常要包含CPU、DSP等核心模块的设计。因此,除了采用自上至下、硬件描述语言、结构化设计、设计再利用等方法之外,软、硬件的联合设计、协同开发也成为目前IC设计者所关注的热点{14}。如何合理划分软件和硬件所实现的系统功能,如何实现软、硬件之间的信息传递必须被充分考虑。系统中软件实现功能的增加不但降低升级费用,还增强了设计的灵活性,并且进一步缩短了芯片的设计时间。1.4我们的工作1.研究目的和意义集成电路进入了超大规模阶段以后,知识产权模块,即IPcore的开发与使用成为目前片上系统设计中最主要的设计方法之一。而我国大规模集成电路的设计水平、设计能力与国外相距甚远,没有自主知识产权的微电子产业对于一个微电子设计公司,乃至一个大国的经济与国防,都是一件难以想象的事情。MCS一51系列单片机的应用领域相当广泛,从家用电器、工业控制到智能仪表仪器等,到处都可以用到MCS一51单片机。而且芯片内部的MCU设计技第一章绪论术也是目前集成电路设计领域以及电子信息领域的一项核心技术。因此MCS一51单片机的反向解剖和自主知识产权正向模块的设计,对于一家微电子设计公司和设计人员的技术积累,掌握真实的工业设计经验,对于一个国家知识产权模块库的储备都具有重要的意义。2.我们的工作我们所做的工作主要分成两大部分:反向解剖和正向设计。反向解剖也就是逆向设计部分,要首先对所选取的芯片进行解剖、腐蚀、拍照;然后提取并整理逻辑图,同时进行版图设计,逻辑图版图一致性验证;对LVS验证通过的电路进行仿真,以便保证芯片功能实现的正确性;最后可以在原电路的基础上,优化设计或者按照用户需要进行电路的改进。正向设计部分则通过对MCS一51单片机逻辑功能、内部结构、时序波形和指令节拍的分析,首先要进行系统功能的设计;然后对顶层功能模块细化,用VHDL语言编写各子功能模块的源代码;当功能模块仿真通过后,再进行语言的综合以及后仿真。总之,通过反向解剖和正向设计,希望可以实现一个可重复使用的硬核模块,初步完成一个RTL级VHDL语言的软核模块,并且积累一定的、真实的工业设计经验。3.论文的结构本论文共分为五章:第一章绪论,介绍了集成电路的现状、发展趋势,当前集成电路的设计方法以及本论文工作的意义。第二章MCS一51单片机的原理,介绍了MCS一51单片机的内部结构、时序分析、指令系统,并且对指令集进行了分类检索和特征提取。第三章MCS一51单片机芯片的反向解剖,介绍了反向解剖的流程、版图的设计规则,分析了芯片中的基本电路、功能电路,并对硬核进行了仿真。第四章MCS一51单片机芯片的正向设计,介绍了芯片中部分功能模块的设计、仿真、综合,对使用VHDL进行代码设计的可综合性问题做了探讨。第五章总结与展望,总结了论文的工作,并对将来的工作设想做了介绍。第二章MCS一51单片机的原理第二章MCS一51单片机的原理2.1MCS一51单片机芯片的概述单片机SCM(SingleChipMieroeomputer),即MieroController,是把微型计算机主要部分都集成在一个芯片上的单芯片微型计算机。主要包括了微处理器(CPU)、存储器(ROM、RAM)、输入/输出口(1/0口)和定时器/计数器、中断系统等功能部件【15]。单片机自70年代出现以来,已经有了很大的发展,被广泛应用于机械、测量控制、工业自动化、智能接口和智能仪表等许多领域。例如:单片机与传统的机械产品相结合后简化产品结构,实现控制智能化,成为新一代的机、电一体化产品;利用单片机来构成各种工业控制系统、数据采集系统等;在大型工业测控系统中,单片机进行接口的控制与管理,与计算机主机并行工作,可以大大提高系统运行速度。目前国内以Intel公司MCS一48、MCS一51、MCS一96为主流系列产品,其中MCS一51系列单片机的应用最为广泛。MCS一51单片机双列直插式封装为40引脚(PIN)芯片,如图2一1所示。按功能其引脚可分为三部分:0987台54321098765423,43333333333222222222户i,O户1.1户1。2户1,3户1。4户1,6户1。也户,.7只白了《RXO)户3.0(下XO)户3,1(1肉丫O)户3.2(.闪丫嗦)户。,3《丁O)户3、4(丁,)户3.5(内喊)户3,6(RO)户3.7><丫ALZX丫ALIONO1234567891O1,121e,4,5,6,7161匀2OVCC户0.0(AOO)户0.1(AO,)户O,2(AOZ》户O一3(AO3)户O。4(AO4》户O一6(AOS)户O一已(AO6》户0.7(AO7)它夕心V户户A‘丘/声舜℃只3户尝注凡户2.7(A15)PZ.e(A14)pZ.s(A,3)户2·4(A12)户2.3(Al,)户2.2(A10)户之一1(Ag)户2一O(AS)图2一1MCS一51单片机芯片引脚图①I/O口:PO、Pl、PZ、P3共4个8位并行口,其中P3端口是双功能第二章MCS一51单片机的原理口,具有的第二功能如图2一1中所示。RXD为串行输入口,TXD为串行输出口,1瓦了劝、丽.石分别为外部中断O、1的输入,TO、Tl分别为定时器/计数器0、1的外部输入,认艰对应于外部数据存储器的写选通,而则对应于外部数据存储器的读选通。②控制线PSEN(片外取指控制)、ALE(地址锁存控制)、EA(片外存储器选择控制)、RESET(复位控制);③电源以及时钟:Vcc、Vss、XTALI、XTALZ2.2Mcs一51单片机的内部结构与工作原理1.Mcs一51单片机的内部结构8051是MCS一51系列单片机的最初产品,也是MCS一51器件的核心。8051核的主要特征包括!161:①64K程序存储器地址空间和64K数据存储器地址空间;②4K字节的片上程序存储器和128字节的片上数据RAM③8一bit最优化的用于控制应用程序的CPU;④广泛的布尔处理能力(single一bitlogie);⑤两个16一bit定时器/计数器;⑥全双工URAT(通用异步接收发送器);⑦具有两个优先级的5个中断源;⑧32个双向并可分别设定地址的1/0口;⑨一个片内振荡器。MCS一51单片机的内部结构主要由8个部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器、I/O口(PO口、pl口、PZ口、P3口)、串行口、定时器/计数器、中断系统和特殊寄存器(SFR)。其中,微处理器由运算器和控制逻辑组成,主要包括累加器(ACC)、B寄存器、临时存储器(TMPI、TMPZ)、算术运算单元ALU等。特殊功能寄存器SFR(SpeeialFunetionRegister)是用来对片内各功能单元进行管理、控制、监视的控制寄存器和状态寄存器,是位于片内数据存储器上的一个特殊功能的RAM区,其地址范围为SOH一FFH。SFR主要包括PO口锁存器、Pl口锁存器、PZ口锁存器、P3口锁存器、串行口控制寄存器SCON、中断允许寄存器IE、定时器/计数器控制寄
MCS51单片机反向解剖以及正向设计的研究存器TCON、程序状态字寄存器PSW、B寄存器、累加器ACC等。图2一2中给出了较为详细的内部结构框图。仁.j司峭.t帕泊书t,洲洲翔丫盆盆ppp侧阳口那那企企企企企企企企企企企企企企企企户日〕目目洲洲翻斤OOOOO,O月,盈盈盈月口翻翻‘‘渔IC帕帕帕‘启宝C洲洲洲洲,,.0口姑们们决决创城城...妞口哈下花翻翻rrr翻甲,,户户CCC侧侧心曰幼味加作目目脚脚脚脚脚脚脚脚脚脚脚脚脚脚脚脚脚脚.00成血栩栩们们翻州OOO盆盆盆仁O以叮I此此决决加OOOi誓誓誓誓誓誓誓誓誓誓誓誓CCC侧峭巾O生生赶坦坦坦坦坦坦坦坦坦坦坦坦.................目目彗‘‘‘O,,润润..................................OOO名CCCCCCCCCCCCCCC,,.州阳曰....口月脚脚脚护o.tlllOOOOOOOOOOOOOOOOOOOOOOOOOOO的l特助助月月口卜卜卜卜卜卜卜卜」」皿.1111、押.。·!!··!l!!!:!:!嘟笔时图2一2MCS一51单片机内部结构框图2.MCS一51单片机的工作原理MCS一51系列单片机工作时首先要进行复位。振荡器开始振荡后,可以通过在RST引脚上加上两个机器周期的高电平来使芯片实现复位。程序计数器PC和特殊功能寄存器SFR的复位状态如表2一1所示:表2一1寄存器的复位状态}寄存器{复位状态}寄存器{复位状态{PC000000H第二章MCS一51单片机的原理AAACCCC00HHHTHOOOOOHHHSSSPPP07HHHTLOOO00HHHTTTMODDD00HHHTHIIIOOHHHDDDP’rRRR0000HHHTLIIIOOHHHPPPO一P3锁存器器FFHHH·PSWWWOOHHH日日日日日日实现复位之后PC的值是O00OH,因此,程序的入口地址为0000H,CPU从O000H开始执行操作。模式控制寄存器TMOD为OOH,表示定时器/计数器都处于方式O工作状态,而THO、TLO、THI、TLI均为OOH则表示定时器/计数器复位后都清零。PO、Pl、PZ和P3端口复位后锁存器都处于“1”状态。工作状态下,每当ALE是高电平的第一个时钟(51PZ、S4P2),PZ口被拉低而PO口为高阻态。实际进行芯片解剖时,可以根据寄存器复位状态下的特殊值来判断功能电路块。工作时如果芯片的外部选通信号亚被拉为高电平,则首先访问内部数据存贮器。如果虱总是保持低电平,则只访问外部程序存贮器,也就是说,无论是否有内部程序存贮器,所有的程序取指都是直接指向外部ROM的。当执行外部程序存贮器内的程序时,每个机器周期内都是PSEN两次有效,ALE两次输出高电平,用于锁存地址的低位字节。我们在开始进行反向解剖时,没有设计使用芯片内部的FLASH,因此只选用访问外部程序存贮器方式。在这种状态下,得到的PSEN、ALE的频率是振荡器频率的1/6,PSEN信号波形占空比为1八,而ALE信号波形占空比为1/2。每个机器周期中ALE信号的高电平为51PZ、SZPI、S4PZ、SSPI,PSEN信号的高电平为SIPZ、SZPI、SZPZ、S4PZ、SSPI、SSPZ。总之,CPU在PSEN、ALE和外部数据存储器写选通信号认艰、读选通信号而的共同作用实现功能。2.3MCS一51单片机的时序功能分析Mcs一51单片机的机器周期是由内部时钟发生器定义的序列状态组成,每个机器周期包括6个状态,从51到56。每个状态持续2个晶体振荡周期,因此每个机器周期包括12个晶振周期。也就是说,当所用的晶振频率为12MHZ时,则每个机器周期将持续1娜。每个状态周期又分成2个时相Pl、PZ,这样第二章MCS一51单片机的原理一个机器周期可以依次表示为5IPI、SIPZ、SZPI、SZPZ、S3PI、S3PZ、S4PI、S4PZ、SSPI、SSPZ、S6PI以及S6PZ。不同类型的指令取指、执行时序发生的状态和周期是不相同的,图2一3、图2一4和图2一5分别给出了单字节、单周期,双字节、单周期,单字节、双周期指令的取指/执行时序。15,{5215,}s‘15,}s‘}s‘!s,1“,}s‘}s,}s‘{s‘}XTA口万UU田卫几刊田田泪U甘U毛U一侧ir甘汀汀田田旧卫且且且fl八」奋EPSEN逻瑟竺逻鲜算置竺墨骂笔读操作码读下一个l{厂再读下一个操作码泣二二二二:图2一3单字节单周期指令的取指/执行时序对于单字节单周期指令,5IPI状态时读入需要的操作码。S4PI状态时读入下一条指令的操作码,此时读入的操作码被丢弃,芯片不执行相关操作。SZPI以及SSPI状态锁存该条指令对应地址。第三章图3一27所示INCA指令的仿真波形清楚地表示该类型指令的取指/执行时序。15‘】“2}“31”‘15,】s‘】”,】s,}S3}s‘15,1“‘}s‘!xTA以万UUU甘Lf甘田山山山月卫列衬UUir甘汀田田月几几几几几几人LEPSEN:pl丝里尸2pl”pl些里PZplpZlpl丝理PZplpZplpZp皿plpZ.plpZ11一一门「一〕:「一11一一门:「读下一个操作码图2一4双字节单周期指令的取指/执行时序对于双字节单周期指令,例如MOVA,#data,5IPI状态时读入该条指令的操作码“74”,S4PI状态时读入该条指令的第二字节“立即数”。SZPI状态时锁存该条指令对应的地址而SSPI状态时锁存立即数对应的地址,如第三章中图3一23中给出MOVA,#78的仿真波形。对于单字节双周期指令,第一个机器周期5IPI状态时读入所需的指令操作码,S4PI以及第二个机器周期5IPI、S4PI状态不断读入下一条指令的操作第二章MCS一51单片机的原理码并丢弃。同样,第一个机器周期的SZPI状态锁存指令地址,SSPI以及第二个机器周期SZPI、55PI状态重复锁存该地址XTAU八LEPSENpl里瞥ZP‘pZPI里瞥2”‘pZ一pl里里PZ”‘pZPI里卿ZP‘p气p竺l厂读操“码,读下一个抒产码(丢弃,再读下一个操作码产|l!二二万}52{5215315.4}S,156{51}52}53154}s,{561万二图2一5单字节双周期指令的取指/执行时序事实上,每个机器周期取指都发生两次,无论指令执行时是否需要更多的代码字节,如果取得的代码是指令所需要的,例如立即数等,送入数据通道并进行操作;如果取得的代码是指令所不需要的,例如额外取指等,CPU直接将其丢弃,程序计数器的值也不增加。从后面第三章的仿真波形就可以清楚的看到,每条指令执行的周期中会不停地取指,直到指令执行结束。2.4Mcs一51单片机的指令系统2.4.1Mcs一51单片机的指令集机器语言的指令以8位二进制数的字节为基础,有单字节、双字节、三字节指令。对于MCS一51单片机来说,共有In条指令。按功能可以将这些指令分成五类1171:①数据传送类(29条);②算术操作类(24条);③逻辑操作类(24条);④操作程序转移类(17条);⑤布尔变量操作类(17条)。1.数据传送类数据传送类指令通过累加器进行数据传送或者进行数据存储器之间、工作寄存器与数据存储器之间直接的数据传送,如表2一2所示。表2一2数据传送、交换、栈出/入指令指指令助记符符二进制代码码功能说明明字节节振荡荡数数数数数数周期期MMMOVA,Rnnn11101rrrrr寄存器内容送累加器器11112
MCS51单片机反向解剖以及正向设计的研究MMMOVRn,AAA11111rTTTT累加器内容送寄存器器1111222MMMOVA,@Riii1110011111内部RAM内容送累加器器llll222MMMOV@Ri,AAA1111011111累加器内容送内部RAMMMlll1222MMMOVA,#dataaa0111010000立即数送累加器器222l222MMMOVA,direettt1110010111内部RAM或专用reg内容送acccc2221222MMMOVdireet,AAA1111010111acc内容送内部RAM或专用reggg2221222MMMOVRn,#dataaa01111rrrrr立即数送寄存器器2221222MMMOV@又,#dataaa0111011111立即数送内部RAMMM2221222MMMOVdireet,#dataaa0111010111立即数送内部RAM或专用寄存器器3332444MMMOVdireet,Rnnn10001rfrrrreg内容送内部RAM或专用reggg2222444MMMOVRn,direettt10101rrrrr内部RAM或专用reg内容送reggg2222444MMMOVdireet,@又又1000011111内部RAM送RAM或专用寄存器器2222444MMMOV@Ri,direettt1010011111内部RAM或专用reg送内部RAMMM2222444MMMOVdireet,direettt1000010111内部RAM和专用reg的直接传送送3332444MMMOVDPrR,#data1666100100000016位立即数送数据指针针3332444MMMOVXA,@Riii1110001111外部数据存储器内容送累加器器1112444MMMOVX@Ri,AAA1111001111累加器内容送外部数据存储器器1112444MMMOVX@DPI,R,AAA1111000000累加器内容送外部数据存储器器lll2444MMMOVXA,@DPTRRR1110000000外部数据存储器内容送累加器器1112444MMMOVCA,@A+DP’1、RRR1001001111数据存储器内容送累加器器lll2444MMMOVCA,@A+PCCC1000001111程序存储器内容送累加器器1112444XXXCHA,Rnnn11001rrrrr寄存器内容与累加器内容交换换111l222XXXCHA,@Riii1100011111内部RAM内容与累加器内容交换换lll1222XXXCHA,direettt1100010111内部RAM或专用reg与acc交换换2221222XXXCHDA,@斑斑1101011111内部RAM与acc(低4位)内容交换换1111222SSSWAPAAA1100010000累加器高、低4位交换换111l222PPPOPdireCttt1101000000栈顶内容送内部RAM或专用reggg2221222PPPUSHdireCttt1100000000内部RAM或专用reg内容送栈顶顶22212222.算术操作类算术操作类指令包括对8位无符号数进行直接的加减乘除运算,或者借助溢第二章MCS一51单片机的原理出标志对带符号数进行2的补码运算,借助进位标志实现多精度的加、减和环移,还可以对压缩的BCD数进行运算,如表2一3所示。表2一3算术运算指令指指令助记符符二进制代码码功能说明明字节节振荡荡数数数数数数周期期AAADDA,Rnnn00101frrrr累加器内容加寄存器内容容1111222AAADDA,@Riii0010011111累加器内容加内部RAM内容容1111222AAADDA,direettt0010010111acc内容加内部RAM或专用reg内容容2221222AAADDA,#dataaa0010010000累加器内容加立即数数2221222AAADDCA,Rnnn00111rrfff累加器内容加寄存器(带进位)))1111222AAADDCA,@几几0011011111累加器内容加内部RAM内容(带进位)))1111222AAADDCA,#dataaa0011010000累加器内容加立即数(带进位)))222l222AAADDCA,direettt0011010111acc加内部RAM或专用reg(带进位)))222l222IIINCAAA0000010000累加器内容加111111l222IIINCRnnn00001rrrrr寄存器内容加1111111222IIINCdireCttt0000010111内部RAM或专用寄存器加1112221222IIINC@Riii0000011111内部RAM内容加1111111222IIINCDPI,RRR1010001111数据指针内容加1111112444DDDAAAA1101010000累加器十进制调整整111l222SSSUBBA,Rnnn10011rrrrr累加器内容减寄存器内容(带借位)))111l222SSSUBBA,@凡凡1001011111累加器内容减内部RAM内容(带借位)))1111222SSSUBBA,#dataaa1001010000累加器内容减立即数(带借位)))2221222SSSUBBA,direettt1001010111acc减内部RAM或专用reg带借位)))2221222DDDECAAA0001010000累加器内容减111llll222DDDECRflll00011rrfff寄存器内容减1111111222DDDEC@Riii0001011111内部RAM内容减111111l222DDDECdireCttt0001010111内部RAM或专用寄存器减1112221222MMMULABBB1010010000累加器内容乘寄存器B内容容1114888DDDIVABBB1000010000累加器内容除以寄存器B内容容lll48883.逻辑操作类第二章MCS一51单片机的原理逻辑操作类指令包括“与”、“或,,、“异或”、“清除,,、“求反,,以及“左右移位”等逻辑操作,如表2一4所示。表2一4逻辑操作指令指指令助记符符二进制代码码功能说明明字节节振荡荡周周周周周周期期AAANLA,Rnnn01011rrrrr累加器内容“与”寄存器内容容111l222AAANLA,@Riii0101011111累加器内容“与”内部RAM内容容1111222AAANLA,#dataaa0101010000累加器内容“与”立即数数2221222AAANLA,direettt0101010111acc“与”内部RAM或专用reggg2221222AAANLdireet,AAA0101001000内部RAM或专用reg“与,,aeeee222l222AAANLdireet,#dataaa0101001111内部RAM或专用reg“与”立即数数3332444OOORLA,Rnnn01OOlrrrrr累加器内容“或”寄存器内容容lll1222OOORLA,@Riii0100011111累加器内容“或”内部RAMMM111l222OOORLA,#dataaa0100010000累加器内容“或,,立即数数2221222OOORLA,direettt0100010111acc“或”内部RAM或专用reggg2221222OOORLdireet,AAA0100001000内部RAM或专用reg“或,,aeeee2221222OOORLdireet,#dataaa0100001111内部RAM或专用reg“或”立即数数3332444XXXRLA,Rnnn01101rrrrr累加器内容异或寄存器内容容1111222XXXRLA,@Riii0110011111累加器内容异或内部RAMMM1111222XXXRLA,#dataaa0110010000累加器内容异或立即数数2221222XXXRLA,direettt0110010111acc异或内部RAM或专用reggg2221222XXXRLdireet,AAA0110001000内部RAM或专用reg异或acc内容容2221222XXXRLdireet,#dataaa0110001111内部RAM或专用reg异或立即数数3332444RRRLAAA0010001111累加器内容循环左移移llll222RRRLCAAA0011001111累加器连进位标志循环左移移1111222RRRRAAA0000001111累加器内容循环右移移1111222RRRRCAAA0001001111累加器连进位标志循环右移移lll1222CCCPLAAA1111010000累加器按位取反反lll1222CCCLRAAA1110010000累加器清零零llll2224.操作程序转移类第二章MCS-sl单片机的原理操作程序转移类指令包括全存贮空间的长调用、长转移,全空间的长相对转移以及一页范围的短相对转移以及条件转移等,如表2一5所示。表2一5控制程序转移指令指指令助记符符二进制代码码功能说明明字节节振荡荡周周周周周周期期AAACALLaddr1111a,0agas1000111ZKB内绝对调用用2222444aaaaa7a6asa;a3aZalaoooooooooAAAJMPaddr1111a:0agas0000111ZKB内绝对转移移2222444aaaaa7a6asa;a3气alaoooooooooLLLCALLaddr1666000100100064KB内长调用用3332444LLLJMPaddr1666000000100064KB内长转移移3332444SSSJMPfelll1000000000相对短转移移2222444JJJMP@A+DPTRRR0111001111相对长转移移1112444RRRETTT0010001000子程序返回回1112444RRRETIII0011001000中断返回回1112444JJJZrelll0110000000累加器为零转移移2222444JJJNZrelll0111000000累加器为非零转移移2222444CCCJNEA,#data,relll1011010000累加器与立即数不等转移移3332444CCCJNEA,direet,relll1011010111acc与直接寻址字节不等转移移3332444CCCJNERn,#data,relll10111rrfff寄存器与立即数不等转移移3332444CCCJNE@凡,#data,relll1011011111内部RAM与立即数不等转移移3332444DDDJNZRn,relll11011rrrrr寄存器减1不为零转移移2222444DDDJNZdireet,relll1101010111直接寻址字节减1不为零转移移3332444NNNOPPP0000000000空操作作11112225.布尔变量操作类布尔变量操作类指令包括布尔变量的传送、逻辑运算、控制程序转移等,如表2一6所示。指令助记符表2一6布尔变量操作指令二进。」代码}功。。说明字节振荡周期
MCS51单片机反向解剖以及正向设计的研究MMMOVC,bittt1010001000直接寻址位传送到进位标志志2221222MMMOVbit,CCC1001001000进位标志传送到直接寻址位位2222444CCCLRCCC1100001111清进位标志志111l222CCCLRbittt1100001000清直接寻址位位2221222SSSETBCCC1101001111置进位标志志111l222SSSETBbittt1101001000置直接寻址位位2221222CCCPLCCC1011001111进位标志取反反1111222CCCPLbittt1011001000直接寻址位取反反2221222AAANLC,bittt1000001000进位标志“与”直接寻址位位2222444AAANLC,/bittt1011000000进位标志“与”直接寻址位的反反2222444OOORLC,bittt0111001000进位标志“或”直接寻址位位2222444OOORLC,/bittt1010000000进位标志“或”直接寻址位的反反2222444JJJCfelll0100000000进位标志置位转移移2222444JJJNCrelll0101000000进位标志为零转移移2222444JJJBbit,relll0010000000直接寻址位置位转移移3332444JJJNBbit,relll0011000000直接寻址位为零转移移3332444JJJBCbit,relll0001000000直接寻址位转移并将该位复位位33324442.4.2MCS一51单片机的寻址方式MCS一51系列单片机采用5种寻址方式:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址和基址寄存器加变址寄存器间接寻址!17]。1.寄存器寻址寄存器寻址方式可用于访问选定寄存器区的8个工作寄存器RO一R7,指令操作码的低3位指示所用寄存器,也用于访问ACC、B、DPTR、进位标志cyo2.直接寻址直接寻址可以用于访问内部RAM的低128个字节,也是访问专用寄存器的唯一方法。采用直接寻址方式的指令多是双字节指令,其中第一个字节是操作码而第二个字节是内部RAM低128字节或专用寄存器的直接地址。3.寄存器间接寻址寄存器间接寻址方式可用于访问内部RAM或外部数据存贮器。访问内部或第二章MCS一51单片机的原理者外部数据存贮器低256字节时,采用RO、Rl作为间接寄存器,是单字节指令;访问外部数据存贮器时,采用DPTR作间接寄存器;执行压栈/出栈指令时,采用堆栈指针SP作为间接寄存器。4.立即寻址采用立即寻址方式的指令多是双字节指令,第一个字节是操作码,第二个字节是立即数,即存放在程序存贮器内的常数。5.基址寄存器加变址寄存器间接寻址基址寄存器加变址寄存器间接寻址方式用于访问程序存贮器中的一个字节,并且该字节的地址是基址寄存器(DPTR、PC)的内容与变址寄存器(ACC)内容之和。2.5MCS一51单片机指令集的分类检索与特征提取1.MCS一51单片机指令集的分类检索MCS一51系列单片机共有In条指令,5种寻址方式。按照指令机器码00一FFH可以进行全面、整体的矩阵式检索,如表2一7所示。对指令集的分类整理也可以根据指令操作的类型、指令的寻址方式等不同要求进行检索,并按照设计要求进行不同分类的特征提取。表2一7指令集的“整体一矩阵”式检索0000000lll2223334445556667778~FFFOOOOONOPPPPPLJMPPPRRAAAINCAAAINCCCINCCCINCRnnnaaaaaaaaaddrrrrrrrdireettt@兄兄兄111111111666666666666611111JBCbit,,,LCALLLLRRCAAADECCCDECCCDECCCDECRflllrrrrrellllladdrrrrrAAAdireCttt@Riiiii111111111666666666666622222JBbit,,,RETTTRLAAAADDDDADDDDADDDDADDA,RnnnrrrrrelllllllllA,,A,,A,,,#############dataaadifeCttt@形第二章MCS一51单片机的原理33333JNBbit,,>>>RETIIIRLCAAAADDCCCADDCCCADDCCCADDCA,RnnnrrrrrelllOOOOOOOA,,A,,A,,,>>>>>>>>>>>>>#dataaadireCttt@Riiiii尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸尸44444JCrelll尸尸ORLLLORLLLORLLLORLLLORLLLORLA,Rnnnpppppppppdireet,,direet,,A,,A,,A,,,认认认认认AAA#dataaa#dataaadireettt@Riiiii母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母55555JNCrelll)))ANLLLANLLLANLLLANLLLANLLLANLA,Rnnn斌斌斌斌斌direet,,direet,,A,,A,,A,,,叼叼叼叼叼AAA#dataaa#dataaadireettt@Riiiiippppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp66666JZrelll体体XRLLLXRLLLXRLLLXRLLLXRLLLXRLA,Rnnn母母母母母direet,,direet,,A,,A,,A,,,AAAAAAAAAAA#dataaa#dataaadireettt@Riiiii77777JNZrelllllORLLLJMPPPMOVVVMOVVVMOVVVMOVRn,,CCCCCCCCC,bittt@A十DPTRRRA,,direet,,@Ri,,#dataaa#############dataaa#dataaa#dataaaaa88888SJMPPPPPANLLLMOVCA,,DIVVVMOVVVMOVVVMOVdireet,,rrrrrelllllC,bittt@A+PCCCABBBdireet,,direet,,RfllldddddddddddddddireCttt@Riiiii99999MOVVVVVMOVVVMOVCA,,SUBBBBSUBBBBSUBBBBSUBBA,RnnnDDDDDPTR,,,bit,CCC@A十DPTRRRA,,A,,A,,,#####data1666666666#dataaadireCttt@RiiiiiAAAAAORLC,,,MOVVVINCDPI,RRRMULLLLLMOVVVMOVRn,,/////bitttttC,bitttttABBBBB@Ri,,direCtttdddddddddddddddddireCtttttBBBBBANLC,,,CPLLLCPLCCCCJNEEECJNEEECJNEEECJNERn,,/////bitttttbitttttA,,A,,@Ri,,#data,relll#############data,,direet,,#data,,,fffffffffffffelllfelllrel第二章MCS一51单片机的原理C}PUSHCLRCLRCSWAPXCHXCHA,RndireCtdireCtPOPSETBSETBCDAADJNZDJNZRn,reldireCtdireCtMOVXA,@DPI、RMOVX@DPTR,AMOVXA,@Ri1CLRA1MOVMOVA,RndireCtMOVx@R‘,A{CpL“…MoV}1direCtXCHA,@RiXCHDA,@RiMOVA,@RiMOV@Ri,AMOVRn,A2.McS一51单片机指令集的特征提取McS一51单片机的指令特征很多,例如指令的类别、指令的编码方式、指令执行的周期数、指令的字节数和指令对标志位的影响等等。对这些特征进行分类整理,可以在正向设计的过程中优化设计芯片内部各受控部件(累加器A、寄存器B、数据指针DPTR、程序计数器PC、堆栈指针SP、程序状态字PSW等)的控制信号,从而节约这些受控部件控制信号的组合逻辑资源,减少综合后受控电路的门数。特征提取包括:寻址方式与指令类型的关系;指令类型与标志寄存器的关系;指令类型与指令执行周期、指令字节数的关系;寻址方式与指令执行周期(机器周期)、指令字节数的关系,如表2一8所示。表2一8寻址方式与指令执行周期、指令字节数关系寄寄寄存器器直接寻址址寄存器器立即寻址址基址寄存器加变址址寻寻寻址址址间接寻址址址寄存器间接寻址址执执行周期期1/2/2222/2八八1/2/2221/2/222222字字节数数1/2八八2/3/2221/2八八2/3/2221
MCS51单片机反向解剖以及正向设计的研究第三章MCS一51单片机的反向解剖3.1反向解剖概述1.反向解剖的定义芯片设计分为正向设计与逆向设计两大类:正向设计通常用来实现一项新的设计;而逆向设计是在剖析别人设计的基础上进行某种修改或者改进。传统版图级反向解剖的含义是指对芯片进行腐蚀、拍照、恢复原来的版图,然后利用恢复得到的版图再次投片,仿制出原来芯片的功能。至于被恢复的芯片功能是否正确、电路是否需要优化、功能是否可以改进等工作就无法实现。随着反向解剖经验的不断积累,反向解剖IC设计公司在反向解剖获取的版图基础上提取逻辑图,经过对逻辑图功能的分析、理解,进一步改造电路,完善芯片的功能。反向解剖不仅是为了仿制芯片、借鉴经验,还具有很多其它的目的:①通过对逻辑图的逻辑功能、时序功能的分析,可以获取待设计芯片的版图级基准时序,提升出逻辑功能和时序功能的设计思想;②对于不知如何设计的功能部件,可以参考逻辑图获取设计思想;③对于逻辑功能、时序功能存在可以优化设计的地方,参考逻辑图获取优化设计的思想;④通过逻辑图的功能分析,加强门级电路与高层描述语言的相互映射关系,加强对“综合”概念的理解,高效、快速地积累正向设计经验;⑤通过逻辑图的时序仿真实践,积累真实的工业仿真经验。2.反向解剖的步骤版图级反向解剖一般要经过以下几个步骤:①解剖芯片:对原芯片解剖、腐蚀、拍照,得到版图的照片;②绘制版图:将所拍照片粘贴,并利用全定制版图编辑工具L一Edit绘制版图;③提取逻辑图:从版图照片中提取逻辑图,并输入到电脑中,所用软件多为Cadence公司的icfb,一般第②、③步分两个小组同时进行工作,尽量分为相等的人均工作量,以便同时完成;④LVS验证:将从输入逻辑图提取的网表文件与由版图生成的CIF格式文件比较,进行LVS验证,并且根据报告(report)文件修改错误,直到逻辑图与版第三章MCS一51单片机的反向解剖图完全一致。⑤逻辑仿真:对逻辑图进行功能仿真,验证是否完全完成芯片的原有功能以及新增加功能,并且找出隐含错误,修改对应版图;⑥投片、测试:芯片完全得到验证后,由所绘制的版图生成GDSll文件送到厂家流片、晶圆测试,然后器件封装、测试,最终成功的实现芯片【15]。3.2MCS一51的基本器件模型3.2.1CMOS集成电路的特点CMOS集成电路是指在同一块半导体芯片上制作PMOS和NMOS两种晶体管,由于在同一芯片上采用两种互补型号的MOSFET,所以称为互补金属氧化物场效应晶体管,即CMOS(ComplementaryMetaloXideSemi-eonduetor)。CMOS是一种电压控制器件,在其导电过程中PMOS的载流子为带正电的空穴,而NMOS的载流子为带负电的电子。对于NMOS管来说,当VGS(栅源电压)小于VTN时(阂值电压VTN>0),无法形成导电沟道,漏源之间只有很小的反向PN结电流;当VGs大于等于从时形成反型导电沟道,并且,随着漏源电压VDs的变化,N型沟道的厚度、能带以及费米能级沿垂直方向倾斜并发生变化。当VDs=VGs一从时,沟道在漏极附近被夹断。当VDS进一步增大,夹断点向源区方向略微移动。对于PMOS管来说,与NMOS相反,其阑值电压为负值(叭P<0)。只有当VGs小于等于叭时,才形成空穴导电层,此时,P沟源端的载流子密度大于漏端的载流子密度,载流子空穴由密度大的源端流向密度小的漏端【191。在硅材料中,由于电子的迁移率是空穴的2一3倍,所以相同宽度W、长度L的NMOS管比PMOS管速度更快。设计CMOS静态逻辑电路时,将PMOS管的wIL均扩大2倍,获得相同的上升时间和下降时间,以便实现全对称设计。3.2.2门电路1.非门非门,是数字电路中最基本的单元,其输入和输出反相。CMOS非门由一个增强型P沟道MOS管和一个增强型N沟道MOS组成,P管通常为负载管而N管为输入管。图3一1给出了CMOS非门的线路图和逻辑符号。图中Pl、Nl第三章MCS一51单片机的反向解剖的栅极并联做为信号输入端,漏极连接起来做为信号的输出端,P管、N管的源极则分别接电源和地。当输入为低电平时,N管的栅源电压VGsN=O,小于NMOS管的阑值电压,相当于等效了一个很大的截止电阻,N管截止;同时,P管的栅源电压VGsP‘一vDD,大于}VTP{,相当于等效一个较小的导通电阻,所以P管导通,输出电压近似等于电源电压;同理,当输入为高电平时,N管的vGsN=VDD而P管VGsP二0,此时P管截止、N管导通,输出电压近似等于地。由以上分析可知:CMOS倒相器的逻辑摆幅大(VDD一0),而且总是一管导通一管截止,因此静态直流导通电流极小,几乎没有静态功耗【20]。。ut‘n丰畔‘图3一1cMoS非门的结构、逻辑符号2.传输门传输门是一种传输信号的可控开关电路,是MOS集成电路的基本逻辑单元之一。CMOS传输门是由一对互补的MOS管并联而成,能够输入、输出互换以实现双向传输。图3一2给出了CMOS传输门的结构和逻辑符号,其中P管和N管的衬底分别接电源和地,C=1,c=o时,传输门导通,源和漏互相连接,栅极分别加控制电压C和C。当传输信号;1当C=0,C=l时,传输门截止。/《少一1一CCI但.es申卫刀匕图3一2CMOS传输门的结构、逻辑符号CMOS传输门用作开关时性能几乎接近理想开关,导通时电阻很小,只有几百欧姆,而截止时电阻很大,大于107欧姆【21]。利用cMos传输门可以构成各种逻辑电路,而且结构较为简单。解剖的芯片中提取了包括基于CMOS传输门构成的门电路、锁存器、触发器等功能电路。第三章MCS一51单片机的反向解剖3.复杂逻辑门电路数字电路一般可以分为两大类:一类是组合逻辑电路,另一类是时序逻辑电路。组合逻辑电路包括“非”、“或”、“与”结构的门电路以及编码器、加法器、译码器等。这类电路的特点是在任一时刻,电路的输出只和电路当前的输入信号有关,也就是说输出结果能够由布尔表达式直接得出,而不需要考虑组成单元短暂的传输延迟。CMOS静态逻辑电路由于低噪声和低功耗等优点,广泛用来构成各种复杂逻辑的门电路,应用于算术运算单元、控制器等绝大部分数字集成电路芯片中!221。CMOS静态逻辑门电路由两大部分构成,一部分是P管与VDD连接,形成了上拉网络(PUN);另一部分是N管与GND连接,形成了下拉网络(PDN)。图3一3给出一个利用组合逻辑关系实现的六输入复杂门电路,电路中PMOS管Pl、PZ、P3、P4、PS、P6形成了上拉网络,对应的NMOS管Nl、NZ、N3、N4、NS、N6形成了下拉网络。根据图3一3,写出该电路对应的逻辑表达式:Y=(A+B1·BZ+c十D)·E·············……(1)当A、Bl、BZ、P4、PS、P6导通而Y=1(高电平,Vno);图3一3六输入复杂逻辑门电路C、D、E输入均为低电平时,PMOS管Pl、PZ、P3、NMOS管Nl、NZ、N3、反之,当A、Bl、BZ、C、N4D、NS、N6截止,此时输出E输入均为高电平时,Pl、
MCS51单片机反向解剖以及正向设计的研究电平,OV);当E的输入信号为低时,输出Y=1;当E的输入信号为高时,只要A、(B1.B2)、C、D的输入信号中有一个为1,则输出Y=O,否则输出Y二1。利用不同的组合逻辑关系可以构成任意输入的复杂功能门电路。但是,对于串联驱动管(与非)的门电路来说,输出低电平是所有串联驱动管的导通压降之和,因此输入数目的增加将导致输出低电平相应抬高;对于串联负载管(或非)的门电路来说,输出高电平是电源电压减去所有串联负载管的导通压降,从而导致输出高电平相应降低。经验值一般取少于6个输入端。3.2.3锁存器、D触发器数字电路中不但需要对二值信号进行算术运算或者逻辑运算,有时还需要将这些输入信号和运算结果保存下来,因此需要具有记忆功能的逻辑单元。MOS集成电路中常用的记忆逻辑单元有锁存器、触发器等,图3一4、图3一5分别给出了利用传输门、非门构成的CMOS锁存器和D触发器单元。分析图3一4可知,当CP=1,CP=0时,传输门I导通而n截止,锁存器将D输入端信号传送到输出端Q、Q;当CP=0,CP=1时,传输门I截止而H导通,两个非门以及传输门H形成了一个锁存回路,并依靠栅电容上的电荷维持Q端输出不变。图3一4CMOS锁存器常见的触发器有同步RS触发器、主从JK触发器等,这些触发器输入端出现的某些随机噪声电压可能会使其产生误操作。为了提高工作的可靠性,进一步增强抗干扰能力,单片机芯片设计中采用边沿型D触发器,如图3一5所示。当CP=1,CP=0时,传输门I导通而11截止,Q“=D。此时传输门111截止,IV导通,因此Q输出保持不变;当CP==O,CP=1时,传输门H导通而I截止,Q’将传输门I截止前的状态保存下来,此时传输门111导通,Q=D。由以上分析可第三章MCS一51单片机的反向解剖知:该电路输出状态的变化仅仅发生在时钟的下降沿,也就是说触发器所保存下来的状态只取决于时钟下降沿到达时的D输入信号。可见图3一5实现了下降沿触发的边沿型D触发器功能。实际芯片设计中,有时也用钟控倒相器代替传输门,同样可以实现锁存器或触发器功能。厅C尸,.}厅人.111C尸图3一SD角虫发器3.2.4多路选择器多路选择器(Multiplexer),简称多路器,是一个多输入、单输出的组合逻辑电路,在数字系统中有着非常广泛的应用。它可以根据地址码的不同,从多个输入数据中选取一个,然后输出到公共的输出端。MCS一51单片机中使用了二选一和四选一两种多路器,分别如图3一6、3一7所示。根据图3一6,写出对应的逻辑表达式:Y二Sel·Dl+Sel·DO.·······,·,··············,································,·……(2)当数据选择端Sel为高时,传输门I导通,H截止,DO的数据被选出送到输出端Y。反之,当数据选择端Sel为低时,传输门I截止,n导通,Dl的数据就被选出并送到输出端Y。图3一6二选一多路选择器同理,如果用Selo、Sell为数据选择端,根据输入地址代码Se10、Sell的不同状态,可以从4个数据输入端DO一D3中进行选择,并且将选出的数据传送到输出端Y。第三章MCS一51单片机的反向解剖设计单片机芯片时,要求电路结构简单,因此有时会采用NM0s与cMos混合设计的方法。图3一7给出一个采用NMOS设计的四选一多路器,CPI、CPZ、CP3和CP4分别为四路控制信号,其中CPI、CPZ反相,CP3、CP4反相。写出对应的逻辑表达式:Y=(CP2.CP4)·D3+(CI〕2·CP3)·DZ+(CP卜C尸4)·Dl+(〔,尸卜CP3)·DO=(CPI·CP3)·D3+(CPI·CP3)·DZ+(CPI·CP3)·DI+(CPI(…沪3)·DO…(3)当CPI=1,CP3=1时,选出DO的数据,Y=DO;当CPI=1,CP3=O时,选出Dl的数据,Y=Dl;当CPI=O,CP3=1时,选出DZ的数据,Y二DZ;当CPI=O,CP3二0时,选出D3的数据,Y=D3,实现了四选一功能。单片机芯片设计除了要电路精练外,还要考虑遵循一定的时序,因此实际应用该电路时,选出的信号经过CMOS静态存储单元锁存后输出,如图3一7虚线框内所示。选出的数据保持在存储单元中,当符合一定的时序要求时将数据取出。图3一7四选一多路选择器3.2.5RAM单元RAM电路通常由存储矩阵、地址译码器和读/写控制电路三部分组成,其中存储矩阵由许多存储单元排列而成,每个存储单元能存储一个二值数据(1或0)。在译码器和读/写控制电路的控制下,存储单元既可以写1或0,也可以将所存储的数据读出。图3一8所示6管静态RAM存贮单元,当读/写信号控制线WL抓时,数据写入或读出地址选中的单元;WL=0时,不允许写,数据存贮在相应的静态存贮单元中。该电路中,静态RAM存贮单元的核心是一个双稳态电第三章MCS一51单片机的反向解剖路,由两个CMOS倒相器构成。当电路中写入逻辑“1”后,倒相器A的输入端为高电平“1”,B为低电平“0’,。当N管截止后,维持此状态;反之同理。WL.卜一一,—一一—一一一—,D已t已石独勿图3一8RAM单元利用图3一8所示的RAM存贮单元,可以构成mxn存储矩阵,其中m为行线,n为位线,所用存贮单元个数为mxn。3.2.6异或电路单元异或电路(xorCircuits)是算术逻辑单元和比较电路中非常重要的单元电路之一,已经被广泛应用于半加器、全加器、奇偶校验和逻辑比较等电路中。异或电路可以实现逻辑异或关系,当输入信号不同时,输出为真;当输入信号相同时,则输出为假。写出对应的逻辑表达式为:Y=月B+月B二A①B···············图3一9四管组成的异或电路芯片中设计了一种结构极为精练的异或电路单元,仅用四个晶体管构成,如图3一9所示。当输入端A、B信号均为高时,P管截止、N管导通,输出端Y为低。当A为低而B为高时,Pl管导通,B端信号由Pl管传送到Y;而当A为高而B为低时,PZ管导通,A端信号由PZ管传送到Y,此时Y端输出都为高。当A、B端信号均为低时,N管截止、P管导通,A、B端信号分别通过PZ、Pl传送到Y,Y端输出为低,实现了异或功能{231。实际解剖芯片时,分析得到异或功能也可以由同或电路取反实现。同或电路第三章MCS一51单片机的反向解剖的设计方法与图3一9相类似,利用4管完成同或功能,如图3一10所示。A、B端信号分别控制NZ、Nl的导通或截止,并通过导通管传送信号到输出端,实现同或功能。写出图3一10的逻辑关系表达式:Y=AB+AB=AOB=AeB··············……(5)图3一10四管组成的同或电路图3一11给出了用6个管子设计的另一种异或电路{23],图中传输门、非门各由2个管子组成。当A为低时,传输门开通,B端信号传送到输出端Y。同时,B端信号也会控制Pl或Nl导通,从而将A或入信号传到Y端,并且该信号与通过传输门传送的B端信号逻辑上完全一致,起到加强Y信号的作用。当A为高时,传输门处于截止状态,此时仅由B端控制Pl、Nl的导通或截止,传送A、A信号。由于该电路中CMOS传输门弥补了单沟道MOS开关管阑值电压逻辑损失的缺点,因此该电路能够传输整个VDD一0范围的信号。P1一N1BA图3一11结构简单的异或电路如果电路中高电平的定义范围较宽,可以考虑简化该电路设计。去掉传输门,仅用B信号控制Pl或Nl管,传送A、天端信号到输出端。当B=O时,Y二A;当B=1时,Y=兀,也实现了异或功能。3.3MCS一51子电路的逻辑功能分析3,3.1时钟电路
MCS51单片机反向解剖以及正向设计的研究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!!!8999B55500010001000011011010004444daaa000010001000011011011122226ddd11101010111101101101111Abbb6ddd00010101011110110110005555B66600001010100011011011112aaadb第三章MCS一51单片机的反向解剖1110110011111101101111b333dbbb00010110011111101101115999eddd11111000100011101101}}}e222edddlllllllllll00011100011101110110007111766600001110000010111011113888bbbb1111000001111011101111C111bbbb00011000000011011101116OOOdddd事实上,本芯片中乘法运算的算法原理与普通的竖式乘法运算所采用的左移相加是完全一致的。我们做竖式乘法时,从第二个乘数的最低位开始相乘,以其为参照是左移相加。这里的乘法运算相当于从第二个乘数的最高位开始相乘,以其为参照就是右移相加。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)IB00000000}10100101
MCS51单片机反向解剖以及正向设计的研究MCS51单片机反向解剖以及正向设计的研究0000000001110100101000Olll4aaa0000000010001001010000O22294440000000101110010100000055528880000000001110010100000O111288800000000100001010001110222511100000001000010100010000444a22200000000000010100010{{{OOOOa2220000000001110100010111Olll45550000000010001000101000O2228aaa0000000101110001010000O55514440000000001110001010000O1111444000000001000{{{O2222999000000101001111111芯片中除法运算的算法原理和常见的竖式除法运算所采用的右移相减也是相一致的。我们做竖式除法时,从被除数的最高位开始比较大小,然后从高位到低位,依次右移比较。事实上,这里在进行除法运算时首先将被除数补齐为双字节,即将TMPZ做高位字节,并置为“00000000”。然后将被除数依次左移到TMPZ中与除数做比较,大于除数就相减。如果仍然以被除数的最高位做参照,整个过程还是从高位到低位,从左到右的比较相减过程。3.3.3定时器/计数器8OC51芯片中有两个16位定时器/计数器寄存器:定时器O和定时器1。当执行“定时器”功能时,其计时标准单位是机器周期,即每个机器周期之后定时器、计数器寄存器便加1。而每个机器周期是12个振荡器周期的12倍,因此“定时器”功能也可以实现计数机器周期,并且计数频率为振荡频率的l八2。当执行“计数器”功能时,寄存器在相应的外部输入管脚TO、Tl处信号发生从1到0的转换时加1。具体的说在每个机器周期的SSPZ期间内对外部输入信号进行采样,如果本周期采样值为高电平而下一个周期的采样值为低电平,则计数递增。由于采样识别至少需要两个机器周期完成,此时最大计数速率为振荡器频率的1/24。图3一14给出了定时器/计数器TO、Tl详细的内部电路示意图,以To为例进行电路分析。第三章MCS一51单片机的反向解剖IIIIIIIII}}})}}})I’’)}}}11’’日日日日郭郭二{{{丁丁口口口卜卜熟熟川川川川卜卜卜卜卜日日日日日lll元元元元叮叮叮L一一一行行行卜卜卜}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}哥哥哥哥哥哥哥哥哥丁丁目目目目目目目目目目目目目目目目目目目卜卜一州州目目认认卜一一对牛一一一__rrrrr}。。只只~叫叫叫叫日日日日日Ljjjjjjjjjjjjj日日日日、切切切图3一14定时器/计数器内部电路示意图定时器/计数器TO、Tl均由两组8位寄存器构成,图3一14中I组对应THI,11组对应TLI;I’对应THO,H’对应TLO。实际上定时器/计数器内部电路相当于4组T’触发器,原理图如3一15所示。cp为机器周期时钟,低位D触发器的Q输出信号做为下一位的时钟输入。当执行定时功能(不置初值)时,每当机器周期的上升沿发生变化,触发器状态翻转。从“0000000000000000,,一“0000000000000001”一“0000000000000010,,,依次加l,一直到寄存器状态为“1111111121111111”。如果置初值,则通过内部数据总线将触发器置初值。然后在每个触发器在其时钟上升沿到来时,状态发生翻转。从置入的初值开始,直到状态变化为“1111111111111111”。当定时器/计数器执行计数功能时,最低位时钟变化来自于外部引脚TO、Tl处的变化。计数状态下时钟信号变化时,D触发器依次翻转,相当于二分频。data_沙<址data一b<2>DDDFFFFDDDFFFF图3一15定时器/计数器内部电路原理图模式控制寄存器TMOD用于控制定时器/计数器O和1的操作模式,其长第三章MCS一51单片机的反向解剖度为8位。分成两组MO、Ml、C/T、GATE分别通过与内部数据总线的低4位和高8位相连,来控制定时器/计数器O以及定时器、计数器1的工作模式。3.4McS一51单片机的总体电路从照片中提取电路后,在工作站上利用Cadence软件建立新的库与工作环境,并且分层次整理电路。首先以单管做为最底层得到基本单元模块,用symbol来表示其电路图部分;然后将基本单元构成的子功能电路做为一个更高层次模块,以symbol的形式表示;最终得到一个层次化的、功能清晰的芯片总体电路图。本芯片的顶层主要包括端口模块、ALU模块、译码以及控制模块。端口模块中包括PO、Pl、PZ、P3端口寄存器,片内振荡器电路、复位电路和ALE、PSEN、EA外部控制信号等功能电路;ALU模块包括定时器/计数器O、1,累加器ACC、B寄存器、暂存器TMPI和TMPZ、数据指针寄存器DPTR等功能电路;译码以及控制模块主要包括微码电路和内部控制电路。MCS一51系列单片机中有5个中断源,可以分为2个优先级来控制,在芯片中由运行中断寄存器IE和中断优先级寄存器IP来确定。到写论文为止,关于中断分的仿真还没有进行完,因此本论文中不考虑中断部分。3.5MCS一51单片机的版图设计与LVS验证3.5.1版图的设计方法集成电路的版图设计又称布图设计,就是指芯片加工时光刻用掩膜版的设计,是根据逻辑和电路性能的要求以及工艺约束条件来完成。版图的设计方法包括标准单元法、门阵列法、任意元胞自动设计法、PLA法和人机交互设计法等【24}。标准单元设计就是首先设计单元电路版图,然后再进行单元电路的布局和单元之间的互连。门阵列法要求单元版图是一个规格化的矩形,长、宽要符合一定的尺寸。任意元胞法也称积木块法,这种方法对单元的形状和大小都没有限制,芯片的利用率较高,但布局布线算法较为复杂。PLA(可编程逻辑阵列)是由规则的“与”阵列和“或”阵列组成的,其结构化的规则有利于版图的自动产生,但是当逻辑功能比较复杂时,如果直接翻译成PLA形式会使得PLA的版图太大,从而芯片密度降低。第三章MCS一51单片一机的反向解剖人机交互版图设计是利用集成电路CAD版图编辑工具,结合人工参与的方式完成对电路版图的设计。设计过程中,设计者可以利用交互工具,根据所设计电路的各种性能要求,对图形进行反复布局、布线,以便于提高成品率,并且最大限度利用芯片面积。实际利用交互式方法设计版图时,多采用层次式设计:先将整个芯片版图划分成若干块,并对每一块进行版图设计,其中可能用到标准单元或PLA或门阵列或交互式的设计方法,当每一块设计完成之后可作为宏模块;然后再在此基础上进行高一级的设计,调用宏模块单元,进行交互式设计,直至整个芯片版图的完成。不论采用哪种设计方法完成MOS集成电路的版图设计,都应该既满足一定的技术要求,又要使设计符合一定的设计准则,主要包括:①布局合理。考察布局合理性的标准是引出端的分布是否便于使用或与有关电路兼容;有特殊要求的单元是否做了合理安排;布局是否紧凑。②单元配置适当。单元配置通常指门级乃至管子级元件的安放位置和方向,不仅包括单元具体形状的确定,也包括单元方位的选择。不同的单元配置对电路性能、芯片面积、紧凑程度、连线长度等会产生很大的影响。③布线合理。随着IC集成度的提高,电路逻辑的日益复杂,芯片内部布线所占的面积往往是元件所占面积的好几倍。通常布线时选择一铝作为水平方向布线,而二铝则作为垂直方向布线。这样不仅便于光刻,而且可以减少两层布线之间的寄生电容。交互式版图设计方法最主要的是设计工具包括版图编辑器、设计规则检查(DRC)和网表一致性检查(LVS)等工具。本论文中利用Tanner公司的L一Edit进行芯片版图的绘制,并且将所采用的无锡华晶上华半导体有限公司0.6pm工艺的规则参数编写成DRC文件进行设计规则检查。最后,提取逻辑图的网络表和版图的网络表,利用Cadence公司的EDA软件进行LVS检测,从而保证了芯片版图和逻辑设计的一致性,最终完成芯片的设计。3.5.2版图的设计规则集成电路版图设计中有一些基本原则,例如光刻的基本尺寸、各元件的图形和尺寸、芯片的面积估算、电路的形貌布局等【25]。这里主要讨论确定光刻的基本尺寸。光刻的基本尺寸是根据工艺条件和电路的要求而定,本论文中所解剖的芯片将采用无锡华晶上华半导体有限公司的0.6林m工艺制造【26]。下面给出第三章MCS一51单片机的反向解剖0.6pm硅栅CMOS双阱版图主要设计规则,如表3一3所示。表3一30.6林m硅栅CMOS设计规则版版次次内容说明明尺寸寸序号号掩掩膜名称称称(Um)))))有有源区区有源区的最小宽度度0.666111TTTOOOAetivewidthforintereonneettttttt两两两有源区间的最小间距距1.222222SSSSSPaeingofbetweenp十Aetivetop+Aetiveorrrrrrrnnnnn+Aetiveton+Aetiveeeeeeeppppp十有源区和n+有源区间的最小距离离1.222333SSSSSPaeingofP+Aetiveton+Aetiveeeeeee(((((insideN一wellorinSubstrateoutsideN一well)))))))阱阱区区阱的最小宽度度3.000444NNN阱/TBBBN一well/P一wellwidthhhhhhhPPP阱/PTTTTTTTTTTT电电电位相同两阱间的最小距离离1.555555NNNNN一well/P一wellsPaeingwithsamePotentialllllll电电电位不同两阱间的最小距离离4.888666NNNNN一well/P一wellsPaeingwithdifferentPotentialllllllNNNNN阱到阱内P+区最小距离(eg.N一well)))1.888777OOOOOverlaPfromN一welltoP+insideN一wellllllllNNNNN阱到阱外P+有源区的最小距离离0.444888SSSSSPaeefromN一welltoP+outsideN一wellllllll多多晶硅硅多晶硅条的最小宽度度0.666999GGGTTTPolywidthhhhhhh多多多晶硅条间的最小间距距0.7555l000PPPPPolysPaeeeeeeee多多多晶硅与有源区间的最小间距距0.3331111MMMMMin.SPaeeofPolyonfieldtoAetiveedgeeeeeee多多多晶硅栅在有源区上的最小延伸距离离0.666l222PPPPPolygateoverlaPintofieldoxide
MCS51单片机反向解剖以及正向设计的研究多多多晶硅栅到有源区边沿的最小距离离0.7771333PPPPPoly罗tetorelatedActiveedgeeeeeeePPP十版版P十注入的最小宽度度0.9991444SSSPPPMin.WidthofP+imPlanttttttt两两两P+区间的最小距离离0.9991555MMMMMin.SPaeeofP+imPlanttttttt覆覆覆盖有源区时各边的最小富裕量量0.45551666PPPPP+imPlanteneloseAetiveeeeeeePPPPP+版和与它无关的有源区间的最小距离离0.75551777SSSSSPaeingfromSPregiontoanaCtiveregionnnnnnn覆覆覆盖栅区的最小富裕量量0.75551888SSSSSPaeingfromSPregiontoPolygateeeeeee金金属条条一铝的最小宽度度0.9991999(((一铝)))MetallwidthhhhhhhAAA111111111111111111111111111111111111111111111111111111111111111一一一铝间的最小距离离0.8882OOOMMMMMetal1toMetalsPaeeeeeeee一一一铝覆盖一次孔的最小尺寸寸0.3332111MMMMMinsizeofMetalloverlaPovereontaettttttt接接触孔孔最小引线面积积0.6X0.6662222(((一次)))MinContaCtSizeeeeeeeWWW111111111111111111111111111111111111111111111111111111111111111一一一次孔间的最小间距距0.7772333CCCCContaettoeontaetMin.sPaeeeeeeee多多多晶硅覆盖一次孔的最小富裕量量0.4442444PPPPPolyoverlaPovereontaetonPolyyyyyyy有有有源覆盖有源区上一次孔的最小富裕量量0.4442555AAAAAetiveoverlaPeontaetonAetiveeeeeee有有有源上的一次孔与多晶硅栅间的最小距离离0.6662666CCCCContaetonAetivetoPolygatesPaeeeeeeee制造该芯片时采用的是一层多晶硅栅、一层金属铝作为内部连线。下面给出表3一3中所列o.6pm硅栅CMOS设计规则的示意图,如图3一16、3一17、3一18、第三章MCS一51单片一机的反向解剖3一19、3一20和图3一21所示。1.有源区:有时也称为薄氧化区。这层掩膜版用来规定N沟道和P沟道器件需要生长有源区域的地方,设计规则示意图如图3一16所示。iiiii叮叮}}}{rl,,卜卜卜卜卜卜卜卜卜卜卜……………」,3、鬓鬓图3一16有源区设计规则示意图2.阱区:以N阱为例说明。N阱掩膜用于制作P沟道器件的N阱,采用的方法多是在这个区域进行N型掺杂扩散,设计规则示意图如图3一17所示。图3一17阱区设计规则示意图3.多晶硅:其掩膜版用来规定多晶硅栅极的位置,并且形成多晶硅极层,设计规则示意图如图3一18所示。图3一18多晶硅设计规则示意图第三章MCS一51单片机的反向解剖4.p+版:这层掩膜版用来规定P沟道的器件的区域,通过注入P+掺杂来形成PMOS管的源、漏区。设计规则示意图如图3一19所示。「一门}}「一门}I卜一}同‘,L_口L_--J图3一19P+版设计规则示意图5.金属条(一铝):这层掩膜版用来定义第一层金属内连线区域,设计规则示意图如图3一20所示。制造时先在整个硅片上蒸一层金属铝,然后将接触孔和连线等处铝留下,其余的全部刻掉。如果芯片电路比较复杂,需要二层铝甚至三层铝、四层铝来完成电路的内连接。滋滋滋井井井图3一20金属条设计规则示意图6.接触孔(一次孔):其掩膜版用来规定各个接触孔的位置,也就是定义所有在扩散区、多晶硅、金属条上的接触孔的区域。设计规则示意图如图3一21所示。图3一21一次孔设计规则示意图7.版图中图形的说明:图3一22给出了规则示意图中各种不同图形表示的意义。第三章MCS一51单片机的反向解剖二N+二‘一一一一--一-----一J图3一22版图图形的说明半导体公司给出的版图设计规则参考手册中还包括了最小间距规则、金属包一次孔/二次孔规则等,利用这些规则可以增大电路密度。如果对电路的密度要求不高,实际应用中可以将规则中给出的最小值增大15%到20%,这样制造硅晶片时就有更多的富裕量。对于一次孔和二次孔来说可以不限定最小尺寸,但是实际设计中应尽量使用最小尺寸的一次孔和二次孔,以避免负载效应。对于集成电路芯片来说,是否能够得到足够的、稳定的功率是芯片能否正常工作的前提。因此,在芯片的版图设计中电源线的设计规划显得非常重要的。①芯片中要使用单一、稳定并且功率足够大的电源。由于电源线要贯穿整个芯片,因此应该尽量避免引入有干扰的电源,而选择引入稳定的电源。容易产生干扰和敏感度高的回路可以与一般回路分离。模拟部分和数字部分的电源要分开并独立连线,芯片内电源线的唯一交会点要放在焊块上。②电源线应该尽量以树状分布、交错为原则,避免相互跨越。树状分布的电源线主干宽度要大于支路电源线的宽度,主干连接支路的位置要尽量靠近树状分布中心处。同时,避免用非金属材料(例如多晶硅)做连线,防止因为多晶硅电阻较大而造成压降。尽量避免电源线的凹凸不平,并且特别注意电流较大的局部电路,防止电流的集注效应造成金属的断线;③布线时要适当加宽电源线的宽度。如果电源线过细,阻抗将增加,从而产生电压降。一般情况下,电源线的最小值为金属线最小宽度的3倍左右。本芯片内电源线的最小宽度为Zpm,最大宽度为3Opm。在芯片的375pm死角区(diecorner)内,不允许放置任何有源电路,但是电源线可以按45度对角线方式从这个死角区穿过。3.5.3MCS一51的总体版图
MCS51单片机反向解剖以及正向设计的研究本芯片采用全定制方式设计版图,也就是说根据电路和工艺要求IC设计者进行全部ASIC的版图设计,而不是调用标准单元或者门阵列单元。版图的设计、绘制使用的是TannerTools的全定制版图编辑工具。进行全定制版图设计时,要先在L一Edit中设置自己的工作环境,确定不同层次对应的不同颜色和几何图形。再按照制定的设计规则改写DRC文件。另外,DRC文件中还需要加入一些约束条件,例如版图的布局只能够采用直角和斜对角式结构;限定单元不允许交迭(如P阱、N阱不允许交迭);限定单元必须交迭(如孔必须用金属包住)等等。加入约束条件后设计的版图,可以提高芯片的成品率、可靠性、可测试性和可共享性。绘制芯片版图是一项很艰苦的工作,本芯片的总体版图共耗180/人.天的工作量才完成。整个版图的面积为2.7mmX2.08mm,共用10348个PMOS管,19192个NMOS管,如附录A所示。3.5.4逻辑图与版图的一致性验证版图设计完成之后要进行芯片的设计验证,设计验证主要包括设计规则检查DRC、电学规则检查和版图逻辑图等价验证。通过设计验证保证了芯片的设计符合设计规则要求,也保证了版图和逻辑图的一致性。1.设计规则检查DRC设计规则检查包括最小线宽检查、间距检查、内嵌检查、外伸检查等。绘制版图的过程中要经常进行DRC检查,保证了每个子模块的版图都正确无误。DRC检查的关键在编写DRC工艺文件上,通常在开始绘制版图之前就应该严格按照选定的工艺所要求的设计规则参数编写文件。本芯片的版图设计均是在Tanner公司的L一Edit下完成的。2.电学规则检查ERC电学规则检查用于对电路网表进行连接性分析,检查是否有连接性错误。常见电学规则检查ERC包括掩膜区域检查、器件检查、节点检查、子电路检查等。掩膜区域检查用于检查某一指定区域的版图是否与某一特定的节点相连;器件检查用于检查是否有漏源相连的器件、端点悬空的器件、衬底类型不符的器件。节点检查用于查处具有不同名字对应于同一内部节点编号,或者具有相同名字但对应于不同节点编号的节点,即检查是否有多个节点短接或者是否有同一个节点被断开。子电路检查主要用于查找与电源或地相连的子电路,以及与电路的输入或第三章MCS一51单片机的反向解剖输出相连的子电路。3.版图逻辑图等价验证LVS版图逻辑图等价验证是对从版图提取出来的网表和从原理图得到的网表进行同构比较,检查网络内各连接点的连接关系,从而判断两者是否完全一致。进行LVS验证首先要提取网络表,逻辑图的网络表在输入逻辑图的时候已经产生,而版图的网络表可以利用L一Edit下的专用工具完成。需要注意的是:输入逻辑图时对于逻辑图中线的名称不能用“一”连接,可以用“_”(BLI_10),同一子模块中的器件不能重名、总线名称不能用数字开始(BUSI)、版图提取之前要在相应版图中的电源、地、输入、输出焊接块上标注节点名等等。LVS的整个比较过程是基于Cadence公司的软件在工作站上完成。比较结束后给出一些统计数据包含在*.Ivs文件(51.Ivs)中。如果两个网表不匹配,根据不匹配节点的提示进行版图或者逻辑图的修改,直到出现“SCHEMATICANDLAYOUTMATCH”,逻辑图和版图完全相等。LvS验证后也分别统计出版图和逻辑图中PMOS管、NMOS管的总数:逻辑图中PMOS管子10348个,NMOS管子19192个;版图中PMOS管子10348个,NMOS管子19192个,两者也是完全相同。3.6MCS一51硬核的仿真MCS一51单片机的指令有五大类,如2.4节MCS一51单片机的指令系统中所描述,硬件仿真中对每一条指令都要加以验证。从每类指令中任意选取指令进行仿真,波形如图3一27、3一28、3一29、3一30、3一31、3一32、3一33、3一34、3一35、3一36所示。写出仿真程序:ORG000OHSTAR:MOVA,#78HMOVB,#OSHMOVRO,#67HXCHA,ROADDA,ROINCAMULAB第三章MCS一51单片机的反向解剖ANLA,RORLASETBCLJMPSTAREND数据传送类立即数到累加器A中VA,#78H经户吸竺.w旦户.宁亡卜冲川,勿,”~T~‘口协改翼鬓羹攀篡毅爵』习‘应」‘鱼心玺避避避耀{篡翼馨……哈幼!ooDO}OD衬l}o吮!0田10078;}o吮}D002黔}一导一{-七它七奋‘.O’11’,B娜.2:N卫八J竹已甲之,山PnX-‘‘图3一23送立即数到累加器A利用Cadence公司的icfb进行仿真,初始地址为000OH,此时送入了指OVA,#78H)的十六进制代码74,地址000IH送入了立即数78。该指令字节指令,执行12个振荡周期,如图中虚线内所示,第12个振荡周期时即数送入了累加器A中。立即数到寄存器VRO,#67H仿真程序中执行的第二条指令将立即数05H送入B寄存器中,执行结果将存器的值从初始值OOH置为05H而累加器结果不变。第三条指令将立即数送入RO中,该条指令也是单字节指令,12个振荡周期完成操作如图3一24内所示。RO状态由高阻态、不确定状态到装入确定值67。第三章MCS一51单片机的反向解剖ToP.仙00000555lll002222000666006777OD皿皿000777lll00000078111111111111100C8111lll获获日日...11178111二二二000000--十-~一一----一--一-一-一~-~-一一-一---一七----一一十------111110555llllllll任任任XXXXXX作作作任{6777iiiiiiiiiiiiiiir八图3一24送立即数到寄存器RO③寄存器内容与累加器内容交换XCHA,RO第四条指令是一条单字节指令,执行寄存器RO中67与累加器A中的78进行交换,地址0007处放该条指令的十六进制代码CSH。执行12个振荡周期如图中虚线内所示,12个周期后累加器A中为67而寄存器RO中的内容交换78。00000777ooes;;;002222DOOSSS00288800口口0008880028111X图3一25寄存器RO的内容与累加器A的内容交换2.算术操作类
MCS51单片机反向解剖以及正向设计的研究ToP.仙00000555lll002222000666006777OD皿皿000777lll00000078111111111111100C8111lll获获日日...11178111二二二000000--十-~一一----一--一-一-一~-~-一一-一---一七----一一十------111110555llllllll任任任XXXXXX作作作任{6777iiiiiiiiiiiiiiir八‘州刊护卜︸S扣SAP甲101又图3一24送立即数到寄存器RO③寄存器内容与累加器内容交换XCHA,RO第四条指令是一条单字节指令,执行寄存器RO中67与累加器A中的78进行交换,地址0007处放该条指令的十六进制代码CSH。执行12个振荡周期如图中虚线内所示,12个周期后累加器A中为67而寄存器RO中的内容交换78。00000777ooes;;;002222DOOSSS00288800口口0008880028111!!!!!!!!!!!!!!!!!!!lllll67;;;!!!788888..........习习iiiii11105111........日...目目目111ODDD.....IC‘引州t洁5入S么O‘口10二X图3一25寄存器RO的内容与累加器A的内容交换2.算术操作类第三章MCS一51单片机的反向解剖执行12个振荡周期,指令的十六进制代码为28H。图3一27执行累加器中的内容di加1,结果为eo。该条指令也为单字节指令,执行12个振荡周期,指令的十六进制代码为04H。2.乘法运算MULABToP.AD000000DbbbODjsssssOD0bbb00j33333000bbb0058888800Dbbb00j88888000bbb00j88888000bbb00j88888000bbb00j88888已已000lllll000jjje0007DDD38881CCC0eee07778333C11160000444lllll000jjj0444撇撇撇撇撇撇撇服服优PsE图3一28A、B寄存器做乘法运算MCS一51系列单片机除了进行加、减运算,也可以进行乘、除运算。执行乘法运算指令时,累加器A用来存放其中一个乘数和乘积的低8位数而B寄存器存放另一个乘数和乘积的高8位数;执行除法运算指令时,累加器用来存放被除数和商而B寄存器存放除数和余数。乘法运算diHx05H=0460H的运算过程如图3一28所示,乘数diH放在累加器中,而0SH放在B寄存器中,运算结果高8位04H放在B寄存器而低8位6OH放在累加器中。整个指令的执行是在算术运算单元中由ACC、B以及TMPI、TMPZ共同来完成。乘法运算指令是一条单字节指令,实现8位无符号数的乘法操作。该条指令的十六进制代码为A4H,需要4个机器周期(即48个振荡周期)来完成一次操作,是整个指令系统中执行时间最长的2条指令之一。执行乘法操作时,A中的十六进制数共要右移8次,并且移动过程中要进行数值的调整。3.逻辑操作类第三章MCS一51单片机的反向解剖执行12个振荡周期,指令的十六进制代码为28H。图3一27执行累加器中的内容di加1,结果为eo。该条指令也为单字节指令,执行12个振荡周期,指令的十六进制代码为04H。2.乘法运算MULABToP.AD000000DbbbODjsssssOD0bbb00j33333000bbb0058888800Dbbb00j88888000bbb00j88888000bbb00j88888000bbb00j88888已已000lllll000jjje0007DDD38881CCC0eee07778333C11160000444lllll000jjj0444撇撇撇撇撇撇撇服服优PsE图3一28A、B寄存器做乘法运算MCS一51系列单片机除了进行加、减运算,也可以进行乘、除运算。执行乘法运算指令时,累加器A用来存放其中一个乘数和乘积的低8位数而B寄存器存放另一个乘数和乘积的高8位数;执行除法运算指令时,累加器用来存放被除数和商而B寄存器存放除数和余数。乘法运算diHx05H=0460H的运算过程如图3一28所示,乘数diH放在累加器中,而0SH放在B寄存器中,运算结果高8位04H放在B寄存器而低8位6OH放在累加器中。整个指令的执行是在算术运算单元中由ACC、B以及TMPI、TMPZ共同来完成。乘法运算指令是一条单字节指令,实现8位无符号数的乘法操作。该条指令的十六进制代码为A4H,需要4个机器周期(即48个振荡周期)来完成一次操作,是整个指令系统中执行时间最长的2条指令之一。执行乘法操作时,A中的十六进制数共要右移8次,并且移动过程中要进行数值的调整。3.逻辑操作类第三章MCS一51单片机的反向解剖条指令是单字节指令,执行12个振荡周期完成操作。②累加器内容循环左移RLA执行该条循环左移指令,可以将累加器A中的“60H”循环左移一位,结果为“COH’,。该指令也是单字节指令,执行12个振荡周期,并且执行指令功能时不影响进位标志。如图3一30所示。4.操作程序转移类①长转移指令图3一31长转移到起始地址OO00H处执行仿真程序的最后一条指令,将目标地址从001OH转移到起始位置0000H处。该指令字节数为3,在指令代码OZH后面跟上16位目标地址(2个字节),共需要执行24个振荡周期。5.布尔变量操作类①置进位标志SETBC程序状态字PSW是一个8位寄存器,包含程序的状态信息。PSW各位有着特定含义:CY(PSW.7):进位标志、AC(PSW.6):辅助进位标志、FO(PSW.5):标志0、RSI(PSW.4)和RSO(PSW.3):寄存器区选择控制位1和0、OV(PSW.2):溢出标志、P(PSW.0):奇偶标志,而PSW.1为保留位。执行置进位标志指令,
MCS51单片机反向解剖以及正向设计的研究第四章McS一51单片机的正向设计4.1正向设计概述1.正向设计的过程目前集成电路的主流设计是ASIC(ApplieationspeeifieIntegratedCircuits)设计,自上至下ASIC芯片前端设计的主要过程如图4一1所示。前端设计主要包括逻辑设计和仿真,得到门级电路的原理图或网表;后端设计主要包括布局、布线、版图设计等,得到最终生产所用的GDSll文件。前端设计时首先要进行系统级的设计,主要是设计系统的体系结构。包括对系统进行模块划分,定义端口信号,并设计整体时序等。可以用C语言完成建模,也可以利用现在比较流行的SystemC实现;然后进行RTL级(RegisterTransferLevel)的设计,RTL级描述通常使用硬件描述语言HDL完成。这一层次需要做仿真,以便保证设计的正确性;接着做逻辑综合,也就是把语言描述的设计映射到实际工艺上加以实现,综合库中应该包括各个门单元的工艺参数。这一层次需要做后仿真,以确保时序上满足要求!27}。规规格设计计行行为级仿真真RRRTL级描述述RRR丁L级仿真真逻逻辑综合、优化化门门级仿真、定时检查查输输出门级网表表图4一1自上至下硬件系统的设计过程2、硬件描述语言VHDL第四章MCS一51单片机的正向设计VHDL全称VeryhighsPeedintegratedeireuitHardwareDeseriPtionLanguage,即甚高速集成电路硬件描述语言。VHDL语言覆盖多个级别、多个层次,具有规范性强、可读性好等特点,因此成为大规模集成电路设计的主要手段之一。1987年IEEE制定了第一个VHDL标准,编号IEEEStd1076一1987(VHDL一87)。1993年IEEE又将修改后的版本制定为新标准IEEEStd1076-1993(VHDL一93)【281。VHDL的主要优点在于:①VHDL语言为国际标准,所以通用性较强,几乎不用经过修改就可以将VHDL语言描述的电路在不同厂家开发的EDA工具上使用,具有很好的可移植性;②从系统级、RTL级到门级电路,均可以利用VHDL语言进行硬件电路设计,因此具有很强的硬件描述能力;③VHDL语言设计电路与制造芯片的工艺技术无关,源程序不会因为采用的工艺技术不同而改变描述形式;④由于集成电路规模不断地增大,IC设计者进行芯片设计时需要大量复用知识产权模块(IPcore)。利用VHDL设计的电路经过编译、仿真、综合、测试,可以形成软核(softcore)提供给IC设计者使用,因此完全符合集成电路发展的总体趋势。一个完整的VHDL语言程序包括实体(Entity)、结构体(Arehiteeture)、配置(Confi,ration)、包集合(Paekage)和库(Library)5个主要部分。其中,实体主要用来定义设计单元的输入、输出端口以及与外部环境的接口,是对外部引脚信号的名称、数据类型和输入、输出方向的描述;结构体是用来描述一个基本设计单元的具体功能,包括行为、元件以及内部的连接关系等,必须跟在实体的后面;配置语句则用于描述层与层之间的连接关系以及实体与结构体之间的连接关系。利用配置选择不同的构造体来进行性能对比试验,从中可以得到性能最佳的构造体;包集合用来罗列语言中所用到的信号定义、常数定义、数据类型、元件语句和函数定义等,是库结构中的一个层次;而库是经过编译后的数据的集合,用来存放有关包集合、实体、结构体和配置的定义【29}。3、硬件描述语言的可综合性问题使用硬件描述语言HDL设计集成电路,最重要的问题之一可能就是语言描述的可综合性。语言中虽然提供了许多自由灵活的描述方法,但是综合器却不能第四章MCS一51单片机的正向设计支持所有的语法规则。因此在编写程序源代码(激励文件除外)时一定要掌握哪些描述是可综合的,哪些描述是不可综合的。不同的综合器对语法规则的支持会有所区别,但大体上差不多。以SynPlify为参考综合器,下面给出一些VHDL语言可综合风格代码应遵循的要点【30]:①不在一个以上的进程中对同一个信号进行赋值;②不要使用电平触发和边沿触发的混合描述形式;③使用case语句时,应该将表达式的所有取值都一一列举出来;④描述时序逻辑电路时,一个进程中除了一个时钟触发以及复位、置位触发之外,不要再增加其它的触发信号;⑤描述组合逻辑电路时,最好加上else语句,穷尽所有可能的if条件,避免生成多余的锁存器。4.2Mcs一51单片机各功能模块的正向设计4.2.1端口模块的设计MCS一51系列单片机芯片有4个8位并行端口PO、Pl、PZ和P3,每个端口的功能各不相同。PO口是三态双向口,可以作为数据总线口,也可以用于输出外部存储器的低8位地址;Pl口是准双向口,是专门提供给用户使用的1/0口;PZ口也是准双向口,供系统扩展时作高位地址线用;P3口是双功能口,不仅可以同PO、Pl、PZ口一样作为普通1/0口使用,还具有特殊的第二功能作用,如表4一1所示。表4一1P3端口第二功能引引脚脚第二功功第二功能能引脚脚第二功功第二功能能能能能标记记记记能标记记记PPP3.000RXDDD串行输入口口P3.444TOOO定时/计数器0外部输入入PPP3.111TXDDD串行输出口口P3.555T111定时/计数器1外部输入入PPP3.222INTOOO外部中断O输入入P3.666WRRR外部数据存储器写选通通PPP3.333INTIII外部中断1输入入P3.777而而外部数据存储器读选通通从本论文所解剖的芯片硬件电路中可以获得,每个端口都有一个专用寄存器,分别对应PO、Pl、PZ和P3的锁存器。由端口送入的数据或者地址都要经第四章MCS一51单片机的正向设计过锁存器的锁存,由芯片内部其它功能模块输出的结果也要经过端口锁存器的锁存。当端口被选中时再由端口锁存器送入内部模块或者通过端口锁存器输出到芯片外引脚。PO端口模块设计如图4一2所示,p0(7一0)为P口输入、输出信号,定义为双向;data_gb(7一0)为端口锁存后内部数据总线,也定义为双向:po:INOUTstd_logie_veetor(7downtoo):data--gb:INOUTstd一ogie少eetor(7downtoo);add_gb为全局地址总线,indirec花sel为端口选通线。不同的地址对应选中不同的端口,如4.3节中表4一2所示。当满足“(addr--gh=”10000000”)AND(indiree仁sel=’o’)”时,po端口被选中。po端口为数据/地址复用口,因此程序中也设计了端口控制线PO_ctri。当PO控制线为高时,做为地址线使用,PO口输出外部存储器低8位地址;当PO控制线为低时,做为数据线使用,数据可以由PO端口送入。图4一2PO端口模块框图Pl口、PZ口以及P3口可以类似于PO口进行设计,当复位信号intjst为高时,1/0口被复位。当端口选通线为低,对应地址为90H时,Pl端口被选中;当对应地址为AOH时,PZ端口被选中;当对应地址为BOH时,P3端口被选中。程序中还分别设计了写有效信号wr--gb以及读有效信号rd_gb来控制数据写入芯片内部数据总线,或者数据从端口寄存器读出。P3口是一个双功能口,具有第二功能,如表4一1所示,因此设计时必须考虑P3口每一位的功能转换。整个芯片的设计中包含内部控制模块的设计,从该模块中输出P3端口第二功能控制线。当P3口某位第二功能控制线为高时,对
MCS51单片机反向解剖以及正向设计的研究应值就输入该位或者从该位输出。如果第二功能控制线不为高,则将该位的值为高阻‘Z’,由P3口锁存器来决定其取值情况。IFintoetrl=’1’THENp3(2)<=into_in;ELSEp3(2)<=‘Z’;ENDIF;4.2.2译码电路模块的设计指令译码与硬布线控制是MCS一51单片机芯片设计中是非常重要的部分,也是微控制单元MCU设计中最重要的部分之一。指令在译码电路模块中完成译码后,驱动控制逻辑,控制数据流在芯片内部各个功能模块中合理的流动,完相应的指令功能。单片机指令数量较少,指令集也相对比较简单,而且单片机芯片要求结构练,因此译码电路模块多采用硬布线的控制方法,而不同于中央处理单元CPU、协处理器NPX芯片内部所使用的微程序控制。实际中,反向解剖芯片所得到译码控制电路是由大量NMOS管子构成的。由于正向设计中采用硬布线控制法的前提是必须完全理解芯片设计者的思想以及实现逻辑控制的方法,所以在开始正向设计译码电路模块时只是根据指令格式、二进制代码直接对各条指令进行了译码,并且以CASE语句形式列出。当反向解剖芯片提取原理图并完成功能仿真后,就可以解读硬布线电路的思想,并且在译码模块的正向设计中利用其算法。通过不断完善硬布线控制逻辑,同时改进VHDL源代码的书写风格!31],可以大大减少正向设计芯片的硬件代价,提高运行速度。设计译码电路模块时,使用了CASE语句。CASE语句从许多不同语句序列中选择其中满足条件的一个执行,适用于描述总线或编码、译码的行为。使用CASE语句来描述译码行为,可读性比较强,很容易找出条件式和动作的对应关系。CASE语句的书写格式:CASE表达式ISWHEN条件表达式=>顺序处理语句;ENDCASE;第四章MCS一51单片机的正向设计根据表2一7指令集的“整体一矩阵”式检索,书写源代码时将各种情况分别一一列出。由于CASE语句要求表达式中的所有取值都必须列出来,所以将指令表达式的保留值ASH(IOIOO101B)处理为空操作。Pl:PROCESS(int_elk)BEGINCASEirinstr15WHEN’·00000000‘’!‘’10100101’‘=>一NOP,reservedtl_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--Paek15CONSTANT5IPI: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讯‘gbda饱‘gb图4一3ALU结构示意图对于输出来说,ALU除了输出算术运算结果,还需要输出运算结果的状态位到状态字寄存器PSW中。执行结果将使进位标志CY、辅助进位标志AC以及溢出标志OV置位或复位等。
MCS51单片机反向解剖以及正向设计的研究输出的操作代码为触发条件,采用硬件描述语言VHDL对ALU的具体操作做了描述。当仿真验证通过之后,再对源程序进行综合。正向设计时将ALU、译码电路、暂存器TMPI和TMPZ做为芯片主要模块cpucore的三大部分,即做为三个主要的元件component,并利用构造体的结构描述方式在cpucore模块中调用。元件描述形式:COMPONENTaluPORT();ENDCOMPONENT;FORALL:aluUSEENTITYwork.alu;4.2.6时钟模块的设计MCS一51系列单片机可以使用片上振荡器做为CPU的时钟源,也可以从片外输入时钟信号。使用片上振荡器,实际上是将片内的倒相器做为反馈元件,与外部晶振结合在一起构成一个自激振荡器。Xl,八工2i过Clke终le_蛇吐es图4一4时钟模块框图时钟模块框图如图4一4所示,引脚XTALI定义为倒相器的输入端,引脚XTALZ则定义为其输出端。cyde_states表示单片机的机器周期状态。每个XTALI信号的上升沿,cyd之states状态发生变化。VHDL源程序为:PROCESS(int--rst,xtall)BEGINIF(int--rst=’1’)THENstat几reg<=”0000”;ELSEIF(xtall’eventandxtall=’1’andstate_reg=unsigned(s6PZ))THENstat之reg<=unsigned(5lpl);6O第四章MCS一51单片机的正向设计ELSIF(xtall’eventandxtall=’1’)THENstat几reg<=stat几reg+1;ELSEstat几reg<=stat几reg;ENDIF;ENDIF;eyel之states<==std_logic-veetor(state--re目;ENDPROCESS;4.3McS一51单片机总体框图与总体功能的正向设计MCS一51系列单片机片内结构的总体框图如图4一5所示,结合2.2节中图2一2所给出的较为详细的结构框图,以及反向解剖芯片时得到的实际经验,本芯片的顶层设计分为具体的16个功能模块。芯片进行工作时,指令从程序存贮器(ROM)中取出,再由程序控制模块将当前的执行指令传送到指令译码模块,由译码电路模块负责对其进行指令译码。指令译码后生成的控制信号来控制数据的传送和处理,最终实现指令功能。ALU负责对数据进行算术逻辑运算,其操作数可以来自立即数、数据存储器、累加器等,其操作结果存入专用寄存器或者数据存储器中。设计中将译码、运算单元做为可以调用的底层元件,共同来构成一个高层次的设计模块1331。444KKKKKKKKKKKKKKKRRROMMMMM128字节节RRRRRRR八MMMCCCPUUUCCCOREEEOOOSCCCCC4个I刃口口口口口口串串串串串串串串串串串串串串口口计数输入地址徽据图4一5MCS一51单片机总体框图第四章MCS一51单片机的正向设计整个芯片的设计中包括时钟模块、程序控制模块、指令译码模块等用于产生时序,生成各种控制信号的功能模块;还包括程序存贮器、数据存贮器、端口和专用寄存器等形成数据通道的功能模块。指令和被处理的数据都要在各个数据通道组元中流动,在控制部分的作用下,可以完成数据的输入、输出、处理、存储等操作。MCS一51系列单片机的专用寄存器中除了PC寄存器在物理上是独立的,其余的都属于内部数据存贮器的SFR块(80H一FFH)【34}。因此,设计各个专用寄存器一定要注意合理分配地址,如表4一2所示:表4一2SFR块中专用寄存器的地址标标识符符地址址标识符符地址址标识符符地址址PPPOOO80HHHSBUFFF99HHHIPPPBSHHHTTTCONNN88HHHP222AOHHHPSWWWDOHHHPPPI‘葱葱gOHHHIEEEASHHHACCCCEOHHHSSSCON---98HHHP333BOHHHBBBFOHHH4.4Mcs一51单片机软核的仿真4.4.1RTL级的仿真流程完成了源代码程序的编写之后,首先要进行RTL(RegisterTransferLevel)级的仿真,即寄存器传输级的仿真验证。RTL级仿真是对正向设计芯片纯粹的功能仿真,用于保证逻辑功能实现的正确性。仿真的对象仅仅是抽象逻辑,不包含任何的延时信息。HHHDL设计模块块和和测试程序输入入HHHDL代码编译译仿仿真真波波形输出出观观察输出波形形图4一6RTL级仿真流程图第四章MCS一51单片机的正向设计RTL级仿真的基本流程如图4一6所示,先将HDL语言描述的设计模块和测试程序输入仿真器;然后利用仿真器对HDL源代码和测试程序进行编译,·编译正确后将元件实体调入编译器中运行;选择加入需要观察的信号,并且观察输出的波形,确认设计是正确无误的。如果输出的波形不完全满足设计要求,就修改程序并再次仿真,直到结果符合要求。4.4.2RTL级的仿真测试程序测试程序负责输入测试激励或者说测试向量,仿真结果就是设计模块对测试激励的反应。设计中采用Mentor公司的EDA软件Modelsim作为RTL级仿真的平台【351,启动Modelsim后建立Proieet、Souree,然后输入、编译VHDL设计的代码。Modelsim软件不但可以进行程序的编译,还提供了波形Wave、信号Signals、结构Strueture、数据流Dataflow、进程Proeess等多种窗口,简化了仿真工作。通过建立仿真测试平台,可以对设计输入一系列的测试激励,检查输出波形并验证设计的正确性。在仿真测试文件中描述测试激励通常有两种方法:直接描述和测试矢量调入。直接描述的方法一般用于带延时的赋值语句,例如时钟信号的描述:CONSTANTelkeeeyele:TIME:=80NS;PROCESSBEGINtest--elk<=’1’;WAITFORelk--eylee/2;tes仁elk<==‘0’;WAITFORelk--eylee/2;ENDPROCESS;对于测试矢量调入则是指从测试矢量库中读取测试激励,例如数据、地址以及一些可配置信息等信号的描述:FILEinveetor:TEXT15IN“filename.in,,;READ(11,datal);READ(11,dataZ);
MCS51单片机反向解剖以及正向设计的研究试程序输入仿真器;然后利用仿真器对HDL源代码和测试程序进行编译,·编译正确后将元件实体调入编译器中运行;选择加入需要观察的信号,并且观察输出的波形,确认设计是正确无误的。如果输出的波形不完全满足设计要求,就修改程序并再次仿真,直到结果符合要求。4.4.2RTL级的仿真测试程序测试程序负责输入测试激励或者说测试向量,仿真结果就是设计模块对测试激励的反应。设计中采用Mentor公司的EDA软件Modelsim作为RTL级仿真的平台【351,启动Modelsim后建立Proieet、Souree,然后输入、编译VHDL设计的代码。Modelsim软件不但可以进行程序的编译,还提供了波形Wave、信号Signals、结构Strueture、数据流Dataflow、进程Proeess等多种窗口,简化了仿真工作。通过建立仿真测试平台,可以对设计输入一系列的测试激励,检查输出波形并验证设计的正确性。在仿真测试文件中描述测试激励通常有两种方法:直接描述和测试矢量调入。直接描述的方法一般用于带延时的赋值语句,例如时钟信号的描述:CONSTANTelkeeeyele:TIME:=80NS;PROCESSBEGINtest--elk<=’1’;WAITFORelk--eylee/2;tes仁elk<==‘0’;WAITFORelk--eylee/2;ENDPROCESS;对于测试矢量调入则是指从测试矢量库中读取测试激励,例如数据、地址以及一些可配置信息等信号的描述:FILEinveetor:TEXT15IN“filename.in,,;READ(11,datal);READ(11,dataZ);第四章MCS-sl单片机的正向设计ALU的数据源,其中tmpl相当于累加器ACC中的数据。alu_result是运算结果,三条指令结果分别对应00000110、00000100、00001000。e又out、。v--out以及a几。ut是ALU输出的运算结果,分别影响PSW的进位标志、溢出标志和辅助进位标志等。图4一10ALU运算的部分输出波形4.4.4RTL级程序综合、后仿真1.RTL级程序综合通过RTL级仿真验证之后,HDL源代码可以采用EDA软件中的综合工具做综合,从而得到门级电路网表,也可以得到相应的电路原理图。虽然硬件描述语言描述方法灵括多样,但是有些语法格式综合工具却无法进行综合,例如,直接对信号进行赋值的一种方式:Arehiteeturestruoftry15Signalb_reg:std_logie一eetor(7downtoo):=“00000000,,:SignalP_reg:bvee:=“00000000,,:Begin还有些语句行为仿真时起作用,但是进行综合时却被忽略,无法得到所希望的功能,例如,加上描述门电路延时的语句:b<=aAFI,ER10ns;综合后下载到FPGA或者CPLD时【36],一旦选用的器件确定,那么经过每个门的延时时间就是确定的,而不是按照延时语句中所描述的值。除了不能综合或者综合后被忽略的语句之外,还有些语句本身是可以被综合的,但是其描述方式的不完善可能导致综合结果的错误。例如描述一个带有复位第四章MCS一51单片机的正向设计信号的二选一多路选择器:PROCESS(reset,a,datal,dataZ)BEGINIF(reset=’1’)THENq<=’o’;ELSIF(a=’1’)q<=datal:ELSEq<=dataZ;ENDIF;ENDPROCESS;进行描述时要注意到将所有IF条件语句中出现的控制信号加入到敏感量列表中,如果控制信号没有加入到列表中,综合后下载到CPLD或者FPGA以后,其变化将无法使输出信号相应变化,因此不能保证得到正确的结果。另外,使用lF语句描述模块功能时除了确保各个IF条件之间互相排斥、没有重叠之外,还需要穷尽所有可能的条件。HDL描述方式对综合后模块性能的实现影响也很大。例如一个组合逻辑电路的描述,如果描述的方式不恰当,可能会造成某个门电路的输入端口或者输出端口太多,驱动能力达不到要求,也有可能会造成某条组合逻辑电路的路径长度过长。组合逻辑电路路径长度是指从组合逻辑的输入到组合逻辑的输出所经过的路径的长度。路径如果越长,输入与输出之间所耗费的时间将越长。尤其是对于要求运算速度较快芯片的设计{37},路径长度的控制极为重要。必须保证通过最长路径的时间在许可范围之内,运算速度才可以达到芯片最高频率的要求。在同步系统中同步时钟控制组合逻辑的输入、输出,要保证数据处理的正确性,要求组合逻辑的数据处理时间必须小于同步时钟的周期。解决问题的方法:在原来路径中插入同步时钟,从而减小了组合逻辑电路的长度,避免了整个系统处理速度的减慢和性能的下降。对于时序逻辑电路的描述,敏感量列表中包括时钟信号、复位信号和置位信号,一般情况下采用边沿触发逻辑实现。例如:上升沿:elk’eventandelk=’l’下降沿:elk’evnetandelk=’O’67第四章MCS一51单片机的正向设计沿触发的方式可以使得电路状态的改变仅取决于控制信号边沿时到达的输入端的逻辑状态,从而有效地提高了电路的抗干扰性、可靠性。为了保持触发控制的一致性,如果敏感量列表中使用某个信号的上升沿,则IF条件语句中就使用该信号本身;反之,如果敏感量列表中使用某个信号的下降沿,则IF条件语句中就使用该信号的“非”。进行控制电路设计时,状态机是一种很常见的描述方式。状态机主要要描述三个部分:当前状态、下一个状态和输出逻辑。对于可综合的状态机来说,通常只能有一个同步时钟,另外还可以带有异步复位和置位信号。对状态变量进行编码时,尽可能选用格雷码(Gray)或独热码(One一hot)!351。总之,尽量使各状态之间转换时状态变量只有一位发生变化,防止多变量同时翻转带来的竞争冒险现象的发生。正向设计时在Modelsim中编译VHDL源代码,并且对其进行了仿真,然后利用SynPlify6.0软件工具进行的综合。2.门级综合、仿真RTL级HDL源代码经过综合后得到了门级电路网表,门级网表事实上仍然是对连接关系的映射,但是其中包括了门延时等物理信息。由于新增加了这些物理信息,需要对门级网表做门级仿真验证,也就是后仿真。通过后仿真可以检查电路是否因为门延时导致了设计偏差,如果出现错误必须要修改综合后的程序脚本,甚至修改RTL级源代码、HDL设计,最终使得设计完全通过RTL级和门级仿真验证。一般情况下,门级仿真时对应加入的门级延时为纳秒ns量级。如果可能的话,最好选用真实库的参数。图4一11累加器寄存器描述式电路图RTL级仿真后利用SynPlify6.0进行综合,并且将综合后的门级网表文件重新加入到Moddsim中。然后加上门延时参数,同时调用Synopsys公司的
MCS51单片机反向解剖以及正向设计的研究基本库单元组件开始做门级仿真。图4一11、图4一12分别给出了累加器寄存器综合后两种不同形式的电路图。图4一11体现了语言的描述形式,图4一12为综合后的门级电路图,图中I、H和m分别对应于箭头所指模块的内部门电路。图4一12累加器寄存器综合后的门级电路69第五章总结与展望1.总结微控制器MCU(MieroController)的设计是一项非常复杂的工作,目前我国还处于起步阶段。但是MCU是许多电子系统的核心部分,因此必须掌握其设技术和设计方法。本论文中,结合实际的MCS一51单片机芯片的反向解剖,研究了微控制器电路结构、工作特点,理解掌握了微控制器设计的多项关键技术,获得了宝贵微控制器设计的工业经验。同时,考虑到正向设计将是IC设计的一个主流方,而IPcore又是IC设计未来发展的趋势,因此基于VHDL语言进行MCS一51片机芯片的正向设计。到目前为止,完成了对反向解剖芯片的版图设计、电路提取及LVS验证;完成了对单片机内部功能电路的整理划分、功能分析;完了对MCS一51单片机指令(中断、MOVX指令除州的仿真;完成了正向设的结构划分、功能定义、VHDL源程序描述等等;完成了VHDL源程序的综,并利用MAXPlusll10.0将部分综合后程序下载到CPLD芯片中进行了试。预计到8月份,反向解剖的芯片将流片,并经过可靠性测试后投入大规模生。总之,通过各项努力,反向解剖的芯片即将投入市场,获得了一个可重复使的硬核模块。在此基础上,可以方便地完成类似功能芯片的设计。另外,也初完成了一个RTL级VHDL语言的软核模块。.工作展望本论文中对MCS一51单片机的软、硬核设计研究奠定了基础,进一步工作需要考虑如下几个方面:①掌握硬核中的微码控制思想:充分解读原有芯片的微码控制思想,并与时序、动作相结合,应用于译码模,从而大大减少综合后电路门数,节约芯片面积。②把硬、软核应用于系统中适当时候可以考虑把硬、软核嵌入到实际的应用系统中【39],这样不仅可以造出现实产品,还可以通过系统应用来进一步完善功能与性能。在嵌入式系统泛应用的今天【401,选择哪一个应用领域也是一个很重要的问题。致谢致谢首先,要衷心感谢我的导师吴孙桃副教授。在三年的学习生活中,吴老师不但为我提供了良好的学习环境,而且以高度的责任心、渊博的学识在许多方面给我教导和培养。吴老师严谨的治学态度、填密敏锐的科学思维和自由活泼的学术思想给我留下了深刻的印象,将使我终生受益非浅。自我入学以来,郭东辉教授就协助吴老师作为我的指导教师。在学习和生活中给予我很多帮助和支持,特别是郭老师刻苦的工作精神和锐意创新的科研风格使我大受裨益。在论文的准备、调研以及完成过程中,郭老师和我多次讨论,并给我很多指导性的建议,使我能够顺利完成整个工作,在此,特向郭东辉教授致以深深的谢意。感谢纪安妮老师在我读硕士期间对我的帮助和照顾,感谢沈额华教授和邢建力教授对我的论文进行了精心审阅,感谢吴伯嘻教授和刘瑞堂教授的帮助和支持。同时特别感谢曾权老师和播源星老师帮助我修改论文,并给我提出了许多中肯宝贵的意见。本论文的反向解剖部分是在厦门联创微电子有限公司的合作中完成的,在此,特别感谢联创的徐中佑教授和邢建力教授对我学习和工作上无私的指导,特别感谢柴智和贾卫华与我共同研究、解决工作中遇到的问题,以及董敏、杨紫胜、姜永红、邸鹏等,在和您们的讨论中,使我学到了许多新知识,同时也为本论文增加了不少内容。我还要感谢同教研室的吕迎阳博士、李立峰博士、刘年生、邓国川、倪祖荣、郑洪英、乐德广、播莉、蔡水成、林凡、杨永红、林小鹏、陈丽娟、张文茹、吴桂坤等,与您们的讨论促使我学业不断进步,与您们的友好相处使我有一个良好的工作环境。感谢所有关心和帮助我的人,您们让我度过了一个难忘的研究生生活。最后,感谢我的父母和亲人对我始终一贯的关心和爱护,感谢我的先生田髯生活上对我的体贴照顾和在学习上对我的支持鼓励,并谨以此论文作为珍贵的礼物献给我的先生。参考文献参考文献llj王阳元,二十一世纪硅微电子技术发展的主要趋势和方向,www.lwfree.cn,2001年4月{21BobSehallar.TheOrigin,NatureandImplieationsof“Moore’sLaw,,,ht冬p://www.a4vteeh.mierosoft.eom/researeh/bare/gr即/moore.law.html,1996【31IEEEDesignAutomationStandardCommittee,IEEEStandardHardwareDeseriPtionLanguagebasedonVerilogHardwareDeseriPtionLanguage,IEEE1996【41ModelsimEE/PLUSRefereneeManual,Version5.4ModelTeehnologyIneorPorated{51SynplieitySynthesisRefereneeManual.Version6.0,SynplieityIne.May2000【6]宋万杰、罗丰、吴顺君编著,CPLD技术及其应用,西安电子科技大学出版社,1999年9月{71MiehaelJohnSebastianSmith,APPlieation一SpeeifieIntegratedCireuits,May2000【81Miehaelpayer,ApproaehtoSystem一on一ChipDesignVSIAMemberMeeting,Au即st2000【9}魏少军,系统集成芯片及其设计方法学,2000年全国“百千万人才工程”微电子光电子技术高级研讨班论文集,2000年n月【10]胡永华,深亚微米理论及IP核设计技术的研究,博士学位论文【111王志华、邓仰东,数字集成系统的结构化设计与高层次综合,清华大学出版社,2000!121慈艳柯、陈秀英、吴孙桃、郭东辉,片上系统的设计技术及其研究进展,半导体技术,2001:7(12一16)【13}侯伯亨、顾新编著,VHDL硬件描述语言与数字逻辑电路设计,西安电子参考文献科技大学出版社,1999【141魏少军,21世纪的电信发展对集成电路技术的要求,半导体情报,2001:1(8一11),第38卷【15]何立民编著,MCS一51系列单片机应用系统设计系统配置与接口技术,北京航空航天大学出版社,19931161Intez,Mes仓51MieroeontrozzerFamilyuser,。Manual,orderN。:272383一002,February1994【171孙涵芳、徐爱卿编著,MCS一51/96系列单片机原理及应用,北京航空航天大学出版社,1994【18】陈剑、洪一,IC设计流程与技术实现,中国集成电路,2002:4(56一61)!19】P.E.艾伦、D.R.霍尔伯格,CMOS模拟电路设计,科学出版社,1995【201张建入,MOS集成电路分析与设计基础,电子工业出版社,1994【211张延庆、张开华、朱兆宗,半导体集成电路,上海科学技术出版社,19861221JanM.Rabaey,数字集成电路设计透视,清华大学出版社,1999{23]吴孙桃、慈艳柯、郭东辉,CMOS的异或电路设计与应用,半导体技术,20眼:7【24}洪先龙、刘伟平、边计年等,超大规模集成电路计算机辅助设计技术,国防工业出版社,1998[25]李玉山、来新泉、许东来等,电子系统及专用集成电路CAD技术,西安电子科技大学出版社,1997【26】0.6pm技术布局设计规则,无锡华晶上华半导体有限公司(WuxiCSMC一HJCo.Ltd.),2000【27}5.Oleoz、A.Castellvi、M.Gareia,ImprovingVHDLSoft一eoreswithSoftware一likeReviewsandAuditsProeedures,SantaClara,CA(VIUF’98),Mareh1998(143一146)【25】xEEE,IEEEstandardforVHDLRegisterTransferLevel(RTL)synthesis,eopyright必2000xEEE.拟1rightsreserved.【291朱正涌编著,半导体集成电路,清华大学出版社,2001【301IEEEIne.2076一93IEEEStandardVHDLLan即ageReferenceManual,NewYork,N.Y.,USA.,SePtember1993.5.MeiyaPPan、K.Jaramillo、P.Chambers,VHDLCodingStylesforReusable,SynthesizableDesigns,SNUG’99,Boston,Oet.7一81999钟旭恒、高明伦,基于数据通道流程图的硬布线控制设计,微电子与计算机,2001:52.Navabi,VHDL:AnalysisandModelingofDigitalSystems,MeGraw一Hill,1993吴玉平译,MCS一51微控制器系列用户指南,电子工业出版社,1995Mentor,Mode1SimSEPLUS5.5dRefereneeManual.Revision:2001.09,ModelTeehnologyIneorPorated,2001朱明程编著,现场可编程门阵列FPGA原来及应用设计,电子工业出版社,1994FarzadNekoogar,TimingVerifieationofAPPlieationSPeeifieIntegratedCireuits(ASICs),PrentieeHall,SePtember1999阎石主编,数字电子技术基础(第三版),高等教育出版社,1994IanPhilliPs,ChangingComPanyCulturefrom‘DesignforOneChip’to‘DesignforReuse’VLSIMembersMeeting,APril1999SeongmoPark、SeongminKim、lgk扣nKim、K扣ngjinB扣n、JinJongChaandHanjinCho,ASingle一ChiPVideo/AudioCODECforLowBitRateAPPlieation,ETRIJournal,Mareh2000,Volume
MCS51单片机反向解剖以及正向设计的研究USEieee.st走1091几1164·all:USEieee.numeric一d.all;ENTITYacc--reg15PORT(addresgb:INstd--l091。少ector(7DOW刊TOO):indirect--sel:INstd‘logic:int--rst:INstd--logie:rd-gb:INst走logie:wr--acc:INstd--logie;wr-名b:INstd‘logic;acc:OUTstd一loglcseVector(7DOWNT00):aCknow:OUTstd--logic:Parity:OUTst屯logic;data-名b:INOUTstd--loglc‘veeto叹7DOWNTOO));ENDace--reg;ARCHITECTUREsPeeofae几reg15SIGNALace_reg:std_logie_veetor(7DOWNTOO):SIGNALacc一sel:std_logie:BEG】NPROCESS(addr--gb,indireet--sel)BEGINIF((addr--gb=”11100000,,)AND(indiree仁sel=’0,))THENaeesel<=’l’;ELSEaccjel<=’0’;ENDIF;ENDPROCESS;PROCESS(Int--rst,w性b,acc-sel,w几aee)BEGINIF(int--rst=’1’)THENaec一reg<=”00000000,,:ELSIF((wr-名b=’l’ANDaec--sel=’1’)OR(w几ace=’l’)aCc-reg令data‘gb:ELSEacc--reg<=acc--reg;附录B累加器ACC的部分源代码ENDIF;ENDPROCESS;PROCESS(rdjb,aec--sel)BEGINIF(rdeegb”’l’ANDaec--sel=’1’)THENdata--gb<=acc一reg;ELSEdata--gb<=,,22222222,,:ENDIF;ENDPROCESS;PROCESS(acc一sel)BEGINIF(dat屯gb=acc一regANDace_sel=’l’)THENaeknow<=’l’;ELSEaeknow乍’Z,;ENDIF;ENDPROCESS;acc<二acc_reg;Parity<=(acc--reg(7)XORaee一eg(6))XOR(acc-reg(5)XORacc--re(aec--reg(3)XORac叮eg(2))XOR(acc--reg(l)XORacc-ENDsPec;附录C仿真测试程序之一LIBRARYieee;USEieee.std_logie_1164.all:USEieee.numeric_std.all:USEwork.timing-Paek.all:ENTITYtest一acc--reg15ENDtest--acc一eg;ARCHITECTUREsimloftes七ae几reg15COMPONENTacc--regPORI,(addr--gb:INstd--logic--veetor(7DOWNTOO);indireet--sel:INstd_logie:in甘Ik:INstd--logic;int-rst:INst走logie:rd一b:INst走fogic;Wr--acC:INstd--logie:wr一gb:INst走logie;acc:OUTst走logie一eetor(7DOWNTOO):ae知ow:OUTstd_logie:Parity:OUTst走logie:data‘gb:INOUTstd_logie_vector(7DOWNTOO));ENDCOMPONENT;CONSI认NTelkescyele:time:=200ns;SIGNALtes仁addr‘gb:std_logie_veetor(7DOWNTOO);SIGNALtest--indiree七sel,test--int--elk:std_Iogic:SIGNALtes七int--rst,test--rd一b,test一w几aee,tes仁wr--gb:std_logic;SIGNALt--aee:std_1091处veetor(7DOWNTOO):SIGNALt--aeknow:std_logie:SIGNALt--Parity:std_logic:SIGNALtt‘data-gb:std--logie少eetor(7DOWNTOO);BEGINuo:acc--regPORTMAP(addr--gb=>tes仁add几gb,indireet--sel办tes仁indireet--sel,int--clk=>test--int--clk,int--rst冷tes仁in仁rst,rd一b办tes七rdjb,wr一acc=>tes仁wr--acc,wr-gb”>test--wr一gb,acc=>t一acc,aekno、v二习-acknow,附录C仿真测试程序之一parity=>仁parity,data-另b=>tt--data-名b);PROCESSBEGINtest--int--clk<=.1’:认叭ITFORelk--pycle/2:tes口nt--cIk<=.0,;场人ITFORelk--cycl叭;ENDPROCESS;PROCESSBEGINtest--addr--gb<=,,11100000,,:test--indirect--sel<==,0,:testintrst<=11’;test--Wr-名b<=.0’;test--Wr--acc<曰0’;test--rd-多b<==.0,;W人ITFOR200ns;tes仁addt』b令,,11100000,,:test--indirec沙el令,O,:test--int--rst<=,0’;test--w几gb“,1’;test--Wr--ace<=,0,;tes七rd--gb<=,0,;认叭ITFOR200ns;test--addr--名b“,,11100000,,:test--indirect--sel<=,0,:test--int--rst<=,0’;test--w几gb令,0’;test--.wr--acc<=,0’;test--rdjb<=.1’;认叭ITFOR200ns;test--add性b李,,11100000,,:test--indirec妙el<=t0,:test--int--rst<=勺,;test--wl’--gb<=,0’;test--wr--acc<=10,;test--rd--gb夺,1’;脚叭ITFOR200ns;ENDPROCESS;ENDsiml;79附录D硬核仿真的部分程序源代码C:0x0000C:0X00D3C:0X0006C:0x000BC:D盆000AC:Dx00DCC:ox00DEC:D盆0010C:0x0012C:0盆0015C:0X0016C:0盆0DI日C:0x0019C:oxO01BC:0X001DC:0X0020C:0X0D21C:0x0022C:0x0025C:0x0026C:0盆0028C:0X0029C:D盆002AC:OX002BC:0盆002EC:ox0030C:OX0031C:DX0034C:Dx0036C:0器003BC:D盆0039C:D器003AC:D北OD3BC:0x003CC:D盆003DC:OXOD3E753D7775F06BCD30COFODD30DOFOE53074019D10009374FFB37823792475AODDE2E3900025E074EEF2F3FD90003474027375FOCC74D3740500D000000D0000MOVMOVPUSHPUSHPOPPOPMOVMOVMOVMOVCMOVMOVCMOVMOVMOVMOVXMOVXMOVMOVXMOVMOVXMOVXMOVXMOVMOVJMPMOVMOVMOVNOPNOPNOPNOPNOPNOPNOPox3D,#0x77B(DxFD),#0x680盆3DB(oxFO)DX30B(DxFO)A,Dx3DA,#0x01DPTR,#oxID00A,回A+DPTRA,#DxFFA,@A+PCRD,#0x23Rl,#Dx24PZ(DxAO),#0x00A,@ROA,回RlDPTR,#0x0025A,@DPTRA,#DxEE@RO,A@Rl,A@DPTR,ADPTR,#OxDD34A,#Dx02回A十DPTRB(oxFO),#oxCCA,#D蕊03A,#Dx05附录D硬核仿真的部分程序源代码