AHB总线总结

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1AHBIntroductionICD/SIDBobQin(覃海洋)2015/12/252Topic1•WhatistheAHB?3AMBA介绍•AdvancedMicrocontrollerBusArchitecture–片上总线的标准•定义了三种总线–AHB(AdvancedHigh-performanceBus)–ASB(AdvancedSystemBus)–APB(AdvancedPeripheralBus)4一个典型的AMBA系统•处理器和其它主设备/从设备都是可以替换的5AHB•高速总线,高性能•流水线操作•可支持多个总线主设备(最多16个)•支持burst传输•总线带宽:8、16、32、64、128bits•上升沿触发操作Topic2WhatconstitutestheAHB?67AHB组成部分•AHB主设备(master)–发起一次读/写操作–某一时刻只允许一个主设备使用总线•AHB从设备(slave)–响应一次读/写操作–通过地址映射来选择使用哪一个从设备•AHB仲裁器(arbiter)–允许某一个主设备控制总线–在AMBA协议中没有定义仲裁算法•AHB译码器(decoder)–通过地址译码来决定选择哪一个从设备8InternalConnectionofAHB发起一个请求给仲裁器驱动地址和控制信号允许某个主设备控制总线选中所需的从设备拉高HREADY信号,总线传输完成9AHB信号10基本AHB信号•HCLK–总线时钟•HRESETn–总线复位,低电平有效•HADDR[31:0]–32位系统地址总线•HWDATA[31:0]–写数据总线,从主设备写到从设备•HRDATA[31:0]–读数据总线,从从设备读到主设备11基本AHB信号(续)•HTRANS–指出当前传输的类型•NONSEQ、SEQ、IDLE、BUSY•HSIZE–指出当前传输的大小•HBURST–指出传输的burst类型•HRESP–从设备发给主设备的总线传输状态•OKAY、ERROR、RETRY、SPLIT•HREADY–高:从设备指出传输结束–低电平:从设备需延长传输周期Topic3•HowcanyoumakeatransferonAHB?1213BasicAHBtransfer•两个阶段–AddressPhase,只有一个有效周期–DataPhase,由HBURST信号决定需要几个有效周期•流水线传送–先是有效地址周期,然后是有效数据周期14MasterreleaseaddressandcontrolSlavesampletheaddressandcontrolMastersamplethedataIfslavehasn’treadytoreceivedata,howtodealwithit?基本AHB传输•一次无需等待状态的简单传输15NotreadyNotreadyReadyOnetransferneedatleasttwocycles,howtopromoteitsefficiency?Note:accordingtospec,slaveshouldn’tinsertmorethan16waitcycles!!!基本AHB传输(续)•需要两个等待周期的简单传输16PipelineAAddressADataBAddressBDataCAddressCDataSlavedecodeseverytransfer,onetransferonwait,howtodecreasethewaitcycles?基本AHB传输(续)17BurstTransferAAA+4A+4A+8A+8A+12A+12HBURSTshowsthebursttypes:SingleTransferIncrementingtransferwithunspecifiedlength4-beat8-beat16-beatSlavehasknowthatmasterneed4data,A/A+4/A+8/A+12Duringbursttransfer,ifslaveisnotready,thenhready=0;butifmasterisnotready,howtodo?基本AHB传输(续)18传输类型•HTRANS[1:0]:传输类型–四种类型:IDLE、BUSY、NONSEQ、SEQ•00:IDLE–主设备占用总线,但没进行传输–两次burst传输中间主设备可发IDLE•01:BUSY–主设备占用总线,但是在burst传输过程中还没有准备好进行下一次传输–一次burst传输中间主设备可发BUSY19传输类型(续)•10:NOSEQ–表明一次单个数据的传输–或者一次burst传输的第一个数据–地址和控制信号与上一次传输无关•11:SEQ–表明burst传输接下来的数据–地址和上一次传输的地址是相关的20ThefirsttransferMasterisbusyThesubsequenttransferThesubsequenttransferSlaveisnotreadyThesubsequenttransfer传输类型举例21BURST传输•AHBBurst操作–4beat、8beat、16beat、单个字节传输、未定义长度的传输–支持incrementing和wrapping两种burst传输•Incrementingburst–地址是上一次的传输地址加1个传输单位•Wrappingburst–例:4beat的wrappingburst字传输(4byte):–0x34-0x38-0x3c-0x30–应用场合:Cache填充22地址计算举例•根据HSIZE和HBURST来计算地址•例:起始地址是0x48,HSEZE=010(32bits)23INCR8BurstHCLKSEQNSEQSEQSEQSEQSEQINCR80x600x680x640x6c0x740x70HTRANSHBURSTHADDRHRDATAd1d0d2d4d3d50x780x7cSEQSEQd6d724WRAP8BurstHCLKSEQNSEQSEQSEQSEQSEQWRAP80x700x780x740x7c0x640x60HTRANSHBURSTHADDRHRDATAd5d4d6d0d7d10x680x6cSEQSEQd2d3startofline25INCR4Burst26WRAP4Burst27例:未定义长度的Burst传输28注意!•Burst传输不能穿越1K边界–一个从设备最小的地址间隙是1KB–NONSEQ-SEQ-1KBBoundary-NONSEQ-SEQ…•主设备不能试图开始一个可能穿越1K边界的INCR传输29INCRBurstover1kboundaryHCLKSEQNSEQSEQNSEQSEQSEQINCR0x3F00x3F80x3F40x3FC0x4040x400HTRANSHBURSTHADDRHRDATAd1d0d2d4d3d50x4080x40CSEQSEQd6d7startof1kpageTopic4Talkingaboutslaverindetail?3031地址译码(续)32从设备响应•所访问的从设备必须响应这次传输•从设备可能返回的响应:–完成这次传输–插入等待状态(HREADY信号)–发出错误信号表示这次传输失败–分离传输,使得总线可用于其他传输(SPLIT)33从设备响应信号•HREADY:transferdone•HRESP[1:0]:transferresponse–00:OKAY•成功–01:ERROR•失败–10:RETRY•传输未完成•请求主设备重新开始一个传输–11:SPLIT•传输未完成•请求主设备分离一次传输34两周期的响应•HRESP[1:0]–OKAY:单周期响应–ERROR:两周期响应–RETRY:两周期响应–SPLIT:两周期响应•总线的流水特性需要从设备两个周期的响应。可以使得主设备有足够的时间处理下一次传输。35SlaveResponsesMemAMemBMemDMemCSlaveProcessorAMBAWriteMemA36SlaveResponsesMemAMemBMemDMemCSlaveProcessorAMBAWriteMemEIcouldn’twriteitbecauseofnomemE!!!!37SlaveResponsesMemAMemBMemDMemCSlaveProcessorAMBAWriteMemAIcouldn’twriteitnowforbusy!!!Youcouldretrywriteitlatter!!BUSYBUSY38例:Retry响应39RETRY和SPLIT的不同•主要区别在于仲裁的方式–RETRY:arbiter会继续使用通常的优先级–SPLIT:arbiter会调整优先级方案以便其他请求总线的主设备可以访问总线•总线主设备应该用同样的方式处理RETRY响应和SPLIT响应40数据总线•不是三态总线,读数据总线和写数据总线分开•印第安序–在AMBA定义中没有定义–主设备和从设备应该采用同样的印第安序–不支持动态印第安序•对于IP设计,只有应用面比较广泛的应用程序才支持两种印第安序。41小印第安数据的有效字节42大印第安数据的有效字节Topic5•Talkingaboutslaverindetail?4344多个主设备IamfirstIamfirst!!!45AHB仲裁信号46仲裁信号(续)•HBUSREQ–总线请求•HLOCKx:–高电平:主设备请求锁定总线•HGRANTx–指出主设备x可访问总线–主设备x控制总线:HGRANTx=1且HREADY=147仲裁信号(续)•HMASTER[3:0]–指出哪个主设备正在进行传输,提供进行split的信息•HMASTLOCK–指出主设备正在进行一次锁定传输•HSPLITx[15:0]–从设备用这个信号告诉仲裁器哪个主设备允许重新尝试一次split传输。–每一位对应一个主设备48仲裁举例(1)•没有等待状态的grant49仲裁举例(2)•有等待状态的grant50仲裁举例(3)•Burst传输之后移交总线51总线主设备Grant信号52几点说明•对于固定长度的burst传输,不必持续请求总线•对于未定义长度的burst传输,主设备应该持续送出request信号,直到开始最后一次传输。•如果没有主设备请求总线,则给defaultMastergrant信号,且HTRANS=IDLE53Split传输过程•由主设备开始传输•如果从设备需要多个周期才能获取数据,则从设备给出一个SPLIT传输响应,从设备记录主设备号:HMASTER•接着仲裁器改变主设备的优先级•仲裁器grant其他的主设备,总线主设备移交。•当从设备准备结束本次传输,将设置给仲裁器的HSPLITx信号的相应位•仲裁器恢复优先级•仲裁器grant主设备,这样主设备可以重新开始传输•结束54防止Deadlock•当多个不同的主设备试图访问同一个从设备,这个从设备发出了SPLIT或RETRY信号,这是很可能发生deadlock•给出RETRY响应的从设备在某一时刻只能由一个主设备访问–可以使用一些硬件保护机制,比如ERRORTopic6Seeitagain.5556AHBMaster57AHBSlaver58AHBArbiter59AHBDecoderTopic7Makingaconclusion.6061AHB总结(1)•主要组成部分–Master、slaves、arbiter、decoder•传输的过程–流水线机制–Addressphase和dataphase•如何提高性能–Burstread/write•仲裁机制–总线控制器的移交62AHB总结(2)•Slave短时间内无法响应–HREADY信号拉低•Slave长时间内无法响应–插入SPLIT/RETRY•Master不能进行传输–插入BUSY63•Arbiter的优先级可以配置•Slave长时间不能响应的话,一般

1 / 64
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功