AMBA总线介绍

AMBA(Advanced Microcontroller Bus Architecture) 总线是由ARM公司提出的一种开放性的片上总线标准,它独立于处理器和工艺技术,具有高速度低功耗等特点。

总线:系统芯片中各个模块之间需要有接口来连接。总线作为子系统之间共享的通信链路。(因为ARM占据市场比较大,很大做IP设计的公司都会去兼容AMBA  interface。)

ARM中的总线用于不同部件之间的通信。有两种不同类型的设备连接到总线:

  • ARM处理器:它是总线的主设备,拥有对总线的仲裁权,可以通过同一总线主动发起数据传输请求;
  • 外围器件:是总线的从设备,在总线上是被动的,只能对主设备发出的一个传输请求做出反应。

举例:

总线协议

做一个IP设计。要搞清楚IP的输入输出

例如,做一个AHB的IP,AHB输入,SPI等为输出。跟AHB做通信的端口是必不可少的。    数据之间传输,需要interface。

AMBA发展历史

AMBA 协定的目的是为了要推出 on-chip bus 的规范,一开始 AMBA 1.0 只有 ASB 与 APB,为了节省面积,所以这时候的 bus 协定都是 tri-state 的 bus,而到后来 2.0 的 AHB 为了能更方 便设计者(trisate bus 要花更多精力去注意 timing),因此改用 bus 改用 multiplexor 的架构,并增加了新的特性。

AMBA 1.0:ASB和APB

AMBA 2.0:AHB,ASB和APB

AMBA 3.0:AMBA Advanced extensible Interface (AXI)(可以用于ARM和FPGA的高速数据交互)

AMBA 4.0:........

传输速率速度越来越快。 

AMBA总线优缺点

 AMBA总线优点:

  • 低成本
  • 方便易用(协议简单合理。按照协议传输数据,不会出错)

AMBA总线缺点:

  • 会造成性能瓶颈(传输速率有上限)

AMBA总线体系

AMBA总线体系包括以下三种总线:

  1. AHB:Advanced High-performance Bus,用于高性能、高时钟工作频率模块。
  2. ASB:Advanced System Bus,用于高性能系统模块。
  3. APB:Advanced Peripheral Bus,用于慢速外设模块。

典型的AMBA系统:

一个以 AMBA 架构的 SOC,一般来说包含了

  • AHB(high-performance 的 system bus ): 负责连接例如 ARM 之类的 embedded processor 与 DMA controller,on-chip memory 和其他 interface,或其他需要 high bandwidth 的元件。
  • APB(low-power 的 peripheral bus ):用来连接系统的周边元件,其protocol 相对AHB 来讲较为简单, 与 AHB 之间则透过 Bridge 相连,期望能减少 system bus 的 loading。

    AHB支持多个Master,因此需要Arbiter来仲裁。

APB是外设总线,主要用于低带宽的片内周边外设之间的连接,如UART等,它的总线结构不想AHB支持多个Master,在APB里面,唯一的Master就是APB桥,因此不需要仲裁。 (外围设备做slave,只能由AHB读

处理器和其它主设备/从设备都是可以替换的。

AHB-APB桥:

在AHB和APB之间,有AHB-APB桥,这是为了解决高性能器件和片内低带宽外设之家的匹配问题;

AHB-外侨:

AHB和片外总线之间,有一个AHB-外侨,这是为了解决片内高性能器件和片外设备之间的带宽不匹配。

AMBA协议其他有关问题

与工艺无关
没有定义电气特性
仅在时钟周期级定义时序

  • 提取时序参数依赖于所采用的工艺和工作频率

例子:DMA搬运memory数据

DMA bus 帮助CPU搬运数据。CPU做master。DMA可以做master、slave,但是这里做slave

CPU把搬运数据分派给DMA做。

base address                         0x3000-0x31000,有1000个空间。有很多register

offset address(偏移地址)   0x00    0x04    0x08    0x0C    0x10

最终地址=base address+offset address

register1(0x00 ):写1,说明DMA要start;写0,代表DMA stop

register2(0x04 ):告诉CPU,DMA现在是否有空

register3(0x08 ):告诉DMA从哪里搬移数据

register4(0x0C ):告诉DMA把数据搬到哪里去。

register5( 0x10 ):告诉DMA搬多少数据。

要先把DMA这几个寄存器先配好register3-5,然后看DMA是否有空(register2),有空就start(register1)。

假设把数据从memory1(0x1000-0x1100,1k)搬到memory2(0x2000-0x2100)

假设现在ready,启动start

数据流向:

①DMA读memory1里面的数据

②DMA向memory2里面写数据总线在某一时刻,只能读或者写。)

③搬运完了,DMA要发interrupt给CPU(在DMA某个寄存器写入done的状态,CPU读DMA寄存器的值)

所有告知CPU的信息,都是通过中断方式。只能由CPU读其他模块的寄存器。把状态填在模块的寄存器里,向CPU发送中断。

(例如,工作做完了,在寄存器填入done的状态,向CPU发送中断,CPU检查寄存器的状态,然后CPU执行下面的指令。或者没有读到数据,写状态,发中断。发生什么事情,记录在status寄存器中,给CPU发中断。)

Step0 : CPU检查DMA的状态以确认是否可用

while(1)
{Read(0x30004,&status)if(status == 0)break;
}

Step1 : CPU设置( source address ) 、( destination address ) 、( size )

Write (0x30008,0x10000)
Write(0x3000C,0x20000)
Write(0x30010,0x100)

Step 2:启动DMA

Write(0x30000,0x1)

Step3 :DMA把数据从memory 1传送到memory 2

Step 4: DMA向CPU发出中断请求
Step 5 : CPU检查DMA的状态

