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

下载本文档

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

文档简介

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

87AMBA总线(6学时)ASB高速总线流水线操作支持多个总线主设备支持burst传输总线带宽:8、16、32bits三态、双向总线(不适于做DFT)下降沿或者上升沿触发97AMBA总线(6学时)APB低速总线、低功耗接口简单在Bridge中锁存地址信号和控制信号适用于多种外设上升沿触发107AMBA总线(6学时)AHB组成部分AHB主设备(master)初始化一次读/写操作某一时刻只允许一个主设备使用总线uP、DMA、DSP、LCDC…AHB从设备(slave)响应一次读/写操作通过地址映射来选择使用哪一个从设备外部存储器控制器EMI、APBbridge、UART、…AHB仲裁器(arbiter)允许某一个主设备控制总线在AMBA协议中没有定义仲裁算法AHB译码器(decoder)通过地址译码来决定选择哪一个从设备117AMBA总线(6学时)APB组成部分AHB2APBBridge可以锁存所有的地址、数据和控制信号进行二级译码来产生APB从设备选择信号APB总线上的所有其他模块都是APB从设备不是流水线方式接口是零功耗127AMBA总线(6学时)AMBA协议其他有关问题与工艺无关没有定义电气特性仅在时钟周期级定义时序提取时序参数依赖于所采用的工艺和工作频率137AMBA总线(6学时)目录AMBA总线概述AHBAPB不同IP之间的互连147AMBA总线(6学时)AHB总线互连157AMBA总线(6学时)AHB传输发起一个请求给仲裁器驱动地址和控制信号允许某个主设备控制总线仅选中的从设备响应地址/控制信号拉高HREADY信号,总线传输完成167AMBA总线(6学时)Dummy/DefaultMasterDummyMasterGrantedwhenallmastersSPLITGeneratesIDLEcyclesonlyTypicallyMaster#0GrantedwhenLockedmastergetsSPLITresponseImplementaspartofAddress/ControlMuxDefaultMasterGrantedwhennomasterrequiresbusGenerallymastermostlikelytorequirebusGeneratesIDLEcycleswhennotrequestingbusAvoidsminimum2cycleArbitrationperiodImmediateaccesstobus177AMBA总线(6学时)DefaultSlaveSlave3(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_0000187AMBA总线(6学时)AHB信号197AMBA总线(6学时)基本AHB信号HRESETn低电平有效HADDR[31:0]32位系统地址总线HWDATA[31:0]写数据总线,从主设备写到从设备HRDATA[31:0]读数据总线,从从设备读到主设备207AMBA总线(6学时)基本AHB信号(续)HTRANS指出当前传输的状态NONSEQ、SEQ、IDLE、BUSYHSIZE指出当前传输的大小HBURST指出传输的burst类型HRESP从设备发给主设备的总线传输状态OKAY、ERROR、RETRY、SPLITHREADY高:从设备指出传输结束低电平:从设备需延长传输周期217AMBA总线(6学时)基本AHB传输两个阶段地址周期,只有一个cycle数据周期,由HREADY信号决定需要几个cycle流水线传送先是地址周期,然后是数据周期227AMBA总线(6学时)MasterreleaseaddressandcontrolSlavesampletheaddressandcontrolMastersamplethedataIfslavehasn’treadytoreceivedata,howtodo?基本AHB传输(续)一次无需等待状态的简单传输237AMBA总线(6学时)NotreadyNotreadyReadyOnetransferneedatleasttwocycles,howtopromoteitsefficiency?Note:slaveshouldn’tinsertmorethan16waitcycles!!!基本AHB传输(续)需要两个等待周期的简单传输247AMBA总线(6学时)PipelineAAddressADataBAddressBDataCAddressCDataSlavedecodeseverytransfer,somanywaits,howtodecreasethewaitcycles?基本AHB传输(续)257AMBA总线(6学时)BurstTransferAAA+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传输(续)267AMBA总线(6学时)传输类型HTRANS[1:0]:当前传输的状态IDLE、BUSY、NONSEQ、SEQ00:IDLE主设备占用总线,但没进行传输两次burst传输中间主设备发IDLE01:BUSY主设备占用总线,但是在burst传输过程中还没有准备好进行下一次传输一次burst传输中间主设备发BUSY277AMBA总线(6学时)传输类型(续)10:NOSEQ表明一次单个数据的传输或者一次burst传输的第一个数据地址和控制信号与上一次传输无关11:SEQ表明burst传输接下来的数据地址和上一次传输的地址是相关的287AMBA总线(6学时)ThefirsttransferMasterisbusyThesubsequenttransferThesubsequenttransferSlaveisnotreadyThesubsequenttransfer传输类型举例297AMBA总线(6学时)其它AHB控制信号HWRITE高电平:写低电平:读HSIZE[2:0]000:8bits100:128bits001:16bits101:256bits010:32bits110:512bits011:64bits111:1024bits最大值受总线的配置所限制通常使用32bits(010)307AMBA总线(6学时)其它AHB控制信号(续)HPROT[3:0]HPROT[0]:OPCODE/DATAHPROT[1]:USER/PRIVILGEDHPROT[2]:Bufferable/Non-BufferableHPROT[3]:Cacheable/Non-Cacheable317AMBA总线(6学时)AHB控制信号小结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-cacheableHADDRmustbealignedtoamultipleofdatasizeasgivenbyHSIZE327AMBA总线(6学时)BURST传输AHBBurst操作4beat、8beat、16beat、单个字节传输、未定义长度的传输支持incrementing和wrapping两种burst传输Incrementingburst地址是上一次的传输地址加1Wrappingburst例:4beat的wrappingburst字传输(4byte):0x34->0x38->0x3c->0x30应用场合:Cache填充337AMBA总线(6学时)地址计算举例根据HSIZE和HBURST来计算地址例:起始地址是0x48,HSIZE=010(32bits)347AMBA总线(6学时)INCR8BurstHCLKSEQNSEQSEQSEQSEQSEQINCR80x600x680x640x6c0x740x70HTRANSHBURSTHADDRHRDATAd1d0d2d4d3d50x780x7cSEQSEQd6d7357AMBA总线(6学时)WRAP8BurstHCLKSEQNSEQSEQSEQSEQSEQWRAP80x700x780x740x7c0x640x60HTRANSHBURSTHADDRHRDATAd5d4d6d0d7d10x680x6cSEQSEQd2d3startofline367AMBA总线(6学时)INCR4Burst377AMBA总线(6学时)WRAP4Burst387AMBA总线(6学时)例:未定义长度的Burst传输397AMBA总线(6学时)HCLKSEQNSEQNSEQNSEQSEQSEQIDLEINCR4SISI0x340x3C0x380x400x480x44HTRANSHBURSTHADDRHRDATAHWDATAr6r5r7r9r8r10ExampleLDMAHBActivitySI=SINGLELDM<0x34>,{r5-r10}407AMBA总线(6学时)注意!Burst传输不能穿越1K边界一个从设备最小的地址间隙是1KBNONSEQ->SEQ->1KBBoundary->NONSEQ->SEQ…主设备不能试图开始一个可能穿越1K边界的固定长度的incrementingburst传输417AMBA总线(6学时)INCRBurstover1kboundaryHCLKSEQNSEQSEQNSEQSEQSEQINCR0x3F00x3F80x3F40x3FC0x4040x400HTRANSHBURSTHADDRHRDATAd1d0d2d4d3d50x4080x40CSEQSEQd6d7startof1kpage427AMBA总线(6学时)地址译码HSELx:选择从设备指出由主设备所选择的从设备由地址译码器来提供选择信号一个从设备应该至少占用1KB的存储空间需要一个额外的缺省从设备来映射其他的存储地址437AMBA总线(6学时)地址译码(续)447AMBA总线(6学时)从设备响应所访问的从设备必须响应这次传输从设备可能返回的响应:完成这次传输插入等待状态(HREADY信号)发出错误信号表示这次传输失败延迟传输,使得总线可用于其他传输(split)457AMBA总线(6学时)从设备响应信号HREADY:transferdoneHRESP[1:0]:transferresponse00:OKAY成功01:ERROR失败10:RETRY传输未完成请求主设备重新开始一个传输11:SPLIT传输未完成请求主设备分离一次传输467AMBA总线(6学时)两周期的响应HRESP[1:0]OKAY:单周期响应ERROR:两周期响应RETRY:两周期响应SPLIT:两周期响应总线的流水特性需要从设备两个周期的响应。可以使得主设备有足够的时间处理下一次传输。477AMBA总线(6学时)SlaveResponsesMemAMemBMemDMemCSlaveProcessorAMBAWriteMemEIcouldn’twriteitbecause

