APB 基本原理

这篇具有很好参考价值的文章主要介绍了APB 基本原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、APB简介

APB是AMBA总线体系中的一员,因其具备低功耗、接口和控制简单的特点,广泛被运用于低带宽和不带总线的高性能外设接口,ASIC芯片中寄存器访问。

APB的传输信号只与时钟上升沿有关,故其具备以下优点:

  1. 易于实现高频操作;
  2. 性能与时钟占空比无关;
  3. 静态时序分析简单;
  4. 易于与基于上升沿的寄存器访问;
  5. 易于集成到基于周期的仿真器中。

在ASIC设计中,APB作为系统中的从机,与系统中的主总线通过Bridge(AHB to APB 或 AXI to APB)连接,APB从机包含以下接口规则:

  1. 整个访问中地址和控制信号有效(不分通道);
  2. 当无外设总线活动时接口功耗为零(外设总线不适用时为静态);
  3. 通过选通脉冲时序译码产生时序(无时钟接口);
  4. 整个访问过程中写数据有效(允许无毛刺透明锁存工具)。

2、APB基本原理

AMBA系统设计框图如下,其中AHB/ASB为系统中的main bus,而APB为次级bus,且AHB/ASB与APB通过BRIDGE进行桥接,APB适用于低带宽、低功耗的数据传输。

APB 基本原理

Bridge就是为了适配AHB和APB的读写操作,如果CPU需要访问UART接口,则先通过AHB总线发出读写指令,然后Bridge转成适配APB指令对UART进行读写transfer。

APB 基本原理

2.1、APB信号

名字

描述

PCLK

系统时钟。

PRESETn

复位,低电平有效。

PADDR[31:0]

地址,32bit。

PSELx

Slave选中信号。

PENABLE

APB transfer使能信号。

PWRITE

1、写操作;

0、读操作。

PRDATA

读数据,32bit。

PWDATA

写数据,32bit。

2.2、APB地址空间

图2

APB连接3个外设,分别是UART、Timers和Int Cont。APB地址空间为0xc000_0000 ~ 0xcfff_ffff,而外设的地址空间分别为0xc300_0000 ~ 0xcfff_ffff、0xc100_0000 ~ 0xc2ff_ffff和0xc000_0000 ~ 0xc000_ffff。

2.3、Transfer

2.3.1、传输状态图

APB 基本原理

APB的传输状态图由PSELx和PENABLE构成,状态:IDLE、SETUP、ENABLE,APB的访问延迟为2个clk。

注意:

  1. SETUPENABLE状态仅保持1clk
  2. 完成一次操作后,PENABLE必须置0
  3. 若后续没有操作,PSELx置0,否则置1。

总结:

  1. 为了保证ENABLE采样的addr、data以及select是stale status,故需要两拍操作;
  2. ENABLE to SETUP时,允许addr、data、select存在glith,因为只有在ENABLE状态才会采样;
  3. PSELx必须早PENABLE一拍。

2.3.2、Write Transfer

APB 基本原理

PWRITE=1时,写操作。T3时刻准备稳定的data和addr。

  1. T2时刻,PSEL=0,PENABLE=0,state=IDLE,总线无操作;
  2. T3时刻,PSEL=1,PENABLE=0,state=SETUP,总线提供addr和data,供下一拍采样;
  3. T4时刻,PSEL=1,PENABLE=1,state=ENABLE,采样有效addr和data;
  4. T5时刻,PSEL=0,PENABLE=0,state=IDLE,总线空闲。

2.3.3、Read Transfer

PWRITE=0时,读操作。T3时刻准备稳定的addr,T4时刻采取有效数据。

  1. T2时刻,PSEL=0,PENABLE=0,state=IDLE,总线无操作;
  2. T3时刻,PSEL=1,PENABLE=0,state=SETUP,总线提供addr和data,供下一拍采样;
  3. T4时刻,PSEL=1,PENABLE=1,state=ENABLE,采样有效addr和data;
  4. T5时刻,PSEL=0,PENABLE=0,state=IDLE,总线空闲。

APB 基本原理

3、APB Bridge

APB Bridge实现AHB到APB的时序转换,系统框图如下:

