资源描述
,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,SoC架构PPT讲座,2,目录,1,、什么是SOC,2,、,CPU,3,、总线,4,、系统控制模块,3,什么是,SoC,逻辑单元,Analog,静态,RAM,CPU,内核,PAD,Die,裸片,4,累计流片,20,余次,10,多种,SoC,芯片,65nm,,千万门级设计经验,几款,SoC,芯片的版图,SEP0718,65nm TSMC,片上系统:SoC(System on Chip),具有知识产权的内核:IP核(Intellectual Property Core),专用集成电路:ASIC(Application Specific Integrated Circuit),什么是SOC,IP核(intellectual property core)全称知识产权核。是指某一方提供的、形式为逻辑单元、芯片设计的可重用模块。IP核通常已经通过了设计验证,设计人员以IP核为基础进行设计,可以缩短设计所需的周期。1IP核可以通过协议由一方提供给另一方,或由一方独自占有。IP核的概念源于产品设计的专利证书和源代码的版权等。设计人员能够以IP核为基础进行专用集成电路或现场可编程逻辑门阵列的逻辑设计,以减少设计周期。,ASIC,(,Application Specific Integrated Circuit,),特定应用集成电路 让我们从特定应用集成电路(ASIC)开始。这是因特定目的而创建的设备。这是一个完全或主要部分是数字性质的芯片,任何模拟和混合信号功能是沿着物理接口线(物理层)或锁相回路(PLL)的,。,ASIC通常被设计和使用在特定系统中的单个公司,。,开发ASIC非常昂贵、耗时、资源密集的,但ASIC确实能,提,供低功耗的高性能,。,什么是SOC,片上系统(SoC:System-on-a-chip)指的是在单个芯片上集成一个完整的系统,对所有或部分必要的电子电路进行包分组的技术。所谓完整的系统一般包括中央处理器(CPU)、存储器、以及外围电路等。,片上系统技术通常应用于小型的,日益复杂的客户电子设备。例如,声音检测设备的片上系统是在单个芯片上为所有用户提供包括音频接收端、模数转换器(ADC)、微处理器、必要的存储器以及输入输出逻辑控制等设备。此外系统芯片还应用于单芯片无线产品,诸如蓝牙设备,支持单芯片WLAN和蜂窝电话解决方案。,由于空前的高效集成性能,片上系统是替代集成电路的主要解决方案。SoC 已经成为当前微电子芯片发展的必然趋势。,什么是SOC,CPU,IP,IP,IP,IP,IP,IP,存储区域,接口外设,IP,系统控制,IP,IP,IP,IP,总线,9,o,SoC,整体架构,BUS,CPU,外部存储器,控制器,EMI,系统控制模块,各种接口,CPU,一个CPU的外部端口都会有地址总线和数据总线,我们选择一种总线,把CPU和这些外围IP连起来,让CPU可以和这些IP进行通讯,完成数据的计算和输入输出,这样就变成了一个具有实际意义的系统了。,在这一点上,不同的厂商做法不同。,对于Intel而言,他是有晶圆的老大,也就是说,它的CPU由他自己设计好后入场流片,生产好之后就诞生一个正方形的下面有很多针脚的东西,就是你们口中的CPU了。它的内存控制器在主板上的北桥里面,而硬盘控制器网络控制器啥的都在主板上的南桥。从这里可以看出,它的CPU和各类控制器都是分开的,因而面积大,功耗高,性能强。,ARM就不一样,首先ARM属于无晶圆。什么意思?就是ARM自己不会去流片,想用ARM的CPU怎么办?直接购买授权,而后ARM就直接把它的CPU的源代码发给你了。我们实验室就有ARM7和ARM11的源代码,这些代码我也读过不少。从这点来说,ARM的确胆子很大。,ARM的功耗较低面积较小,所以各大厂商通常会把它的CPU和各类外围IP都放到一起,然后自己拿着图纸去流片,生产出来的也是一个正方形,下面有很多引脚,这个东西不仅包含了CPU,还包含了其他的控制器,这个东西就叫做SOC(system on chip)。因特尔绝对不会给你看它的RTL代码,只会给你他芯片的spec。,所以目前各大厂商所做的事情,就是买来ARM的授权,得到ARM处理器的源代码,而后自己搞一些外围IP(或者买或者自己设计),组成一个SOC后,去流片。不同的SOC,架构不同(就是CPU如何和IP联系起来,有的以总线为核心,有的以DDR为核心),,当然,厂商会对SOC里面的ARM核做一些小的修改,。,存储区域,RAM,读写方便,断电后不能保存数据。,ROM 断电也能保存数据,但资料写入只能用一般方法或根本无法更改。,Flash存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还可以快速读取数据(NVRAM的优势),使数据不会因为断电而丢失。,12,SEP0718,13,13,SEP0718,结构图,14,Samsung 6410,14,15,Telechips 8900,15,16,Samsung S5PV210,16,17,工作站,14,瘦客户机,30,SUN,大型服务器,HP server20,矢量信号源,可编程电源,频谱分析仪,网络分析仪,逻辑分析系统,6GHZ,混合信号测试,深亚微米,EDA,软件,芯片设计环境,18,芯片量产流程,芯片需求分析,芯片定义,模块划分,电路设计,验证,物理设计,流片,封装,ATE,测试,板级模块测试,系统级测试,稳定性测试,产品样机,产品小批量,芯片量产,18,市场调研,产品定义,方案设计,芯片需求,19,目录,1,、,SoC,整体架构,2,、,CPU,3,、总线,4,、系统控制模块,20,CPU SoC,中的内核,CPU,所做的工作由其指令集决定,CPU,的控制和数据通路执行指令集中的各种指令,21,指令集,ISA,要完成哪些工作?,以,ARM,为例,分支指令,数据处理指令,寄存器传送,算术运算,逻辑运算指令,比较指令,乘法指令,存储器访问指令,Load/Store,内存访问指令,批量,Load/Store,内存访问指令,SWP,操作指令,SWI,系统调用指令,状态寄存器访问指令,22,控制和数据通路,23,CPU,基本概念,CISC,与,RISC,流水线技术,分支预测技术,乱序执行技术,标量与超标量处理器,SISD,、,MIMD,、,SIMD,、,SPMD,和向量处理器,VLIW,处理器,CISC,与,RISC,CISC,(,Complex Instruction Set Computer,),指令长度可变,编译简单,Intel,RISC,(,Reduced Instruction Set Computer,),采用固定长度的指令格式,指令归整、简单、基本寻址方式有,2,3,种。,使用单周期指令,便于流水线操作执行。,大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载,/,存储指令可以访问存储器,以提高指令的执行效率。,编译复杂,ARM,、,MIPS,、,PowerPC,24,处理器位宽,当前高性能嵌入式系统,SoC,的处理器多为,32,位处理器。所谓,32,位处理器,即处理器内部的寄存器(包括地址寄存器与数据寄存器)位宽最大为,32,位。低性能的嵌入式系统,SoC,一般多采用,16,位微控制器(,micro-controllers,),然而,随着工作负载的增加,此类系统逐渐开始使用,32,位处理器。可以预见,在不久的将来,伴随高性能及超大存储空间的需求,,64,位处理器将逐渐成为主流。,25,26,CPU,基本概念,CISC,与,RISC,流水线技术,分支预测技术,乱序执行技术,标量与超标量处理器,SISD,、,MIMD,、,SIMD,、,SPMD,和向量处理器,VLIW,处理器,流水线技术,流水技术无助于减少单个任务的处理延迟(,latency,)但有助于提高整体工作负载的吞吐率,多个不同任务同时操作,使用不同资源,潜在加速比,=,流水线级数,流水线的速率受限于最慢的流水段,流水段的执行时间如果不均衡,那么加速比就会降低,开始填充流水线的时间和最后排放流水线的时间降低加速比,相关将导致流水线暂停,28,CPU,基本概念,CISC,与,RISC,流水线技术,分支预测技术,乱序执行技术,标量与超标量处理器,SIMD,、,MIMD,和向量处理器,VLIW,处理器,分支预测技术,分支预测(,Branch Prediction,):是解决处理分支指令(,if-then-else,)导致流水线失败的数据处理方法,由,CPU,来判断程序分支的进行方向,能够加快运算速度。当包含流水线技术的处理器处理分支指令时就会遇到一个问题,根据判定条件的真,/,假的不同,有可能会产生跳转,而这会打断流水线中指令的处理,因为处理器无法确定该指令的下一条指令,直到分支执行完毕。流水线越长,处理器等待的时间便越长,因为它必须等待分支指令处理完毕,才能确定下一条进入流水线的指令。分支预测技术便是为解决这一问题而出现的。分支预测技术包含编译时进行的静态分支预测和硬件在执行时进行的动态分支预测。,最简单的静态分支预测方法就是任选一条分支。这样平均命中率为,50%,。更精确的办法是根据原先运行的结果进行统计从而尝试预测分支是否会跳转。任何一种分支预测策略的效果都取决于该策略本身的精确度和条件分支的频率。,动态分支预测是近来的处理器已经尝试采用的技术。最简单的动态分支预测策略是分支预测缓冲区(,Branch Prediction Buff,)或分支历史表(,branch history table,)。,29,乱序执行技术,乱序执行(,out-of-order execution,),是指,CPU,允许将多条指令不按程序规定的顺序分开发送给各相应电路单元处理的技术。这样将根据某个电路单元的状态和各指令能否提前执行的具体情况分析后,将能提前执行的指令立即发送给相应电路单元执行,在这期间不按规定顺序执行指令,然后由重新排列单元将各执行单元结果按指令顺序重新排列。采用乱序执行技术的目的是为了使,CPU,内部电路满负荷运转并相应提高了,CPU,运行程序的速度。,30,标量与超标量处理器,根据处理器的微架构设计,处理器可以分为标量(,scalar,)处理器与超标量(,superscalar,)处理器。,超标量处理器是指在处理器内核中实现了指令级的并发处理。这种技术能够在相同的,CPU,主频下实现更高的,CPU,吞吐率(,throughput,)。处理器的内核中一般有多个执行单元(或称功能单元),如算术逻辑单元、位移单元、乘法器等等。未实现超标量体系结构时,,CPU,在每个时钟周期仅执行单条指令,因此仅有一个执行单元在工作,其它执行单元空闲。超标量处理器在一个时钟周期可以同时分派多条指令在不同的执行单元中被执行,这就实现了指令级的并行。超标量体系结构可以视作,MIMD,(多指令多数据)。,31,SIMD,、,MIMD,和向量处理器,MIMD,(,Multiple Instruction Multiple Data,):可以编写独立的程序并运行在不同的处理器上,而且这些程序可以协同完成一个共同的大型目标。,SIMD,(,Single Instruction Multiple Data,):对向量数据进行操作。例如,一个单一的,SIMD,指令可以把,64,个数相加,只需要把,64,个数据流发送到,64,个,ALU,,就可以在一个时钟周期内得到,64,个和。,SIMD,的优点是所有并行执行单元都是同步的,它们都对同意指令作出响应。,SIMD,的一个更加古老和优雅的称呼是向量体系结构。,32,VLIW,处理器,超长指令字(,VLIW,:,Very long instruction word,)指的是一种被设计为可以利用指令级并行(,ILP,)优势的,CPU,体系结构。一个按照顺序执行指令的非超标量处理器不能充分的利用处理器的资源,有可能导致低性能。性能可以通过同时执行一系列指令中的不同子步骤来提高(这就是流水线技术),或者像超标量架构一样,甚至完全的并行执行多条处理器指令。进一步的提高可以通过指令的执行顺序与在程序代码中出现的顺序不同来提高,这就是乱序执行。这三种技术都要付出代价:增加了硬件的复杂性。在并行执行任何操作之前,处理器必须确认这些指令间没有相互依赖。例如第一条指令的结果作为第二条指令的输入。很明显,这样的两条指令无法同时执行,并且第二条指令不能在先于第一条指令执行。乱序执行处理器增加了硬件资源用于调度指令和决定相互依赖。,VLIW,通过另一种方法来实现并行。,VLIW,的并行指令执行是基于一个确定的调度。这个调度是程序在编译的时候就已经确定好的。由于决定乱序执行的工作是由编译器来完成的,处理器不再需要上面三种技术所需的调度硬件。结果,VLIW,处理器相比其他多数的超标量处理器提供了更加强大的处理能力但是更少的硬件复杂性(编译器的复杂性提高了)。正如一些其他比较新颖的架构,这种并行执行的概念只有当编译器能生成有效的代码的时候才变得有用。,33,34,目录,1,、,SoC,整体架构,2,、,CPU,3,、总线,4,、系统控制模块,35,总线,SoC,的桥梁,CPU,、高速设备、低速设备、外部存储器控制接口、系统控制模块等等,SoC,中各个模块之间的数据传输。,SoC,中的各个,IP,模块以统一的接口和总线通信,避免了挂接在不同,SoC,架构中接口部分代码的重新编写。,常用的总线:,AMBA,、,NoC,36,目录,1,、,SoC,整体架构,2,、,CPU,3,、总线,4,、系统控制模块,中断控制器,RTC,Watchdog,DMAC,PMC,ICE,Timer,37,中断控制器,对,SoC,芯片中各个外设的中断进行管理,进行优先权排队,并送出,Irq,信号给,CPU,连接在,APB,总线上,INTC,nIRQ,IRQ1,IRQ2,IRQN,ARM,Vector Table,FIQ,IRQ,(Reserved),Data Abort,Prefetch Abort,Software Interrupt,Undefined Instruction,Reset,0 x1C,0 x18,0 x14,0 x10,0 x0C,0 x08,0 x04,0 x00,ARM7TDMI,INTC,内,部,中,断,外,部,中,断,中,断,服,务,程,序,执,行,中断,产生,中断,返回,38,INTC,在,SoC,芯片中的位置,INTC,39,信号列表,40,INTC,整体框架,Apb_interface,:,是,INTC,与总线的接口模块;而又同时是,INTC,的控制模块,里面有,INTC,所有的寄存器信息;,Int_gen:,用于接收中断源,选择中断源为,irq,或者,fiq,;中断屏蔽;软件中断。,Priority_logic,:,用于软件中断优先级屏蔽,并且在所有的未被屏蔽的中断信号里面选出优先级最高的中断源,并产生中断信号,分为,irq,模块和,fiq,模块;,41,Irq,中断产生,IRSR,:,IRQ,原始中断状态寄存器,当对应的中断源无效时,该位为,0,IFR,:,IRQ,软件强制中断寄存器,是否软件强制该位对应的中断源发出中断信号,IER,:中断允许寄存器,是否允许对应中断源的,IRQ,中断信号。,ISR,:中断状态寄存器,当对应中断源或使能位(,IER,)无效时,该位才为,0,IMR,:中断屏蔽寄存器,是否屏蔽对应的,IRQ,中断信号,IMSR,:屏蔽状态寄存器,对应的中断源、使能位无效或屏蔽位有效时,该位才为,0,IFSR,:最终中断状态寄存器,只有优先级大于,IPLR,寄存器所设置的中断源才能在此寄存器相应位置位,IPLR,:中断优先级寄存器,设置普通中断的优先级门限,只有优先级大于此值的中断才能通过优先级过滤逻辑送到,CPU,42,Fiq,中断产生,FIRSR,:,FIQ,原始中断状态寄存器,FIFR,:,FIQ,软件强制中断寄存器,FIER,:,FIQ,中断允许寄存器,FISR,:,FIQ,中断状态寄存器,FIMR,:,FIQ,中断屏蔽寄存器,FIFSR,:,FIQ,中断最终状态寄存器,43,中断源内部中断,RTC,秒中断、分中断、定时中断、,Watchdog,中断,UART,数据发送结束中断,数据接收有效中断,TIMER,定时,/,计时中断,DMAC,DMA,错误和,DMA,传输完成,LCDC,错误响应、帧结束、帧起始,SPI,FIFO,空满、发送,FIFO,下溢、接收,FIFO,上溢,44,中断源外部中断,比内部中断复杂,不可控,通常和,GPIO,口复用,中断源触发方式,上升沿触发,下降沿触发,高电平触发,低电平触发,外部中断信号特殊处理,去除毛刺、寄存、同步到总线时钟,外部中断需要清除,45,使用外部中断,1,、清除外部中断,在使用外部中断以前,必须先清除在此之前的中断信号,2,、配置,GPIO,控制寄存器,先配置管脚方向为输入,再配置中断触发类型,最后配置管脚模式为中断模式,3,、配置中断寄存器,设置,INTC,的中断屏蔽寄存器的相应位屏蔽中断,设置,INTC,的相应位以允许该中断源产生的中断,46,ARM,异常向量表,47,异常处理方式,B irq_handler,(Reserved),B data_abort_handler,B prefetch_abort_handler,B SWI_handler,B Undef_handler,B reset_handler,FIQ 0 x1C,IRQ 0 x18,0 x14,Data Abort 0 x10,Prefetch Abort 0 x0C,SWI 0 x08,Undef 0 x04,Reset 0 x00,fiq_handler,irq_handler,48,异常处理程序,LDRpc,RESET_ENTRY,LDRpc,UNDEF_ENTRY,LDRpc,SWI_ENTRY,LDRpc,PABORT_ENTRY,LDRpc,DABORT_ENTRY,LDRpc,SYSERR_ENTRY,LDRpc,IRQ_ENTRY,LDRpc,FIQ_ENTRY,RESET_ENTRYDCDInitialise_Target,UNDEF_ENTRYDCDUNDEF_Handler,SWI_ENTRYDCDSWI_Handler,PABORT_ENTRYDCDABORT_Handler,DABORT_ENTRYDCDABORT_Handler,SYSERR_ENTRYDCD0,IRQ_ENTRYDCDIRQ_Handler,FIQ_ENTRYDCDFIQ_Handler,49,IRQ,异常处理程序(,C,),extern void int_vector_handler(void),U32intnum;,U8i=0;,intnum=*(RP)(INTC_IFSTAT);,while(intnum!=1),intnum=intnum1;,i+;,(*vectori.handler)();,return;,INT_VECTOR vector=,/*interrupt number,handler*/,INT_NULL,NULL ,INT_EXT0,NULL ,INT_EXT1,NULL ,INT_EXT2,NULL ,INT_EXT3,NULL ,INT_EXT4,NULL ,INT_EXT5,NULL ,INT_EXT6,NULL ,INT_EXT7,NULL ,INT_EXT8,NULL ,INT_EXT9,NULL ,INT_EXT10,NULL ,INT_EXT11,NULL ,INT_EXT12,NULL ,INT_EXT13,NULL ,INT_EXT14,NULL ,INT_SSI,ssi_handler ,INT_UART,uart_handler ,INT_WD,NULL ,INT_GPT,NULL ,INT_EMI,NULL ,INT_DMA,NULL ,;,50,IRQ,异常处理程序(汇编),IRQ_Handler,入栈,保存现场,IMPORTint_vector_handler,BLint_vector_handler,出栈,恢复现场,SUBS PC,,,LR,,,4,51,UART,中断的初始化配置,VOID int_uart0(VOID),UNSIGNED sysclk =50000000;/,系统时钟,UNSIGNED baudrate =57600;/,波特率,UNSIGNED databit =8;/,数据位,INT recie=1;/,接收中断使能,0 disable,1 enble,INT thrie=0;/,发送中断使能,0 disable,1 enble,Intc_mask_irq(INT_UART0);/,屏蔽,uart0,中断,中断屏蔽寄存器相应位置,1,intc_enable_irq(INT_UART0);/,使能,uart0,中断,*,(RP)INTC_IEN|=0X01000000,init_uart0(sysclk,baudrate,databit,trigerlevel);/,初始化,uart0,uart0_int_en(recie,thrie);/,配置,UART,的寄存器,接受中断使能,发送中断不使能,intc_unmask_irq(INT_UART0);/,打开中断屏蔽,中断屏蔽寄存器相应位置,0,函数,int_uart0(),完成使用异步通信收发器,UART,中断的初始化配置,该函数会对中断允许寄存器、中断屏蔽寄存器等寄存器进行操作。,52,UART,中断服务程序,VOID uart_handler(INT Vector)/,中断服务子程序,case,接收数据状态中断,接收数据有效中断,Timeout,中断,发送,FIFO,中断,Modem,状态变化中断,53,中断控制器小结(,1,),中断控制器,挂在,APB,总线上,对外部中断、内部中断、软件强制中断进行管理,送出,IRQ,信号给,ARM,设计时考虑接口信号和寄存器的设计,APB,接口信号,中断源信号,送给,ARM,的,IRQ,、,FIQ,信号,54,中断控制器小结(,2,),中断控制器产生,IRQ,中断送给,ARM,的过程,外设产生的内部中断,外设的中断允许寄存器,外设中断屏蔽寄存器,与,GPIO,口复用的外部中断,GPIO,的管脚方向、管脚模式、中断触发类型,软件强制中断,INTC,原始中断状态寄存器,中断允许寄存器,中断屏蔽寄存器,中断优先级寄存器,最终中断状态寄存器,送出,IRQ,信号给,ARM,55,中断控制器小结(,3,),ARM,处理中断的过程,执行完当前指令后,PC,指向,0 x18,跳转指令跳转到,IRQ,中断服务程序,保存现场,调用,C,编写的中断服务程序,恢复现场,恢复,PC,56,目录,1,、,SoC,整体架构,2,、,CPU,3,、总线,4,、系统控制模块,中断控制器,RTC,和,Watchdog,Timer,PMC,ICE,DMAC,57,实时时钟,RTC,对,SoC,中锁相环或者外部晶振的,32.768kHz,的时钟进行计数;,产生时、分、秒三种中断;,送给中断控制器;,中断控制器进行优先权排队后送给,CPU,;,CPU,执行中断服务程序;,在中断服务程序中判断中断源,并更新系统的实时时钟。,58,Watchdog,WATCHDOG,作用:,提供防止系统失败的一种保证措施,通过软件间隔的对,WATCHDONG,进行服务,确保系统工作正常。,特征:,提供,reset,系统,提供,watchdog,中断,开始,watchdog,周期,(可配置),时间流,软件访问,看门狗,软件访问,看门狗,软件未能及时,访问看门狗,产生中断,或者,复位系统,组成框图,在,APB,总线上使用,PCLK,总线时钟,在,PAD,中使用,CLK32,提供的时钟,所以,RTC,模块属于多时钟域设计。其中,Sync_Pto32,与,Sync_32toP,模块是保证两个时钟域同步而设置的。,APB,接口模块完成数据从,PAD,到,APB,域的接口转换,,CLK32,域的,Time,,,Sample,,,WatchDog,模块用来计时或形成中断。,寄存器列表,61,目录,1,、,SoC,整体架构,2,、,CPU,3,、总线,4,、系统控制模块,中断控制器,RTC,和,Watchdog,Timer,PMC,ICE,DMAC,62,通用定时器(,TIMER,),作用:,TIMER,是片内集成的通用定时器,能够向系统提供定时中断,也可以通过外部时钟进行定时计数。,工作模式,重启计数模式:当通道使能后计数器锁存加载计数寄存器的值,然后在系统时钟的驱动下递减计数。当计数到零时,产生一个标志用于设置相应的中断标志位,若中断未被屏蔽则产生中断;同时,计数器重新锁存加载计数寄存器的值开始一个新的计数周期,自由计数模式:当通道使能后计数器锁存加载计数寄存器的值,然后在系统时钟的驱动下递减计数。当计数到零时,产生一个标志用于设置相应的中断标志位,若中断未被屏蔽则产生中断;同时,计数器加载数据,0 xFFFFFFFF,(针对,32,位计数器)或,0 xFFFF,(针对,16,位定时器)开始一个新的计数周期,外部捕获功能:利用外部事件捕获计数器的当前值,也就是当检测到输入端口上发生指定的边沿变化时,立即锁存计数器的当前值并发出中断。利用捕获功能可以确定外部输入信号的频率、脉冲宽度等。,结构框图,寄存器列表,65,目录,1,、,SoC,整体架构,2,、,CPU,3,、总线,4,、系统控制模块,中断控制器,RTC,和,Watchdog,Timer,PMC,ICE,DMAC,66,PMC,模块介绍,功耗管理模块(,PMC,)控制处理器不同工作模式之间的切换,以,SEP3203,为例:,slow,、,normal,、,idle,和,sleep,。,这些工作模式的开发目的是根据芯片不同的应用,通过动态地管理芯片,内部各子模块,的时钟源供给和,系统的工作频率,,从而降低芯片的整体功耗。,另外,PMC,还包含了各个子模块的时钟控制电路,它可以集中控制、关闭不必要打开的模块达到低功耗的目的。,提供四种低功耗模式:,SLOW,、,NORMAL,、,IDLE,和,SLEEP,。系统中模块工作时钟的集中控制策略,系统中的模块可以通过,PMC,来关闭和打开。,SLOW,模式不打开,DPLL,,芯片工作频率为,25MHZ/n,,其中,n=1/2/4/6/8,,缺省为,25MHZ/1,;,NORMAL,工作在,DPLL,的时钟之下,此时,DPLL,的输入为晶振时钟;,IDLE,模式关闭,CORE,时钟,减小内核和存储器功耗。,SLEEP,关闭所有时钟,,SLEEP,时的功耗,150uW,,支持,SDRAM,的数据自刷新,支持,RTC,日历保持。,67,结构框图,寄存器列表,69,目录,1,、,SoC,整体架构,2,、,CPU,3,、总线,4,、系统控制模块,中断控制器,RTC,和,Watchdog,Timer,PMC,ICE,DMAC,ARM Debug System Components,EmbeddedICE,Logic,ARM Core,SOC,JTAG,Port,RunControlUnit,TAP,e.g.Multi-ICE,RVI,Host computer runningAXD(+TDT for trace)or RVD,Address,Control,EmbeddedICE,Logic,ARM Core,SOC,EmbeddedTraceMacrocell,Trace,Port,JTAG,Port,TraceCapture Unit,RunControlUnit,Data,TAP,e.g.Multi-ICE,RVI,e.g.MultiTrace,RVT,Host computer runningAXD(+TDT for trace)or RVD,Address,Control,EmbeddedICE,Logic,ARM Core,SOC,EmbeddedTraceMacrocell,Trace,Port,JTAG,Port,RunControlUnit,Data,TAP,EmbeddedTrace Buffer,e.g.Multi-ICE,RVI,Host computer runningAXD(+TDT for trace)or RVD,Address,Control,EmbeddedICE,Logic,ARM Core,SOC,EmbeddedTraceMacrocell,Trace,Port,JTAG,Port,TraceCapture Unit,RunControlUnit,Data,TAP,EmbeddedTrace Buffer,e.g.Multi-ICE,RVI,e.g.MultiTrace,RVT,Host computer runningAXD(+TDT for trace)or RVD,基于,JTAG,的片上,ICE,扫描链,0,:,113,位,包含数据总线、控制信号、地址总线,扫描链,1,:,33,位,为扫描链,0,子集,包括数据总线和,DBGBREAK,信号,扫描链,2,:,38,位,主要用于访问,ICE,逻辑部件中的各寄存器,EmbeddedICE,逻辑电路包括一组寄存器和比较器,,3,个信号,DBGREQ,:调试请求,DBGACK,:调试确认,BREAKPT,:断点信号,TAP,控制器可以通过,JTAG,接口控制各个硬件扫描链,调试原理:如何设置断点?,如何进入调试状态,和正常运行状态有,什么区别?在调试状态下如何访问内部寄存器、如何访问内存?,The EmbeddedICE Logic,通过扫描链,2,访问,ICE,的寄存器,,ICE,包含三个部分,Debug Control and Status registers,(调试寄存器),调试控制寄存器,调试状态寄存器,Two watchpoint units,2,组,每组,3,个寄存器(数据,地址,控制),通过监控数据、地址和控制信号,判断,数据观察点,watchpoint,和,程序断点,breakpoint,每一个组单元可以提供,1 watchpoint,1,hardware breakpoint,in ROM or RAM,or,Multiple,software breakpoints,in RAM,Debug Communications Channel,(调试通信通道),一个,6,位的通信控制寄存器,一个,32,位的通信数据读写寄存器,Watchpoints,(数据观察点),Control,Addr,Value,Data,Value,Control,Value,Addr,Mask,Data,Mask,Control,Mask,A31:0,C,o,m,p,a,r,a,t,o,r,Watchpoint,D31:0,0 xF000,0 x0,0 xffffffff,Data write,0 xF000,Memory,Location to be watched,读写完成访问的数据以后进入调试状态:,A,watchpoint,:,当约定存储器被约定的方式访问以后触发断点;,这个例子说明当地址,0 xF000,被写入的时候产生的观察点,每一个观察点单元可以产生一个数据观察点断点,Hardware Breakpoints(,硬件断点,),0 x8000,ARM-0 x3Thumb-0 x1,0 xffffffff,Opcode fetch,0 x8000,Memory,Breakpoint to be set here,Control,Addr,Value,Data,Value,Control,Value,Addr,Mask,Data,Mask,Control,Mask,A31:0,C,o,m,p,a,r,a,t,o,r,Breakpoint,D31:0,A,hardware breakpoint,:当程序在约定地址取出指令的时候,触发断点,这个例子说明:在,0 x8000,地址取指令的时候产生程序断点,Hardware breakpoints can,can be set in RAM or ROM.,Each watchpoint unit can be used to set one(and only one),hardware breakpoint,.,Software Breakpoints(,软件断点),Memory,0 xffffffff,0 xeeeeeeee,0 x0,Opcode fetch,Control,Addr,Value,Data,Value,Control,Value,Addr,Mask,Data,Mask,Control,Mask,A31:0,C,o,m,p,a,r,a,t,o,r,Breakpoint,D31:0,1.Read and store opcode,2.Write“special”value,A,software breakpoint,:软件断点是约定的一条指令被取指的时候触发程序断点(这条指令可以在任何地址),这个例子说明了软件断点实现的过程,首先在,Data Value,寄存器中写入特定指令,,Addr Mask,为,0 x,ffffffff,,当取值到特殊指令的时候产生断点。只能在,RAM,中产生。,Each watchpoint unit can be used to set an unlimited number of,software breakpoints,.,(The“special”value),当需要在某地址代码处设置软件断点的时候,仿真器会先将此处代码进行备份保护,然后将预先设定好的断点特征值,(,一般为,0 x0000,等不易与代码混淆的值,),写入此地址,覆盖原来的代码数据。,76,目录,1,、,SoC,整体架构,2,、,CPU,3,、总线,4,、系统控制模块,中断控制器,RTC,和,Watchdog,Timer,PMC,ICE,DMAC,77,数据传送方式,程序控制下的数据传送,通过,CPU,执行程序中的,I/O,指令来完成传送,又分为:,查询传送,、,中断传送,直接存储器存取(,DMA,),传送请求由外设向,DMA,控制器(,DMAC,)提出,后者向,CPU,申请总线,最后,DMAC,利用系统总线来完成外设和存储器间的数据传送,78,查询传送的两个环节,查询环节,寻址状态口,读取状态寄存器的标志位,若不就绪就继续查询,直至就绪,传送环节,寻址数据口,是输入,通过输入指令从数据端口读入数据,是输出,通过输出指令向数据端口输出数据,输入状态,就绪?,数据交换,Y,N,79,中断传送方式,断点,主程序,中断服务程序,中断请求,对外设,进行处理,继续执行,返回断点,CPU,在执行程序中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序;服务结束后,又返回原来的断点,继续执行原来的程序,80,DMAC,数据传送的方式:,查询传送:简单实用,效率较低;,中断传送:每次传送需要大量
展开阅读全文