关闭

关闭

关闭

封号提示

内容

首页 八位微控制器IP核的设计与FPGA原型验证研究.pdf

八位微控制器IP核的设计与FPGA原型验证研究.pdf

八位微控制器IP核的设计与FPGA原型验证研究.pdf

上传者: xl46512 2012-05-08 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《八位微控制器IP核的设计与FPGA原型验证研究pdf》,可适用于IT/计算机领域,主题内容包含山东大学硕士学位论文八位微控制器IP核的设计与FPGA原型验证研究姓名:霍芳申请学位级别:硕士专业:电路与系统指导教师:王祖强原创性声明本人郑重声明符等。

山东大学硕士学位论文八位微控制器IP核的设计与FPGA原型验证研究姓名:霍芳申请学位级别:硕士专业:电路与系统指导教师:王祖强原创性声明本人郑重声明:所呈交的学位论文是本人在导师的指导下独立进行研究所取得的成果。除文中已经注明引用的内容外本论文不包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研究作出重要贡献的个人和集体均已在文中以明确方式标明。本声明的法律责任由本人承担。论文作者签名。伊日期:关于学位论文使用授权的声明本人完全了解山东大学有关保留、使用学位论文的规定同意学校保留或向国家有关部门或机构送交论文的复印件和电子版允许论文被查阅和借阅本人授权山东大学可以将本学位论文的全部或部分内容编入有关数据库进行检索可以采用影印、缩印或其他复制手段保存论文和汇编本学位论文。(保密论文在解密后应遵守此规定):眵聊签名瞥日期:卑缈山东大学硕士学位论文摘要口复用技术是SOC设计的核心技术使芯片设计变得快捷设计风险也大为降低。八位微控制器IP核是SOC设计中应用最广泛的一类嵌入式核。本课题所设计的SDUM微控制器口核采用哈佛结构指令集与Microchip公司的PIClC完全兼容可以广泛应用于工业控制、汽车、仪器仪表、家用电器等系统中。本文在对PIClC系统结构、指令集和系统时序进行仔细分析的基础上进行了系统划分和各模块的RTL级代码设计。整个微控制器系统被划分成控制通路和数据通路两部分每个子模块都进行了精心的设计部分模块还进行了特别优化。设计中尝试使用DesignWare库中的m模块对设计进行了优化取得了显著的效果数据通道模型的设计使数据通道的设计变得简单快捷Auu采用了低功耗设计方法设计数据存储器时考虑到布局布线时的总线扇出采用了分级输出思想。在设计的验证方面对FPGA原型技术进行了深入的研究制定了详细的验证策略搭建了FPGA验证硬件平台。探讨了Flash存储器的在线编程问题利用FPGA实现了对Flash的在线编程遵照FPGA原型实现流程对设计进行了仿真、综合和布局布线对边界扫描测试技术进行了研究开发了用于FPGA边界扫描测试的软件。在设计和验证的过程中使用了一系列的EDA工具包括Altium公司的ProtelDXPSynopsys公司的VCS和DesignCompilerMentorGraphics公司的ModelsimSynplicity公司的SynplifyPro以及A|tera公司的QllarhlsII等。SDUM采用精简指令集易于学习和使用可广泛应用于低功耗、高性价比的控制领域。本课题的研究为日后开发更复杂的微控制器积累了经验奠定了坚实的知识基础。关键词:微控制器IP核FPGA原型验证边界扫描山东大学硕士学位论文ABSTRACTIPcorereusetechnologyisthetechnicalcoreofSOCdesign.Itleadstosimplechipdesignshorttimetomarketaswellaslessfailurerisk.bitMCUIPcoreisoneofthemostpopularembeddedcoresinSOCdesign.SDUMMCUIPcoreusesHarvardarchitectureandemploysaninstructionsetwhichisfullycompatiblewithMicrochip'sPIClC.ItcallbewidelyusedinthefieldofindnstrialcontrolautomobileinstrumentationandapplianceandSOon.BasedOilcarefulanalysisofsystemarchitechtureinstructionsetandsystemtimesequenceofPIClC.thethesisgivesadescriptionofsystempartitionandRTLcodingofeachmodule.n埔coreispartitionedintotwopartswhicharecontrolunitsanddatapathunits.Allmodulesareelaboratelydesignedandsomearespeciallyoptimized.Synopsys’DesignWarelibraryisusedforcriticalpathimprovementandtimingoptimization.ThedatapathmodelmakesdesignofdatapathfastandsimpleALUisoptimizedusingoperandisolationtechniqueforpowerreduction.FourlevelreadschemeisadoptedforGeneralPurposeRegisterdesigninordertoreducethefanoutofthedatabus.Astoverification,muchresearchisfocusedonFPGAprototypetechnology.Aftermakingadetailedverificationstrategy,FPGAverifationplatformisbuilt.FPGAontheplatformisalsousedtoprogramtheflashtomsolvingtheproblemofonlineconfiguration.AfterbuildingtheFPGAplatformsimulation,logicsynthesisPlaceRouteareperformedtocompletetheFPGAprototype.ForFPGAtesting,boundarySCantesttechnologyisused.Duringthedesignandverification,manyEDAtoolsareusedincludingAltium’SProtelDXP,Synopsys’VCSandDesignCompiler,MentorGraphics’Modelsim,Synplicity’SSynplifyProandAltera'sQuartnsII.皿eresearchofthisthesiswouldnecessarilycontributetothedevelopmentofmorecomplexMCUIPcores.Keywords:MCUIPcoreFPGAPrototypingBoundaryscan山东大学硕士学位论文SoCRISCIPMCUVSIAVLSIEDAWDTASICRoMRAMHDLRTLPLAFPGAPLLESBLUTmGTCLICESMTWSIMCMBSTBSC符号说明SystemOnaChip片上系统ReducedInstructionSetComputer精简指令集计算机IntellectualProperty知识产权MicroControllerUnit微控制器VirtualSocketInterfaceAlliance虚拟插座接口联盟VeryLargeScaleIntegration超大规模集成电路ElectronicDesignAutomation电子设计自动化WatchDogTimer看门狗定时器ApplicationSpecificIntegratedCircuit专用集成电路ReadOnlyMemory只读存储器RandomAccessMemory随机存储器HardwareDescriptionLanguage硬件描述语言RegisterTransferLevel寄存器传输级ProgrammableLogicArray可编程逻辑阵列FieldProgrammableGateArray现场可编程逻辑器件Phaselockedloop锁相环EmbeddedSystemBlock嵌入式系统块LookUpTable查找表JointTestActionGroup联合测试行动小组ToolCommandLanguage工具命令语言InCircuitEmulafion板级验证SurfaceMountTechnolo翻i表面贴装技术WaferScaleIntegration圆片规模集成Multi.ChipModule多芯片组件BoundaryScanTesting边界扫描测试BoundaryScanCell边界扫描单元山东大学硕士学位论文.引言第一章绪论集成电路(IntegratedCircuit)的发展已经经历了多年的历史表卜l给出了集成电路产业发展的主要里程碑。世界上第一个晶体管诞生十年后年美国的Kilby发明了第一块集成电路仅由四个晶体管组成。年Intel公司研制成功位微处理器集成了个晶体管。五年后第一台个人计算机(Pc)在Apple公司诞生:世纪年代初计算机主机制造商IBM公司也参与了Pc的生产。在以后的多年PC得到了日新月异的飞速发展。事实上计算机从最初的主机(Mainframe)时代已进入到PC时代。与此同时Intel公司专注于微处理器产品的研究和发展很快成为集成电路工业的最大赢家。如今Intel的Pentium芯片包含有万个晶体管。表卜集成电路产业发展的主要里程碑时间主要里程碑发明晶体管发明集成电路Moore定律Intel位微处理器ARMRISCIP内核(无芯片设计)虚拟插座接口联盟VSIA成立集成电路发展如此迅速是否有规律可循呢早在年Intel公司的创始人之一GordenE.Moore根据经验观察提出了著名的Moore定律指出半导体芯片的元件数大致每个月会翻一番。到年他将这一定律进行了进一步修正预言元件数翻番的时间大约为两年。后来实践证明大致每个月芯片的元件数会翻一番。Moore定律所讲的翻一番除了指芯片规模(存储器位数、晶体管数)外也适用于芯片的性能(如每秒百万指令执行速度MIPS)。按照Moore定律每个芯片的晶体管数愈来愈多很自然会想到不只是追山东大学硕士学位论文求单个微处理器功能的提高而是可以把整个系统集成到一个芯片上。也就是将系统电路板上的多个芯片集成到一个芯片上而取代原来的电路板这就是片上系统(SystemOnaChipSOC)。年ARM公司推出RISCIP内核这是一种无芯片的设计可供SOC设计使用的知识产权内核(IntellectualPropertyCore)。这样到世纪年代中期出现了SOC概念。年由多家公司联合成立了虚拟插座接口联盟(VsIA)为解决如何将多个m内核集成为一个SOC芯片的问题制定了各种相关工业标准o。.SOC与IP技术..基于IP复用技术的S(设计f互互Lf山东大学硕士学位论文电路工艺进入深亚微米时期使单位面积硅片上可以集成的晶体管数量大为增加在集成度因深亚微米技术上升到一个新阶段之后把一个百万门规模的系统集成到一块很小的硅片上已成为可能。所以深亚微米技术为SOC的实现提供了最基本的条件。SOC的核心技术是口复用基于可重用Ⅲ的SOC设计方法的出现成为集成电路设计历史上的一次飞跃是当今集成电路设计方法学的主要研究方向。SOC设计将完成对所有准备使用的口核进行接口互连、时序排列、综合方式选择、功耗估计等工作。p复用技术使芯片设计变得更为快捷设计风险也大为降低t。..IP技术IP(IntellectualProperty)原意指知识产权在IC设计领域则是指预先设计好的实现某种功能的设计。IP核则是指完成某种功能的虚拟电路模块也称之为虚拟部件。最早的m核开发是为了提高设计效率、减少设计风险将设计成熟、经工艺验证并已优化的设计模块建库提供给需要相同功能电路的设计使用。当今集成电路的迅速发展和SOC复杂性的提高给口核的开发带来了巨大的商业机遇促使皿核成为一种商品m技术也成为IC业界广泛关注的焦点。IP核的种类有很多例如DSP、存储器、总线和接口电路、RF电路、模拟电路、数字模拟混合电路等。根据递交的方式不同口核又被分为软核(SoftCore)、硬核(HardCore)和固核(FirmCore)。软核一般是指以可综合的RTL级描述提交的核。由于软核不依赖于最终的实现工艺因此具有很大的灵活性使用者可以非常方便地将其映射到自己所使用的工艺上可复用性最高。此外软核的使用者完全拥有源代码使用者可以通过修改源代码并对源代码进行优化生成自己的软核。但软核也有其不足之处软核所提供的是RTL级描述用户要将它嵌入到自己的设计中就必须对从RTL到版图的转换全过程负责大大增加了设计的复杂性。同时核的性能在这种转换过程中也难以得到保证。硬核一般是指以电路版图形式提交的核。硬核总是与特定的实现工艺相关而且核的形状、大小以及核的端口的位置都是固定的。因此它的灵活性最小可复用性最低。正是因为硬核具有不可更改性所以它的性能最稳定可靠性最高。山东大学硕士学位论文固核处于软核和硬核之间一般以门级网表的形式提交。固核通常对应某一特定的实现工艺因此与软核相比它的性能更加可靠。固核一般由使用者来完成布局布线因此核的形状、大小以及核的端口的位置都是不固定的与硬核相比它有更大的灵活性。但是固核也有其自身的弱点即它与实现工艺的相关性以及网表的难读性。与实现工艺的相关性限制了固核的使用范围而网表的难读性使得一旦用户在布局布线过程中出现时序违反如何排除它就显得非常困难J。.微控制器在集成电路产业发展的主要里程碑里我们可以清晰地看到微控制器所占据的重要位置。MCU(MicroControllerUnit)是在一块硅片上集成了微处理器存储器和各种输入、输出接口具有一台计算机的属性因而也被称为单片微型计算机简称单片机。自世纪年代问世以来微控制器就以其极高的性价比受到人们的重视和关注所以应用广泛发展很快。微控制器的优点是体积小、重量轻、抗干扰能力强、对环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。微控制器在工业自动化控制、自动检测、智能仪器仪表、家用电器等各个领域都有着广泛的应用。在我国位MCU是市场的主流产品被广泛应用在国民经济建设和国防建设的各个领域据我国专家估计如今占市场的%。从家中的各种电器、遥控器、PC的鼠标、键盘到汽车的控制再到写字楼的安防设备位MCU无处不在。随着生活中智能控制产品越来越多位MCU市场稳步增长其中汽车电子和消费类电子将是MCU的最大的市场。据统计我国的微控制器年用量己达亿片且每年以大约%的速度增长但是迄今为止中国市场上的主流微控制器产品均来自国外厂商这就使得开发拥有自主知识产权的微控制器变得尤为重要。在SOC设计中微控制器口核也是应用最广泛的一类嵌入式核几乎在所有的系统应用中都能看到微控制器的影子。微控制器核具有很高的通用性和灵活性在微控制器软核的基础上通过指令集、内部电路、软件程序以及外围电路的变化和扩展可以将其应用于各种嵌入式系统。山东大学硕士学位论文.课题工作意义本课题(SDUM)的设计具有重要的意义:()从IP设计技术层面看本课题按照自顶向下的设计方法从系统级结构和模块划分到硬件语言描述、综合、仿真、版图等掌握了m正向设计的基本方法探究了多种EDA工具的使用积累了宝贵经验。()从RISCMCU设计技术层面看通过本课题的设计过程了解并掌握了RISC指令系统MCU的体系结构设计掌握了控制通路、数据通路等关键部分的设计方法。()从嵌入式系统设计技术层面看集成电路发展已进入SOC时代微控制器是嵌入式系统的核心并被广泛地应用于各个领域。本课题的设计也为基于口复用技术的SOC设计积累了经验。()从市场应用层面看位微控制器是目前市场上同类产品中占市场份额最大的一块且符合我国集成电路当前的设计水平以它作为参与市场竞争的突破口来提高企业的市场竞争能力和技术创新能力是一个切实可行的方案。.论文研究内容及创新本文的主要研究内容包括以下几部分:()对所兼容微控制器PIClc的系统结构及指令集进行认真分析、研究确定系统的结构和模块的划分。()完成各模块的RTL级编码和功能仿真。()研究FPGA原型验证技术搭建FPGA验证平台制定详细的验证方案。()开发微控制器验证程序研究边界扫描测试技术对微控制器IP核进行FPGA验证。在SDUM的设计、验证过程中本文作者在阅读大量文献对已有方法进行认真分析和比对的基础上探索使用新的方法解决了设计中出现的一些问题。其中包括:使用DesignWare库优化设计解决困扰课题组很久的关键路径问题探讨了Flash在线编程的实现提出一种节约资源的有效实现方法开发边界扫描山东大学硕士学位论文测试软件使用边界扫描测试技术实现对FPGA的测试。.论文结构本论文包括五章内容:()第一章绪论介绍SOC与口技术概述微控制器最后介绍了课题的工作意义、论文主要内容和创新点。()第二章SDUM微控制器内部结构与指令系统介绍了SDUM的主要功能特点、内部结构和指令系统。()第三章SDUM微控制器系统划分与模块设计详细描述了SDUM的系统划分和各组成子模块的设计。()第四章FPOA验证平台与验证方案设计介绍了FPGA验证技术描述了验证平台的硬件组成和详细的验证方案。()第五章FPGA验证实现主要描述了对设计进行FPGA验证的过程以及边界扫描测试技术的使用。()第六章总结与展望对所做工作进行了总结并对后续工作进行了安排。山东大学硕士学位论文第二章SDUM微控制器内部结构与指令系统.主要功能特点FOAFOBFOC图SDUM内部结构图为了方便实际应用SDUM的设计以Microcllip技术公司的PIClC作为参考采用了与PIClC完全兼容的指令系统具有如下主要功能特点:采用精简指令集(RISC)仅条指令指令字长位全部指令都是单字节指令除程序分支指令外(如CALL、GOTO等)其余指令都是单周期指令工作频率为DC~MHZ系统采用哈佛结构数据总线和指令总线分开数据总线宽度为位指令总线宽度为位个内部寄存器(RAM)个特殊功能寄存器级子程序堆栈低功耗模式(SLEEP)内部复位电路山东大学硕士学位论文内部自振式看门狗(wDT)内部一个位实时时钟/计数器(I汀cc):根双向可独立编程I/O口。每根I/O口都可由程序来编程决定其输入、输出方向e.内部结构SDUM的内部结构如图所示其总线结构采用哈佛结构。程序总线和数据总线分开指令和数据可以同时读取便于使用流水线设计提高执行效率。SDUM采用两级流水线取指和指令执行可以重叠进行除程序跳转指令外的所有指令都可以在一个周期内完成。..程序存储器(ROU)及堆栈SDUM的程序存储器采用分页结构共分为页每页长O.K页面地址由状态寄存器的PA、PAl位确定。需要跨页跳转时(如CALL、GOTO指令)必须根据要跳转去的页面把PA、PAl置成相应的值。SDUM设有两层堆栈供子程序调用。涉及堆栈操作的指令有两条:CALL指令和RETLW指令。()子程序调用指令(CALL):第一次执行CALL指令时PC值加l后被推入堆栈l堆栈原有的内容则被推入堆栈中。这时子程序中还可以再做一次子程序嵌套即再执行一次CALL指令。如果接连执行超过两条的CALL指令堆栈中将只保存最后的两个返回地址。当执行一条CALL指令时状态寄存器的页面寻址位PAl、PA将被置入PC的最高两位而PC的第位总是被置为。()返回指令(RETLW):当执行RETLW指令时栈项(堆栈)的值写入PC堆栈的值置入堆栈。同时指令中的立即数被放入工作寄存器中。子程序总是返回到调用它时所在的地方不管它处在哪一页面也不管PA、PAl这时是指在什么页面。执行RETLW指令并不会改变PA、PAl的值因此当从跨页面的子程序调用返回时需要把PA、PAl恢复为调用前的值。..数据存储器SDUM的数据存储器包括特殊功能寄存器和通用寄存器。数据存储器的每山东大学硕士学位论文个存储单元可以看成一个寄存器整个RAM可以看成是由个位寄存器单元组成的寄存器组其中BANK中H.H为特殊功能寄存器负责特定工作。通用寄存器用于数据和控制信息的暂存相当于一般意义上的RAM数据存储器分为四个BANK由FSR:进行选择。数据存储器结构如图所示。lllINDFHHHRTCCPCLSTATUS刀FSRPORTA/映射到BkoPORTB\PORTC\通用寄存器FHFHFHHHHH通用寄通用寄通用寄通用寄存器存器存器存器FHFSFHFHBankOBanklBankBank图SDUM数据存储器结构图由于SDUM指令少结构简单所以特殊功能寄存器只有个下面逐一进行介绍。、间接寻址寄存器(INDF)和寄存器选择寄存器(FSR)间接寻址寄存器INDF是一个非物理寄存器寻址INDF意味着间接寻址实际地址为FSR中的内容。FSR(FileSelectRegister)是一个位寄存器它和INDF一起用于对数据存储器的间接寻址。直接寻址时寄存器的地址的低位来自指令本身地址的高两位即Bank选择位由FSR寄存器的第、位决定间接寻址时FSR的低位就是地址的低位FSR的第、位是Bank选择位。、实时时钟/计数寄存器(RTCC)RTCC(TMRO)寄存器是一个位计数器。和其它寄存器一样可以由程序进行读写操作。它用于对外加在RTCC引脚上的脉冲计数或对内部时钟计数(起山东大学硕士学位论文定时器的作用)。RTCC的工作状态由OPTION寄存器控制。RTCC对其输入脉冲信号的响应延迟时间为个机器周期。、程序寄存器(PCL)程序计数器PC用于存放指令在程序存储器中的地址。本文中PC的宽度为位能够寻址KB的程序存储器空间。程序寄存器PCL是PC的低位。RESET时PCL的各位全置为“l”。除非执行地址跳转指令否则执行一条指令后PC的值会自动加l指向下一条指令。下面的这些指令可能直接改变PC的值:()GOTO指令:可以直接改变Pc的低位状态寄存器的PAl、PA两位将置入PC的最高两位。所以GOTO指令可以跳转到程序存储器的任何地方。()CALL指令可以直接改变Pc的低位并将PC的第位清零PAl、PA两位将置入PC的最高两位。()RETLW指令:把栈顶(堆栈)的值写入PC中。()MOVWFF指令:把w寄存器中的内容写入PCL。()ADDWFF指令:把PCL值加l后再和w寄存器的值相加结果写入PCL。’在()、()、()中PC的第位总是被清为用这三条指令来产生程序跳转时要把子程序或分支程序放在程序存储器每一页的上半部分地址处。、状态寄存器(S仉盯us)R/WR/WR/WRlR/WxR/WxRfWxbitlbit图STATUS状态寄存器STATUS寄存器的各位安排如图.所示各位的意义如下:PA:保留位。PAlPA:程序存储器页面选择位。TO:WDT溢出标志位。系统上电或执行CLRwDT与SLEEP时为WDT溢出时为。PD:掉电标志位。上电或CLRWDT指令后为SLEEP指令后为。山东大学硕士学位论文z:零标志位。算术运算或逻辑运算的结果为零时置l。DC:辅助进位/借位标志。ADDWF指令时低位向高位有进位则置SUBWF指令时低位向高位有借位则置。c:进位/借位标志。ADDWF指令最高位有进位则置SUBWF指令最高位有借位置RRF或RLF指令此位与操作数一起参与移位操作。SDUM可以由多种方式引起复位。PD和TO两位可以用来判断造成RESET的原因。各种RESET后的PD和TO位的状态如表.所示。表RESET后的PD和TO的状态TOPDRESET产生的原因OWDT溢出唤醒SLEEPlWDT溢出(非SLEEP状态)OMCLR复位唤醒SLEEPll芯片上电XXMCLR复位(非SLEEP状态)判断RESET的原因有时是很有必要的。如在对系统初始化时经常需要判断这次复位是否是芯片上电引起的。如果不是上电复位则不用再次进行初始化。、端口寄存器(PoRTA、PORTB、PORTC)和其他寄存器一样端口寄存器可以通过指令来进行读写。PORTA是位I/O端口寄存器。只能使用其低位高位读出时总是为“”。PORTB和PORTC都是位I/O端口寄存器除了上述个特殊功能寄存器以外SDUM内部还有个特殊的寄存器。l、工作寄存器(w)w寄存器是一个八位的不可寻址的寄存器用来存放两操作数指令中的第二个操作数或用以进行内部数据传送。通常情况下对于两操作数指令一个操作数来自W寄存器另一个操作数为立即数或来自数据存储器。ALU把w和数据存储器RAM连接起来ALU的运算结果通过数据总线可以送到w寄存器保存。、参数寄存器(PTIoN)OPTION寄存器是一个不可寻址的寄存器本身是一个位寄存器但是只用山东大学硕士学位论文了其中的低位。执行OPTION指令可以对OPTION寄存器进行设置此时工作寄存器w中的数据被置入OPTION寄存器中。复位时OPTION寄存器低位全部置“”。U.U一W.W二lWlWWlWIbitbit图OPTION参数寄存器参数寄存器各位的安排如图.所示。各位的意义如下:()TOCS:RTCC时钟源选择位O:使用内部指令时钟l:使用TOcⅪ引脚上外部输入时钟。()TOSE:RTCC时钟触发沿选择位:TcⅪ引脚上上升沿触发:TcⅪ引脚上下降沿触发。()PSA:预分频器分配选择位O:预分频器分配给RTCC:预分频器分配给WDT。()PSPS:预分频器比率选择位不同的值所对应的预分频器的分频率见表。表预分频器分频比率表PS一PSRTCC分频比WDT分频比PS.PSRTCC分频比WDT分频比l:l:ll::::l:l:::lO::ll::llll::、I/o控制寄存器(TRISATRISBTRISC)TRISA、TRISB、TRISC分别对应I/O口A、B、c。其中TRISA只有位和A端口对应。执行“TRISf’指令可把w寄存器中的值置入I/O控制寄存器以此来定义各I/O端口的输入输出状态。当写入“”时将相应的I/O端口设置为输入状态当写入“”时将相应的I/O端口设置为输出状态。I/O控制寄存器都是只写寄存器在RESET后自动置为全“I”即所有I/O端口都处于输入状态。..其他功能部件为了适应实际应用的需要SDUM微控制器还集成了一些特殊的功能部山东大学硕士学位论文件这些功能部件对于提高系统的可靠性减少组成系统时的外围器件降低系统成本起着非常重要的作用。下面对这些特殊功能部件进行一一介绍。、看门狗WDT看门狗WDT是一个片内自振式的RC振荡计时器无需任何的外接元件。这意味着即使芯片上系统工作主时钟振荡停止了(例如执行指令SLEEP后)WDT仍然保持计时。WDT计时溢出将使系统复位。WDT一般用来防止系统运行失控。在正常情况下WDT应在计时溢出前被CLRWDT指令清零以防止产生复位。如果程序由于某种干扰而失控那么就不能在WDT溢出前执行cL刚v【)T指令就会使WDT溢出而产生复位从而使系统重新启动运行而不至于失去控制。可以通过状态寄存器的TO位来判断复位是否由WDT溢出所造成。如果使用WDT编程时一定要特别考虑在程序的适当地方放置CLRWDT指令以确保在所有正常运行过程中WDT在溢出前能被清零。否则会造成芯片不停地产生复位使系统无法正常工作。、复位电路SDUM微控制器有五种不同的复位方式:上电复位(POR)、正常工作状态下MCLR引脚复位、休眠状态下MCLR唤醒复位、正常工作状态下WDT复位和休眠状态下WDT唤醒复位。系统是由什么复位方式造成的复位可以通过STATUS寄存器的PD位和TO位来判断。、低功耗模式(SLEEP)执行SLEEP指令控制器进入低功耗工作模式。这时系统主时钟停止工作WDT被清零然后重新开始计数。状态寄存器的PD位清零TO位置。所有I/O口保持原来的状态。SLEEP可被WDT溢出唤醒或在MCLR端加低电平唤醒。.指令系统..指令集sDu.JⅥ采用了与PIClC完全兼容的指令集仅条指令寻址方式简单。指令的宽度是固定的位由操作码和操作数组成。除了条件测试指令和程山东大学硕士学位论文序分支指令为双周期指令以外其他所有指令都为单周期指令。按照指令格式的不同可以把所有指令分成三大类哳:l、面向字节操作类这类指令共有条包括数据传送、算术和逻辑运算、数据移位和交换等操作。它们的操作都是在w寄存器和数据寄存器f:问进行其指令码结构为:高位是指令操作码。第六位d为方向位。d=l则操作结果存入f.d=则操作结果存入w。低位是数据寄存器的低五位地址。数据寄存器的高两位地址由寄存器选择寄存器FSR决定。、面向位操作类这样的指令共有条指令码结构为:高位是操作码。bitbit是位地址(可寻址个位)bit.bit是寄存器地址。、常数操作和控制操作类共有条指令码基本结构为:高四位是操作码低位是常数K。需要特殊说明的是对于GOTO指令常数K的位数为位。至于指令寻址方式SDUM支持直接寻址、寄存器间接寻址、立即数寻址和位寻址四种指令寻址方式。..工作时钟和指令周期SDUM的系统主时钟elk频率为MHz主时钟在内部被四分频产生四相不重叠工作时钟(clkl、clk、clk、elk)如图所示。一个指令周期由四个工作时钟周期组成(包括clkl、clk、clk和clk)。指令的取指和执行采用两级流水线结构取指占用一个指令周期译码和执行则占用另外一个指令周期山东大学硕士学位论文但是因为取指和指令执行可以重叠进行所以从宏观上看每条指令只占用了一个指令周期大部分指令都是单周期指令。只有程序跳转指令才需要两个周期这是因为跳转指令引起了程序计数器的改变从而使预取指的指令操作码变为无效。clklclkldldIclkfclkllclkIclkIclkIclklIelklelkIelklclkelklclkClkclk:厂T可雨磊西一n!一一一n{.墼堂上型|.鋈塞她裂biii}}指令译码I』“::rrr:山东大学硕士学位论文第三章sDuM微控制器系统划分与模块设计在系统划分时SDUM被分为控制通路和数据通路两大部分如图所示。控制通路部分负责系统的时序产生读取指令并进行指令译码为数据通路提供控制信号控制数据流动的方向以及数据通路的选择是微控制器的指挥中心。而数据通路部分是在控制信号的控制下完成数据的读取、处理和存储实现指令的功能。l程翠器}=爿指令寄存器fd鬻’rJ算术逻辑剥程序=指令译码L冷单元上Am。一通用叫存器lt叫定勰器H竿I控制通路数据通路图微控制器系统结构划分.SDUM控制通路设计控制通路部分主要由时钟模块、复位模块、指令寄存器模块、指令译码模块、看门狗定时/计数器模块、程序计数器堆栈模块组成。..时钟模块此模块主要是实现对系统主时钟的四相分频产生四相不重叠工作时钟实现分频的方式很多如计数器、移位等。因计数器方式的分频结果容易产生毛刺不如移位方式的分频结果好故而采用移位的方式实现。此模块采用了四位移位寄存器进行设计将四位移位寄存器的输出定义为:elklelkelkclk其复位状态设置为在系统时钟有效沿到来时进行移位输出顺序为:山东大学硕士学位论文.>一>>>从而产生系统工作所需的四相不重叠时钟。另外还引入sleepmode输入信号实现了SLEEP工作模式即在sleepmode有效时关断工作时钟使系统进入睡眠状态。..复位模块图复位电路结构框图复位模块的主要功能是产生其他模块所需要的复位信号。此模块包含模拟部分前期设计中只使用合理的数字信号主要包括上电复位信号poweronreset、复位端复位信号MCLRReset和看门狗溢出信号WDTTimeout。输出一个系统复位信号ChipReset即其他模块中使用的reset信号。复位电路结构如图.所示。..指令寄存器模块dkelkdk..ores吐imtreglf【eseti脚tregao.些kromdatal:ol|mgprt《ll:ol图指令寄存器结构实现图指令寄存器负责从程序存储器中取出指令并把此指令保存一个指令周期使指令译码模块在指令周期的任一时刻均可得到指令信息译码产生相应的控制信号。为了实现两级流水结构此指令寄存器采用两级结构由两个位寄存器组成如图.所示。在每个指令周期指令寄存器的第一级寄存器从程序存储器中取出指令下一个指令周期指令由第一级寄存器进入第二级寄存器指令输出至译码模块迸行指令译码并执行。山东大学硕士学位论文为了实现双周期指令操作此模块引入了skip信号此信号为双周期操作中的空操作标示信号来自指令译码模块执行双周期指令时有效。当指令寄存器的第二级寄存器检测到skip信号有效时第一级寄存器预取指的指令被清零插入NOP空操作指令指令寄存器也输出空操作指令。..指令译码模块图指令译码模块实现结构图指令译码模块对来自指令寄存器的位指令进行译码产生一系列的控制信号。这些控制信号包括:寄存器读写控制信号、ALu操作选择控制信号、立即数操作控制信号、判断和转移控制信号等。指令译码器有随机逻辑译码和结构化译码两种常用实现方式。随机逻辑译码即硬连线译码是根据控制的要求直接用组合逻辑来实现。这种方式具有较快的运算速度面积最小对当前指令集专门优化但设计时间较长易发生错误。结构化译码电路是使用ROM或PLA的方式将微码固化在硬件中。这种方式的山东大学硕士学位论文电路结构规则有利于ASIC版图的优化译码逻辑由微码实现修改相对容易改变指令集可能只需要修改微码ROM的值。但是这种方法的运算速度较慢而且微码ROM通常要占据很大的芯片面积。对于RISC芯片因指令规则且又不多通常采用硬连线的译码方式l。SDUM为RISC体系结构指令系统简单只有条指令指令格式少指令字长统一所以译码模块采用硬连线方式设计。图.为本文指令译码模块的具体实现结构。本模块的主要部分使用VerilogHDL的casex语句描述由综合器综合实现具有易于修改的优点t。对于OPTION(’b)、SLEEP(’b)、CLRWDT(’b)三条特殊指令分析它们的指令代码用门电路搭建了单独的译码电路。这三条指令的instl:】均为只有低三位不同所以采用图所示的电路结构来实现这三条特殊指令的译码。关于SLEEP指令引起复位WDT及预分频器(如果分配给WDT)在实际的RTL编码中进行了处理。图特殊指令的译码电路另外在指令译码模块中还实现了对间接寻址的处理。当指令的低五位为时译码输出的寄存器选择信号fsel:为特殊功能寄存器fsr的低五位的值即对INDF寄存器寻址时实际上寻址的是fsr寄存器所存地址对应的寄存器。..程序计数器和堆栈模块程序计数器PC为ll位计数器。程序顺序执行时每执行一条指令PC自动加也有一些指令可以直接改变PC的值(参见第二章)。程序计数器和堆栈模块主要负责实现两级堆栈及堆栈控制、程序计数器PC的控制处理、输出pc:。山东大学硕士学位论文图程序计数器和堆栈模块实现结构图此模块内部结构实现如图。图中’PC开头的系列信号是设计中定义的参数只是为了方便生成图中选l数据选择器的选择控制信号。设计时使用stacklevel:来控制堆栈的读写压入堆栈的地址不再进行两级堆栈stackl与stack之问的传递减少了寄存器的翻转次数在一定程度上降低了系统的动态功耗。例如当实现双重子程序嵌套时在stacklevel:的控制下将下一条指令的地址直接压入stack在这种情况下弹栈时也会在stacklevel:的控制下首先弹出stack中的指令地址。在此模块的设计中还尝试使用了Synopsys公司的DesignWare库‘并取得了不错的效果|ll。在用DesignCompiler对设计进行综合时本文作者发现所设计MCU的关键路径并不是像通常MCU设计一样经过AuJ模块|而是经过了山东大学硕士学位论文程序计数器堆栈模块(pcstack)。经分析发现这是因为ALU中使用了超前进位加法器时序特性有了很大的改善而PCstack模块中加操作使用了单纯的行为描述由综合工具自动选择DesignWare库中rpl(行波进位加法器)加法器进行了实现rpl加法器的突出特性就是面积小、延时大。为了改善整个设计的时序特性需要对pc模块进行修改。但是如果对代码进行修改工作量将会stackRTL比较大而且已经完成的RTL级仿真也要重新进行。DesignWare是SOC、ASIC设计者最钟爱的设计球库和验证口库。DesignWare和DesignCompiler的结合可以极大地改进综合的结果并缩短设计周期。数据通道单元例如高度优化的加法器和乘法器是DesignWare库中的首要元件Synopsys公司在电路设计的时序和面积等方面进行了大量的改进。在设计中恰当地使用DesignWare库可以大大提高设计效率改善设计质量。本文通过在代码中加入DC提供的编译器指示(CompilerDirectives)对pcstack模块中加法器的综合进行了控制使用时序性能好的cla加法器代替Ipl加法器解决了困扰课题组许久的关键路径问题在避免大量修改RTL代码和重新进行RTL级仿真的情况下大大改善了设计的时序特性。模块部分代码如下:always(posedgeelkorposedgereset)begin:b.synopsysresourcer:maptomodule=”DWadd”.implementation=”cla”.ops=”a”‘/if(reset=一l'b)beginpcplusl‘STACKRESE弋ECTORpc<’RESETVECTORstacklevel《="endelseif(clkl一七l、beginpeplum《=pcint"ol//synopsyslabelapc<pcint:山东大学硕士学位论文stacklevel<=stacklevelim:endend上述代码利用DC提供的编译器指示对加l操作进行了注释这样综合器就会用指定的cla加法器(时序特性较好)对代码中的加法器进行实现。I坤“t土It域N吨“lll"wⅫJHl”ln:%taYerson:船t脚ht:i啦*蚶:秭tll却驰锄t毓j矾C协btl甜mK嚏Lih玎{mie.Yoosl州,e戢tb耐iodelhd:啉Idst“t"M{im"nclm“垤elk)W.r蜘nt:#.nmⅣ”l"I.HI“】“in雌dlrtnl{flip"flcpClocked竹t强}玳hlroop:以tP辩hType:辩“t*‘dtⅢ.“lt"“mti.nmc棚m.lPnttqⅢhanl如舯^蚶M.mhaln“舢.thr:.“plt:t呻埘I‘钟《缸l撕卸杜戢她c能拙t曲誊’’渊I强r虻”矾渐t啦.赫戢HMgodelp:扯抽“d女m”mtport.tub(《私npoet‘l础ty#l”酗如olm:t州h矬一rq‘rI£m‘.d‘ttfl“ndtl妇叶l蜂#locked坶elk)h“《f:elkPathl弹:一缸af舭#edtu:‰缸ttrnv“t埔嚣.$iJl矗C黛t}L图时序报告需要注意的是使用DesignWare库还必须在.synopsysdc.setup文件中设置两个必需的库:designlibrary和syntheticlibrary。图.为使用DC综合工具得到的修改前后的微控制器的时序报告从图中可以看出修改以后设计(右)的时序特性较修改前(左)有了很大的改善。在DC中还可以发现修改以后的关键路径不再通过pcstack模块而是通过ALU。..看门狗与实时时钟/计数器模块由于看门狗WDT和实时时钟/计数器RTCC功能相似又共用同一个分频器所以放在同一个模块中进行实现。模块内部实现如图所示。RTCC的工作状态由OPTION寄存器控制其中OPTION寄存器的TOCS位用来选择RTCC的计数信号源当TOCS为“”时信号源为内部时钟(系统主时钟的四分频Tcy此信号来自时钟模块)当TOC$为“”时信号源为外部时钟。OPTION的TOSE位用来选择外部计数脉冲的触发沿。当TOSE为“l”时下降沿触发为“”时上升沿触发。山东大学硕士学位论文位预分频器实现了对输入脉冲的不同分频例如分频器的第位是二分频第l位是四分频所以选择分频器的不同位输出就可以得到不同分频比信号。图中的选l数据选择器在选择信号PS:PS的控制下实现了不同分频比的选择。此位分频器由TMR和WDT共用OPTION的PSA位控制着分频器的分配。当PSA位为“”时位分频器分配给RTCC即外部或内部时钟信号经过预分频器后再输出给RTCC。当PSA位为“”时位分频器分配给WDT实现了不同的WDT定时周期。看门狗溢出图书看门狗、实时时钟/计数器实现结构图.sDUM数据通路设计数据通路是MCU中的执行部件数据的传输、存储、处理都是在数据通路中进行。SDUM的数据通路主要包括:ALU、通用寄存器、特殊功能寄存器和一条双向数据总线。通过对数据通道各组成部分及其功能的分析我们首先设计了一种数据通道简化模型然后参照此模型进行了各个组成部分的设计。山东大学硕士学位论文..数据通路简化模型数据通路简化模型由一条双向数据总线和若干个数据通道单元组成如图所示。本设计中的数据通道单元指ALu、通用寄存器和特殊功能寄存器。数据在数据总线与各数

热点搜索换一换

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +2积分

资料评价:

/16
仅支持在线阅读

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部