APB 基本原理

  1. 锁存地址并将其有效传输;
  2. 解析地址产生PSELx,且PSELx只有一个有效;
  3. 将数据传输到APB总线上;
  4. 产生定时strobe、PENABLE。

3.1、Read Transfer

APB 基本原理

注:读操作,每次3clk

  1. T2时刻:

AHB:HWRITE=0,ddr1有效,HREADY=1指示上一次有效操作;

APB:PSEL=0,PENABLE=0,state=IDLE。

  1. T3时刻:

AHB:HWRITE=0,addr2有效,HREADY=0指示addr1操作未生效;

APB:PWRITE=0,PSEL=1,PENABLE=0,state=SETUP,且HADDR 1-> PADDR1。

  1. T4时刻:

AHB:HWRITE=0,addr2有效,HREADY=1指示addr1操作生效,PRDATA1 -> HRDATA1;

APB:PWRITE=0,PSEL=1,PENABLE=1,state=ENABLE,APB读操作,读数据PRDATA1。

  1. T5时刻:

AHB:HWRITE=0,addr3有效,HREADY=0指示addr2操作未生效;

APB:PWRITE=0,PSEL=1,PENABLE=0,state=SETUP,且HADDR2 -> PADDR2。

  1. T6时刻:

AHB:HWRITE=0,addr3有效,HREADY=1指示addr2操作生效,PRDATA2 -> HRDATA2;

APB:PWRITE=0,PSEL=1,PENABLE=1,state=ENABLE,APB读操作,读数据PRDATA2。

  1. T7时刻:

AHB:HWRITE=0,addr4有效,HREADY=0指示addr3操作未生效;

APB:PWRITE=0,PSEL=1,PENABLE=0,state=SETUP,且HADDR3 -> PADDR3。

  1. T8时刻:

AHB:HWRITE=0,addr4有效,HREADY=1指示addr3操作生效,PRDATA3 -> HRDATA3;

APB:PWRITE=0,PSEL=1,PENABLE=1,state=ENABLE,APB读操作,读数据PRDATA3。

  1. T9时刻:

AHB:HWRITE=0,HREADY=0指示addr4操作未生效;

APB:PWRITE=0,PSEL=1,PENABLE=0,state=SETUP,且HADDR4 -> PADDR4。

  1. T10时刻:

AHB:HWRITE=0,HREADY=1指示addr4操作生效,PRDATA4 -> HRDATA4;

APB:PWRITE=0,PSEL=1,PENABLE=1,state=ENABLE,APB读操作,读数据PRDATA4。

3.2、Write Transfer

APB 基本原理

注:单次写操作,4clkBurst写操作n4*n-2clk

  1. T2时刻:

AHB:HWRITE=1,ddr1有效,HREADY=1指示上一次有效操作;

APB:PWRITE=x,PSEL=0,PENABLE=0,state=IDLE。

  1. T3时刻:

AHB:HWRITE=1,addr2有效,HREADY=1指示addr1操作生效,准备HWDATA1/HADDR1

APB:PWRITE=x,PSEL=0,PENABLE=0,state=IDLE。

  1. T4时刻:

AHB:HWRITE=1,addr3有效,HREADY=0指示addr2操作未生效;

APB:PWRITE=1,PSEL=1,PENABLE=0,state=SETUP,且HADDR 1-> PADDR1、HWDATA1 -> PWDATA1。

  1. T5时刻:

AHB:HWRITE=1,addr3有效,HREADY=1指示addr2操作生效,准备HWDATA2/HADDR2

APB:PWRITE=1,PSEL=1,PENABLE=1,state=ENABLE,APB写操作,写入数据PWDATA1

  1. T6时刻:

AHB:HWRITE=1,addr4有效,HREADY=0指示addr3操作未生效;

APB:PWRITE=1,PSEL=1,PENABLE=0,state=SETUP,且HADDR 2-> PADDR2、HWDATA2 -> PWDATA2。

  1. T7时刻:

AHB:HWRITE=1,addr4有效,HREADY=1指示addr3操作生效,准备HWDATA3/HADDR3

APB:PWRITE=1,PSEL=1,PENABLE=1,state=ENABLE,APB写操作,写入数据PWDATA2

  1. T8时刻:

AHB:HWRITE=1,addrx有效,HREADY=0指示addr4操作未生效;

