《7 AMBA总线(6学时)》由会员分享,可在线阅读,更多相关《7 AMBA总线(6学时)(99页珍藏版)》请在金锄头文库上搜索。
1、 AMBA总线2021/7/1SEP32032021/7/12目录AMBA总线概述AHBAPB不同IP之间的互连2021/7/13系统总线简介系统芯片中各个模块之间需要有接口来连接系统芯片中各个模块之间需要有接口来连接总线作为子系统之间共享的通信链路总线作为子系统之间共享的通信链路优点优点低成本低成本方便易用方便易用缺点缺点会造成性能瓶颈会造成性能瓶颈2021/7/14AMBA介绍Advanced Microcontroller Bus Architecture片上总线的标准片上总线的标准定义了三种总线定义了三种总线AHB (Advanced High-performance Bus)ASB
2、(Advanced System Bus)APB (Advanced Peripheral Bus)2021/7/15AMBA发展历史AMBA 1.0ASB 和和 APBAMBA 2.0AHB, ASB 和和 APBAMBA 3.0AMBA Advanced eXtensible Interface (AXI)2021/7/16一个典型的AMBA系统处理器和其它主设备/从设备都是可以替换的2021/7/17AHB高速总线,高性能高速总线,高性能流水线操作流水线操作可支持多个总线主设备(最多可支持多个总线主设备(最多16个)个)支持支持burst传输传输总线带宽:总线带宽:8、16、32、64、
3、128bits上升沿触发操作上升沿触发操作对于一个新设计建议使用对于一个新设计建议使用AHB 2021/7/18ASB高速总线高速总线流水线操作流水线操作支持多个总线主设备支持多个总线主设备支持支持burst传输传输总线带宽:总线带宽:8、16、32bits三态、双向总线三态、双向总线(不适于做(不适于做DFT)下降沿或者上升沿触发下降沿或者上升沿触发2021/7/19APB低速总线、低功耗低速总线、低功耗接口简单接口简单在在Bridge中锁存地址信号和控制信号中锁存地址信号和控制信号适用于多种外设适用于多种外设上升沿触发上升沿触发2021/7/110AHB组成部分AHB 主设备(主设备(ma
4、ster)初始化一次读初始化一次读/写操作写操作某一时刻只允许一个主设备使用总线某一时刻只允许一个主设备使用总线uP、DMA、DSP、LCDC AHB从设备(从设备(slave)响应一次读响应一次读/写操作写操作通过地址映射来选择使用哪一个从设备通过地址映射来选择使用哪一个从设备外部存储器控制器外部存储器控制器EMI、APB bridge、UART、 AHB仲裁器(仲裁器(arbiter)允许某一个主设备控制总线允许某一个主设备控制总线在在AMBA协议中没有定义仲裁算法协议中没有定义仲裁算法AHB译码器(译码器(decoder)通过地址译码来决定选择哪一个从设备通过地址译码来决定选择哪一个从设
5、备2021/7/111APB组成部分AHB2APB Bridge可以锁存所有的地址、数据和控制信号可以锁存所有的地址、数据和控制信号进行二级译码来产生进行二级译码来产生APB从设备选择信号从设备选择信号APB总线上的所有其他模块都是总线上的所有其他模块都是APB从设从设备备不是流水线方式不是流水线方式接口是零功耗接口是零功耗2021/7/112AMBA协议其他有关问题与工艺无关与工艺无关没有定义电气特性没有定义电气特性仅在时钟周期级定义时序仅在时钟周期级定义时序提取时序参数依赖于所采用的工艺和工作频率提取时序参数依赖于所采用的工艺和工作频率2021/7/113目录AMBA总线概述AHBAPB不
6、同IP之间的互连2021/7/114AHB总线互连2021/7/115AHB传输发起一个请求发起一个请求给仲裁器给仲裁器驱动地址和驱动地址和控制信号控制信号允许某个主设允许某个主设备控制总线备控制总线仅选中的从设仅选中的从设备响应地址备响应地址/控制信号控制信号拉高拉高HREADY信号,总线信号,总线传输完成传输完成2021/7/116Dummy/Default MasterDummy MasterGranted when all masters SPLITGenerates IDLE cycles onlyTypically Master #0Granted when Locked mast
7、er gets SPLIT responseImplement as part of Address/Control MuxDefault MasterGranted when no master requires busGenerally master most likely to require busGenerates IDLE cycles when not requesting busAvoids minimum 2 cycle Arbitration periodImmediate access to bus2021/7/117Default SlaveSlave 3(APB)De
8、fault Slave0x0000_00000xFFFF_FFFFcase HADDR is when . = HSELebi HSELsram HSELapb HSELdefault HRESP HRESP 0x38 - 0x3c - 0x30应用场合:应用场合:Cache填充填充2021/7/133地址计算举例根据HSIZE和HBURST来计算地址例:起始地址是0x48,HSIZE=010(32bits)2021/7/134INCR8 BurstHCLKSEQNSEQSEQSEQSEQSEQINCR80x600x680x640x6c0x740x70HTRANSHBURSTHADDRHRDA
9、TAd1d0d2d4d3d50x780x7cSEQSEQd6d72021/7/135WRAP8 BurstHCLKSEQNSEQSEQSEQSEQSEQWRAP80x700x780x740x7c0x640x60HTRANSHBURSTHADDRHRDATAd5d4d6d0d7d10x680x6cSEQSEQd2d3start of line2021/7/136INCR4 Burst2021/7/137WRAP4 Burst2021/7/138例:未定义长度的Burst传输2021/7/139HCLKSEQNSEQNSEQNSEQSEQSEQIDLEINCR4SISI0x340x3C0x380x
10、400x480x44HTRANSHBURSTHADDRHRDATAHWDATAr6r5r7r9r8r10Example LDM AHB ActivitySI = SINGLELDM ,r5-r102021/7/140注意!Burst传输不能穿越传输不能穿越1K边界边界一个从设备最小的地址间隙是一个从设备最小的地址间隙是1KBNONSEQ - SEQ - 1KB Boundary - NONSEQ - SEQ 主设备不能试图开始一个可能穿越主设备不能试图开始一个可能穿越1K边界边界的固定长度的的固定长度的incrementing burst传输传输2021/7/141INCR Burst ove
11、r 1k boundaryHCLKSEQNSEQSEQNSEQSEQSEQINCR0x3F00x3F80x3F40x3FC0x4040x400HTRANSHBURSTHADDRHRDATAd1d0d2d4d3d50x408 0x40CSEQSEQd6d7start of 1k page2021/7/142地址译码HSELx:选择从设备:选择从设备指出由主设备所选择的从设备指出由主设备所选择的从设备由地址译码器来提供选择信号由地址译码器来提供选择信号一个从设备应该至少占用一个从设备应该至少占用1KB的存储空间的存储空间需要一个额外的缺省从设备来映射其他的需要一个额外的缺省从设备来映射其他的存储地
12、址存储地址2021/7/143地址译码(续)2021/7/144从设备响应所访问的从设备必须响应这次传输所访问的从设备必须响应这次传输从设备可能返回的响应:从设备可能返回的响应:完成这次传输完成这次传输插入等待状态(插入等待状态(HREADY信号)信号)发出错误信号表示这次传输失败发出错误信号表示这次传输失败延迟传输,使得总线可用于其他传输(延迟传输,使得总线可用于其他传输(split)2021/7/145从设备响应信号HREADY:transfer doneHRESP1:0:transfer response00:OKAY成功成功01:ERROR失败失败10:RETRY传输未完成传输未完成请
13、求主设备重新开始一个传输请求主设备重新开始一个传输11:SPLIT传输未完成传输未完成请求主设备分离一次传输请求主设备分离一次传输2021/7/146两周期的响应HRESP1:0OKAY:单周期响应:单周期响应ERROR:两周期响应:两周期响应RETRY:两周期响应:两周期响应SPLIT:两周期响应:两周期响应总线的流水特性需要从设备两个周期的响总线的流水特性需要从设备两个周期的响应。可以使得主设备有足够的时间处理下应。可以使得主设备有足够的时间处理下一次传输。一次传输。2021/7/147Slave ResponsesMem AMem BMem DMem CSlaveProcessorAMB
14、AWrite Mem EI couldnt write it because of no mem E!2021/7/148Slave ResponsesMem AMem BMem DMem CSlaveProcessorAMBAWrite Mem AI couldnt write it now for busy!You could retry write it latter!BUSY2021/7/149例:Retry 响应2021/7/150RETRY和SPLIT的不同主要区别在于仲裁的方式主要区别在于仲裁的方式RETRY:arbiter会继续使用通常的优先级会继续使用通常的优先级SPLIT:
15、arbiter会调整优先级方案以便其他请会调整优先级方案以便其他请求总线的主设备可以访问总线求总线的主设备可以访问总线总线主设备应该用同样的方式处理总线主设备应该用同样的方式处理RETRY响应和响应和SPLIT响应响应2021/7/151Locked TransfersHCLKHADDRHWDATAHLOCKAddress PhaseAData Phase AAddress Phase BAAData Phase BAddress Phase CCCBB Locked sequences of transfers cannot be interrupted by interconnect HL
16、OCK 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 only2021/7/152数据总线不是三态总线,读总线和写总线是分开的。不是三态总线,读总线和写总线是分开的。印第安序印第安序在在AMBA协议中没有定义协议中没有定义主设备和从设备应该采用同样的印第安序主设备和从设备应该采
17、用同样的印第安序不支持动态印第安序不支持动态印第安序对于对于IP设计,设计, 只有应用面比较广泛的应用只有应用面比较广泛的应用程序才支持两种印第安序。程序才支持两种印第安序。2021/7/15332bit小印第安数据总线的有效字节2021/7/15432bit大印第安数据总线的有效字节2021/7/155多个主设备I am first I am first!2021/7/156AHB仲裁信号2021/7/157仲裁信号(续)HBUSREQ总线请求总线请求HLOCKx:高电平:主设备请求锁定总线高电平:主设备请求锁定总线HGRANTx指出主设备指出主设备x可访问总线可访问总线主设备主设备x控制总
18、线:控制总线:HGRANTx=1且且HREADY=12021/7/158仲裁信号(续)HMASTER3:0指出哪个主设备正在进行传输指出哪个主设备正在进行传输HMASTLOCK指出主设备正在进行一次锁定传输指出主设备正在进行一次锁定传输HSPLITx15:0从设备用这个信号告诉仲裁器哪个主设备允许从设备用这个信号告诉仲裁器哪个主设备允许重新尝试一次重新尝试一次split传输。传输。每一位对应一个主设备每一位对应一个主设备2021/7/159仲裁举例(1)没有等待状态的grant2021/7/160仲裁举例(2)有等待状态的有等待状态的grant2021/7/161仲裁举例(3)Burst传输之
19、后移交总线传输之后移交总线2021/7/162总线主设备Grant信号Arbiter2021/7/163几点说明对于固定长度的对于固定长度的burst传输,不必持续请求总线传输,不必持续请求总线对于未定义长度的对于未定义长度的burst传输,主设备应该持续送传输,主设备应该持续送出出request信号,直到开始最后一次传输。信号,直到开始最后一次传输。如果没有主设备请求总线,则给缺省主设备如果没有主设备请求总线,则给缺省主设备grant信号,且信号,且HTRANS=IDLE建议主设备在锁定总线传输结束之后插入建议主设备在锁定总线传输结束之后插入IDLE传传输,以重新仲裁优先级。输,以重新仲裁优
20、先级。2021/7/164Split传输过程由主设备开始传输。由主设备开始传输。如果从设备需要多个周期才能获取数据,则从设如果从设备需要多个周期才能获取数据,则从设备给出一个备给出一个SPLIT传输响应。从设备记录主设备传输响应。从设备记录主设备号:号:HMASTER。接着仲裁器改变主设备的优先。接着仲裁器改变主设备的优先级。级。仲裁器仲裁器grant其他的主设备,总线主设备移交。其他的主设备,总线主设备移交。当从设备准备结束本次传输,将设置给仲裁器的当从设备准备结束本次传输,将设置给仲裁器的HSPLITx信号的相应位。信号的相应位。仲裁器恢复优先级仲裁器恢复优先级仲裁器仲裁器grant主设备
21、,这样主设备可以重新开始传主设备,这样主设备可以重新开始传输。输。结束结束2021/7/165防止Deadlock当多个不同的主设备试图访问同一个从设备,这当多个不同的主设备试图访问同一个从设备,这个从设备发出了个从设备发出了SPLIT或或RETRY信号,这是很可信号,这是很可能发生能发生deadlock从设备最多可以接收系统中从设备最多可以接收系统中16个主设备的请求。个主设备的请求。只需要记录主设备号(忽略地址和控制信号)只需要记录主设备号(忽略地址和控制信号)给出给出RETRY响应的从设备在某一时刻只能由一个响应的从设备在某一时刻只能由一个主设备访问。主设备访问。可以使用一些硬件保护机制
22、,比如可以使用一些硬件保护机制,比如ERROR2021/7/166AHB主设备接口2021/7/167AHB从设备接口2021/7/168AHB Arbiter2021/7/169AHB Decoder2021/7/170Typical Multi-layer exampleMaster 0On-chipRAMMaster 1ExternalMemoryI/FDMASlaveSlave MuxSlave MuxUARTTimerGPIOAHB2APB Master 0 can access private RAM, APB and external interface Master 1 can
23、 access DMA slave, APB and external interfaceParallel access improves system bandwidth2021/7/171AHB-LiteSubset of AHB FunctionalitySingle Master No need for HBUSREQ & HGRANTSimple SlavesNo retry or split responses Standard AHB modules can be usedAllows easier module design/debugMaster 0Slave#1Slave#
24、2Slave#3Slave#42021/7/172AHB总结主要组成部分主要组成部分Master、slaves、arbiter、decoder传输的过程传输的过程流水线机制流水线机制Address phase和和data phase如何提高性能如何提高性能Burst read/write仲裁机制仲裁机制总线控制权的移交总线控制权的移交2021/7/173AHB总结(续)Slave短时间内无法响应短时间内无法响应HREADY信号拉低信号拉低Slave长时间内无法响应长时间内无法响应插入插入SPLIT/RETRYMaster不能进行传输不能进行传输插入插入BUSY2021/7/174AHB的应用建
25、议Arbiter的优先级可以配置的优先级可以配置Slave长时间不能响应的话,一般不支持长时间不能响应的话,一般不支持SPLIT响应,使用响应,使用RETRY响应响应总线上如果只有一个总线上如果只有一个master的话,可以使的话,可以使用用AHB lite协议,不用协议,不用arbiter设计一个新的设计一个新的IP时,要仔细核对时,要仔细核对AMBA的的Feature和和IP所支持的所支持的Feature是否匹配。是否匹配。2021/7/175实现如果设计中既有主设备端口又有从设备端如果设计中既有主设备端口又有从设备端口口通过主设备端口读通过主设备端口读/写数据写数据通过从设备端口配置寄存
26、器等通过从设备端口配置寄存器等如处理器设置的一些参数如处理器设置的一些参数2021/7/176目录AMBA总线概述AHBAPB不同IP之间的互连2021/7/177APB信号2021/7/178APB信号(续)PADDR31:0地址总线,由设备总线的地址总线,由设备总线的bridge单元驱动单元驱动PSELx从译码器来的信号,到每一个总线从设备从译码器来的信号,到每一个总线从设备xPENABLE用于在设备总线上把所有访问按时间阶段进行用于在设备总线上把所有访问按时间阶段进行PWRITE高电平:写高电平:写低电平:读低电平:读PRDATA和和PWDATA最多最多32位宽位宽2021/7/179A
27、ddress Decoding StagesSlave 3(APB)Slave 1(EBI)Slave 2(SRAM)0xCFFF_FFFF0xC000_00000x5000_FFFF0x5000_00000x3FFF_FFFF0x0000_0000Peripheral 3(UART)Peripheral 1(Int Cont)Peripheral 2(Timers)0xC3FF_FFFF0xC300_00000xC2FF_FFFF0xC100_00000xC000_FFFF0xC000_0000APBmemory mapTimer 2Timer 10xC2FF_FFFF0xC200_0000
28、0xC1FF_FFFF0xC100_0000AHB DecoderHSELapbPSELtimAPB BridgeTimersAHBmemory mapTimersmemory map2021/7/180APB InterconnectAHB2APBBridgeAPBMasterPADDRHCLKPSEL#1PWRITEPSEL#2PSEL#3PCLKHADDRHWRITEPeripheral #1Peripheral #3Peripheral #2PENABLEPWDATAPRDATAHRDATAHSELHWDATAAHBAPB2021/7/181写传输2021/7/182读传输2021/7
29、/183BridgeHow to translate ahb pipelined timing to 2-cycle apb timing?2021/7/184Bridge FSMAHB Transfer2021/7/185APB Slave2021/7/186APB到AHB的接口读2021/7/187目录AMBA总线概述AHBAPB不同IP之间的互连2021/7/188通信方式Cpu (master) IP (slave)IP (master) IP (slave) 2021/7/189Memory mapped IO每一个从设备都占用系统中的一段地址空每一个从设备都占用系统中的一段地址空间
30、间所有的从设备都是可寻址的所有的从设备都是可寻址的寄存器寄存器/存储器都是内存映射方式访问存储器都是内存映射方式访问CPU/IP读写其他读写其他IP的数据类似于读写存储的数据类似于读写存储器器2021/7/190IP间的通信互连主设备被主设备被arbiter grant之后,可以访问总线之后,可以访问总线上的所有从设备上的所有从设备2021/7/191一个IP可以同时拥有主设备接口和从设备接口2021/7/192CPU和IP之间的通信CPU总是作为主设备总是作为主设备IP总是作为从设备总是作为从设备IP可以发出一个中断可以发出一个中断请求请求CPU进入中断模式,进入中断模式,由由interru
31、pt service routine (ISR)来处理来处理中断中断2021/7/193例:DMA2021/7/194例:DMAStep0:CPU检查检查DMA的状态以确认是的状态以确认是否可用否可用While(1) Read(0x30004,&status) if(status = 0) break; 2021/7/195例:DMAStep1:CPU设置设置(source address)、)、(destination address)()(size)Write (0x30008,0x10000)Write(0x3000C,0x20000)Write(0x30010,0x100)Step 2: 启动启动DMAWrite(0x30000,0x1)2021/7/196例:DMAStep3:DMA把数据从把数据从memory 1 传送到传送到memory 22021/7/197例:DMAStep 4:DMA 向向CPU发出中断请求发出中断请求Step 5:CPU检查检查DMA的状态的状态Read(0x30004, &status)2021/7/198 结束语结束语若有不当之处,请指正,谢谢!若有不当之处,请指正,谢谢!