东南大学soc课件6 AMBA总线(6学时)_第1页
东南大学soc课件6 AMBA总线(6学时)_第2页
东南大学soc课件6 AMBA总线(6学时)_第3页
东南大学soc课件6 AMBA总线(6学时)_第4页
东南大学soc课件6 AMBA总线(6学时)_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

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

文档简介

AMBA总线SEP32032目录AMBA总线概述AHBAPB不同IP之间的互连3系统总线简介系统芯片中各个模块之间需要有接口来连接总线作为子系统之间共享的通信链路优点低成本方便易用缺点会造成性能瓶颈4AMBA介绍AdvancedMicrocontrollerBusArchitecture片上总线的标准定义了三种总线AHB(AdvancedHigh-performanceBus)ASB(AdvancedSystemBus)APB(AdvancedPeripheralBus)5AMBA发展历史AMBA1.0ASB和APBAMBA2.0AHB,ASB和APBAMBA3.0AMBAAdvancedeXtensibleInterface(AXI)6一个典型的AMBA系统处理器和其它主设备/从设备都是可以替换的7AHB高速总线,高性能流水线操作可支持多个总线主设备(最多16个)支持burst传输总线带宽:8、16、32、64、128bits上升沿触发操作对于一个新设计建议使用AHB

8ASB高速总线流水线操作支持多个总线主设备支持burst传输总线带宽:8、16、32bits三态、双向总线(不适于做DFT)下降沿或者上升沿触发9APB低速总线、低功耗接口简单在Bridge中锁存地址信号和控制信号适用于多种外设上升沿触发10AHB组成部分AHB主设备(master)初始化一次读/写操作某一时刻只允许一个主设备使用总线uP、DMA、DSP、LCDC…AHB从设备(slave)响应一次读/写操作通过地址映射来选择使用哪一个从设备外部存储器控制器EMI、APBbridge、UART、…AHB仲裁器(arbiter)允许某一个主设备控制总线在AMBA协议中没有定义仲裁算法AHB译码器(decoder)通过地址译码来决定选择哪一个从设备11APB组成部分AHB2APBBridge可以锁存所有的地址、数据和控制信号进行二级译码来产生APB从设备选择信号APB总线上的所有其他模块都是APB从设备不是流水线方式接口是零功耗12AMBA协议其他有关问题与工艺无关没有定义电气特性仅在时钟周期级定义时序提取时序参数依赖于所采用的工艺和工作频率13例:DMA14例:DMAStep0:CPU检查DMA的状态以确认是否可用While(1){Read(0x30004,&status)

if(status==0)break;}15例:DMAStep1:CPU设置(sourceaddress)、(destinationaddress)(size)

Write(0x30008,0x10000) Write(0x3000C,0x20000) Write(0x30010,0x100)Step2:启动DMA Write(0x30000,0x1)16例:DMAStep3:DMA把数据从memory1

传送到memory217例:DMAStep4:DMA向CPU发出中断请求Step5:CPU检查DMA的状态Read(0x30004,&status)18目录AMBA总线概述AHBAPB不同IP之间的互连19AHB总线互连20AHB传输发起一个请求给仲裁器驱动地址和控制信号允许某个主设备控制总线仅选中的从设备响应地址/控制信号拉高HREADY信号,总线传输完成21Dummy/DefaultMasterDummyMasterGrantedwhenallmastersSPLITGeneratesIDLEcyclesonlyTypicallyMaster#0GrantedwhenLockedmastergetsSPLITresponseImplementaspartofAddress/ControlMuxDefaultMasterGrantedwhennomasterrequiresbusGenerallymastermostlikelytorequirebusGeneratesIDLEcycleswhennotrequestingbusAvoidsminimum2cycleArbitrationperiodImmediateaccesstobus22DefaultSlaveSlave3(APB)DefaultSlave0x0000_00000xFFFF_FFFFcaseHADDRiswhen….=>

HSELebi<=‘1’;when….=>

HSELsram<=‘1’;when….=>

HSELapb<=‘1’;whenothers=>