APB:PWRITE=1,PSEL=1,PENABLE=0,state=SETUP,且HADDR 3-> PADDR3、HWDATA3 -> PWDATA3。

  1. T9时刻:

AHB:HWRITE=1,addrx有效,HREADY=1指示addr4操作生效,准备HWDATA4/HADDR4

APB:PWRITE=1,PSEL=1,PENABLE=1,state=ENABLE,APB写操作,写入数据PWDATA3。

  1. T10时刻:

AHB:HWRITE=1,addrx有效,HREADY=x,无操作;

APB:PWRITE=1,PSEL=1,PENABLE=0,state=SETUP,且HADDR 4-> PADDR4、HWDATA4 -> PWDATA4。

  1. T11时刻:

AHB:HWRITE=1,addrx有效,HREADY=x,无操作;

APB:PWRITE=1,PSEL=1,PENABLE=1,state=ENABLE,APB写操作,写入数据PWDATA4。

3.3、Back to Back Transfer

APB 基本原理

  1. T2时刻:

AHB:HWRITE=1,ddr1写有效,HREADY=1指示上一次有效操作,准备HADDR1

APB:PWRITE=x,PSEL=0,PENABLE=0,state=IDLE。

  1. T3时刻:

AHB:HWRITE=0,ddr2读有效,HREADY=1指示addr1操作有效,准备HWDATA1HADDR2

APB:PWRITE=x,PSEL=0,PENABLE=0,state=IDLE。

  1. T4时刻:

AHB:HWRITE=1,addr3写有效,HREADY=0指示addr2操作未生效,准备HADDR3

APB:PWRITE=1,PSEL=1,PENABLE=0,state=SETUP,且HADDR 1-> PADDR1、HWDATA1 -> PWDATA1

  1. T5时刻:

AHB:HWRITE=1,addr3写有效,HREADY=0指示addr2操作未生效;

APB:PWRITE=1,PSEL=1,PENABLE=1,state=ENABLE,APB写操作,写入数据PWDATA1

  1. T6时刻:

AHB:HWRITE=1,addr3写有效,HREADY=0指示addr2操作未生效;

APB:PWRITE=0,PSEL=1,PENABLE=0,state=SETUP,且HADDR 2-> PADDR2

  1. T7时刻:

AHB:HWRITE=0,addr3写有效,HREADY=1指示addr2读操作生效,读取HRDATA2

APB:PWRITE=0,PSEL=1,PENABLE=1,state=ENABLE,APB读操作,读取数据PRDATA2。

  1. T8时刻:

AHB:HWRITE=0,addr4读有效,HREADY=1指示addr3写操作生效,准备HRDATA3;

APB:PWRITE=0,PSEL=0,PENABLE=0,state=IDLE。

  1. T9时刻:

AHB:HWRITE=x,addrx有效,HREADY=x无操作;

APB:PWRITE=1,PSEL=1,PENABLE=0,state=SETUP,且HADDR 3-> PADDR3、HWDATA3 -> PWDATA3。

  1. T10时刻:

AHB:HWRITE=x,addrx有效,HREADY=x无操作;

APB:PWRITE=1,PSEL=1,PENABLE=1,state=ENABLE,APB写操作,写入数据PRDATA3。

  1. T11时刻:

AHB:HWRITE=x,addrx有效,HREADY=x无操作;

APB:PWRITE=0,PSEL=1,PENABLE=0,state=SETUP,且HADDR 4-> PADDR4。

  1. T12时刻:

AHB:HWRITE=x,addrx有效,HREADY=x无操作,读取PRDATA4

APB:PWRITE=0,PSEL=1,PENABLE=1,state=ENABLE,APB读操作,读取数据PRDATA4。

4、总结

APB协议作为系统中的次级bus,原理简单且不支持pipeline操作,每次读写操作都是SETUP和ENABLE状态的切换,故其读写操作均消耗2个clk。APB与主bus(AHB)通过bridge互联,如果主bus支持pipeline操作且需访问APB设备,访问效率随着APB的处理而降低。在bridge设计中,pipeline写比单次写少2个clk,而pipeline读缺没有变化。文章来源地址https://www.toymoban.com/news/detail-457053.html

