什么是AMBA片上总线?
随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP复用的SoC设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。
AMBA片上总线
AMBA总线:
AMBA总线是ARM研发的(Advanced Microcontroller Bus Architecture)提供的一种特殊的机制,可以将RISC处理器集成在其他IP芯核和外设中,它是有效连接IP核的“数字胶”,并且是ARM复用策略的重要组件。它不是芯片与外设之间的接口,而是ARM内核与芯片上其他元件进行通信的接口。
2.0版本AMBA标准定义了三组总线:
AHB(AMBA高性能总线):用于高性能。高数据吞吐部件,如CPU、DMA、DSP之间的连接。
ASB(AMBA系统总线):用来作处理器与外设之间的互连,将被AHB取代。
APB(AMBA外设总线):为系统的低速外部设备提供低功耗的简易互连。
系统总线和外设总线之间的桥接器提供AHB/ASB部件与APB部件之间的访问代理与缓冲。
AMBA 2.0规范包括四个部分:AHB、ASB、APB和Test Methodology。AHB的相互连接采用了传统的带有主模块和从模块的共享总线,接口与互连功能分离,这对芯片上模块之间的互连具有重要意义。AMBA已不仅是一种总线,更是一种带有接口模块的互连体系。
AHB简介
AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接,作为SoC的片上系统总线,它包括以下一些特性:单个时钟边沿操作;非三态的实现方式;支持突发传输;支持分段传输;支持多个主控制器;可配置32位~128位总线宽度;支持字节、半字节和字的传输。AHB 系统由主模块、从模块和基础结构(Infrastructure)3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。基础结构则由仲裁器(arbiter)、主模块到从模块的多路器、从模块到主模块的多路器、译码器(decoder)、虚拟从模块(dummy Slave)、虚拟主模块(dummy Master)所组成。其互连结构如图1所示。
APB简介
APB主要用于低带宽的周边外设之间的连接,例如UART、1284等,它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。其特性包括:两个时钟周期传输;无需等待周期和回应信号;控制逻辑简单,只有四个控制信号。APB上的传输可以用如图2所示的状态图来说明。
1)系统初始化为IDLE状态,此时没有传输操作,也没有选中任何从模块。
2)当有传输要进行时,PSELx=1,PENABLE=0,系统进入SETUP状态,并只会在SETUP 状态停留一个周期。当PCLK的下一个上升沿时到来时,系统进入ENABLE 状态。
3)系统进入ENABLE状态时,维持之前在SETUP 状态的PADDR、PSEL、PWRITE不变,并将PENABLE置为1。传输也只会在ENABLE状态维持一个周期,在经过SETUP与ENABLE状态之后就已完成。之后如果没有传输要进行,就进入IDLE状态等待;如果有连续的传输,则进入SETUP状态。
ASB简介
AMBA2.0 规范中的ASB 总线适用于连接高性能的系统模块。它的读/写数据总线采用的是同一条双向数据总线,可以在某些高速且不必要使用AHB 总线的场合作为系统总线,可以支持处理器、片上存储器和片外处理器接口及与低功耗外部宏单元之间的连接。
基于AMBA的片上系统
一个典型的基于AMBA总线的系统框图如图3所示。
大多数挂在总线上的模块(包括处理器)只是单一属性的功能模块:主模块或者从模块。主模块是向从模块发出读写操作的模块,如CPU,DSP等;从模块是接受命令并做出反应的模块,如片上的RAM,AHB/APB 桥等。另外,还有一些模块同时具有两种属性,例如直接存储器存取(DMA)在被编程时是从模块,但在系统读传输数据时必须是主模块。如果总线上存在多个主模块,就需要仲裁器来决定如何控制各种主模块对总线的访问。虽然仲裁规范是AMBA总线规范中的一部分,但具体使用的算法由RTL设计工程师决定,其中两个最常用的算法是固定优先级算法和循环制算法。AHB总线上最多可以有16个主模块和任意多个从模块,如果主模块数目大于16,则需再加一层结构(具体参阅ARM公司推出的Multi-layer AHB规范)。APB 桥既是APB总线上唯一的主模块,也是AHB系统总线上的从模块。其主要功能是锁存来自AHB系统总线的地址、数据和控制信号,并提供二级译码以产生APB外围设备的选择信号,从而实现AHB协议到APB协议的转换。
AMBA AHB循环级建模标准是完全公开和免费的。现在,可从ARM网站上下载,网址:http://www.arm.com/armtech/AMBA。为了保护AMBA技术的完整性,在此之前,您需要签署一份简单的授权协议,该协议基本与现行的AMBA 2.0标准授权协议保持一致。
关键字:ARM AMBA 总线介绍
引用地址:
ARM AMBA总线介绍
推荐阅读最新更新时间:2024-03-16 14:39
ARM平台嵌入式Linux下SPI设备连接
简介:在嵌入式ARM平台设备上,经常有在一个SPI bus上面挂接一个或者多个SPI设备的需求,由于挂载一个设备的情况比较简单,本文主要就在嵌入式Linux环境下挂载多个SPI设备进行说明。 本文所采用的硬件为Toradex 公司Colibri VF61计算机模块和开发载板,核心为Cortex-A5和M4异构双核,这里A5运行Toradex官方发布的Embedded Linux BSP V2.5,M4核心这里不做使用。 本文涉及Toradex发布Embedded Linux源码下载,Device Tree 定制编译,相关操作请参考下面文章,本文不做赘述。 http://developer.toradex.com/kno
[单片机]
arm里满堆栈与空堆栈的涵义以及后缀问题
初学ARM指令时,一直纠结满堆栈与空堆栈,按字面意思理解,也即数据结构上的定义,空堆栈就是没有放数据的堆栈,而满堆栈就是放满的堆栈。 but注意看书上的定义呀啊: 空堆栈:当堆栈指针指向下一个空位置时,称为空堆栈 满堆栈:如果堆栈指针总是指向最后压入堆栈的数据,称为满堆栈 所以,这里的空满根本不表示堆栈的存储状态,只是来说明堆栈指针指向的存储单元是否已经保存有堆栈数据,或者说入栈时是否可以直接向堆栈指针指向的存储单元写入数据。这就是“满堆栈”与“空堆栈”。博主的理解就是,空满只是表示指针指向单元的状态。 接下来再来说说什么叫向上增长和向下增长,递增堆栈和递减堆栈,哎呀呀,当时对这个定义也是傻傻分不清。 递增堆栈:向高地址方
[单片机]
如何编写ARM7的启动代码(LPC2119为例)
随着生活水平的提高和IT技术的进步,8位处理器的处理能力已经不能满足嵌入式系统的需要了;而16位处理器在性能和成本上都没有很大的突破。并且在8位机的开发中,大多使用汇编语言来编写用户程序。这使得程序的可维护性、易移植性等都受到了极大的挑战。正是基于此,ARM公司适时的推出了一系列的32位嵌入式微控制器。目前广泛使用的是ARM7和ARM9系列,ARM7TDMI内核的ARM7处理器广泛应用于工业控制、仪器仪表、汽车电子、通讯、消费电子等嵌入式设备。本文主要以philips公司ARM7TDMI核的LPC2119为例来分析如何编写ARM7的启动代码。 1、启动代码 在嵌入式系统软件的开发中,应用程序通常是在嵌入式操作系统的开发平台上采
[单片机]
ARM汇编学习
最近用ARM汇编写了3个小程序,今天发上来供大家参考一下。 程序1:C语言中嵌套ARM汇编实现找出三个数中的最大值,程序如下: test.c文件: #include stdio.h #define N 3 int MAX(int *p,int b) { int rmax = 0; //用来返回最大值 int temp = 0; //作为变量交换的中间变量 int count = 0; //计数器,用来做循环控制变量 __asm{ MOV count,#0 loop: LDR temp, CMP rmax,temp MOVLT rmax,temp ADD count,count,#1 CMP coun
[单片机]
基于ARM+FPGA+多DSP的嵌入式实时图像处理系统
实时图像处理、高速数据运算处理要求其系统具有对数据处理速度快、数据吞吐率高以及多任务处理功能。目前大多数方案都是采用HPI数据传输方式,将ARM和DSP进行组合完成一些图像处理,DSP处理器只是完成图像采集、压缩、编码等简单的处理 工作,不能满足实时的智能识别或大数据量运算的视频处理要求。在应用领域方面也会因其处理速度问题受到一定的限制。 例如,胎儿性别屏蔽项目中,要对实时视频进行性别部位的检测和屏蔽,若采用单DSP则会出现漏帧或视频不流畅;应用于高速运动物体跟踪时,单DSP无法实现实时运动物体跟踪,例如汉王科技的运动检测和海康威视运动检测,都不能实时检测,即使检测也会出现漏检现象和视频不流畅。当处理4CIF或者更大图像时
[单片机]
ARM汇编指令集4
协处理器cp15操作指令: mcr & mrc •mrc用于读取CP15中的寄存器 •mcr用于写入CP15中的寄存器 什么是协处理器? •SoC内部另一处理核心,协助主CPU实现某些功能,被主CPU调用执行一定任务。 •ARM设计上支持多达16个协处理器,但是一般SoC只实现其中的CP15.(cp:coprocessor) •协处理器和MMU、cache、TLB等处理有关,功能上和操作系统的虚拟地址映射、cache管理等有关。 MRC & MCR的使用方法 •mcr{ cond } p15, opcode_1 , Rd , Crn , Crm , { opcode_2 } •opcode_1:对于cp15永远为0 •R
[单片机]
ARM7入门10,串口通信
主程序: /******************************************************************************* *File: main.C *功能: 串口发送数据 *说明: 使用外部晶振,不使用PLL,Fpclk=Fcclk/4 *******************************************************************************/ #include config.h /*********************************************************************
[单片机]
IAR推出新版IAR Embedded Workbench for Arm功能安全版,该版本配备经过认证的静态代码分析功能
IAR推出新版IAR Embedded Workbench for Arm功能安全版,该版本配备经过认证的静态代码分析功能 瑞典乌普萨拉,2024年2月20日 – 全球领先的嵌入式系统开发软件解决方案供应商IAR宣布 :推出其旗舰产品IAR Embedded Workbench for Arm功能安全版的最新版本9.50.3。此次发布进一步加强了IAR支持开发人员创建安全、可靠和符合标准的嵌入式应用程序的承诺,涵盖了汽车、医疗设备、工业自动化和消费电子等多个行业。该版本中最重要的新功能是经过认证的C-STAT,这是专为安全关键应用程序设计的静态代码分析工具。 IAR Embedded Workbench for Ar
[嵌入式]