0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

聊聊AMBA总线-APB

jf_78858299 来源:IC解惑君 作者:木飞 2023-05-04 11:40 次阅读

1 - APB引言:

首先考虑一下以下的场景:

有一个水果店,只卖三种水果,分别是草莓、蓝莓和苹果。水果店按照客人购买量进行 水果的进货 厂商根据水果店的要求 ,提供对应数量的水果并 运送到水果店

每次交易如下:

水果店根据需求使用****大喇叭广播 自己的订单需求 ,说出想要订货的数量, 对应厂商提供水果上门 ,水果店签收。

使用这条水果运输总线类比AMBA总线的APB****总线:

概念1: 主机(Master)

订单的发起只能由 水果店发起 ,所以水果店在这条水果运输总线里面运输水果占有主动地位。

类比:

在APB总线里面,数据的传输只能由主机发起,其他部分响应主机操作。

概念2:从机(Slave)

当水果店发起订单之后,和订单匹配的厂家需要 提供对应的水果送到水果店 。这里面的厂家 只能根据要求送水果 ,自己不能随便向水果店送水果(没有主动的权限)。

类比:

在APB总线里面,数据的回复由从机完成,从机 只能完成主机发起的操作 ,自己不能发起操作然后完成操作。

概念3:单主机(Single Master)

在这条水果运输总线里面,当前只有一个水果店,也只有这个水果店可以发起订单需求,所以在 这条水果运输总线里面,只有一个主机(按上图来说)。

类比:

在APB总线里面, 有且只有一个主机可以连接到APB总线接口 ,其他的只能连接从机(外设),所以 APB总线只支持单主机模式

概念4:总线协议(Bus Protocol)

在这条水果运输总线里面,水果店按照自己的需求,发起订单,厂商提供水果,水果店确认收到 这一个完整的流程以及顺序被称为水果总线在传输水果的协议。

类比:

在APB总线里面,主机先发起要访问的外设地址,外设根据要求返回数据,主机收到数据,这一个完整的流程被称为APB总线协议。

所以我们可以根据上面得出 单主机 总线的正式概念

总线是被总线上所有的部件所共享的一组通路(连线),对于单主机来说,如果该主机想要与其中的外设部件进行通信(获得数据),需要将地址(厂商名字)、数据(水果)、命令(进货还是退货)放到总线上,其他的从机部件对总线上的数据进行侦听,检查地址数据和命令的是否与自己相关,然后 相关部件做出响应

概念5: 命令总线、数据总线、地址总线

在这条水果运输总线里面,水果店按照自己的需求,使用大喇叭发出进货还是退货(命令)、哪个厂家(地址)、退货的水果或者进货的水果(数据)。

类比:

在APB总线中,有地址线(PADDR),命令线(PWRITE、PENABLE、PESEL)和数据线(PRDATA、PWDATA)。

PS:举的例子和APB不是一一完全对应,但是表达的意思相同

2 - APB总线协议详解:

2-1 APB在SOC内使用的部分:

如图:

CPU CPU是操作的发起者,CPU发起读写外设数据的操作。

APB_Interconnect :根据上文所说的总线协议和传输信号的要求,构建出来的设计实体,该实体接收CPU发出的数据和指令,然后广播到每一个外设部件。

**SLAVE:对APB_interconnect输出数据和指令进行响应。

**

Q1 : 是否可以不需要APB_interconnect,APB_Interconect的作用是什么?

如上图,当CPU只有一个外设,那么直接可以和外设相连,不需要APB_Interconect。此时CPU的发出的指令和操作只会发给URT0,不需要地址来仲裁。如下图:

但是当CPU需要连接多个外设的时候(CPU只管发出地址和命令),根据 CPU地址范围分配表

(1)APB_Interconect对每一个外设设置地址,然后APB_Interconect根据CPU发出的地址,选中对应地址的外设,把CPU的地址和指令传输到该外设 [地址路由仲裁]。

结论: 是否需要APB_interconnect根据应用而定 ,如果只是单个的外设连接CPU(很少出现),可以直接连接CPU和外设通过APB总线。不需要APB_Interconect, 但是当外设数目变多 ,自然而然的就引入了 不同外设的区分, 所以当多个外设的时候,需要引入APB_Interconect来做这些相关的处理。

