集成电路EDA 课件 第1-4章 绪论、FPGA与CortexM0软硬协同SoC设计 -模拟集成电路EDA_第1页
集成电路EDA 课件 第1-4章 绪论、FPGA与CortexM0软硬协同SoC设计 -模拟集成电路EDA_第2页
集成电路EDA 课件 第1-4章 绪论、FPGA与CortexM0软硬协同SoC设计 -模拟集成电路EDA_第3页
集成电路EDA 课件 第1-4章 绪论、FPGA与CortexM0软硬协同SoC设计 -模拟集成电路EDA_第4页
集成电路EDA 课件 第1-4章 绪论、FPGA与CortexM0软硬协同SoC设计 -模拟集成电路EDA_第5页
已阅读5页,还剩281页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

集成电路EDA第1章

绪论学习目标认识什么是EDA。了解EDA的重要性。了解EDA的历史。了解集成电路EDA工具的类型。了解EDA国内国际发展现状。掌握VLSI设计流程。Whatweareaboutinthissequenceofclasses...VLSIandSOCEDATools人们如何设计这些复杂的芯片?答:一系列计算机辅助设计工具对芯片进行抽象描述,并逐步细化到最终设计。集成电路EDA

EDA究竟有多重要?一句话概括,EDA是芯片之母,是芯片产业皇冠上的明珠“芯片之母”EDA是用来设计大规模集成电路的,也是整个芯片环节的第一步。如果没有EDA,第一步都迈不出去,谈何制造、应用呢?如果把芯片比喻为一件设计精美的工艺品,EDA工具就是雕刻这件工艺品的刻刀,因此它对于集成电路产业的重要性自是不言而喻。EDA很重要,虽然它市场规模比较小,只有百亿美元规模,不过它撬动的却是万亿美元规模的芯片市场,就像咽喉一样,虽然很小,但能决定人的生死。”在谈及EDA的重要性时,业内专家打了这样一个比方。

没有仿真不能流片。集成电路EDA

1.1集成电路EDA集成电路EDA

CAD是早期出现计算机辅助工具时候的冠名。20世纪90年代以后,集成电路规模可达数十亿个晶体管,芯片集成度与设计复杂度日益提高。传统的CAD软件难以满足大型集成电路设计中复杂而专业性的需求,以高级语言描述、系统及仿真和综合技术为特点的EDA软件应运而生。EDA工具如今已贯穿集成电路设计与制造的全部环节。CADEDA(Electronicdesignautomation),即电子设计自动化,集成电路EDA通常也称为ICCAD(IntegratedCircuitComputer-AidedDesign)。1.1.1什么是集成电路EDA集成电路EDA

EDA是指用于设计和开发电子系统和集成电路(IC)的软件工具和方法。它涵盖了广泛的内容,包括原理图捕获、仿真、布局设计和验证。在集成电路领域,EDA工具用于实现设计过程自动化和提高生产率。它们帮助设计人员创建和优化复杂电路,同时确保功能、性能和可靠性。EDA工具还有助于分析和验证设计,帮助识别和修复任何潜在问题或错误。1.1.1什么是集成电路EDAEDA应用集成电路EDA

EDA是集成电路产业的基石。EDA行业的全球市场规模在集成电路领域并不大,但它撬动着年产值千亿美元的集成电路行业。作为贯穿集成产业链中包括电路设计、制造、封装、测试等各环节的基础工具,EDA直接影响产品的性能和量产率。一旦EDA这一环节出现问题,整个集成电路产业乃至上层运行的数字经济产业都会受到重大影响。1.1.2集成电路EDA的重要性集成电路EDA

伴随着集成电路工艺的提升,芯片持续向集成化、微小化演进,集成电路设计和制造的复杂性与成本也逐渐攀升。因工艺水平或芯片设计失误而导致的制造失败将给集成电路企业带来巨大损失。当下先进的集成电路芯片非常复杂,可以超过10亿个电路元件,这些元件之间彼此相互作用,并且制造工艺的变化可能引入更微妙的相互作用和行为变化。如果没有与之匹配的复杂的EDA这一关键技术,就不可能设计和制造当今的集成电路芯片。1.1.2集成电路EDA的重要性集成电路EDA

EDA起初是一种专属的性能。在EDA发展成为一个细分市场之前,大型垂直一体化OEM拥有专属芯片设计和制造能力。这些企业聘请了大型软件工程师团队来开发所需的工具,以自动化执行所需制造芯片的设计、实现和验证。在此大环境下,所有芯片生产,OEM在自己的产品生产中都有运用。1.1.3集成电路EDA的历史商业EDA诞生前集成电路EDA

商业EDA工具的真正诞生基本上分三个阶段进行。第一阶段:CAD/CAM(计算机辅助设计/计算机辅助制造)

始于20世纪60年代,见证了计算机辅助交互式图形

设计系统在商业上的应用。1.1.3集成电路EDA的历史商业EDA的诞生集成电路EDA

第二阶段:CAE(计算机辅助工程)始于20世纪80年代早期,在此期间商业专用集成电路

(ASIC)行业诞生。在此阶段,主要关注软件和一些专用

硬件,以捕获设计描述并对其进行仿真。1.1.3集成电路EDA的历史商业EDA的诞生集成电路EDA

第三阶段:EDA(电子设计自动化)在20世纪80年代的后期,EDA行业随着其第三阶段的开始而逐渐成熟。供应多款软件和硬件产品的一体化供应商,旨在实现更高程度的IC设计流程自动化,逐渐取代了只提供单一产品的公司。这一阶段由三家主要公司主导,分别是新思科技、Cadence和Mentor(现在是SiemensEDA)。1.1.3集成电路EDA的历史商业EDA的诞生集成电路EDA

模拟集成电路设计类电路设计电路仿真版图设计物理验证寄生参数提取等数字集成电路设计类功能和指标定义架构设计RTL编辑功能仿真逻辑综合静态时序仿真(STA)形式验证等工具晶圆制造类系统类封装设计封装仿真信号完整性/电源完整性分析工具PCB设计工具平板显示设计工具系统仿真工具CPLD/FPGA等1.1.4EDA工具的分类按设计产品的不同,可分为:封装类工艺与器件仿真工具(TCAD)器件建模工具工艺设计套件工具计算光刻工具掩膜版校准工具良率分析工具等集成电路EDA

模拟电路由于其电路本身特点往往采用全定制设计。也就是说,设计从原理图开始,用电路仿真工具来模拟电路的功能、性能等,并根据仿真的结果不断优化电路设计。完成电路仿真后,通过版图设计工具进行版图设计与验证,包括物理验证与电路功能和性能验证等。最后需要进行压降和电流密度等可靠性分析。目前已有的EDA工具已经涵盖了模拟集成电路设计流程的各个阶段,即从电路图输入到后仿真。模拟电路设计1.1.4EDA工具的分类集成电路EDA

常见的EDA工具:原理图捕获工具仿真工具布局设计工具验证工具等模拟电路设计1.1.4EDA工具的分类集成电路EDA

