好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

7AMBA总线6学时.ppt

98页
  • 卖家[上传人]:工****
  • 文档编号:587971612
  • 上传时间:2024-09-07
  • 文档格式:PPT
  • 文档大小:2.47MB
  • / 98 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • AMBA总线 SEP 目录AMBA总线概述AHBAPB不同IP之间的互连 系统总线简介系统芯片中各个模块之间需要有接口来连接系统芯片中各个模块之间需要有接口来连接总线作为子系统之间共享的通信链路总线作为子系统之间共享的通信链路优点优点低成本低成本方便易用方便易用缺点缺点会造成性能瓶颈会造成性能瓶颈 AMBA介绍Advanced Microcontroller Bus Architecture片上总线的标准片上总线的标准定义了三种总线定义了三种总线AHB (Advanced High-performance Bus)ASB (Advanced System Bus)APB (Advanced Peripheral Bus) AMBA发展历史AMBA 1.0ASB 和和 APBAMBA 2.0AHB, ASB 和和 APBAMBA 3.0AMBA Advanced eXtensible Interface (AXI) 一个典型的AMBA系统处理器和其它主设备/从设备都是可以替换的 AHB高速总线,高性能高速总线,高性能流水线操作流水线操作可支持多个总线主设备(最多可支持多个总线主设备(最多16个)个)支持支持burst传输传输总线带宽:总线带宽:8、、16、、32、、64、、128bits上升沿触发操作上升沿触发操作对于一个新设计建议使用对于一个新设计建议使用AHB ASB高速总线高速总线流水线操作流水线操作支持多个总线主设备支持多个总线主设备支持支持burst传输传输总线带宽:总线带宽:8、、16、、32bits三态、双向总线三态、双向总线(不适于做(不适于做DFT))下降沿或者上升沿触发下降沿或者上升沿触发 APB低速总线、低功耗低速总线、低功耗接口简单接口简单在在Bridge中锁存地址信号和控制信号中锁存地址信号和控制信号适用于多种外设适用于多种外设上升沿触发上升沿触发 AHB组成部分AHB 主设备(主设备(master))初始化一次读初始化一次读/写操作写操作某一时刻只允许一个主设备使用总线某一时刻只允许一个主设备使用总线uP、、DMA、、DSP、、LCDC …AHB从设备(从设备(slave))响应一次读响应一次读/写操作写操作通过地址映射来选择使用哪一个从设备通过地址映射来选择使用哪一个从设备外部存储器控制器外部存储器控制器EMI、、APB bridge、、UART、、 …AHB仲裁器(仲裁器(arbiter))允许某一个主设备控制总线允许某一个主设备控制总线在在AMBA协议中没有定义仲裁算法协议中没有定义仲裁算法AHB译码器(译码器(decoder))通过地址译码来决定选择哪一个从设备通过地址译码来决定选择哪一个从设备 APB组成部分AHB2APB Bridge可以锁存所有的地址、数据和控制信号可以锁存所有的地址、数据和控制信号进行二级译码来产生进行二级译码来产生APB从设备选择信号从设备选择信号APB总线上的所有其他模块都是总线上的所有其他模块都是APB从设从设备备不是流水线方式不是流水线方式接口是零功耗接口是零功耗 AMBA协议其他有关问题与工艺无关与工艺无关没有定义电气特性没有定义电气特性仅在时钟周期级定义时序仅在时钟周期级定义时序提取时序参数依赖于所采用的工艺和工作频率提取时序参数依赖于所采用的工艺和工作频率 目录AMBA总线概述AHBAPB不同IP之间的互连 AHB总线互连 AHB传输发起一个请求发起一个请求给仲裁器给仲裁器驱动地址和驱动地址和控制信号控制信号允许某个主设允许某个主设备控制总线备控制总线仅选中的从设仅选中的从设备响应地址备响应地址/控制信号控制信号拉高拉高HREADY信号,总线信号,总线传输完成传输完成 Dummy/Default MasterDummy 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 MuxDefault 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 Default SlaveSlave 3(APB)Default Slave0x0000_00000xFFFF_FFFFcase HADDR is when …. => HSELebi <= ‘1’; when …. => HSELsram <= ‘1’; when …. => HSELapb <= ‘1’; when others => HSELdefault <= ‘1’;end case;DecoderlogicSlave 2(InternalMemory)Default_Slavelogiccase HTRANS is when IDLE|BUSY => HRESP <= OKAY; when others => HRESP <= ERROR;end case;Slave 1(External)0xCFFF_FFFF0xC000_00000x5000_FFFF0x5000_00000x3FFF_FFFF0x0000_ AHB信号 基本AHB信号HRESETn低电平有效低电平有效HADDR[31:0]32位系统地址总线位系统地址总线HWDATA[31:0]写数据总线,从主设备写到从设备写数据总线,从主设备写到从设备HRDATA[31:0]读数据总线,从从设备读到主设备读数据总线,从从设备读到主设备 基本AHB信号(续)HTRANS指出当前传输的状态指出当前传输的状态NONSEQ、、SEQ、、IDLE、、BUSYHSIZE指出当前传输的大小指出当前传输的大小HBURST指出传输的指出传输的burst类型类型HRESP从设备发给主设备的总线传输状态从设备发给主设备的总线传输状态OKAY、、ERROR、、RETRY、、SPLITHREADY高:从设备指出传输结束高:从设备指出传输结束低电平:从设备需延长传输周期低电平:从设备需延长传输周期 基本AHB传输两个阶段两个阶段地址周期,只有一个地址周期,只有一个cycle数据周期,由数据周期,由HREADY信号决定需要几个信号决定需要几个cycle流水线传送流水线传送先是地址周期,然后是数据周期先是地址周期,然后是数据周期 Master release address and controlSlave sample the address and controlMaster sample the dataIf slave hasn’t ready to receive data, how to do?基本AHB传输(续)一次无需等待状态的简单传输 Not readyNot readyReadyOne transfer need at least two cycles, how to promote its efficiency?Note: slave shouldn’t insert more than 16 wait cycles!!!基本AHB传输(续)需要两个等待周期的简单传输 PipelineA AddressA DataB AddressB DataC AddressC DataSlave decodes every transfer, so many waits, how to decrease the wait cycles?基本AHB传输(续) Burst TransferAAA+4A+4A+8A+8A+12A+12HBURST shows the burst types:Single TransferIncrementing transfer with unspecified length((INCR))4-beat 8-beat16-beatSlave has know that master need 4 data, A/A+4/A+8/A+12During burst transfer, if slave not ready, then hready=0; but if master is not ready, how to do?基本AHB传输(续) 传输类型HTRANS[1:0]:当前传输的状态:当前传输的状态IDLE、、BUSY、、NONSEQ、、SEQ00::IDLE主设备占用总线,但没进行传输主设备占用总线,但没进行传输两次两次burst传输中间主设备发传输中间主设备发IDLE01::BUSY主设备占用总线,但是在主设备占用总线,但是在burst传输过程中还没有准备传输过程中还没有准备好进行下一次传输好进行下一次传输一次一次burst传输中间主设备发传输中间主设备发BUSY 传输类型(续)10::NOSEQ表明一次单个数据的传输表明一次单个数据的传输或者一次或者一次burst传输的第一个数据传输的第一个数据地址和控制信号与上一次传输无关地址和控制信号与上一次传输无关11::SEQ表明表明burst传输接下来的数据传输接下来的数据地址和上一次传输的地址是相关的地址和上一次传输的地址是相关的 The first transfer Master is busyThe subsequent transferThe subsequent transferSlave is not readyThe subsequent transfer传输类型举例 其它AHB控制信号HWRITE高电平:写高电平:写低电平:读低电平:读HSIZE[2:0]000:8bits 100:128bits001:16bits 101:256bits010:32bits 110:512bits011:64bits 111:1024bits最大值受总线的配置所限制最大值受总线的配置所限制通常使用通常使用32bits((010)) 其它AHB控制信号(续)HPROT[3:0]HPROT[0]: OPCODE/DATAHPROT[1]: USER/PRIVILGEDHPROT[2]: Bufferable/Non-BufferableHPROT[3]: Cacheable/Non-C 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 - cacheable§ HADDR must be aligned to a multiple of data size as given by HSIZE BURST传输AHB Burst 操作操作4beat、、8beat、、16beat、单个字节传输、未定义长度、单个字节传输、未定义长度的传输的传输支持支持incrementing和和wrapping两种两种burst传输传输Incrementing burst地址是上一次的传输地址加地址是上一次的传输地址加1Wrapping burst例:例:4beat的的wrapping burst 字传输(字传输(4byte):):0x34 -> 0x38 -> 0x3c -> 0x30应用场合:应用场合:Cache填充填充 地址计算举例根据HSIZE和HBURST来计算地址例:起始地址是0x48,HSIZE=010(32bits) INCR8 BurstHCLKSEQNSEQSEQSEQSEQSEQINCR80x600x680x640x6c0x740x70HTRANSHBURSTHADDRHRDATAd1d0d2d4d3d50x780x7cSEQSEQ WRAP8 BurstHCLKSEQNSEQSEQSEQSEQSEQWRAP80x700x780x740x7c0x640x60HTRANSHBURSTHADDRHRDATAd5d4d6d0d7d10x680x6cSEQSEQd2d3start of INCR4 B WRAP4 B 例:未定义长度的Burst传输 HCLKSEQNSEQNSEQNSEQSEQSEQIDLEINCR4SISI0x340x3C0x380x400x480x44HTRANSHBURSTHADDRHRDATAHWDATAr6r5r7r9r8r10Example LDM AHB ActivitySI = SINGLELDM <0x34>,{r5-r10} 注意!Burst传输不能穿越传输不能穿越1K边界边界一个从设备最小的地址间隙是一个从设备最小的地址间隙是1KBNONSEQ -> SEQ -> 1KB Boundary -> NONSEQ -> SEQ …主设备不能试图开始一个可能穿越主设备不能试图开始一个可能穿越1K边界边界的固定长度的的固定长度的incrementing burst传输传输 INCR Burst over 1k boundaryHCLKSEQNSEQSEQNSEQSEQSEQINCR0x3F00x3F80x3F40x3FC0x4040x400HTRANSHBURSTHADDRHRDATAd1d0d2d4d3d50x408 0x40CSEQSEQd6d7start of 1k 地址译码HSELx:选择从设备:选择从设备指出由主设备所选择的从设备指出由主设备所选择的从设备由地址译码器来提供选择信号由地址译码器来提供选择信号一个从设备应该至少占用一个从设备应该至少占用1KB的存储空间的存储空间需要一个额外的缺省从设备来映射其他的需要一个额外的缺省从设备来映射其他的存储地址存储地址 地址译码(续) 从设备响应所访问的从设备必须响应这次传输所访问的从设备必须响应这次传输从设备可能返回的响应:从设备可能返回的响应:完成这次传输完成这次传输插入等待状态(插入等待状态(HREADY信号)信号)发出错误信号表示这次传输失败发出错误信号表示这次传输失败延迟传输,使得总线可用于其他传输(延迟传输,使得总线可用于其他传输(split)) 从设备响应信号HREADY::transfer doneHRESP[1:0]::transfer response00::OKAY成功成功01::ERROR失败失败10::RETRY传输未完成传输未完成请求主设备重新开始一个传输请求主设备重新开始一个传输11::SPLIT传输未完成传输未完成请求主设备分离一次传输请求主设备分离一次传输 两周期的响应HRESP[1:0]OKAY:单周期响应:单周期响应ERROR:两周期响应:两周期响应RETRY:两周期响应:两周期响应SPLIT:两周期响应:两周期响应总线的流水特性需要从设备两个周期的响总线的流水特性需要从设备两个周期的响应。

      可以使得主设备有足够的时间处理下应可以使得主设备有足够的时间处理下一次传输一次传输 Slave ResponsesMem AMem BMem DMem CSlaveProcessorAMBAWrite Mem EI couldn’t write it because of no mem E!!!! Slave ResponsesMem AMem BMem DMem CSlaveProcessorAMBAWrite Mem AI couldn’t write it now for busy!!!You could retry write it latter!!BUSY 例:Retry 响应 RETRY和SPLIT的不同主要区别在于仲裁的方式主要区别在于仲裁的方式RETRY::arbiter会继续使用通常的优先级会继续使用通常的优先级SPLIT::arbiter会调整优先级方案以便其他请会调整优先级方案以便其他请求总线的主设备可以访问总线求总线的主设备可以访问总线总线主设备应该用同样的方式处理总线主设备应该用同样的方式处理RETRY响应和响应和SPLIT响应响应 Locked TransfersHCLKHADDRHWDATAHLOCKAddress PhaseAData Phase AAddress Phase BAAData Phase BAddress Phase CCCBB§ 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 数据总线不是三态总线,读总线和写总线是分开的。

      不是三态总线,读总线和写总线是分开的印第安序印第安序在在AMBA协议中没有定义协议中没有定义主设备和从设备应该采用同样的印第安序主设备和从设备应该采用同样的印第安序不支持动态印第安序不支持动态印第安序对于对于IP设计,设计, 只有应用面比较广泛的应用只有应用面比较广泛的应用程序才支持两种印第安序程序才支持两种印第安序 32bit小印第安数据总线的有效字节 32bit大印第安数据总线的有效字节 多个主设备I am first I am first!!! AHB仲裁信号 仲裁信号(续)HBUSREQ总线请求总线请求HLOCKx::高电平:主设备请求锁定总线高电平:主设备请求锁定总线HGRANTx指出主设备指出主设备x可访问总线可访问总线主设备主设备x控制总线:控制总线:HGRANTx=1且且HREADY= 仲裁信号(续)HMASTER[3:0]指出哪个主设备正在进行传输指出哪个主设备正在进行传输HMASTLOCK指出主设备正在进行一次锁定传输指出主设备正在进行一次锁定传输HSPLITx[15:0]从设备用这个信号告诉仲裁器哪个主设备允许从设备用这个信号告诉仲裁器哪个主设备允许重新尝试一次重新尝试一次split传输。

      传输每一位对应一个主设备每一位对应一个主设备 仲裁举例(1)没有等待状态的 仲裁举例(2)有等待状态的有等待状态的 仲裁举例(3)Burst传输之后移交总线传输之后移交总线 总线主设备Grant信号A 几点说明对于固定长度的对于固定长度的burst传输,不必持续请求总线传输,不必持续请求总线对于未定义长度的对于未定义长度的burst传输,主设备应该持续送传输,主设备应该持续送出出request信号,直到开始最后一次传输信号,直到开始最后一次传输如果没有主设备请求总线,则给缺省主设备如果没有主设备请求总线,则给缺省主设备grant信号,且信号,且HTRANS=IDLE建议主设备在锁定总线传输结束之后插入建议主设备在锁定总线传输结束之后插入IDLE传传输,以重新仲裁优先级输,以重新仲裁优先级 Split传输过程由主设备开始传输由主设备开始传输如果从设备需要多个周期才能获取数据,则从设如果从设备需要多个周期才能获取数据,则从设备给出一个备给出一个SPLIT传输响应从设备记录主设备传输响应从设备记录主设备号:号:HMASTER接着仲裁器改变主设备的优先接着仲裁器改变主设备的优先级仲裁器仲裁器grant其他的主设备,总线主设备移交。

      其他的主设备,总线主设备移交当从设备准备结束本次传输,将设置给仲裁器的当从设备准备结束本次传输,将设置给仲裁器的HSPLITx信号的相应位信号的相应位仲裁器恢复优先级仲裁器恢复优先级仲裁器仲裁器grant主设备,这样主设备可以重新开始传主设备,这样主设备可以重新开始传输结束结束 防止Deadlock当多个不同的主设备试图访问同一个从设备,这当多个不同的主设备试图访问同一个从设备,这个从设备发出了个从设备发出了SPLIT或或RETRY信号,这是很可信号,这是很可能发生能发生deadlock从设备最多可以接收系统中从设备最多可以接收系统中16个主设备的请求个主设备的请求只需要记录主设备号(忽略地址和控制信号)只需要记录主设备号(忽略地址和控制信号)给出给出RETRY响应的从设备在某一时刻只能由一个响应的从设备在某一时刻只能由一个主设备访问主设备访问可以使用一些硬件保护机制,比如可以使用一些硬件保护机制,比如ERROR AHB主设备接口 AHB从设备接口 AHB A AHB D Typical Multi-layer exampleMaster 0On-chipRAMMaster 1ExternalMemoryI/FDMASlaveSlave MuxSlave MuxUARTTimerGPIOAHB2APB§ Master 0 can access private RAM, APB and external interface § Master 1 can access DMA slave, APB and external interface§Parallel access improves system AHB-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#2Slave#3Slave# AHB总结主要组成部分主要组成部分Master、、slaves、、arbiter、、decoder传输的过程传输的过程流水线机制流水线机制Address phase和和data phase如何提高性能如何提高性能Burst read/write仲裁机制仲裁机制总线控制权的移交总线控制权的移交 AHB总结(续)Slave短时间内无法响应短时间内无法响应HREADY信号拉低信号拉低Slave长时间内无法响应长时间内无法响应插入插入SPLIT/RETRYMaster不能进行传输不能进行传输插入插入BUSY AHB的应用建议Arbiter的优先级可以配置的优先级可以配置Slave长时间不能响应的话,一般不支持长时间不能响应的话,一般不支持SPLIT响应,使用响应,使用RETRY响应响应总线上如果只有一个总线上如果只有一个master的话,可以使的话,可以使用用AHB lite协议,不用协议,不用arbiter设计一个新的设计一个新的IP时,要仔细核对时,要仔细核对AMBA的的Feature和和IP所支持的所支持的Feature是否匹配。

      是否匹配 实现如果设计中既有主设备端口又有从设备端如果设计中既有主设备端口又有从设备端口口通过主设备端口读通过主设备端口读/写数据写数据通过从设备端口配置寄存器等通过从设备端口配置寄存器等如处理器设置的一些参数如处理器设置的一些参数 目录AMBA总线概述AHBAPB不同IP之间的互连 APB信号 APB信号(续)PADDR[31:0]地址总线,由设备总线的地址总线,由设备总线的bridge单元驱动单元驱动PSELx从译码器来的信号,到每一个总线从设备从译码器来的信号,到每一个总线从设备xPENABLE用于在设备总线上把所有访问按时间阶段进行用于在设备总线上把所有访问按时间阶段进行PWRITE高电平:写高电平:写低电平:读低电平:读PRDATA和和PWDATA最多最多32位宽位宽 Address 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_00000xC1FF_FFFF0xC100_0000AHB DecoderHSELapbPSELtimAPB BridgeTimersAHBmemory mapTimersmemory APB InterconnectAHB2APBBridgeAPBMasterPADDRHCLKPSEL#1PWRITEPSEL#2PSEL#3PCLKHADDRHWRITEPeripheral #1Peripheral #3Peripheral #2PENABLEPWDATAPRDATAHRDATAHSELHWDATAAHBAPB 写传输 读传输 BridgeHow to translate ahb pipelined timing to 2-cycle apb timing? Bridge FSMAHB T APB S APB到AHB的接口-读 目录AMBA总线概述AHBAPB不同IP之间的互连 通信方式Cpu (master) <- -> IP (slave)IP (master) <- -> IP (slave) Memory mapped IO每一个从设备都占用系统中的一段地址空每一个从设备都占用系统中的一段地址空间间所有的从设备都是可寻址的所有的从设备都是可寻址的寄存器寄存器/存储器都是内存映射方式访问存储器都是内存映射方式访问CPU/IP读写其他读写其他IP的数据类似于读写存储的数据类似于读写存储器器 IP间的通信互连主设备被主设备被arbiter grant之后,可以访问总线之后,可以访问总线上的所有从设备上的所有从设备 一个IP可以同时拥有主设备接口和从设备接口 CPU和IP之间的通信CPU总是作为主设备总是作为主设备IP总是作为从设备总是作为从设备IP可以发出一个中断可以发出一个中断请求请求CPU进入中断模式,进入中断模式,由由interrupt service routine (ISR)来处理来处理中断中断 例:DMA 例:DMAStep0::CPU检查检查DMA的状态以确认是的状态以确认是否可用否可用While(1){ Read(0x30004,&status) if(status == 0) break; } 例:DMAStep1::CPU设置设置((source address)、)、((destination address)()(size))Write (0x30008,0x10000)Write(0x3000C,0x20000)Write(0x30010,0x100)Step 2: 启动启动DMAWrite(0x30000,0x1) 例:DMAStep3::DMA把数据从把数据从memory 1 传送到传送到memory 例:DMAStep 4::DMA 向向CPU发出中断请求发出中断请求Step 5::CPU检查检查DMA的状态的状态Read(0x30004, &status) 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.