ofnomemE!!!!ERROR487AMBA总线(6学时)SlaveResponsesMemAMemBMemDMemCSlaveProcessorAMBAWriteMemAIcouldn’twriteitnowforbusy!!!

Youcouldretrywriteitlatter!!BUSYRETRY|SPLIT497AMBA总线(6学时)例:Retry响应507AMBA总线(6学时)RETRY和SPLIT的不同主要区别在于仲裁的方式RETRY:arbiter会继续使用通常的优先级SPLIT:arbiter会调整优先级方案以便其他请求总线的主设备可以访问总线总线主设备应该用同样的方式处理RETRY响应和SPLIT响应517AMBA总线(6学时)LockedTransfersHCLKHADDRHWDATAHLOCKAddressPhaseADataPhaseAAddressPhaseBAADataPhaseBAddressPhaseCCCBBLockedsequencesoftransferscannotbeinterruptedbyinterconnectHLOCKindicatesnextaddressphaseispartofalockedtransferIntheabovetransferstoaddressesB&CarelockedandshouldnotbeseparatedARMprocessorsuseHLOCKforSWPinstructiononly527AMBA总线(6学时)数据总线不是三态总线,读总线和写总线是分开的。印第安序在AMBA协议中没有定义主设备和从设备应该采用同样的印第安序不支持动态印第安序对于IP设计,只有应用面比较广泛的应用程序才支持两种印第安序。537AMBA总线(6学时)32bit小印第安数据总线的有效字节547AMBA总线(6学时)32bit大印第安数据总线的有效字节557AMBA总线(6学时)多个主设备IamfirstIamfirst!!!567AMBA总线(6学时)AHB仲裁信号577AMBA总线(6学时)仲裁信号(续)HBUSREQ总线请求HLOCKx:高电平:主设备请求锁定总线HGRANTx指出主设备x可访问总线主设备x控制总线:HGRANTx=1且HREADY=1587AMBA总线(6学时)仲裁信号(续)HMASTER[3:0]指出哪个主设备正在进行传输HMASTLOCK指出主设备正在进行一次锁定传输HSPLITx[15:0]从设备用这个信号告诉仲裁器哪个主设备允许重新尝试一次split传输。每一位对应一个主设备597AMBA总线(6学时)仲裁举例(1)没有等待状态的grant607AMBA总线(6学时)仲裁举例(2)有等待状态的grant617AMBA总线(6学时)仲裁举例(3)Burst传输之后移交总线627AMBA总线(6学时)总线主设备Grant信号Arbiter637AMBA总线(6学时)几点说明对于固定长度的burst传输,不必持续请求总线对于未定义长度的burst传输,主设备应该持续送出request信号,直到开始最后一次传输。如果没有主设备请求总线,则给缺省主设备grant信号,且HTRANS=IDLE建议主设备在锁定总线传输结束之后插入IDLE传输,以重新仲裁优先级。647AMBA总线(6学时)Split传输过程由主设备开始传输。如果从设备需要多个周期才能获取数据,则从设备给出一个SPLIT传输响应。从设备记录主设备号:HMASTER。接着仲裁器改变主设备的优先级。仲裁器grant其他的主设备,总线主设备移交。当从设备准备结束本次传输,将设置给仲裁器的HSPLITx信号的相应位。仲裁器恢复优先级仲裁器grant主设备,这样主设备可以重新开始传输。结束657AMBA总线(6学时)防止Deadlock当多个不同的主设备试图访问同一个从设备,这个从设备发出了SPLIT或RETRY信号,这是很可能发生deadlock从设备最多可以接收系统中16个主设备的请求。只需要记录主设备号(忽略地址和控制信号)给出RETRY响应的从设备在某一时刻只能由一个主设备访问。可以使用一些硬件保护机制,比如ERROR667AMBA总线(6学时)AHB主设备接口677AMBA总线(6学时)AHB从设备接口687AMBA总线(6学时)AHBArbiter697AMBA总线(6学时)AHBDecoder707AMBA总线(6学时)TypicalMulti-layerexampleMaster0On-chipRAMMaster1ExternalMemoryI/FDMASlaveSlaveMuxSlaveMuxUARTTimerGPIOAHB2APBMaster0canaccessprivateRAM,APBandexternalinterfaceMaster1canaccessDMAslave,APBandexternalinterfaceParallelaccessimprovessystembandwidth717AMBA总线(6学时)AHB-LiteSubsetofAHBFunctionalitySingleMasterNoneedforHBUSREQ&HGRANTSimpleSlavesNoretryorsplitresponsesStandardAHBmodulescanbeusedAllowseasiermoduledesign/debugMaster0Slave#1Slave#2Slave#3Slave#4727AMBA总线(6学时)AHB总结主要组成部分Master、slaves、arbiter、decoder传输的过程流水线机制Addressphase和dataphase如何提高性能Burstread/write仲裁机制总线控制权的移交737AMBA总线(6学时)AHB总结(续)Slave短时间内无法响应HREADY信号拉低Slave长时间内无法响应插入SPLIT/RETRYMaster不能进行传输插入BUSY747AMBA总线(6学时)AHB的应用建议Arbiter的优先级可以配置Slave长时间不能响应的话,一般不支持SPLIT响应,使用RETRY响应总线上如果只有一个master的话,可以使用AHBlite协议,不用arbiter设计一个新的IP时,要仔细核对AMBA的Feature和IP所支持的Feature是否匹配。757AMBA总线(6学时)实现如果设计中既有主设备端口又有从设备端口通过主设备端口读/写数据通过从设备端口配置寄存器等如处理器设置的一些参数767AMBA总线(6学时)目录AMBA总线概述AHBAPB不同IP之间的互连777AMBA总线(6学时)APB信号787AMBA总线(6学时)APB信号(续)PADDR[31:0]地址总线,由设备总线的bridge单元驱动PSELx从译码器来的信号,到每一个总线从设备xPENABLE用于在设备总线上把所有访问按时间阶段进行PWRITE高电平:写低电平:读PRDATA和PWDATA最多32位宽797AMBA总线(6学时)AddressDecodingStagesSlave3(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_0000AHBDecoderHSELapbPSELtimAPBBridgeTimersAHBmemorymapTimersmemorymap807AMBA总线(6学时)APBInterconnectAHB2APBBridgeAPBMasterPADDRHCLKPSEL#1PWRITEPSEL#2PSEL#3PCLKHADDRHWRITEPeripheral#1Peripheral#3Peripheral#2PENABLEPWDATAPRDATAHRDATAHSELHWDATAAHBAPB817AMB

温馨提示

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

评论

0/150

提交评论