IC设计软件电子电路设计与仿真工具PCB设计软件其他EDA软件1.1.4EDA工具的分类按主要功能划分:PLD设计工具集成电路EDA

我国EDA软件的发展现状就是与国外差距巨大。目前世界上最为著名的三大EDA软件公司,分别是美国的Synopsys、美国的Cadence和西门子旗下的MentorGraphics。1.1.5EDA国际国内发展现状国际发展现状集成电路EDA

国内的EDA行业,华大九天具有在行业非常熟悉的命名为“国宝级”的熊猫EDA系统。作为我国EDA企业的支柱,华大九天目前已发展成为我国规模最大、技术最强的EDA龙头企业。1.1.5EDA国际国内发展现状国内发展现状国内EDA软件是什么水平呢?与三巨头差距有多大呢?

华大九天:国产EDA之巅,唯一国家队传承自“熊猫”,国产EDA龙头。公司创始人参与设计中国第一款具有自主知识产权的EDA工具“熊猫ICCAD系统”,技术功底扎实,行业经验丰富。公司成立于2009年,主要从事EDA工具软件的开发、销售及相关服务。主要产品有模拟电路设计全流程EDA工具系统、数字电路设计EDA工具、平板显示电路设计全流程EDA工具系统和晶圆制造EDA工具等。集成电路EDA

1.2VLSIEDAVLSIEDA

超大规模集成电路的设计对象,一般是千万个电子元器件塞到一个几平方厘米面积的芯片内。VeryLarge-ScaleIntegration(VLSI)是超大规模集成电路,那么什么样的才算超大规模的集成电路呢?什么是VLSI现代集成电路的规模都很庞大,是一个极其复杂的工艺品,它由数十亿个晶体管组成,可能有上亿个基础逻辑门,数百万个基本存储单元,数十亿个代表逻辑元件和导线的形状,以及这些电子元件在芯片表面进行了最佳排列。面对如此巨大的复杂工程,有人能做到吗?答案是,一系列非常强大的EDA工具让人们能够从稍微抽象的描述中,逐步将这些复杂得令人难以置信的工程从抽象的描述,逐步过渡到具体的描述。VLSIEDA

VLSIEDA

如何实现真正的集成电路?答案是EDA。EDA就是通过一连串的设计步骤和设计工具来完成。VLSIEDA

半定制ASIC,指使用半定制技术设计芯片。ASIC的设计流程如图1.1所示。IDEADesignspecificationDesign

entry:VerilogCodingSimulation/FunctionalverificationChipintegration/verificationScan

Chain

Insertion/Testgenaration/FaultsimulationSynthesislayouttiming/formalverificationALUModuleALU(a,b,c);Inputa,b;Outputc;DUTStimulusResponsePhysicalDesignToSign-offProduction-readymaskFrontendBackend片上系统SoC:如今SoC已经成为设计领域的主流。SoC芯片设计流程如图。芯片设计可以分成:系统级设计、前端设计与后端设计三大部分。VLSIEDA

Design1.Specification2.Patition3.RTLcoding(Verilog/SystemVerilog/VHDL)4.IPintegrationVerification1.Plan2.TestbenchandTestcase3.Regression4.IntegrationverificationRTLfreezePresynthesissign-offLogicSynthesismapRTLtogate-levelnetlistPostsynthesisdesignvalidationPostsynthesistimingverificationDFT:TestgenerationandfaultsimulationPD:placement,scanchainandCTS,cellroutingVerifyphysicalandelectricaldesignrulesExtractparasticsDesignsign-offProduction-readymasksSoC将系统做在一块芯片上。典型的SoC集成设计如图1.3所示。VLSIEDA

AMBAAHB/AXICPUMasterIFDSPMasterIFUSBControllerSlaveIFUSBPHYEthernetMasterIFEthernetPHYProtocolMasterIFPHYsCustomCoreFront-endSlaveIFPHYArbiterMemoryDVAMasterIFCustomCoreBack-endMasterIFBridgePower-Management,Clock,Reset,Test,AnalogAMBAAHBUARTSlaveIFGPIOSlaveIFBridgePCI-ExpressPCIEPHYSoC架构图由四大组成部分:核Core、存储、外设IO和总线。SoC芯片的一个经典架构如图所示。VLSIEDA

AHBPflashCH.264MEPG4AVSCPUD-cacheD-cacheJTAGMDMACSMINFCSD/SDIO/SDHAHB2APBRSAUSBAES/DESICTTimer0.1WDTAPBSystemControllerPORRSTPLLSPIUARTGPIOI2CMemBistSpareCellsIOMUXSoC作为大规模设计必然存在层次结构,SoC的层次结构图如图所示。PADin_PADout_PADio_PADA_PADenableTOPCPUIO|MUXCoreSP-SRAMDP-SRAMFlash/ROMUSBPHYCLK&RSTGenPOROSCPLLVLSIEDA

SoC封装的第一个特点是面积小。第二个特点是功耗低。SoC芯片封装如图所示。MemoryRandomLogicRandomLogicRandomLogicAnalogRFSynthesizedCoreHardCoreVLSIEDA

EDA流程如何构建深层次的内容?如何处理像片上系统设计这样的大型设计呢?最重要的一点就是抽象层次。必须将一个大问题分解成更小的步骤,每一步都用到一个或几个EDA工具,每一步都会让设计更真实更具体少一点抽象。有两种步骤:一种是在设计中向前推进的合成步骤,合成步骤主要是向“下”进行,合成步骤会沿着EDA流程图往“下”走,使设计越来越具体,直到得到真正的芯片;另一种验证步骤是逆向的,它们沿着流程往“上”走。当把这一整套步骤放在一起时,就被称为一个流程。VLSIEDA

系统规范架构设计功能和逻辑设计电路设计物理设计物理验证和签收制造封装和测试芯片端口b开始ENTITY测试;……DRCEDCLVSVLSIEDA

设计VLSI的过程非常复杂,可以分成不同的步骤。系统规范架构设计功能和逻辑设计电路设计物理设计物理验证制造封装和测试1.2.1VLSI设计流程VLSIEDA

1.2.1VLSI设计流程1.系统规范系统规范包含系统的总体目标和高级要求。这些目标和需求包括功能、性能、物理尺寸和生产技术。这部分是由芯片设计师、电路设计者、产品营销者、运营经理以及版图和库设计者共同定义的。VLSIEDA

1.2.1VLSI设计流程2.架构设计一个基本的架构必须满足系统规范。VLSIEDA

1.2.1VLSI设计流程3.功能和逻辑设计在功能设计中,只能决定高层次的行为。也就是说,每个模块的输入、输出和时序行为。逻辑设计可以用寄存器传输级来描述,即用HDL定义芯片的功能和时序行为。HDL模块必须要经过仿真和验证。逻辑综合工具自动使HDL转变为底层的电路单元。VLSIEDA

1.2.1VLSI设计流程4.电路设计综合工具自动转换布尔函数表达式为指定的门级网表、更高粒度的标准单元。然而一些低端的单元必须在晶体管级进行设计,这就是所谓的电路设计。VLSIEDA