HSELdefault<=‘1’;endcase;DecoderlogicSlave2(InternalMemory)Default_SlavelogiccaseHTRANSiswhenIDLE|BUSY=>HRESP<=OKAY;whenothers=>HRESP<=ERROR;endcase;Slave1(External)0xCFFF_FFFF0xC000_00000x5000_FFFF0x5000_00000x3FFF_FFFF0x0000_000023AHB信号24基本AHB信号HRESETn低电平有效HADDR[31:0]32位系统地址总线HWDATA[31:0]写数据总线,从主设备写到从设备HRDATA[31:0]读数据总线,从从设备读到主设备25基本AHB信号(续)HTRANS指出当前传输的状态NONSEQ、SEQ、IDLE、BUSYHSIZE指出当前传输的大小HBURST指出传输的burst类型HRESP从设备发给主设备的总线传输状态OKAY、ERROR、RETRY、SPLITHREADY高:从设备指出传输结束低电平:从设备需延长传输周期26基本AHB传输两个阶段地址周期,只有一个cycle数据周期,由HREADY信号决定需要几个cycle流水线传送先是地址周期,然后是数据周期27MasterreleaseaddressandcontrolSlavesampletheaddressandcontrolMastersamplethedataIfslavehasn’treadytoreceivedata,howtodo?基本AHB传输(续)一次无需等待状态的简单传输28NotreadyNotreadyReadyOnetransferneedatleasttwocycles,howtopromoteitsefficiency?Note:slaveshouldn’tinsertmorethan16waitcycles!!!基本AHB传输(续)需要两个等待周期的简单传输29PipelineAAddressADataBAddressBDataCAddressCDataSlavedecodeseverytransfer,somanywaits,howtodecreasethewaitcycles?基本AHB传输(续)30BurstTransferAAA+4A+4A+8A+8A+12A+12HBURSTshowsthebursttypes:SingleTransferIncrementingtransferwithunspecifiedlength(INCR)4-beat8-beat16-beatSlavehasknowthatmasterneed4data,A/A+4/A+8/A+12Duringbursttransfer,ifslavenotready,thenhready=0;butifmasterisnotready,howtodo?基本AHB传输(续)31传输类型HTRANS[1:0]:当前传输的状态IDLE、BUSY、NONSEQ、SEQ00:IDLE主设备占用总线,但没进行传输两次burst传输中间主设备发IDLE01:BUSY主设备占用总线,但是在burst传输过程中还没有准备好进行下一次传输一次burst传输中间主设备发BUSY32传输类型(续)10:NOSEQ表明一次单个数据的传输或者一次burst传输的第一个数据地址和控制信号与上一次传输无关11:SEQ表明burst传输接下来的数据地址和上一次传输的地址是相关的33ThefirsttransferMasterisbusyThesubsequenttransferThesubsequenttransferSlaveisnotreadyThesubsequenttransfer传输类型举例34其它AHB控制信号HWRITE高电平:写低电平:读HSIZE[2:0]000:8bits100:128bits001:16bits101:256bits010:32bits110:512bits011:64bits111:1024bits最大值受总线的配置所限制通常使用32bits(010)35其它AHB控制信号(续)HPROT[3:0]HPROT[0]:OPCODE/DATAHPROT[1]:USER/PRIVILGEDHPROT[2]:Bufferable/Non-BufferableHPROT[3]:Cacheable/Non-Cacheable36AHB控制信号小结HTRANS[1:0]IDLEBUSYNONSEQSEQHBURST[2:0]SINGLEINCRWRAP[4|8|16]INCR[4|8|16]HSIZE[2:0]ByteHalfwordWordDoubleword...HPROT[3:0]0-data/opcode1-privileged/user2-bufferable3-cacheableHADDRmustbealignedtoamultipleofdatasizeasgivenbyHSIZE37Review(1)AMBA简介AMBA2.0:AHB、ASB、APBAHB的组成部分AHBmaster、AHBslave、AHBarbiter、AHBdecoderAPB的组成部分AHB2APBbridge、APBslaveAHB信号HCLK、HRESETn、HADDR、HTRANS、HWRITE、HSIZE、HBURST、HWDATA、HSELx、HRDATA、HREADY、HRESP38Review(2)AHB传输的两个阶段地址周期、数据周期当前传输的状态HTRANSIDLE、BUSY、NOSEQ、SEQ猝发传输类型HBURSTSINGLE、INCR(如何开始一次新的INCR传输?)Burst传输不可跨越1K边界HSEL:由AHBdecoder通过地址映射给出AHBslave响应信号:HREADY传输完成、HRESP传输响应(OK、ERROR、RETRY)AHBslave短时间无法响应?长时间无法响应?39BURST传输AHBBurst操作4beat、8beat、16beat、单个字节传输、未定义长度的传输支持incrementing和wrapping两种burst传输Incrementingburst地址是上一次的传输地址加1Wrappingburst例:4beat的wrappingburst字传输(4byte):0x34->0x38->0x3c->0x30应用场合:Cache填充40地址计算举例根据HSIZE和HBURST来计算地址例:起始地址是0x48,HSIZE=010(32bits)41INCR8BurstHCLKSEQNSEQSEQSEQSEQSEQINCR80x600x680x640x6c0x740x70HTRANSHBURSTHADDRHRDATAd1d0d2d4d3d50x780x7cSEQSEQd6d742WRAP8BurstHCLKSEQNSEQSEQSEQSEQSEQWRAP80x700x780x740x7c0x640x60HTRANSHBURSTHADDRHRDATAd5d4d6d0d7d10x680x6cSEQSEQd2d3startofline43INCR4Burst44WRAP4Burst45例:未定义长度的Burst传输46HCLKSEQNSEQNSEQNSEQSEQSEQIDLEINCR4SISI0x340x3C0x380x400x480x44HTRANSHBURSTHADDRHRDATAHWDATAr6r5r7r9r8r10ExampleLDMAHBActivitySI=SINGLELDM<0x34>,{r5-r10}47注意!Burst传输不能穿越1K边界一个从设备最小的地址间隙是1KBNONSEQ->SEQ->1KBBoundary->NONSEQ->SEQ…主设备不能试图开始一个可能穿越1K边界的固定长度的incrementingburst传输48INCRBurstover1kboundaryHCLKSEQNSEQSEQNSEQSEQSEQINCR0x3F00x3F80x3F40x3FC0x4040x400HTRANSHBURSTHADDRHRDATAd1d0d2d4d3d50x4080x40CSEQSEQd6d7startof1kpage49地址译码HSELx:选择从设备指出由主设备所选择的从设备由地址译码器来提供选择信号一个从设备应该至少占用1KB的存储空间需要一个额外的缺省从设备来映射其他的存储地址50地址译码(续)51从设备响应所访问的从设备必须响应这次传输从设备可能返回的响应:完成这次传输插入等待状态(HREADY信号)发出错误信号表示这次传输失败延迟传输,使得总线可用于其他传输(split)52从设备响应信号HREADY:transferdoneHRESP[1:0]:transferresponse00:OKAY成功01:ERROR失败10:RETRY传输未完成请求主设备重新开始一个传输11:SPLIT传输未完成请求主设备分离一次传输53两周期的响应HRESP[1:0]OKAY:单周期响应ERROR:两周期响应RETRY:两周期响应SPLIT:两周期响应总线的流水特性需要从设备两个周期的响应。可以使得主设备有足够的时间处理下一次传输。54SlaveResponsesMemAMemBMemDMemCSlaveProcessorAMBAWriteMemEIcouldn’twriteitbecause