用水果店类比:水果店用大喇叭发出订单,所有的水果厂家进行侦听,然后响应订单,**或者假如水果厂家没有侦听装置,可以在水果店和水果厂家之间加一个Interconect,**这个Interconect的作用是当收到某一个厂家的名字时,根据 厂家名字和地址的关系 ,把需求 单独发送给对应的厂家,专门通知供应厂家 (也就是选中外设)。

2-2 APB总线接口: (AMBA APB 2.0)

系统信号
PCLK
PRESETN
地址总线
PADDR
命令总线
PSELx
PENABLE
PWRITE
数据总线
PRDATA
PWDATA

根据上图,结合之前的类比和概念我们基本就可以知道APB该怎么运行。

2-3 APB Bridge示意接口(APB_Interconect)

根据AMBA APB手册,截取APB Bridge接口

图左边的接口System Bus Slave Interface,连接APB 主机(即上面的CPU),这个接口也是APB完整的接口,包含上面举例的信号。图右边和左下面的接口连接多个SLAVE, 其中PSELn有多个 ,每个对应不同的SLAVE。其他信号对于SLAVE是一致的,因为PSELn已经可以选中不同的SLAVE来接收传输的共享信号了。

2-4 APB BUS时序图(AMBA APB 2.0手册)

写传输:

如上时序图,主机在T2时刻把所要访问的 地址,命令和数据全部放到APB总线上 ,沿着组成APB的接口的金属线 传播到从机接口处 。在T3时刻, 从机发现自己的PSEL信号为高 ,就知道 主机选择它来处理数据的写操作 ,此时从机内部准备好处理数据的准备动作,在T4时刻,从机 完成总线上数据采样并进行内部数据处理

WriteEnable = PSEL & (!PENABLE) & PWRTIE ;
或者
WriteEnable = PSEL & PENABLE & PWRTIE ;


always @ (posedge PCLK or negedge PRESETn)
begin
  if(~PRESETn)
  begin
    reg_paddr  <= 'h0 ;
    reg_pwdata <= 'h0 ;
  end
  else if(WriteEnable)
  bein
    reg_paddr  <= PADDR ;
    reg_pwdata <= PWDATA ;   
  end
end


TODO:
外设内部处理数据

读传输:

如上时序图,主机在T2时刻把所要访问的 地址,命令和数据全部放到APB总线上 ,沿着组成APB的接口的金属线 传播到从机接口处 。在T3时刻, 从机发现自己的PSEL信号为高 ,就知道 主机需要它内部的数据(PWRITE ==0) ,此时从机内部准备好 返回数据并把返回的数据放在数据总线上 ,在T4时刻,主机 完成总线上数据采样得到需要的数据

ReadEnable = PSEL & (!PENABLE) & (!PWRTIE)
always @ (posedge PCLK or negedge PRESETn)
begin
  if(~PRESETn)
  begin
    reg_paddr  <= 'h0 ;
    reg_prdata <= 'h0 ;
  end
  else if(ReadEnable)
  bein
    reg_paddr  <= PADDR ;
    reg_prdata <= 外设内部产生的数据 ;   
  end
end
assign PRDATA = reg_prdata ;

2-5 APB BUS的优缺点:

优点:设计简单,时序简单,用在不需要高性能总线的外设上。

**缺点:每个数据的传输都需要两个时钟周期,这样的话,APB BUS满载的带宽也只有50%,带宽利用率不高。

**

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 主机
    +关注

    关注

    0

    文章

    897

    浏览量

    34609
  • 总线
    +关注

    关注

    10

    文章

    2706

    浏览量

    87216
  • apb2
    +关注

    关注

    0

    文章

    4

    浏览量

    1430