1.2.1VLSI设计流程5.物理设计经过物理设计的过程,上述步骤产生的所有组件都将例化为每个制造层上固定形状和大小的几何图形。所有组件要在金属层上分配空间位置(布局)之后用适当的布线完成连接(布线)。物理设计必须通过后续验证。物理设计需要遵照设计规则。物理设计直接影响到电路的性能、面积、功率和可靠性等。VLSIEDA

1.2.1VLSI设计流程VLSI数字电路系统的物理设计复杂度高,将其分为几个关键步骤:电路划分布局规划电源和地网布线布局时钟树综合总体布线详细布线时序收敛VLSIEDA

1.2.1VLSI设计流程6.物理验证物理设计后的版图必须进行全面验证,包括:设计规则检查版图与原理图一致性检验电气规则检查寄生参数提取天线规则检查VLSIEDA

1.2.1VLSI设计流程7.制造经过验证的版图通常转换为GDSII格式交给代工厂流片,设计的版图在光刻工艺过程中以掩膜版(Mask)的形式影印到不同层,每一块Mask都与版图设计对应。VLSIEDA

1.2.1VLSI设计流程8.封装和测试集成电路必须通过测试。功能芯片通常需要封装,封装后的产品会通过测试来确保满足功能、时序和功耗等设计要求。VLSIEDA

软硬件协同设计指的是软件和硬件的设计同步进行。硬件架构的设计描述的是硬件的结构;软件层面的设计描述的是硬件的“动作”。1.2.2软硬件协同设计SoCEDA辅助设计SoC并基于FPGA实现流程C/汇编10111111000111机器码软件编程硬件实现VerilogVHDL仿真波形网表下载比特流到FPGA下载程序到存储器上板观察VLSIEDA

1.2.2软硬件协同设计SoC数百万门规模的系统级芯片设计,不能一切从头开始,要将设计建立在较高的层次上。一个系统包含非常多的功能部分,所有部分都要自己从头开始做吗?显然不能,而是很多部分要购买IP,IC设计是系统导向的,是IP导向的,这叫做基于IP的设计。SoC需要更多采用IP复用技术,只有这样,才能较快地完成设计,保证设计成功,得到价格低的SoC,满足市场需求。IPCore通常分为硬核、软核和固核。VLSIEDA

1.2.2软硬件协同设计SoC逻辑综合(RTL):逻辑综合是指使用综合工具,根据芯片制造商提供的基本电路单元库,将硬件描述语言描述的RTL级电路转换为电路级网表的过程。VLSIEDA

基于FPGA的SoC设计流程就是基于HDL与标准单元对FPGA进行配置的过程,同时也包含了软硬件的协同设计和IP复用技术,其流程如图所示。硬件开发功能与输入设计功能仿真软件开发编写启动文件根基寄存器地址映射编写库文件综合及综合后仿真仿真约束与实现生成比特流文件利用c语言编写驱动程序编译与构建生成二进制文件FPGASoCRAMFlashJTAGSWD基于FPGA的SoC设计1.3TCADTCAD

TCAD,全称TcehnologyComputerAidedDesign,指半导体工艺和器件仿真软件。随着计算机仿真技术的进步,TCAD也愈发完善,在半导体产业中发挥着重要作用。1.3.1TCAD的重要性习题11.填空题1)集成电路EDA的英文全称

。2)目前世界上最为著名的三大EDA软件公司,分别是

。3)EDA的发展经历的三个阶段分别是

。4)TCAD软件两大类分别是

2.简答题1)简介EDA国际国内发展水平。2)简述软硬协同开发SoC的流程。3)简述VLSI设计流程。4)简述集成电路EDA工具的类型。5)简述有几种IP核,特点是什么?

3.拓展题

调研集成电路EDA最新进展。集成电路EDA第2章

基于FPGA与Cortex-m0的MCU设计与仿真实现学习目标

熟练掌握SoC的系统与架构设计方法熟练运用VerilogHDL语言开发SoC了解XilinxVivado软件工具仿真SoC了解Keil软件了解使用高级语言编写硬件单元相应的驱动程序熟练掌握用FPGA实现SoC的开发流程熟练运用软硬件协同开发过程中需要的语言与EDA工具2.1用FPGA实现MCU的整体设计框架用FPGA实现MCU的整体设计框架所谓集成电路EDA,计算机软件是辅助设计的,因此学习EDA工具应该配合具体的集成电路设计进行。采用自顶向下的设计模式,分析MCU的整体架构和所需功能是第一步也是最为重要的一步。将需求分析明确后将根据需求和相关技术逐步细分子模块,实现好各个子模块后再进行整体组合与测试。用FPGA实现MCU的整体设计框架

MCU通常需要具有信号采集、信号处理、信号输出、与外界通讯等功能。如图2.1所示,MCU接收来自前端采集芯片的输入,通过GPIO、ADC、等方式接收来自传感器的信号,经CPU对数据进行处理和加工后,由GPIO、DAC等方式输出给相应的驱动模块。2.1.1MCU顶层设计图2.1MCU通用功能集成电路EDA

为了实现一款具有通用功能的MCU,且具有硬件算法等特殊功能,本设计的MCU具有以下模块:负责数据运算与控制的CPU,负责构建通讯链路的总线系统,负责存储代码的代码存储器(CodeRam),负责存储运行数据的数据存储器(DataRam),针对特定应用设计的定制外设和针对特定场景的硬件算法。其架构如图2.2所示。2.1.2集成电路EDA的重要性图2.2MCU架构用FPGA实现MCU的整体设计框架

2.1.3ARMCortex-M0处理器简介处理器核心包括寄存器组、算术逻辑单元(ALU)、数据总线和控制逻辑。流水线根据设计可以分为3种状态:取指、译码和执行。图2.3Cortex-M0架构中断请求唤醒中断控制器AHBLITE总线接口单元嵌套向量中断控制器电源管理接口内部总线系统处理器内核调试子系统存储器和外设Cortex-M0总线接口调试接口接调试器用FPGA实现MCU的整体设计框架

2.1.4MCU总线系统概述本设计采用的总线协议为高级微控制器总线架构(AMBA)。

AMBA是由ARM公司为了提出并用于设计高性能嵌入式微控制器的片上通信标准。AMBA规范中定义了三种不同的总线:高级高性能总线(AHB)、高级系统总线(ASB)、高级外设总线(APB)。用FPGA实现MCU的整体设计框架

2.1.4MCU总线系统概述AMBAAHB用于高性能、高时钟频率的系统模块。其中AHB充当高性能系统主干总线。AHB支持处理器、片上存储器和片外外部存储器接口与低功耗外围宏单元功能的高效连接。AMBAASB是一种替代系统总线,适用于高性能但是不需要AHB的功能。AMBAAPB针对最低功耗和降低接口复杂性进行了优化,以支持外围功能。用FPGA实现MCU的整体设计框架

2.1.4MCU总线系统概述AMBA规范独立于技术,确保高度可重复使用的外围设备和系统宏单元可以跨各种工艺迁移,并适用于全定制、标准单元和门阵列技术。图2.4AMBA典型系统结构CPUDMA控制器外设1AHB转APB高带宽片上存储器高带宽外部存储器接口外设2外设3外设42.2MCU硬件模块设计MCU硬件模块设计