ofnomemE!!!!ERROR55SlaveResponsesMemAMemBMemDMemCSlaveProcessorAMBAWriteMemAIcouldn’twriteitnowforbusy!!!

Youcouldretrywriteitlatter!!BUSYRETRY|SPLIT56例:Retry响应57RETRY和SPLIT的不同主要区别在于仲裁的方式RETRY:arbiter会继续使用通常的优先级SPLIT:arbiter会调整优先级方案以便其他请求总线的主设备可以访问总线总线主设备应该用同样的方式处理RETRY响应和SPLIT响应58数据总线不是三态总线,读总线和写总线是分开的。印第安序在AMBA协议中没有定义主设备和从设备应该采用同样的印第安序不支持动态印第安序对于IP设计,只有应用面比较广泛的应用程序才支持两种印第安序。5932bit小印第安数据总线的有效字节6032bit大印第安数据总线的有效字节61多个主设备IamfirstIamfirst!!!62AHB仲裁信号63仲裁信号(续)HBUSREQ总线请求HLOCKx:高电平:主设备请求锁定总线HGRANTx指出主设备x可访问总线主设备x控制总线:HGRANTx=1且HREADY=164仲裁信号(续)HMASTER[3:0]指出哪个主设备正在进行传输HMASTLOCK指出主设备正在进行一次锁定传输HSPLITx[15:0]从设备用这个信号告诉仲裁器哪个主设备允许重新尝试一次split传输。每一位对应一个主设备65仲裁举例(1)没有等待状态的grant66仲裁举例(2)有等待状态的grant67仲裁举例(3)Burst传输之后移交总线68总线主设备Grant信号Arbiter69几点说明对于固定长度的burst传输,不必持续请求总线对于未定义长度的burst传输,主设备应该持续送出HBUSREQ信号,直到开始最后一次传输。如果没有主设备请求总线,则给缺省主设备grant信号,且HTRANS=IDLE建议主设备在锁定总线传输结束之后插入IDLE传输,以重新仲裁优先级。70Split传输过程由主设备开始传输。如果从设备需要多个周期才能获取数据,则从设备给出一个SPLIT传输响应。从设备记录主设备号:HMASTER。接着仲裁器改变主设备的优先级。仲裁器grant其他的主设备,总线主设备移交。当从设备准备结束本次传输,将设置给仲裁器的HSPLITx信号的相应位。仲裁器恢复优先级仲裁器grant主设备,这样主设备可以重新开始传输。结束71防止Deadlock当多个不同的主设备试图访问同一个从设备,这个从设备发出了SPLIT或RETRY信号,这时很可能发生deadlock从设备最多可以接收系统中16个主设备的请求。只需要记录主设备号(忽略地址和控制信号)给出RETRY响应的从设备在某一时刻只能由一个主设备访问。可以使用一些硬件保护机制,比如ERROR72AHB主设备接口73AHB从设备接口74AHBArbiter75AHBDecoder76TypicalMulti-layerexampleMaster0On-chipRAMMaster1ExternalMemoryI/FDMASlaveSlaveMuxSlaveMuxUARTTimerGPIOAHB2APBMaster0canaccessprivateRAM,APBandexternalinterfaceMaster1canaccessDMAslave,APBandexternalinterfaceParallelaccessimprovessystembandwidth77AHB-LiteSubsetofAHBFunctionalitySingleMasterNoneedforHBUSREQ&HGRANTSimpleSlavesNoretryorsplitresponsesStandardAHBmodulescanbeusedAllowseasiermoduledesign/debugMaster0Slave#1Slave#2Slave#3Slave#478AHB总结主要组成部分Master、slaves、arbiter、decoder传输的过程流水线机制Addressphase和dataphase如何提高性能Burstread/write仲裁机制总线控制权的移交79AHB总结(续)Slave短时间内无法响应HREADY信号拉低Slave长时间内无法响应插入SPLIT/RETRYMaster不能进行传输插入BUSY80AHB的应用建议Arbiter的优先级可以配置Slave长时间不能响应的话,一般不支持SPLIT响应,使用RETRY响应总线上如果只有一个master的话,可以使用AHBlite协议,不用arbiter设计一个新的IP时,要仔细核对AMBA的Feature和IP所支持的Feature是否匹配。81实现如果设计中既有主设备端口又有从设备端口通过主设备端口读/写数据通过从设备端口配置寄存器等如处理器设置的一些参数82目录AMBA总线概述AHBAPB不同IP之间的互连83APB信号84APB信号(续)PADDR[31:0]地址总线,由设备总线的bridge单元驱动PSELx从译码器来的信号,到每一个总线从设备xPENABLE用于在设备总线上把所有访问按时间阶段进行PWRITE高电平:写低电平:读PRDATA和PWDATA最多32位宽85AddressDecodingStagesSlave3(APB)Slave1(EBI)Slave2(SRAM)0xCFFF_FFFF0xC000_00000x5000_FFFF0x5000_00000x3FFF_FFFF0x0000_0000Peripheral3(UART)Peripheral1(IntCont)Peripheral2(Timers)0xC3FF_FFFF0xC300_00000xC2FF_FFFF0xC100_00000xC000_FFFF0xC000_0000APBmemorymapTimer2Timer10xC2FF_FFFF0xC200_00000xC1FF_FFFF0xC100_0000AHBDecoderHSELapbPSELtimAPBBridgeTimersAHBmemorymapTimersmemorymap86APBInterconnectAHB2APBBridgeAPBMasterPADDRHCLKPSEL#1PWRITEPSEL#2PSEL#3PCLKHADDRHWRITEPeripheral#1Peripheral#3Peripheral#2PENABLEPWDATAPRDATAHRDATAHSELHWDATAAHBAPB87写传输88读传输89BridgeHowtotranslateahbpipelinedtimingto2-cycleapbtiming?90BridgeFSM91APBSlave92APB到AHB的接口-读93目录AMBA总线概述AHBAPB不同IP之间的互连94通信方式Cpu(master)<-->IP(slave)IP(master)<-->IP(slave)

95MemorymappedIO每一个从设备都占用系统中的一段地址空间所有的从设备都是可寻址的寄存器/存储器都是内存映射方式访问CPU/IP读写其他IP的数据类似于读写存储器96IP间的通信互连主设备被arbitergrant之后,可以访问总线上的所有从设备97一个IP可以同时拥有主设备接口和从设备接口98CPU和IP之间的通信CPU总是作为主设备IP总是作为从设备IP可以发出一个中断请求CPU进入中断模式,由interruptserviceroutine(ISR)来处理中断99例:DMA100例:DMAStep0:CPU检查DMA的状态以确认是否可用While(1){Read(0x30004,&status)

if(status==0)

温馨提示

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

评论

0/150

提交评论