Read(0x30004,&status)


参考:

《AMBA 3 APB 协议规范 》

AMBA总线介绍_哔哩哔哩_bilibili

《Introduction to AMBA Bus System》 工研院 / 系統晶片技術中心工程師 吳欣龍

数字ic设计——AMBA总线(1)AMBA总线介绍相关推荐

  1. 数字IC设计之DC篇:DC流程介绍

    数字IC设计之DC篇:DC流程介绍 综合概念 综合是使用软件的方法来设计硬件, 然后将门级电路实现与优化的工作留给综合工具的 一种设计方法.它是根据一个系统逻辑功能与性能的要求,在一个包含众多结构.功 ...

  2. 数字IC设计入门篇:APB总线协议学习心得

    声明:本文章是本人学习AMBA  APB协议的一些个人理解,仅用于学习交流之用.本人学习APB协议时参考的是ARM公司官方的APB协议技术规范文档(编号:IHI0024D).受限于本人的知识水平,本文 ...

  3. linux mipi驱动分析_寒武纪社招内推数字IC设计、DSI驱动、软件架构、产品经理、芯片架构、工具链开发、深度学习、FAE工程师...

    点击上方蓝字关注我吧! 为什么内推更靠谱?内推是基于人脉关系链的推荐,其背后有一定的信用背书,靠谱的人推荐的人相对也会比较靠谱,所以企业一般职位都是从内部开始分享的,相较于自己海投简历,内推的效率和成 ...

  4. 数字IC设计工程师要具备哪些技能

    数字IC设计工程师要具备哪些技能 本文同步发表于:http://exasic.com/article/index.php?md=talk-01 本篇简单罗列了作为数字IC设计工程师的必备知识和学习建议 ...

  5. 数字IC设计的一些英语术语总结

    数字IC设计的一些英语术语总结(持续更新...) AXI (Advanced eXtensible Interface ) 一种总线协议(AMBA3.0 一部分) AMP (Asymmetric Mu ...

  6. 数字IC设计SOC入门进阶

    声明:本系列文章全部来自网络公开资料整理,并在文后附上网页链接.仅用于学习交流. 前言 硕士毕业从事FPGA逻辑开发已N年,对于未来的发展方向.技术提升等充满了困惑.迷茫.此时,恰逢数字IC设计岗位兴 ...

  7. 数字IC设计自学到底有多难?

    我们一直在说数字IC行业的门槛高,那到底有多高? 几层楼那么高? 前几天我们课程顾问来问我:"一个学生,是哈工大硕士,物理专业,能不能报?" 我回答:"先问问有没有集成电 ...

  8. verilog hdl数字集成电路设计原理与应用_数字IC设计经典书籍推荐

    数字IC设计流程很复杂,从前端到后端,也有很多职位.在这里整理了个数字IC各个环节的经典必读书籍.市面上的书籍种类纷繁复杂,这里每种只推荐两本左右,如果需要,建议知识类的书籍还是购买正版,尊重作者,也 ...

  9. 数字IC设计工程师笔试面试经典100题

    1:什么是同步逻辑和异步逻辑? 同步逻辑是时钟之间有固定的因果关系.异步逻辑是各时钟之间没有固定的因果关系.同步时序逻辑电路的特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来 ...

  10. 起点篇:跨入半导体行业,数字IC设计

    起点篇:跨入半导体行业,数字IC设计 机缘巧合跨入IC行业 前言(忽略)   2019年是我大学的完结,也是我读书生涯的完结.因为上大学时,并没有考研的想法,而且虚度了2年多的大学时光,每天都大把时间 ...

最新文章

  1. 从民工到CCNA-献给想考认证的朋友
  2. 发布或重启线上服务时抖动问题解决方案
  3. pyhton url参数和字典互转
  4. JaveWeb学习之Servlet(二):ServletConfig和ServletContext
  5. python报错 TypeError: string indices must be integers
  6. xp删除管理员账户_在Windows XP中从登录屏幕删除用户帐户
  7. 实用c语言程序设计教材,实用C语言程序设计
  8. 解决jQuery与其他库冲突的方法
  9. 【MyBatis框架】查询缓存-二级缓存原理
  10. brew 无法安装iterm2_Mac安装sshpass 替代spawn自动登录脚本(解决rz sz问题)
  11. 如何使用Xcode分析调试在真机运行的UE4 IOS版游戏
  12. matlab fwrite 多字节,单片机多字节串口接收
  13. OpenCV实现图片素描风(调用摄像头+中值滤波+拉普拉斯边缘检测)
  14. 已添加了具有相同键的项_减糖的另一种创新方案:不被计算为“添加糖”的水果泥...
  15. 《HelloGitHub》第 13 期
  16. python管理系统web版_Python从零搭建Conf_Web配置管理平台
  17. 1-2 实验2 点对点通信
  18. 「BJOI 2019」勘破神机
  19. jQuery基础教程
  20. GitLab合并分支最后一步Merge按钮灰色不可点击,Ready to be merged automatically

热门文章

  1. 1.无忧考吧———计算机等级考试系统
  2. OpenGL ES 名词解释(二)
  3. 极化相干矩阵去取向角处理
  4. python中save 函数_Tensorflow之Saver的用法详解
  5. javascript之键盘事件onkeydown,onkeyup,onkeypress
  6. Blender材质贴图入门图文教程
  7. ppt未保存文件找回
  8. 出现 尝试连接“EAI_NONAME未提供,或不知道节点名或服务名”失败 解决办法
  9. ilitek win10 触摸屏驱动_想做多大红外触摸框找融创方圆定制触摸屏工厂
  10. 处理opencv里用plt显示imread读取图像偏色问题