2.2MCU硬件模块设计MCU硬件设计是开始MCU设计的第一步,主要采用VerilogHDL语言对MCU的总线、存储器和外设进行设计。同时基于XilinxVivado设计平台对HDL代码进行编译和仿真,验证各个模块功能的正确性。MCU硬件模块设计

2.2.1AHB总线系统设计AHB总线规范是AMBA总线规范的一种,主要应用于高性能系统总线。AHB总线支持多主机多从机设计而且同时提供高带宽操作。如图2.5所示。图2.5AHB总线典型系统MCU硬件模块设计

2.2.1AHB总线系统设计AHB总线信号:为了满足总线性能需求,总线上的信号线与几十个。AHB总线数据传输时序:AHB总线传输包括地址阶段和数据阶段。地址阶段一般情况只持续一个周期,而数据阶段则根据HREADY信号持续数个周期。根据有无等待情况,AHB总线传输可分为四种情况:有等待写入、有等待读出、无等待写入、无等待读出。MCU硬件模块设计

2.2.1AHB总线系统设计主机在地址周期发送地址和控制信号后,写信号拉高,同时下一个周期数据周期将数据发送至写数据线,如果此时从机还未准备好接收数据,则从机会将HREADY信号拉低,主机将保持输出,直到HREADY拉高,开始下一个总线周期。图2.6有等待写入时序图

CLKHRDATAADDRESSCONTROLHWDATAHREADYHWRITEcon0con1add0add1d0MCU硬件模块设计

2.2.1AHB总线系统设计无等待写入则是在地址阶段给出地址数据后,HWRITE置高后,下个数据周期将数据发送给HWDATA总线。此过程中HREADY始终保持高电平。则给出数据的同时也会给出下个总线周期的控制信号和地址信号。图2.7无等待写入时序图

CLKHRDATAADDRESSCONTROLHWDATAHREADYHWRITEcon0add0con1con2con3add1add2add3d0d1d2d3MCU硬件模块设计

2.2.1AHB总线系统设计主机发送地址和控制信号后,HWRITE置低电平,如果此时从机尚未准备好发送数据,则会拉低HREADY信号,总线进入等待状态,直到HREADY拉高,主机读取数据并发送下一个周期的地址控制信号。图2.8有等待读出时序图con0con1add0add1d0

CLKHRDATAADDRESSCONTROLHWDATAHREADYHWRITEMCU硬件模块设计

2.2.1AHB总线系统设计主机发送完地址控制信号后下个周期遍读取HRDATA总线的数据并发送下个周期的地址控制信号。对于连续读取信号这种信号传输具有二级的流水线,数据吞吐量大。图2.9无等待读出时序图

CLKHRDATAADDRESSCONTROLHWDATAHREADYHWRITEcon0add0con1con2con3add1add2add3d0d1d2d3MCU硬件模块设计

2.2.1AHB总线系统设计总线系统接收来自主机的地址数据信号,地址解码器对地址进行解码,并给地址对应的模块提供使能信号,使模块正常接收来自主机的信号,未使能的模块不工作,防止误触。从机模块在接收主机的信号后,读数据和响应信号发送给多路复用器,多路复用器则根据上个周期锁存的地址信号对输入数据进行选择,并发送给主机。图2.10总线设计框图ARMCortexM0内核主机地址解码器地址控制写数据选择信号多路复用器使能读数据响应信号从机模组MCU硬件模块设计

2.2.1AHB总线系统设计本设计中地址解码器通过提取地址总线高八位信号,对地址对应的从机信号输出使能。其设计思路采用ROM表实现。对深度为256位的ROM,从机编码对应的地址位预先填充使能信号,对其余则输入低电平,总线信号高八位的信号同时作为此ROM表的地址。图2.11地址解码器原理图MCU硬件模块设计

2.2.1AHB总线系统设计多路复用器接收不同从机的数据,根据地址周期的选择信号来选择对应的从机信号。但由于无等待读写的数据周期晚于地址周期一个节拍,而地址解码器的使能信号位于地址周期,所以必须对地址解码器信号进行延迟一个周期。图2.12多路复用器原理图RAM:随机存取存储器,又称“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。RAM断电时将丢失其存储内容,故主要用于存储短时间使用的程序。MCU硬件模块设计

2.2.2存储器系统设计本设计存储器数据宽度为32位,均衡考虑了FPGA的RAM资源和MCU代码的极限大小后存储器的空间选取为4KB,可以满足绝大多数场景的应用。同时,针对小型轻量化应用,本设计采用纯汇编设计,仅需一个程序存储器即可使MCU正常工作,不需要额外添加数据存储器。总线的访问信号到达存储器时,先经过一级寄存器缓存,延迟一个周期,然后根据控制信号对指定地址的数据进行读写。如果是读信号,则直接将对应地址的数据发送至总线;如果是写信号,则根据HSIZE信号来决定以字节、半字和字的格式将总线写数据写入RAM。MCU硬件模块设计

2.2.2存储器系统设计图2.13存储器设计框图总线接口寄存器RAM写数据写数据地址读数据RAMIP控制地址控制写位数控制MCU硬件模块设计

2.2.2存储器系统设计存储器模块编译完成后的RTL原理图如图2.14所示。图2.14存储器RTL原理图MCU硬件模块设计

2.2.2存储器系统设计仿真20ns时系统启动,在20ns和40ns给出地址0和4的写入信号,然后在40ns和60ns的对应的数据周期给出写入数据0x12345678和0x87654321,紧接着系统在60ns和80ns后分别给出地址0和4的读取信号,可见在80ns和100ns时一开始写入的数据被储存器发送到了HRDATA总线上。图2.15按字连续读写功能仿真MCU硬件模块设计

2.2.2存储器系统设计改变仿真激励代码如代码示。通过改变HSIZE的值可以控制写入的格式,图2.16表示按字节读写的仿真图。系统HSIZE设置为0,系统按字节依次写入0xFFFFFFD4,0xFFFFC3FF,0xFFB2FFFF,0xA1FFFFFF。由于系统按依次按字节写入,于是在120ns读地址0时的数据为0xA1B2C3D4。图2.16按字节读写功能仿真MCU硬件模块设计

2.2.3GPIO设计系统主要分为AHB接口部分和输入输出控制部分。主机向控制寄存器写入使能信号与输入输出工作状态信号后,控制寄存器通过控制三态门实现数据寄存器对IO的输出,通过向数据寄存器写入数据,可实现IO输出指定的信号。同时配置成输入模式时,三态门断开,主机可从输入缓冲处读取IO电平。图2.17GPIO设计原理图总线接口控制寄存器AHB接口输入输出控制数据寄存器输入缓冲IO通用输入输出接口(GPIO)是基本的输入输出引脚,可以由程序控制输出低电平和高电平,在速度要求不高的场景下可实现一些常用开关电路的控制。MCU硬件模块设计

