当前位置:网站首页>【手撕AHB-APB Bridge】~ AMBA总线 之 APB
【手撕AHB-APB Bridge】~ AMBA总线 之 APB
2022-08-02 19:43:00 【IC二舅】
本章目录:
前言
文章更新原则如下:当日微信公众号首发===>最早次日博客更新(取决于作者时间)
如果大家想看到第一手的文章请关注 微信公众号 “IC二舅” ,回复关键字有学习资料获取,并且可以一起进群讨论学习!!!
一. 引入
APB(Advanced Peripheral Bus) 作为高级外设总线是AMBA协议之一,也是最基本的总线协议。按照ARM官方定义,APB是一种低成本的接口协议,可以实现低功耗以及精简的接口设计,降低接口设计的复杂度。
APB协议不支持流水线设计,它主要应用在低带宽设计需求的接口中,高性能带宽需求可以使用AXI总线。APB协议的实现与时钟沿对齐,以简化外设接口的设计。每次传输至少需要消耗两个时钟周期。
在SOC设计中,APB一般作为IP的配置接口,其中包括低速外设如I2C,UART等,可以方便的实现CPU对外设IP的寄存器配置。系统中一般会实现一个AXI2APB或者AHB2APB的转换桥将APB口挂载在系统上。这里不讨论AXI,以AHB2APB为例:
二. APB总览
APB一般情况下只是一个Slave,如上图所示。APB中最重要的就是需要掌握以下几点:
- a. APB有哪些信号?
- b. APB的读写时序图?
- c. AHB2APB的地址映射关系是什么?
1. APB信号
PCLK和PRESETn表示的是 Global 变量,不论在AHB还是APB中都有的,以下几个信号是APB的信号:
2. APB的读写时序图
2.1 APB写操作的时序图
完成一次传输需要两个Cycle,一是SETUP cycle,另一个是ENABLE cycle。首先PSEL信号拉高,此时的PENABLE拉低,此时数据已经开始写,但没完成!!!之后第二个周期,PENABLE拉高,完成一次传输。
2.2 APB读操作的时序图
读操作和写操作比较类似,可以参照写操作!!!
三. 地址映射关系
逐层传递,解码,储存,通过 两级Mapping(映射)的过程 完成地址映射!!!
四.实现方式
如何实现传输2个ahb的pipeline到两个时钟周期的timing呢?
答:apb通过实现状态机来实现该功能的。
五. 数据流向
APB Slave:左侧的输入信号是来自bridge的,输出只有一个,那就是读出来的数据送给AHB。
六. Apb到ahb的接口(读数据)
图中的小1表示地址线传输(从AHB向APB),此时PSEL拉高,PENABLE拉低,完成第一个周期,后来PENABLE拉高,完成第二个周期,此时的数据已完成 读取。
声明
本人所有系列的文章,仅供学习,不可商用,如有侵权,请告知,立删!!!
本人主要是记录学习过程,以供自己回头复习,再就是提供给后人参考,不喜勿喷!!!
如果觉得对你有用的话,记得点赞+收藏+评论!!!
全网各平台同名===> “IC二舅”
====================================================================
下期预告:
AMBA总线 之 AHB ,敬请期待!!!
边栏推荐
- 健康报告-设计与实现
- golang刷leetcode动态规划(11)不同路径
- LeetCode:622. 设计循环队列【模拟循环队列】
- image could not be accessed on a registry to record its digest
- 技术分享 | Apache Linkis 快速集成网页IDE工具 Scriptis
- golang刷leetcode 经典(9)为运算表达式设计优先级
- 解析List接口中的常用的被实现子类重写的方法
- golang刷leetcode 经典(11) 朋友圈
- 程序员也许都缺一个“二舅”精神
- What is a Field Service Management System (FSM)?what is the benefit?
猜你喜欢
Fiddle设置接口数据用指定工具查看;Sublime Text设置json数据格式化转换
Shell: conditional statements
Lvm逻辑卷
MOSN 反向通道详解
腾讯云孟凡杰:我所经历的云原生降本增效最佳实践案例
MySQL安装配置教程(超级详细)
4 kmiles join YiSheng group, with more strong ability of digital business, accelerate China's cross-border electricity full domain full growth
ShapeableImageView 的使用,告别shape、三方库
J9 Digital Currency Theory: Identifying Web3's New Scarcity: Open Source Developers
Three.js入门
随机推荐
LeetCode 622 设计循环队列[数组 队列] HERODING的LeetCode之路
MySQL安装配置教程(超级详细、保姆级)
Flutter with internationalized adapter automatically generated
GNN教程:图神经网络基础知识!
Wintun:一款惊艳的 WireGuard 虚拟网卡接口驱动
牛客题目——滑动窗口的最大值、矩阵最长递增路径、顺时针旋转矩阵、接雨水问题
日志框架学习
分布式事务
OpenCV开发中的内存管理问题
程序员也许都缺一个“二舅”精神
7月29-31 | APACHECON ASIA 2022
使用位运算实现加减乘除(+、-、*、/)及比较器的用法
入职对接-hm项目
基于 outline 实现头像剪裁以及预览
Shell: conditional statements
MySQL安装时一直卡在starting server
我用这一招让团队的开发效率提升了 100%!
SCANIA SCANIA OTL tag is introduced
Redis集群配置
openlayers version update difference