到了这里,关于APB 基本原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机组成原理实验三-----系统总线和具有基本输入输出功能的总线接口实验

        总线是计算机中连接各个功能部件的纽带,是计算机各部件之间进行信息传输的公共通路。 总线不只是一组简单的信号传输线,它还是一组协议。他有两大特征   分时:   同一总线在同一时刻, 只能有一个部件占领总线发送信息 ,其他部件要发送信息得在该 部件发送

    2024年02月01日
    浏览(63)
  • PCIe简介/体系架构/工作原理/资源分配/错误定位

    目录 一、PCIe简介 二、体系结构 三、层次结构 四、工作原理 五、不同版本及传输速率、吞吐量 六、资源分配 ID资源 PCIe资源分配原理 七、Lane和Link PCIe插槽 八、MSI和MSI-X 九、SR-IOV 十、AER 十一、lspci命令 PCIe(Peripheral Component Interconnect Express)是一种用于连接计算机内部硬件

    2024年02月16日
    浏览(45)
  • 保护路由器 避免成为僵尸网络中的一员

    目前已经有成千上网的家庭路由器已经被恶意软件感染,并被黑客用来发布分布式拒绝服务攻击(DD0S)。router-based僵尸网络被调查人员发现,这一僵尸网络早在去年年底已经对几十个网站进行了DDoS攻击。研究人员追踪这些恶意流量刘翔的路由器和运营商网络,发现这些攻击

    2024年02月08日
    浏览(58)
  • 解析Apache Kafka:在大数据体系中的基本概念和核心组件

    关联阅读博客文章:探讨在大数据体系中API的通信机制与工作原理 关联阅读博客文章:深入解析大数据体系中的ETL工作原理及常见组件 关联阅读博客文章:深度剖析:计算机集群在大数据体系中的关键角色和技术要点 关联阅读博客文章:深入理解HDFS工作原理:大数据存储和

    2024年04月10日
    浏览(58)
  • 网络协议从入门到底层原理学习(一)—— 简介及基本概念

    一、简介 1、网络协议的定义 什么是网络协议? 网络协议是由定义网络上两个或多个设备之间通信的规则、过程和格式组成的正式标准和策略 它们确保计算机网络设备可以使用一种通用语言传输和接收数据,而不管它们的设计、硬件或基础设施如何。 网络协议管理及时、安全

    2024年02月09日
    浏览(49)
  • Git简介与工作原理:了解Git的基本概念、版本控制系统和分布式版本控制的工作原理

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(64)
  • Maven简介及环境搭建和基本使用(Java开发中的实用工具)

    Maven 是 Apache 软件基金会的一个开源项目,是一个优秀的项目构建工具,它 用来帮助开发者管理项目中的 jar,以及 jar 之间的依赖关系、完成项目的编译、 测试、打包和发布等工作。 pom.xml文件:里面可以配置相关信息,指导maven如何工作 坐标:jar包在仓库中的唯一位置, apache将

    2024年02月02日
    浏览(39)
  • 【JavaEE】网络原理:网络中的一些基本概念

    目录 1. 网络通信基础 1.1 IP地址 1.2 端口号 1.3 认识协议 1.4 五元组 1.5 协议分层 什么是协议分层 分层的作用 OSI七层模型 TCP/IP五层(或四层)模型 网络设备所在分层 网络分层对应 封装和分用 概念: IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简

    2024年01月24日
    浏览(38)
  • Elasticsearch 中的向量搜索:设计背后的基本原理

    作者:ADRIEN GRAND 实现向量数据库有不同的方法,它们有不同的权衡。 在本博客中,你将详细了解如何将向量搜索集成到 Elastisearch 中以及我们所做的权衡。 你有兴趣了解 Elasticsearch 用于向量搜索的特性以及设计是什么样子吗? 一如既往,设计决策有利有弊。 本博客旨在详细

    2024年02月10日
    浏览(45)
  • Elasticsearch 中的矢量搜索:设计背后的基本原理

    作者:Adrien Grand 你是否有兴趣了解 Elasticsearch 用于向量搜索(vector search)的特性以及设计是什么样子? 一如既往,设计决策有利有弊。 本博客旨在详细介绍我们如何选择在 Elasticsearch 中构建向量搜索。 首先是有关 Lucene 的一些背景知识:Lucene 将数据组织成定期合并的不可

    2024年02月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包