2.2.3GPIO设计名称偏移地址有效位数功能使能015-016个GPIO高电平使能读写控制031-1616个GPIO读写选择,高电平为写入写缓存415-016个GPIO写数据缓存读缓存815-016个GPIO读数据缓存GPIO寄存器地址映射与功能介绍MCU硬件模块设计

2.2.3GPIO设计

对GPIO模块RTL代码进行编译,系统编译而成的RTL级原理图如图2.18所示。图2.18GPIO模组RTL原理图MCU硬件模块设计

2.2.3GPIO设计首先验真GPIO输出功能,其仿真波形图如图2.19所示,先给控制寄存器发送信号0F0F00FF,低16为是使能信号,高16位是读写控制信号,于是GPIO0至GPIO3为写状态,且被使能,GPIO4至GPIO7为读状态,且被使能,GPIO8至GPIO11为写状态,但未被使能,GPIO12至GPIO15为读状态,未被使能。于是在给写入寄存器写入信号1234后,经过一段时间的延迟,GPIO0至GPIO3正常输出4,GPIO4至GPIO7、GPIO12至GPIO15为读状态,三态门未开启,输出高阻,GPIO4至GPIO7三态门开启,但由于GPIO未使能,于是输出均为0。图2.19GPIO输出仿真波形图MCU硬件模块设计

2.2.3GPIO设计

GPIO输入操作仿真如图2.20所示,控制信号写入0x000000FF,即所有IO均为输入模式,三态门关闭,但仅有GPIO0-GPIO7使能,其余GPIO均未使能。随机仿真环境设置GPIO信号为0xABCD,GPIO0-GPIO7检测到后发送给HRDATA总线,GPIO8-GPIO15未使能发送默认值0,于是HRDATA总线数据为0x000000CD。图2.20GPIO输入仿真波形图MCU硬件模块设计

2.2.4

UART设计

通用异步收发传输器(UART)是一种常用的串行异步传输接口,常用于两个系统间的数据通信。对MCU来说,UART常用于与上位机进行通讯,让开发者实时检测MCU工作状态,获得相关关键工作数据;或者对多MCU系统,MCU间常采用串口通信进行数据交互。如图2.21所示,串口发送数据共有10位左右,静默时电平为高电平,开始数据传输时首先发送一位低电平起始位,随机以低位在前发送一定位数的数据位,数据发送结束如果有奇偶校验则发送一位奇偶校验位,最后发送一位高电平表示发送结束。图2.21UART时序图MCU硬件模块设计

2.2.4

UART设计由于UART是异步传输,故传输波特率传输双方需预先设定。总线接口负责接收主机传来的控制信号与发送数据,同时向主机发送接收到的信号。图2.22UART收发器设计原理图总线接口控制数据总线接口UART收发器发送数据接收数据波特率生成器接收模块发送模块MCU硬件模块设计

2.2.4

UART设计UART收发器部分采用模块化设计。波特率发生器由系统时钟驱动计数器,通过使能信号控制计数器工作状态,并通过选择信号选择终值表里对应的计数终值,以发生不同波特率信号。图2.23波特率发生器原理图波特率选择信号计数终值表时钟源使能比较器计数器波特率信号复位MCU硬件模块设计

2.2.4

UART设计当需要发送的时候,发送数据首先寄存进发送数据缓存,波特率发生器开始工作,带动索引信号递增。输出信号则根据索引的值依次选择起始位、数据位、校验位和停止位。图2.24UART发送器原理图波特率使能索引选择器发送数据缓存发送信号奇偶校验发送数据MCU硬件模块设计

2.2.4

UART设计与UART发送器类似,采用波特率发生器带动索引的工作方式。接收器在每个波特率信号点采集接收信号线的电平,若使能后在检测到开始信号,索引根据波特率信号逐渐递增,选择器根据索引信号依次将检测到的电平存储进接收数据缓存的对应位置。图2.25UART接收器原理图波特率使能索引选择器接收数据缓存接收信号奇偶校验接收数据完成信号MCU硬件模块设计

2.2.4

UART设计对UART模块进行编译,完成的RTL原理图如图2.26所示。图2.26UART整体RTL原理图MCU硬件模块设计

2.2.4

UART设计对UART模块进行编译,完成的RTL原理图如图2.27所示。图2.27波特率发生器RTL原理图MCU硬件模块设计

2.2.4

UART设计对UART模块进行编译,完成的RTL原理图如图2.28所示。图2.28UART接收器RTL原理图MCU硬件模块设计

2.2.4

UART设计对UART模块进行编译,完成的RTL原理图如图2.29所示。图2.29UART发送器RTL原理图MCU硬件模块设计

2.2.4

UART设计先对各个子模块进行功能仿真,波特率发生器的仿真波形图如图2.30所示。仿真环境设置波特率为1Mbps。可见波特率发生器在工作后以固定频率发送脉冲信号激励串口发送器工作。其中脉冲的时间间隔测得为1000ns。图2.30波特率发生器仿真波形图MCU硬件模块设计

2.2.4

UART设计系统采用1Mbits波特率,设置发送数据为0x5A,即二进制01011010,采用偶校验校验值为0,在使能信号给出后,数据存入缓存,依次发送低电平起始位,自低到高发送8位数据位,之后发送一位低电平的校验位,最后发送一位结束位高电平结束传输。图2.31UART发送器仿真波形图MCU硬件模块设计

2.2.4

UART设计

为了验证UART接收器接收功能,仿真环境中需要添加一个发送器,模拟外界给串口发送数据的情况。将发送器的输出接至接收器上并单独控制发送器发送数据。图2.32UART接收仿真环境示意图读出接收数据接收器波特率发生器发送器写入发送数据MCU硬件模块设计

2.2.4

UART设计UART接收器在检测到起始位低电平后,逐步将信号写入缓冲中寄存器,然后在接收完校验信号后对信号进行校验,若校验通过,则将缓存数据写入输出寄存器,发送接收完成信号,同时清空缓存以准备下一次接收。图2.33UART接收器校验成功仿真波形图MCU硬件模块设计

2.2.4

UART设计在图2.34中,在仿真环境中强行使校验失败,5a数据校验值本应为0,人为改成1后,接收器校验失败,不发送完成信号,也不输出接收数据,将缓存清零后准备下一次接收。图2.34UART接收器校验失败仿真波形图MCU硬件模块设计

2.2.4

UART设计对UART模块整体进行仿真。仿真环境同样采用外部模拟一个发送器和单独的波特率发生器控制发送来模拟外界环境对UART发送数据的场景。图2.35UART模块整体仿真环境示意图仿真总线读取串口模块波特率发生器发送器仿真发送数据发送接收MCU硬件模块设计

2.2.4

UART设计图2.36UART模块发送初始状态首先总线向写数据寄存器0x04写入发送数据0xA5,然后向控制寄存器0x00写入使能信号和波特率选择信号。可见使能信号写入后,发送状态机开始工作,发送txready信号拉低,发送使能关闭防止重复发送,同时写寄存器中的发送数据被读取到发送模块的缓存中准备数据发送。MCU硬件模块设计

2.2.4

UART设计整体发送波形图如图2.37所示。

