资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,AMBA,总线,2,SEP3203,3,目录,AMBA,总线概述,AHB,APB,不同,IP,之间的互连,4,系统总线简介,系统芯片中各个模块之间需要有接口来连接,总线作为子系统之间共享的通信链路,优点,低成本,方便易用,缺点,会造成性能瓶颈,5,AMBA,介绍,Advanced Microcontroller Bus Architecture,片上总线的标准,定义了三种总线,AHB (Advanced High-performance Bus),ASB (Advanced System Bus),APB (Advanced Peripheral Bus),6,AMBA,发展历史,AMBA 1.0,ASB,和,APB,AMBA 2.0,AHB, ASB,和,APB,AMBA 3.0,AMBA Advanced eXtensible Interface (AXI),7,一个典型的,AMBA,系统,处理器和其它主设备,/,从设备都是可以替换的,8,AHB,高速总线,高性能,流水线操作,可支持多个总线主设备(最多,16,个),支持,burst,传输,总线带宽:,8,、,16,、,32,、,64,、,128bits,上升沿触发操作,对于一个新设计建议使用,AHB,9,ASB,高速总线,流水线操作,支持多个总线主设备,支持,burst,传输,总线带宽:,8,、,16,、,32bits,三态、双向总线,(不适于做,DFT,),下降沿或者上升沿触发,10,APB,低速总线、低功耗,接口简单,在,Bridge,中锁存地址信号和控制信号,适用于多种外设,上升沿触发,11,AHB,组成部分,AHB,主设备(,master,),初始化一次读,/,写操作,某一时刻只允许一个主设备使用总线,uP,、,DMA,、,DSP,、,LCDC ,AHB,从设备(,slave,),响应一次读,/,写操作,通过地址映射来选择使用哪一个从设备,外部存储器控制器,EMI,、,APB bridge,、,UART,、,AHB,仲裁器(,arbiter,),允许某一个主设备控制总线,在,AMBA,协议中没有定义仲裁算法,AHB,译码器(,decoder,),通过地址译码来决定选择哪一个从设备,12,APB,组成部分,AHB2APB Bridge,可以锁存所有的地址、数据和控制信号,进行二级译码来产生,APB,从设备选择信号,APB,总线上的所有其他模块都是,APB,从设备,不是流水线方式,接口是零功耗,13,AMBA,协议其他有关问题,与工艺无关,没有定义电气特性,仅在时钟周期级定义时序,提取时序参数依赖于所采用的工艺和工作频率,14,目录,AMBA,总线概述,AHB,APB,不同,IP,之间的互连,15,AHB,总线互连,16,AHB,传输,发起一个请求给仲裁器,驱动地址和控制信号,允许某个主设备控制总线,仅选中的从设备响应地址,/,控制信号,拉高,HREADY,信号,总线传输完成,17,Dummy/Default Master,Dummy Master,Granted when all masters SPLIT,Generates IDLE cycles only,Typically Master #0,Granted when Locked master gets SPLIT response,Implement as part of Address/Control Mux,Default Master,Granted when no master requires bus,Generally master most likely to require bus,Generates IDLE cycles when not requesting bus,Avoids minimum 2 cycle Arbitration period,Immediate access to bus,18,Default Slave,Slave 3,(APB),Default Slave,0x0000_0000,0xFFFF_FFFF,case HADDR is,when . =,HSELebi ,HSELsram ,HSELapb ,HSELdefault ,HRESP ,HRESP 0x38 - 0x3c - 0x30,应用场合:,Cache,填充,34,地址计算举例,根据,HSIZE,和,HBURST,来计算地址,例:起始地址是,0x48,,,HSIZE=010(32bits),35,INCR8 Burst,HCLK,SEQ,NSEQ,SEQ,SEQ,SEQ,SEQ,INCR8,0x60,0x68,0x64,0x6c,0x74,0x70,HTRANS,HBURST,HADDR,HRDATA,d1,d0,d2,d4,d3,d5,0x78,0x7c,SEQ,SEQ,d6,d7,36,WRAP8 Burst,HCLK,SEQ,NSEQ,SEQ,SEQ,SEQ,SEQ,WRAP8,0x70,0x78,0x74,0x7c,0x64,0x60,HTRANS,HBURST,HADDR,HRDATA,d5,d4,d6,d0,d7,d1,0x68,0x6c,SEQ,SEQ,d2,d3,start of line,37,INCR4 Burst,38,WRAP4 Burst,39,例:未定义长度的,Burst,传输,40,HCLK,SEQ,NSEQ,NSEQ,NSEQ,SEQ,SEQ,IDLE,INCR4,SI,SI,0x34,0x3C,0x38,0x40,0x48,0x44,HTRANS,HBURST,HADDR,HRDATA,HWDATA,r6,r5,r7,r9,r8,r10,Example LDM AHB Activity,SI = SINGLE,LDM ,r5-r10,41,注意!,Burst,传输不能穿越,1K,边界,一个从设备最小的地址间隙是,1KB,NONSEQ - SEQ - 1KB Boundary -,NONSEQ - SEQ ,主设备不能试图开始一个可能穿越,1K,边界的固定长度的,incrementing burst,传输,42,INCR Burst over 1k boundary,HCLK,SEQ,NSEQ,SEQ,NSEQ,SEQ,SEQ,INCR,0x3F0,0x3F8,0x3F4,0x3FC,0x404,0x400,HTRANS,HBURST,HADDR,HRDATA,d1,d0,d2,d4,d3,d5,0x408,0x40C,SEQ,SEQ,d6,d7,start of 1k page,43,地址译码,HSELx,:选择从设备,指出由主设备所选择的从设备,由地址译码器来提供选择信号,一个从设备应该至少占用,1KB,的存储空间,需要一个额外的缺省从设备来映射其他的存储地址,44,地址译码(续),45,从设备响应,所访问的从设备必须响应这次传输,从设备可能返回的响应:,完成这次传输,插入等待状态(,HREADY,信号),发出错误信号表示这次传输失败,延迟传输,使得总线可用于其他传输(,split,),46,从设备响应信号,HREADY,:,transfer done,HRESP1:0,:,transfer response,00,:,OKAY,成功,01,:,ERROR,失败,10,:,RETRY,传输未完成,请求主设备重新开始一个传输,11,:,SPLIT,传输未完成,请求主设备分离一次传输,47,两周期的响应,HRESP1:0,OKAY,:单周期响应,ERROR,:两周期响应,RETRY,:两周期响应,SPLIT,:两周期响应,总线的流水特性需要从设备两个周期的响应。可以使得主设备有足够的时间处理下一次传输。,48,Slave Responses,Mem A,Mem B,Mem D,Mem C,Slave,Processor,AMBA,Write Mem E,I couldnt write it because of no mem E!,ERROR,49,Slave Responses,Mem A,Mem B,Mem D,Mem C,Slave,Processor,AMBA,Write Mem A,I couldnt write it now for busy!You could retry write it latter!,BUSY,RETRY|SPLIT,50,例:,Retry,响应,51,RETRY,和,SPLIT,的不同,主要区别在于仲裁的方式,RETRY,:,arbiter,会继续使用通常的优先级,SPLIT,:,arbiter,会调整优先级方案以便其他请求总线的主设备可以访问总线,总线主设备应该用同样的方式处理,RETRY,响应和,SPLIT,响应,52,Locked Transfers,HCLK,HADDR,HWDATA,HLOCK,Address Phase,A,Data Phase A,Address Phase B,A,A,Data Phase B,Address Phase C,C,C,B,B,Locked sequences of transfers cannot be interrupted by interconnect,HLOCK indicates next address phase is part of a locked transfer,In the above transfers to addresses B & C are locked and should not be separated,ARM processors use HLOCK for SWP instruction only,53,数据总线,不是三态总线,读总线和写总线是分开的。,印第安序,在,AMBA,协议中没有定义,主设备和从设备应该采用同样的印第安序,不支持动态印第安序,对于,IP,设计, 只有应用面比较广泛的应用程序才支持两种印第安序。,54,32bit,小印第安数据总线的有效字节,55,32bit,大印第安数据总线的有效字节,56,多个主设备,I am first,I am first!,57,AHB,仲裁信号,58,仲裁信号(续),HBUSREQ,总线请求,HLOCKx,:,高电平:主设备请求锁定总线,HGRANTx,指出主设备,x,可访问总线,主设备,x,控制总线:,HGRANTx=1,且,HREADY=1,59,仲裁信号(续),HMASTER3:0,指出哪个主设备正在进行传输,HMASTLOCK,指出主设备正在进行一次锁定传输,HSPLITx15:0,从设备用这个信号告诉仲裁器哪个主设备允许重新尝试一次,split,传输。,每一位对应一个主设备,60,仲裁举例(,1,),没有等待状态的,grant,61,仲裁举例(,2,),有等待状态的,grant,62,仲裁举例(,3,),Burst,传输之后移交总线,63,总线主设备,Grant,信号,Arbiter,64,几点说明,对于固定长度的,burst,传输,不必持续请求总线,对于未定义长度的,burst,传输,主设备应该持续送出,request,信号,直到开始最后一次传输。,如果没有主设备请求总线,则给缺省主设备,grant,信号,且,HTRANS=IDLE,建议主设备在锁定总线传输结束之后插入,IDLE,传输,以重新仲裁优先级。,65,Split,传输过程,由主设备开始传输。,如果从设备需要多个周期才能获取数据,则从设备给出一个,SPLIT,传输响应。从设备记录主设备号:,HMASTER,。接着仲裁器改变主设备的优先级。,仲裁器,grant,其他的主设备,总线主设备移交。,当从设备准备结束本次传输,将设置给仲裁器的,HSPLITx,信号的相应位。,仲裁器恢复优先级,仲裁器,grant,主设备,这样主设备可以重新开始传输。,结束,66,防止,Deadlock,当多个不同的主设备试图访问同一个从设备,这个从设备发出了,SPLIT,或,RETRY,信号,这是很可能发生,deadlock,从设备最多可以接收系统中,16,个主设备的请求。只需要记录主设备号(忽略地址和控制信号),给出,RETRY,响应的从设备在某一时刻只能由一个主设备访问。,可以使用一些硬件保护机制,比如,ERROR,67,AHB,主设备接口,68,AHB,从设备接口,69,AHB Arbiter,70,AHB Decoder,71,Typical Multi-layer example,Master 0,On-chip,RAM,Master 1,External,Memory,I/F,DMA,Slave,Slave,Mux,Slave,Mux,UART,Timer,GPIO,AHB2APB,Master 0 can access private RAM, APB and external interface,Master 1 can access DMA slave, APB and external interface,Parallel access improves system bandwidth,72,AHB-Lite,Subset of AHB Functionality,Single Master,No need for HBUSREQ & HGRANT,Simple Slaves,No retry or split responses,Standard AHB modules can be used,Allows easier module design/debug,Master 0,Slave,#1,Slave,#2,Slave,#3,Slave,#4,73,AHB,总结,主要组成部分,Master,、,slaves,、,arbiter,、,decoder,传输的过程,流水线机制,Address phase,和,data phase,如何提高性能,Burst read/write,仲裁机制,总线控制权的移交,74,AHB,总结(续),Slave,短时间内无法响应,HREADY,信号拉低,Slave,长时间内无法响应,插入,SPLIT/RETRY,Master,不能进行传输,插入,BUSY,75,AHB,的应用建议,Arbiter,的优先级可以配置,Slave,长时间不能响应的话,一般不支持,SPLIT,响应,使用,RETRY,响应,总线上如果只有一个,master,的话,可以使用,AHB lite,协议,不用,arbiter,设计一个新的,IP,时,要仔细核对,AMBA,的,Feature,和,IP,所支持的,Feature,是否匹配。,76,实现,如果设计中既有主设备端口又有从设备端口,通过主设备端口读,/,写数据,通过从设备端口配置寄存器等,如处理器设置的一些参数,77,目录,AMBA,总线概述,AHB,APB,不同,IP,之间的互连,78,APB,信号,79,APB,信号(续),PADDR31:0,地址总线,由设备总线的,bridge,单元驱动,PSELx,从译码器来的信号,到每一个总线从设备,x,PENABLE,用于在设备总线上把所有访问按时间阶段进行,PWRITE,高电平:写,低电平:读,PRDATA,和,PWDATA,最多,32,位宽,80,Address Decoding Stages,Slave 3,(APB),Slave 1,(EBI),Slave 2,(SRAM),0xCFFF_FFFF,0xC000_0000,0x5000_FFFF,0x5000_0000,0x3FFF_FFFF,0x0000_0000,Peripheral 3,(UART),Peripheral 1,(Int Cont),Peripheral 2,(Timers),0xC3FF_FFFF,0xC300_0000,0xC2FF_FFFF,0xC100_0000,0xC000_FFFF,0xC000_0000,APB,memory map,Timer 2,Timer 1,0xC2FF_FFFF,0xC200_0000,0xC1FF_FFFF,0xC100_0000,AHB Decoder,HSELapb,PSELtim,APB Bridge,Timers,AHB,memory map,Timers,memory map,81,APB Interconnect,AHB2APB,Bridge,APB,Master,PADDR,HCLK,PSEL#1,PWRITE,PSEL#2,PSEL#3,PCLK,HADDR,HWRITE,Peripheral,#1,Peripheral,#3,Peripheral,#2,PENABLE,PWDATA,PRDATA,HRDATA,HSEL,HWDATA,AHB,APB,82,写传输,83,读传输,84,Bridge,How to translate ahb pipelined timing to 2-cycle apb timing?,85,Bridge FSM,AHB Transfer,86,APB Slave,87,APB,到,AHB,的接口读,88,目录,AMBA,总线概述,AHB,APB,不同,IP,之间的互连,89,通信方式,Cpu (master), IP (slave),IP (master) IP (slave),90,Memory mapped IO,每一个从设备都占用系统中的一段地址空间,所有的从设备都是可寻址的,寄存器,/,存储器都是内存映射方式访问,CPU/IP,读写其他,IP,的数据类似于读写存储器,91,IP,间的通信互连,主设备被,arbiter grant,之后,可以访问总线上的所有从设备,92,一个,IP,可以同时拥有主设备接口和从设备接口,93,CPU,和,IP,之间的通信,CPU,总是作为主设备,IP,总是作为从设备,IP,可以发出一个中断请求,CPU,进入中断模式,由,interrupt service routine (ISR),来处理中断,94,例:,DMA,95,例:,DMA,Step0,:,CPU,检查,DMA,的状态以确认是否可用,While(1),Read(0x30004,&status),if(status = 0),break;,96,例:,DMA,Step1,:,CPU,设置(,source address,)、(,destination address,)(,size,),Write (0x30008,0x10000),Write(0x3000C,0x20000),Write(0x30010,0x100),Step 2:,启动,DMA,Write(0x30000,0x1),97,例:,DMA,Step3,:,DMA,把数据从,memory 1,传送到,memory 2,98,例:,DMA,Step 4,:,DMA,向,CPU,发出中断请求,Step 5,:,CPU,检查,DMA,的状态,Read(0x30004, &status),
展开阅读全文