每日一看哦。
目录
每日一看哦。
一、AMBA总线
2,AMBA 2.0协议
2.1AMBA总线的特性
AHB总线:
ASB总线(不重要,因为现在很多都已经不再使用该总线了):
APB总线:
2.2 AMBA总线的组成
AHB总线的组成部分:
APB的组成部分:
2.2AMABA协议的其他问题
3,AMBA 3.0协议
二、ACE协议
三、CHI协议
一、AMBA总线
系统总线:系统芯片中各个模块之间需要有接口进行连接;而总线作为子系统之间共享的通信链路
AMBA总线属于系统总线的一种。其中学习AMBA总线应从以下几个方面了解:分别是APB/AHB/AXI/ACE/CHI。
优点:低成本、方便易用;缺点:会造成性能瓶颈
AMBA总线发展史:1.0,2.0,3.0,4.0....
一个典型的AMBA系统
拓展:
ARM:第一种指的是ARM公司,第二种指的是一类处理器的总称。这里指的是处理器。
- 任何一款ARM芯片由ARM内核和外设组成。
- 内核包括:寄存器、总线(即今天学习的AMBA也属于其中一类),指令集、中断逻辑、存储器映射规则和调试组件等。
- 外设:包括AD转换器,计时器,存储器,I2C,UART等
DMA:称为直接存储器。
用途:用于外设和存储器之间或者存储器和存储器之间的高速数据传输。
特点(原博不见了,如果侵权请联系):
- 可以不需要CPU干预,数据可以之间在DMA内快速的移动
- 两个DMA控制器有12个通道,其中DMA1具有7个通道,DMA2具有5个通道;且每个通道都专门用于一个或者多个外设对DMA访问的请求。
- 为了防止出现多个外设或DMA同时向某一个DMA发送请求,而DMA无法判决的情况,因此需要仲裁器协调各个DMA请求的优先权。
- 典型的DMA应用场景
步骤:其中,图中的M、S表示master、slave。图中DMA到CPU箭头上的INT的意思是中断。
- CPU检查DMA的状态是否可用,即当status为0时表示DMA是空闲的可用的
- CPU设置(source address(数据原始地址))、(destination address(数据目的地址))(size(要传送数据的大小))
- CPU完成其工作,启动DMA,CPU完成工作后即对于这部分而言是空闲的,数据传输的过程由DMA自行处理即可。
- DMA把数据从memory 1(memory2)传输给 memory 2 (memory1)。
- 上述数据传输完成后,DMA向CPU发出中断请求
- CPU检查DMA状态,有数据传输请求时重复1-5过程
参考链接:
DMA基础
2,AMBA 2.0协议
首先2.0是片上总线的标准,其次定义了三种总线,分别为AHB,ASB,APB。AHB为高速总线,ASB一般不使用,APB为慢速总线,一般用于外接其他慢速总线,如I2C,UART、SPI等。
2.1AMBA总线的特性
AHB总线:
- 高速总线,具备高性能,能达到100MHZ传输速度
- 2级流水线操作
- 可支持多个总线主设备(最多16个设备)
- 支持burst传输
- 总线带宽:8,16,32,64,128bits。即一个时钟周期内传输的数据量,一般为32bits
- 为上升沿触发操作。一般都为上升沿操作,主要原因是因为制造时基本都是硅芯片,而硅芯片与电容的充放电有关。电容的充电过程相当于从低电平到高电平的过程,放电过程相当于从高电平到低电平的过程。由于电容的物理特性,电容的充电过程时间相比于放电较短,因此数据的建立时间就比较好控制,所以一般都为上升沿触发。
- 对于一个新设计建设使用AHB。
ASB总线(不重要,因为现在很多都已经不再使用该总线了):
- 高速总线
- 流水线操作
- 支持多个总线主设备
- 支持burst传输
- 总线带宽:8,16,32bits
- 三态、双向总线(双向总线指的是类似于I2C,只用一根数据线完成数据的发送和接收,即半双工通信方式,称为双向总线,通信方式为串口通信),不适用于做DFT(触发器)
- 下降沿或上升沿触发
APB总线:
- 低速总线、低功耗
- 接口相比于前两种简单
- 在bridge中锁存地址信号和控制信号
- 适用于多种外设,如在“一个典型的ARMA系统”的图中所示,可以接I2C/SPI等较为低速的总线外设
- 为上升沿触发
2.2 AMBA总线的组成
AHB总线的组成部分:
- AHB主设备(master)
- 初始化一次读/写操作
- 某一时刻只允许一个主设备使用总线
- 在AMBA系统中,所有设备都可以作为主设备,而且最多可以有16个主设备,如CPU,DMA,DSP,LCDC等。但在数据传输的过程中只能有一个主设备。
- AHB从设备(salve)
- 相应主设备的一次读/写操作
- 通过地址映射来选择使用哪一个设备
- 外部存储器控制器、APB bridge
- AHB仲裁器(arbiter)
- 只允许一个主设备控制总线
- 在AMBA协议中没有定义冲裁算法,一般是cpu作为主设备使用仲裁算法来实现仲裁功能
- AHB译码器(decoder)
- 通过地址译码器来决定选择哪一个从设备
APB的组成部分:
- APB总线上所有的模块都是APB从设备,即只有slave,没有master
- AHB2APB bridge是完成高性能总线即AHB到APB总线的桥接器。
- AHB2APB Bridge的规则
- 可以锁存所有的地址、数据和控制信号。其中锁存的是AHB地址以及控制信号,并使之在整个APB传输器件有效。
- AHB和APB的时钟是同步时钟,APB时钟和AHB时钟的分频关系由PCLKEN信号决定。
- 支持一个slave,因此只产生一个选择信号PSEL。
- 对于写传输,驱动数据到APB总线上;对于读传输,驱动APB数据到系统总线上。
- 支持APB模块的使能信号(APBACTIVE)。
- 支持输入输出数据寄存或者不寄存,由模块参数控制。
- 支持APB总线字节选通信号(pstrb[3:0]),保护控制信号(pprot[3:0])。
参考链接:
设计AHB2APB同步桥_小小verifier的博客
- 该协议与工艺无关,不关心生产出来的芯片是7nm还是10nm这类问题,只规定了相关的协议和时序
- 也没有定义电气特性
- 仅仅在时钟周期级定义了时序,而提取时序参数依赖于所采用的工艺和频率(这话疑问,和建立保持时间有关系吗?有关系的话有何关系?)
3,AMBA 3.0协议
增加了AXI协议层,以及AHB-lite总线(轻量型)。
参考视频:
https://www.bilibili.com/video/BV1K34y1B7hR?spm_id_from=333.999.0.0