图2.37UART发送时序仿真图MCU硬件模块设计

2.2.4

UART设计系统使能波特率生成器和时钟后,在仿真环境模拟UART发送数据0xBC后,UART接收到数据,校验成功后发送给UART模块的接收寄存器,同时发送接收标志位,供总线读取。

图2.38UART接收时序仿真图MCU硬件模块设计

2.2.5定时器中断设计

在MCU的应用场景中,经常需要准确的时钟信号来驱动系统完成相应的命令。而采用软件延迟的计时方法对单核MCU来说,CPU大部分时间用在软件计数中,且受限于指令集的不同与CPU执行的情况,软件计时往往精度不高。而定时器中断将计时部分采用硬件完成,配置好定时器工作模式后,定时器完成计时后产生中断信号,CPU接收到中断信号后进入相应的中断处理函数完成相应动作。MCU硬件模块设计

2.2.5定时器中断设计定时器中断由总线接口和两个计数器组成。控制寄存器负责控制计数器的工作状态,计数终值为计数器2的计数上限值,计数器1用于对时钟信号分频,与计数器2组合可以提供更长的计数周期。当计数器达到终值时,生成中断信号,提供给CPU的中断输入信号。同时清零计数器,根据配置的工作状态决定是否继续计数。图2.39定时器中断模组原理图控制计数终值总线接口计数器1计数器2中断信号接口MCU硬件模块设计

2.2.5定时器中断设计系统完成编译生成的RTL原理图如图2.40所示:图2.40定时器模块RTL原理图MCU硬件模块设计

2.2.5定时器中断设计总线系统依次向定时器模块写入计数终值0xFF和控制信号0x03后,定时器开始计数。0x03本设计表示无分频并使能定时器。图2.41定时器中断开始工作仿真波形图MCU硬件模块设计

2.2.5定时器中断设计当定时器到达预设的计数终值0xFF时,定时器结果清零,同时对外发出中断信号,CPU检测到中断信号后会进入相应的中断服务函数,完成相应操作。图2.42定时器计数完成波形仿真图2.3基于FPGA平台的特殊外设设计系统分为总线接口、数码管驱动和外围电路三个部分,其中总线接口和数码管驱动部分属于片上系统。总线接口接收来自主机的信号,在1kHz的时钟的驱动下依次输入给数码管码表片上ROM,同时码表输出给数码管组,时钟同时驱动译码器选择正确的数码管。基于FPGA平台的特殊外设设计

2.3.1八位七段式数码管硬件驱动设计图2.43数码管驱动设计框图总线接口显示数据数码管码表ROM总线接口数码管驱动时钟生成器译码器0外围电路数码管组基于FPGA平台的特殊外设设计

2.3.1八位七段式数码管硬件驱动设计对数码管模块进行编译,生成的RTL原理图如图2.44所示。图2.44数码管模块RTL原理图基于FPGA平台的特殊外设设计

2.3.1八位七段式数码管硬件驱动设计时钟发生器生成1kHz的周期信号,位选信号Select在每个时钟周期改变并循环。数码管模块在接收到主机的显示数据12345678,根据当前Select信号向码表ROM输入显示数据中对应数码管的数据。图2.45八位七段式数码管仿真波形图基于FPGA平台的特殊外设设计

2.3.2PWM型DAC设计

DAC在工业控制中有广泛的应用,例如含有DAC的MCU在外接功放后可实现简易的语音提示功能。而传统低端MCU多采用外置DAC芯片的设计方式,其成本较高,且对PCB板的设计要求较高。而高端内置DAC的芯片其DAC往往以硬件形式固定在芯片内部,芯片成本比较高且不可复用。而在对时间和精度要求不高的应用场景下,PWM型DAC拥有外设简单,可复用等优势,可以极大降低设计成本,同时若应用场景更变,不再需要DAC时,FPGA可释放逻辑资源供其余模块使用。PWM波形具有固定的周期T0和根据输入信号可变的脉冲宽度T,其比值则成为PWM信号的占空比。对不同固定周期的PWM信号,若具有相同占空比,则其控制效果则基本相同。图2.46周期矩形脉冲信号基于FPGA平台的特殊外设设计

2.3.2PWM型DAC设计

基于FPGA平台的特殊外设设计

2.3.2PWM型DAC设计本设计DAC以8位DAC为例,原理图如图2.47所示。图2.47PWM型DAC原理图模拟信号低通滤波比较值计数器总线接口总线接口比较器PWM信号PWM信号生成器外围电路基于FPGA平台的特殊外设设计

2.3.2PWM型DAC设计PWM模块经过编译后生成的RTL原理图如图2.48所示。图2.48PWM模块RTL原理图基于FPGA平台的特殊外设设计

2.3.2PWM型DAC设计该系统仿真波形图如图2.49所示,设置K值为10000,应RC滤波器截止频率约为32kHz。将K值调整至10000后,即截止频率约为3kHz,仿真波形如图2.50所示。图2.49PWM型DAC输出仿真波形图图2.50低截止频率时PWM输出波形仿真图基于FPGA平台的特殊外设设计

2.3.2PWM型DAC设计基于FPGA平台的特殊外设设计

2.3.3一种基于FPGA系统的简易ADCADC往往承担模拟信号采集的工作。本设计采用将模拟信号编码为PWM信号后通过数字系统采集的方法,利用2个IO及一个运算放大器即可实现AD转换电路,而且很容易扩展成多通道。图2.51ADC工作原理图模拟信号比较器比较值总线接口总线接口PWM检测ADC内部数字系统外围电路控制三角波PWM信号发生器低通滤波基于FPGA平台的特殊外设设计

2.3.3一种基于FPGA系统的简易ADC对该ADC进行编译,生成RTL原理图如图2.52和图2.53所示。图2.52ADC的RTL原理图1图2.53ADC的RTL原理图2基于FPGA平台的特殊外设设计

2.3.3一种基于FPGA系统的简易ADC对该ADC进行编译,生成RTL原理图如图2.52和图2.53所示。基于FPGA平台的特殊外设设计

2.3.3一种基于FPGA系统的简易ADC图2.54ADC仿真波形图在仿真环境设置待测量为24位的仿真模拟量0x800000,PWM型DAC输出接滤波器与上述所设计数字滤波器相同。模拟待测信号与ADC发出的三角波经过比较器后生成待测PWM信号measure,PWM检测计数器在三角波周期内保持计数,并在三角波最低点清零信号发出时输出8位信号0x7f至AHB总线,与理想值0x80误差约为0.78%。

基于FPGA平台的特殊外设设计

2.3.3一种基于FPGA系统的简易ADC图2.55输入变化时ADC仿真波形图当输入发生改变时,如图2.55所示,最初为24位0x200000,测量结果为8位0x1E。输入改变为24位0xC00000后,最初一个周期测量结果为8位0x6E,测量误差42.7%,误差较大,但经过一个周期后测量值变为8位0xBF,与理想误差0.52%。

基于FPGA平台的特殊外设设计