收藏 人收藏

    评论

    相关推荐

    什么是APB协议/总线APB总线入门

    上一篇文章简单讲解了什么是AMBA总线,简单来说,AMBA总线是一系列协议。定义了适用于不同场景的总线家族。今天我们就来将
    的头像 发表于 01-02 11:37 957次阅读
    什么是<b class='flag-5'>APB</b>协议/<b class='flag-5'>总线</b>?<b class='flag-5'>APB</b><b class='flag-5'>总线</b>入门

    ARM总线协议AMBA中AHB、APB的区别与联系

    , ASB, APB);Qchannel文章目录1 AMBA总线2 AHB2.1 一个典型的基于AHB的微控制器2.2 AHB总线互联结构:中心选择器连接master与slave2.3
    发表于 02-09 07:46

    AMBAAPB、AHB简介

    STM32菜鸟学习手册——1、AMBAAPB、AHB简介芯片上总线标准种类繁多,而由ARM公司推出的AMBA片上总线受到了广大IP开发商和
    发表于 02-17 07:18

    AMBA AHB总线APB总线资料合集

    使用的是 SystemVerilog 描述。2、AMBA APB总线信号接口介绍前面分析了AHB总线协议。接下来分析APB
    发表于 04-07 10:03

    AMBA中的APB总线协议详解

    1、漫谈AMBA总线-APB首先考虑一下以下的场景:概念1: 主机(Master)订单的发起只能由水果店发起,所以水果店在这条水果运输总线里面运输水果占有主动地位。类比:在
    发表于 06-07 16:14

    基于AMBA APB总线NandFlash控制器的设计

    介绍了基于AMBA APB总线NandFlash控制器的设计,首先简单介绍了NandFlash的一些特点,然后详细介绍了NandFlash控制器的整体框架、具体功能及其内部的数据通路。该控制器通过ModelSim进行了仿
    发表于 11-03 15:22 54次下载

    APB总线的应用框图及接口信号

    APB(AdvancedPeripheralBus)是AMBA(AdvancedMicrocontrollerBusArcheticture)总线体系的一部分。相较于AMBA
    发表于 11-17 11:54 1.2w次阅读
    <b class='flag-5'>APB</b><b class='flag-5'>总线</b>的应用框图及接口信号

    基于AMBA总线介绍​

    1.1.AMBA发展史 AMAB1.0 AMBA2.0 AMBA3.0 AMBA4.0 AMBA1.0:ASB协议和
    的头像 发表于 05-19 14:22 1875次阅读
    基于<b class='flag-5'>AMBA</b><b class='flag-5'>总线</b>介绍​

    浅述AMBA-APB总线

    1 APB介绍 高级外设总线APB) 是高级微控制器总线架构 (AMBA) 协议系列的一部分。它定义了一个低成本接口,该接口针对最低功耗
    的头像 发表于 07-23 10:04 1949次阅读
    浅述<b class='flag-5'>AMBA-APB</b><b class='flag-5'>总线</b>

    介绍AMBA2.0总线

    1.1.AMBA发展史 AMAB1.0 AMBA2.0 AMBA3.0 AMBA4.0 AMBA1.0:ASB协议和
    的头像 发表于 09-06 09:53 2770次阅读
    介绍<b class='flag-5'>AMBA</b>2.0<b class='flag-5'>总线</b>

    聊聊AMBA 是如何演变的?

    Arm 在 1990 年代后期推出了 AMBA。第一批 AMBA 总线是高级系统总线 (ASB:Advanced System Bus) 和高级外围
    的头像 发表于 05-04 11:00 784次阅读
    <b class='flag-5'>聊聊</b><b class='flag-5'>AMBA</b> 是如何演变的?

    AMBA总线那些事之APB

    之前老李问过大家想看哪方面的知识,有不少同学提议老李写写总线,特别是AMBA总线,所以老李决定从这期开始开始一个AMBA总线介绍的系列文章
    的头像 发表于 05-04 14:53 1907次阅读
    <b class='flag-5'>AMBA</b><b class='flag-5'>总线</b>那些事之<b class='flag-5'>APB</b>

    AMBA总线apb简介

    APB(Advanced Peripheral Bus),外围总线的意思。该总线协议是ARM公司提出的AMBA总线结构之一,几乎已成为一种标
    发表于 06-05 15:10 1144次阅读
    <b class='flag-5'>AMBA</b><b class='flag-5'>总线</b>—<b class='flag-5'>apb</b>简介

    AMBA总线那些事之APB协议入门

    咱们首先来介绍AMBA(Advanced Microcontroller Bus Architecture)家族中最简单的协议APB -- Advanced Peripheral Bus。
    发表于 06-05 15:30 1292次阅读
    <b class='flag-5'>AMBA</b><b class='flag-5'>总线</b>那些事之<b class='flag-5'>APB</b>协议入门

    关于AMBA APB总线的知识点介绍

    AMBA APB总线可以用在低带宽和不需要高性能的外设上(即低速且低频率的外设);可以将APB视作AHB的二级总线;   ·低功耗(
    发表于 11-29 15:19 316次阅读
    关于<b class='flag-5'>AMBA</b> <b class='flag-5'>APB</b><b class='flag-5'>总线</b>的知识点介绍