AHB-Lite简介
AHB总线实现了简单的基于burst的传输,数据总线带宽可配置32-1024bit。可以实现简单的fixed pipeline在address/control phase和
data phase之间。
典型的AHB的slave包括:internal memory device,external memory interfaces,high bandwidth peripheral。
AHB必须是对齐传输,word,addr[1:0]为0,half-word,addr[0]为0。包括wrap burst传输,也必须是对齐的。
AHB-Lite协议是整个AHB协议的子集,只支持一个总线主设备,不需要总线仲裁器及相应的总线请求/授权协议,
不支持Retry和Split响应。
AHB-Lite的典型应用结构是一个AHB-Lite master,一些AHB-Lite slaves。slave由APB总线实现,HSEL信号由一个
address decoder产生。从slave到master的rdata,response由一个slave-to-master multiplexor通过选址
送给master。
AHB中的transfer由两部分组成,Address phase,Data phase。
slave可以通过信号HREADY来延长data phase,但是不能延长address phase。
在master比较繁忙时,可以通过busy transfer,表示burst还在继续,相当于多延时一个address cycle。
AHB信号大致可以分为五类:
Global signals:HCLK,HRESETn;
Master signals:HADDR,32bit的地址线。
HBURST,3bitde burst长度和类型。支持长度为4/8/16的INCR/WRAP类型的burst。
未定义长度的INCR类型的burst。和Single burst两种新类型。
HMASTLOCK,表示一个locked的transfer,主要用在一个存在多个master访问的slave原语操
作中。因为AHB并不存在乱序操作,所以单一master时,并没用。arm建议,lock transfer之后
加一个IDLE的transfer。
HPROT,4bit包含data/opcode,supervisor/user之外,还包含bufferable,cacheable两位
AHB并没有对secure world的支持。
HSIZE, 3bit表示transfer的带宽,必须小于AHB配置的BUS width。
AHB中的byte lanes由address offset来决定,对于32bit的bus,0x1在小端格
式就只选择最低的byte。
HTRANS,2bit,只有AHB的信号,表示前后两个transfer之间的关系。
IDLE,表示无数据传输,在lock transfer之后以idle结束。slave必须返回OKAY response。
BUSY,允许master在一个transfer中加入idle cycle。并不实现数据的传输,address和control
signals反映在下一个transfer。
NONSEQUENTIAL,表示一个single transfer或者一个burst的第一个transfer。
这个transfer的address和control signal和前一个transfer没关系。
SEQUENTIAL,表示INCR/WRAP类型的transfer。control signal和前一个transfer一样。
address根据前一个transfer计算得到。
AHB的每个transfer的控制是分开的,其中包含burst信息,而AXI的transfer是打包在一个burst中
的。AHB是基于transfer的,AXI是基于burst的。
HWDATA,32bit。
HWRITE,1--write;0--read。
Slave signals:HRDATA,31bit数据,从slave送往Multiplexor。
HREADYOUT,从slave送往Multiplexor表示每个slave自己的READY信号,最终变为HREADY。
HRESP,从slave送往Multiplexor的response信号。
Decode signal:HSEL,从decoder送往slave的HSEL信号,由高位地址线组合逻辑生成。
Multiplexor signals:HRDATA,31bit,从Multiplexor送往master,读数据。
HREADY,从Multiplexor送往master,transfer结束信号。
HRESP,从Multiplexor送往master,response信号。
AHB中的transfer:主要依靠address,data之间的overlapping来实现pipeline。
所以当slave在data phase通过HREADY延长一个 transfer时,下一个transfer的address phase不能被即时
采样,也会被延长。建议slave插入的wait state不超过16个clk。
AHB没有enable信号,所以不进行传输时,HTRANS信号有0,表示idle,无数据传输。
只有HTRANS为10,non_seq时,才会开始一个transfer。
AHB中的transfer是不能超过1KB的,不是AXI的4KB。
AHB中要实现一个SEQ的transfer也是NONSEQ起始,然后每次clock rising 采样,其后增加SEQ或BUSY类型
的transfer,也是每个clock被采样。祥见相册。
固定长度的burst,只能自然结束,最后一个seq transfer后,结束。
undefined INCR burst,通过non_seq和idle transfer来进行结束。
不允许通过busy tansfer,来结束burst。
burst中的wrap操作:
AHB的wrap中要求两种对齐:1)字对齐;2)wrap对齐;
Aligned_address = (INT(start_address/number_of_bytes) * number_of_bytes)
Wrap_Boundary = (INT(start_address/number_of_bytes*burst_length) *(number_of_bytes*burst_length))
Address_1 = start_address
Address_n = Aligned_address + (N-1) * number_of_bytes
wrap的边界地址等于burst_length*size的对齐地址,在16byte的对齐,只有低四位变化,每次增加4。
当slave在一个transfer中插入wait state时,下一transfer的可以类型改变,但是会有限制。
1)前一transfer在IDLE类型,这一transfer可以是变为NONSEQ类型;
2)前一transfer在BUSY类型且length固定,这一transfer可以变为SEQ类型;
3)前一transfer在undefined burst length且在BUSY类型,这一transfer可以变为任意类型。
当slave在一个transfer中插入wait state时,在以下情况下可以改变address。
1)当前是一个IDLE类型transfer,address可以改变。
2)当slave返回一个error时,可以在HREADY为低时,改变地址。
AHB中一个transfer传输的结果:
1) Transfer pending------Hresp=0, Hready=0;
2) Transfer complete------Hresp=0, Hready=1;
3) error response first cycle-----Hresp=1, Hready=0;
4) error response second cycle----Hresp=1, Hready=1;
AHB中的error返回,必须持续两个clock,提前一个cycle可以让master在发出下一个transfer之前,意识到这个transfer的error。
在slave需要更长时间返回resp时,也最多只能有两个cycle的error resp,通过ready进行extend。
一个seq的transfer一般不能超过1K,因为一般IP的地址空间都是以1K为单位的,如果一个transfer超过了IP边界,因为address的值是不变的,所以会导致
第二个IP传输的数据出错,这时应该用NONSEQ重新发起一个新的transfer。
尽管AHB中有wrap类型的传输,但是addr的计算还是master每一个cycle都计算一次的。
AHB-Lite简介的更多相关文章
- 移动端目标识别(1)——使用TensorFlow Lite将tensorflow模型部署到移动端(ssd)之TensorFlow Lite简介
平时工作就是做深度学习,但是深度学习没有落地就是比较虚,目前在移动端或嵌入式端应用的比较实际,也了解到目前主要有 caffe2,腾讯ncnn,tensorflow,因为工作用tensorflow比较多 ...
- AHB/APB简介
AHB AHB总线互联结构图 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大.数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用.在基于IP复用的 ...
- Material Design Lite,简洁惊艳的前端工具箱。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .网站上有对应每一 ...
- WEB黑客工具箱之FireBug介绍
Firefox扩展Firebug是一个全功能的Web 应用程序调试器,可以协助Web黑客洞悉复杂的Web 应用程序的内部工作机制.它有两种版本:一种可以跨浏览器使用的组件Firebug Lite,另一 ...
- arm cortex-m0plus源码学习(三)GPIO
概述: Cortex-m0的integration_kit提供三个GPIO接口,其中GPIO0传输到外部供用户使用,为EXTGPIO:GPIO1是内核自己的信号,不能乱改,会崩掉:GPIO2是一些中断 ...
- arm cortex-m0plus源码学习(二)AMBA3.0_ AHBLite
1. AMBA总线概述 AMBA2.0 以上版本都是基于单沿时钟.单向信号线的协议[1]. 现在市场上大部分的基于 AMBA 架构的 SoC 产品, 系统总线采用 AHB, 外部总线采用 APB.系统 ...
- ISSCC 2017论文导读 Session 14:A 288μW Programmable Deep-Learning Processor with 270KB On-Chip Weight
A 288μW Programmable Deep-Learning Processor with 270KB On-Chip Weight Storage Using Non-Uniform Mem ...
- 《iOS应用逆向工程:分析与实战》
<iOS应用逆向工程:分析与实战> 基本信息 作者: 沙梓社 吴航 刘瑾 丛书名: 信息安全技术丛书 出版社:机械工业出版社 ISBN:9787111450726 上架时间:2 ...
- arm SecurCore 处理器【转】
转自:http://www.arm.com/zh/products/processors/securcore/index.php SecurCore 处理器 (View Larger SecurCor ...
- 基于ARM的SoC设计入门[转]
原文:基于ARM的SoC设计入门 我们跳过所有对ARM介绍性的描述,直接进入工程师们最关心的问题.要设计一个基于ARM的SoC,我们首先要了解一个基于ARM的SoC的结构.图1是一个典型的SoC的结构 ...
随机推荐
- vscode 修改(自定义)插件的快捷键
简单的使用了一下vscode,已经感受到了它的强大. 修改插件的快捷键: 1.快捷键command+k 按完之后再按command+s,弹出一个快捷键列表(code->首选项->键盘快捷方 ...
- matlab 获取网卡MAC地址
输入命令 [sta,MACres] = dos('getmac'); 其中MACres 存储的信息即为网卡的 相关信息. 如果想判断读取的网卡信息是否有指定信息可以如下输入 USER1 = strf ...
- Gradle gitignore Gradle 模式 上传SVN 要忽略的文件
.gradle /local.properties /.idea/workspace.xml /.idea/libraries .DS_Store /build /captures /.idea *. ...
- ztree学习---将默认勾选的展开
这里只给出前台页面上的代码,数据可以从后台获取,注意,在封装数据的时候,注意:Id(节点的id,可以是数字也可以是字符串) , pid(父亲节点的id) , name(节点名称)不能少 . html页 ...
- ABP之项目的搭建
ABP是一个非常优秀的框架,使用模块化的管理方式,将当前比较优秀的技术集成到了这个框架中,方便开发者快速搭建自己的网站.作为ABP学习的第一篇,先将ABP框架跑起来看看再说. 1.首先需要去官网下载相 ...
- TFS二次开发06——签入(CheckIn)
一个Item 就是一个文件或文件夹 using Microsoft.TeamFoundation.Client; using Microsoft.TeamFoundation.VersionContr ...
- Java Eclipse编译后产生的字节码文件,用DOS命令符怎么打开
在很多初学者刚刚接触eclipse的时候,写完一个代码文件.例如 Demo.java 通过run as a java application生成之后,会产生一个Demo.class. Demo.cla ...
- 快速排序之python
快速排序( Quick sort) 快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行递归排序,以达到整个序列有 ...
- Docker Hub Mirror
什么是Docker Hub Mirror? 根据Docker的官方文档,Mirror的定义是: Such a registry is provided by a third-party hosting ...
- PL/SQL自定义函数
从SQL表达式中调用函数的限制 为了从SQL表达式中调用函数,一个用户定义函数必须: 是存储函数 只接受IN函数 只接收有受的SQL数据类型,而不接受PL/SQL数据类型 返回数据类型为有效的SQL数 ...