2.3.3一种基于FPGA系统的简易ADC由于输出低通滤波器限制,可能会产生失真,进而产生较大误差,如图2.56所示,对输入24为0xC00000,输出稳定后为8位0xCA,与理想测量值0xC0误差5.62%。图2.56提高三角波频率后ADC仿真波形图图2.57高滤波器截止频率后ADC仿真波形图而滤波器为影响三角波失真的主要因素,提高滤波器截止频率后仿真波形图如图2.57所示。基于FPGA平台的特殊外设设计

2.3.3一种基于FPGA系统的简易ADC基于FPGA平台的特殊外设设计

2.3.4硬件二阶整数矩阵乘法器实现本设计二阶整数乘法器如图2.58所示。图2.58二阶整数硬件乘法器原理图A11A12A21A22B11B12B21B22乘法乘法乘法乘法加法加法加法加法寄存器寄存器寄存器寄存器C11C12C21C22系统编译完成的RTL级原理图如图2.59所示。图2.59矩阵乘法器RTL原理图基于FPGA平台的特殊外设设计

2.3.4硬件二阶整数矩阵乘法器实现基于FPGA平台的特殊外设设计

2.3.4硬件二阶整数矩阵乘法器实现

图2.60矩阵乘法器输入时波形仿真图图2.61矩阵乘法器完成运算时波形仿真图基于FPGA平台的特殊外设设计

2.3.4硬件二阶整数矩阵乘法器实现2.4MCU软件设计与综合测试MCU软件设计与综合测试

在完成MCU的硬件部分设计后,需要编写硬件单元相应的驱动程序,同时需要针对应用场景编写相应的程序以使MCU完成相应的任务。下文将以汇编语言设计定时器中断驱动8位输出控制为例介绍本设计MCU的软件设计方法。MCU软件设计与综合测试2.4.1ARMCortex-M0指令集早期ARM处理器采用32位的ARM指令集,与8位和16位的处理器相比,搭载了32位指令集的ARM处理器具有更强的性能,但同时也带来了更大的功耗。为了解决低端芯片高功耗问题,Thumb-1指令集被提出使用。Thumb-1指令集为ARM指令集子集,代码长度减少,代码密度提高,但牺牲了一定程度的性能,同时Thumb-1指令集可以通过选择器与ARM指令集混用,进一步提高代码的灵活性。图2.62Thumb指令选择指令Thumb重映射至ARM指令译码执行MCU软件设计与综合测试2.4.1ARMCortex-M0指令集ARMCortex-M0内核采用了ARMv6-M的结构,为了尽可能做到低功耗和低成本,ARMCortex-M0将电路规模降低到最小。寄存器访问指令MOV主要负责对指定寄存器进行读写。存储器读写指令LDR和STR主要负责对指定地址进行读写访问。堆栈访问指令PUSH和POP常用函数调用和中断处理服务函数中。算数运算指令ADD,SUB和MUL主要负责处理程序设计中的计算方面。比较运算指令CMP常与跳转指令结合实现条件分支和循环等内容。跳转控制指令可以将当前程序跳转到指定位置。MCU软件设计与综合测试2.4.2软件设计流程对C语言编写的工程,首先编译器会将C语言编译成汇编代码,汇编器再将汇编代码汇编成机器码,然后链接器将机器码与链接库生成可执行文件。KeilMDK将可执行文件烧写进存储器中,MCU开机后执行开机启动文件,将存储器内的可执行文件映射到程序RAM中,依次取指、译码并执行,完成相应的功能。图2.63典型的程序生成流程C代码汇编代码编译汇编目标代码程序镜像文件链接上位机库程序存储器取指译码执行处理器下载MCU软件设计与综合测试2.4.2软件设计流程首先新建工程,如图2.64所示选择本设计采用的ARMCortex-M0内核,然后设置所采用的存储器大小,程序存储器设置4KB,数据存储器设置1KB,同时设置其起始地址,并将程序存储器设为代码起始位置,如图2.65所示。图2.64新建工程内核选择图2.65设置内核存储器起始地址与内存空间【代码】fromelf-cvf.\objects\code.axf--vhx--32x1-ocode.hexfromelf-cvf.\objects\code.axf-odisasm.txtMCU软件设计与综合测试2.4.2软件设计流程然后在用户界面栏设置两条命令语句。命令一为生成可执行文件的同时生成十六进制机器码,用于FPGA工程程序RAM的启动文件;命令二为对机器码进行反汇编,方便调试时查验机器码对应的汇编代码。图2.66设置用户指令MCU软件设计与综合测试2.4.2软件设计流程本设计软件代码流程图如图2.67所示。首先程序启动后,系统进入复位函数,此时依次设置系统中断系统,将输出引脚复位,然后设置定时器中断并使能。图2.67定时器中断验证代码程序框图

程序启动设置中断向量使能配置定时器中断并使能复位函数主循环外部中断输出+10定时器中断输出+1MCU软件设计与综合测试2.4.2软件设计流程

完成代码编写后,对代码进行编译汇编与生成可执行文件。如图2.68所示,系统输出无报错、无警告、并且执行了两条实现定义的用户指令。图2.68编译结果输出MCU软件设计与综合测试2.4.2软件设计流程反汇编的结果如图2.69所示,代码左侧代表的程序计数器(PC)指针值,也就是此段代码在程序存储器的中的位置,紧跟着是当前位置的代码的机器码,后面则是这段机器码对应的汇编代码,表示当前机器码对应的操作。后续整体仿真时可通过查看总线程序计数器的值与对应机器码检验系统是否正常工作。图2.69反汇编结果图MCU软件设计与综合测试2.4.2软件设计流程Keil软件支持软件仿真功能,在系统设置将调制器设置成仿真模式,如图2.70所示。图2.70设置调试器工作为仿真模式图2.71软件仿真界面开启仿真后仿真操作界面如图2.71所示,在仿真界面可通过按步骤运行程序,检查程序运行逻辑,验证算法逻辑的正确性。MCU软件设计与综合测试2.4.2软件设计流程MCU软件设计与综合测试2.4.2软件设计流程图2.72为系统初始运行时的状态,在复位信号拉高后,系统复位,PC指针设置为0,然后开始程序计数,几个周期后PC指针根据启动代码映射至复位函数0x80的位置。图2.72系统开始运行时序图MCU软件设计与综合测试2.4.2软件设计流程图2.73表示复位函数运行过程中,可见CPU依次向指定的三个外设写入对应的值,驱动相应外设正常工作。图2.73复位函数波形图MCU软件设计与综合测试2.4.2软件设计流程图2.74为复位函数中CPU向定时器写入计数终值后使能,定时器开始计数的工作状态。图2.74定时器开始计时波形图MCU软件设计与综合测试2.4.2软件设计流程图2.75为定时器在到达计数终值255后,由于设置其为循环工作,计数器清零重新计数,同时调用中断服务函数,使得输出寄存器0x50000000的值加一。图2.75定时器输出中断波形图基于FPGA平台的特殊外设设计

2.4.2软件设计流程图2.76表示外界中断触发后,CPU调用中断服务函数,使得输出寄存器0x50000000的值加十。图2.76触发外部中断波形图MCU软件设计与综合测试2.4.2软件设计流程完成系统的行为级仿真后,对RTL级代码进行综合,通过后对其进行布局布线,综合原理图与布局布线图如图2.77和图2.78所示。图2.77综合原理图图2.78布局布线图MCU软件设计与综合测试2.4.2软件设计流程完成布局布线后,可对系统占用资源进行统计,本设计芯片采用XilinxArtex的xc7a200tfbg484-2芯片,其资源利用结果如表所示。可见,使用中低端的FPGA完全可以支持ARMCortex-M0内核项目的实现。资源使用总共使用率(%)查找表50731338003.79查找表RAM2048462004.43寄存器11072676000.41DSP37400.41IO112853.86缓冲器1323.13章节回顾本章的主要内容是基于FPGA设计搭载ARMCortex-M0内核的MCU,验证基于FPGA开发MCU的可行性与优越性。主要内容包括微控制器功能分析,前端设计,仿真模拟,软件设计和系统整合等方面,具体的内容有:分析ARMCortex-M0内核原理与工作方式;分析AHB总线协议与工作方式;基于ARMCortex-M0内核和AHB总线设计MCU所需基本外设;基于FPGA平台设计具有可复用的高效特殊MCU外设;设计ARM指令集软件代码,并整合软硬件进行系统性测试。习题2

1.简答题1)在做系统级芯片的设计规划时,需要考虑哪些主要因素?2)目前主流的SoC一般包括哪些功能模块或IP?有什么新的技术趋势值得关注?3)为SoC选择IP时主要基于什么标准或要求?如何实现差异化设计?4)当前SoC在设计验证方面遇到哪些挑战?有什么应对解决方案?2.选择题1)以下不属于嵌入式系统特点的是()。A)嵌入式系统与具体应用紧密结合,具有很强的专用性。B)嵌入式系统通常包含在非计算机设备(系统)中,具有隐蔽性。C)嵌入式系统的软硬件资源往往受到严格的限制。D)嵌入式系统性能较低,价格也比较便宜。习题22)以下不是嵌入式系统中的CPU特点的是()。A)支持实时处理。B)低功耗。C)高主频。D)集成了测试电路。3)以下关于SoC叙述中错误的是()。A)SoC也称为系统级芯片,它是电子设计自动化水平的提高和集成电路制造技术飞速发展的产物。B)SoC芯片中既包含数字电路,也可以包含模拟电路,甚至还能包含数字/模拟混合电路和射频电路。C)SoC将嵌入式系统的几乎全部功能都集成在一块芯片中,单个芯片就能实现数据的采集、转换、存储、处理和I/O等多种功能。D)SoC的设计制造难度很大,目前还没有得到广泛使用。习题24)以下关于集成电路的叙述中错误的是()。A)集成电路的集成度指的是单个集成电路所含电子元件(如晶体管、电阻、电容等)的数目多少。B)根据集成度的高低,集成电路可以分为小规模、中规模、大规模、超大规模和极大规模等几种。C)嵌入式系统中使用的处理器芯片属于大规模集成电路。D)集成电路的制造工艺复杂且技术难度非常高,许多工序必须在恒温、恒湿、超洁净的无尘厂房内完成。5)互联网借助TCP/IP协议把许多同构或异构的计算机网络互相连接起来,实现了遍布全球的计算机的互连、互通和互操作,其中的IP协议起着关键性的作用。下面有关IP协议的叙述中,错误的是()。A)IP地址解决了网络中所有计算机的统一编址问题。B)IP数据报是一种独立于各种物理网络的数据包格式。C)目前广泛使用的是IP协议的第6版(IPv6),IPv4已经很少使用。D)布线器(Router)是实现网络与网络互连的关键设备。习题26)以下关于嵌入式处理器的说法正确的是()。A)RISC是复杂指令集结构计算机。B)哈佛结构是程序与数据统一的存储结构。C)ARM处理器的指令编码全部为32位。D)ARMCortex-M是面向控制的嵌入式Cortex处理。7)以下关于ARM处理器的工作模式,以下说法错误的是()。A)用户模式是程序正常执行的模式。B)快速中断模式处理高速中断,用于高速数据传输或通道处理。C)管理模式用于操作系统的保护模式,处理软中断。D)系统模式用于处理未定义的指令陷阱。

8)以下关于ARM处理器CPSR寄存器说法错误的是()。A)CPSR记录ARM的工作状态。B)CPSR决定ARM工作模式。C)CPSR可设定是否允许外部中断和快速中断。D)CPSR是ARM的控制寄存器。9)关于ARM处理器的异常,以下说法错误的是()。A)复位异常级别最高。B)FIQ是外部中断异常。C)每个异常中断向量占据4个字节。D)不同类型的异常中断其中断服务程序入口地址不同。习题2习题210)以下关于ARM处理器说法正确的是()。A)小端格式是指数据的高字节存储在高字节地址中,低字节数据存放在低字节地址中。B)ARM处理器支持8位、16位、24位和32位数据处理。C)MPU为ARM处理器的存储器管理单元。D)MMU为ARM处理器的存储器保护单元。11)关于ARM处理器的命名,以下说法错误的是()。A)ARM11之前的命名中TDMI中的T的含义是Thumb,即支持高密度16位Thumb指令集。B)ARM11之后,采用ARMCortex来命名。C)ARMCortex-R为高端应用型Cortex处理器。D)ARMCortex-M系列处理器内部没有MMU部件。习题23.调研题AI在复杂的高性能SoC设计中能够发挥什么作用?未来设计趋势如何?4.软件运用题请画出以下程序综合后的电路图,并编写Testbench,画出仿真波形:always@(posedgeclk)beginq0<=~q2;q1<=q0;q2<=q1;end集成电路EDA插入说明1SoC硬件设计相关语言八位加法器的VerilogHDL源代码moduleadder8(cout,sum,ina,inb,cin);

output[7:0]sum;

outputcout;

input[7:0]ina,inb;

inputcin;

assign

{cout,sum}=ina+inb+cin;endmodule准备实现的逻辑功能∑888cicocincoutinainbsum简单的VerilogHDL的例子程序为模块结构,包含在module与endmodule之间端口列表输入、输出端口描述--描述外部特性逻辑功能描述--描述内部特性模块名模块的概念模块是VerilogHDL语言的基本单元,数字系统用模块集合的形式来描述模块描述某个设计的功能、结构和与其它模块通信的外部端口VerilogHDL中各个模块是并行运行的模块可以调用其它模块的实体(实例)数字IC设计方法VHDL简介module<模块名>(<端口列表>)

端口说明(input,output,inout)参数定义//可选数据类型定义//wire、reg、task、function连续赋值语句(assign)//组合逻辑过程块(always和initial)-行为描述语句低层模块实例//调用其它模块任务和函数延时说明块endmodule模块注意模块的名称DFF,端口列表及说明模块通过端口与外部通信端口在模块名字后的括号中列出端口可以说明为input,output及inout端口等价于硬件的引脚(pin)端口moduleDFF(d,clk,clr,q,qb);....endmodulemoduleREG4(d,clk,clr,q,qb);out

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论