AMBA总线协议(9)——AHB(七):终章

一、前言

        在之前的文章中我们讲述了AHB协议的分割传输机制,它使得从机可以决定一次传输是否继续进行,以防止 传输的执行将占据大量的时钟周期,有效提高了总线的公平性与效率问题,本文中我们将一次性学习完AHB最后的内容,包括有复位,数据总线的位宽和接口设备等。

二、AHB 复位

        复位信号,HRESETn ,是 AMBA AHB 规范中唯一的低有效信号,并且是所有总线设备的主要复位源。复位可以异步方式生效,但是却在 HCLK 的上升沿被同步地撤消。在复位期间所有主机必须确保地址和控制信号在有效电平并且 HTRANS[1 0]  信号表示空闲。

三、AHB 数据总线位宽

        一种能提高总线带宽,而不用提高操作频率的方法是使片上总线的数据通道更宽。金属层的增加和大容量片上存储模块(例如嵌入式 DRAM)的使用都是更宽片上总线使用的推动因素。

        指定一个固定宽度的总线,将意味着在大多数场合下总线宽度在应用中并不是最佳的。因此允许可变总线宽度的途径已经被采纳。但是,必须确保模块在设计中高移植性。

        协议允许 AHB 数据总线可以是 8163264128256512 或者 1024 位宽。然而,建议使用中最低的总线宽度为 32 位,并且预计最大 256 位宽的总线将适合几乎所有应用。

        对读和写传输而言,接收模块都必须从总线上正确的字节通道选择数据。但是,并不要求将数据复制到所有字节通道上。

1、在宽总线上实现窄从设备

        下图表示了一个原始设计为32位数据总线运行的从机模块是如何轻松的被转换到运行在较宽的 64 位总线上的。这仅需要增加外部逻辑,而不需要修改任何内部设计。因此,该技术也可以用在难以设计的宏单元上。

 

对于输出,当从较窄的总线转换成较宽的总线时,要完成下列事件之一:
        (1)复制数据到宽总线上的两个半部分上(如上图所示);
        (2)使用附加的逻辑电平来确保总线上只有适当的那一半被改变。这会导致功耗的降低。
        从机可以只接收和它接口相同宽度的传输。如果一个主机尝试一个大于从机能支持的传输,那么从机可以使用 ERROR 传输响应。

2、在窄总线上实现宽从设备

        下图表示了一个在窄总线上实现宽从机的例子。同样,只需要外部逻辑。因此,通过简单的修改,初步的设计或者导入的模块就可以工作在不同宽度的数据总线上了。

        与最初打算通过用相同的方式修改从机以工作在宽总线上相比,经过下面简单的修改,总线主机便能工作在宽总线上:
        (1)多路选择输入总线;
        (2)复制输出总线;
        然而,总线主机不能工作在比原先设计要窄的总线上,除非有一些限制总线主机尝试传输的宽度的机制将主机也包含在内。主机禁止尝试宽度(由 HSIZE 表示)大于所连接的数据总线的传输。

四、AHB接口设备

1、从设备

        一个 AHB 总线从机在系统中应答由总线主机表示的传输。从机使用一个来自译码器的 HSELx 选择信号以确认何时响应总线主机。所有传输要求的其他信号,例如地址和控制信息,将由总线主机产生。

2、主设备 

        在 AMBA 系统中 AHB 总线主机有最复杂的总线接口。典型的一个 AMBA 系统设计者应该使用预先设计的总线主机。因此,就不需要关注总线主机接口的细节。

3、仲裁器 

        AMBA 系统中仲裁器的角色是控制哪个主机访问总线。每个总线主机有一个请求(REQUEST/授予(GRANT)接口连到仲裁器,并且仲裁器使用一个优先权分配方案来决定哪个总线主机是当前请求总线的主机中优先级最高的。

        每个主机也可以产生用来表示主机请求独占总线访问的 HLOCKx 信号。优先级方案的细节并没有规定而是由应用决定的。仲裁器使用其他信号(无论是 AMBA的还是非 AMBA 的)来改变使用中的优先级方案都是可取的。

 4、译码器

        AMBA 系统中译码器被用来执行集中的地址译码功能,通过使它们独立于系统的存储器映射,可以提高外设的移植性。

 五、小结

        至此我们就结束了AHB部分的全部内容,本文讲述了AHB的复位,数据总线位宽,包括有如何在宽总线实现窄从设备和如何在窄总线实现宽从设备。最后展现了AHB各类接口设备。当然学习AMBA AHB仅仅通过这一系列的文章是不够的,但是还是希望能够过这个系类帮助刚刚入门的朋友有一个基本的概念,笔者也在不断学习的过程中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/80883.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

solidity0.8.0的应用案例10:可升级合约

这个案例是代理合约的实际操作,代理合约实现了逻辑和数据的分离,就可以实现在生产环境中,轻松升级合约,这就是一个如何实际升级合约的案例。 实现一个简单的可升级合约,它包含3个合约:代理合约,…

FPGA原理与结构——FIFO IP核原理学习

一、FIFO概述 1、FIFO的定义 FIFO是英文First-In-First-Out的缩写,是一种先入先出的数据缓冲器,与一般的存储器的区别在于没有地址线, 使用起来简单,缺点是只能顺序读写数据,其数据地址由内部读写指针自动加1完成&…

【Maven教程】(三)基础使用篇:入门使用指南——POM编写、业务代码、测试代码、打包与运行、使用Archetype生成项目骨架~

Maven基础使用篇 1️⃣ 编写 POM2️⃣ 编写业务代码3️⃣ 编写测试代码4️⃣ 打包和运行5️⃣ 使用 Archetype生成项目骨架 1️⃣ 编写 POM 到目前为止,已经大概了解并安装好了Maven环境, 现在,我们开始创建一个最简单的 Hello World 项目。如果你是初次…

笔记:transformer系列

1、和其他网络的比较 自注意力机制适合处理长文本,并行度好,在GPU上,CNN和Self-attention性能差不多,在TPU(Tensor Processing Uni)效果更好。 总结: 自注意力池化层将当做key,value,query来…

通过Putty对Linux服务器进行文件的上传与下载

1、下载安装Putty,下载地址:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 2、打开cmd窗口,通过命令行进入安装路径,如: 3、上传文件 pscp 文件 用户名服务器ip:目录使用“ -l ”选项可以指定用户…

SpringDataRedis 使用

1. SpringDataRedis 特点2. 使用 SpringDataRedis 步骤3. 自定义 RedisTemplate 序列化4. SpringDataRedis 操作对象 1. SpringDataRedis 特点 提供了对不同 Redis 客户端的整合(Lettuce 和 Jedis)提供了 RedisTemplate 统一 API 来操作 Redis支持 Redi…

tcl学习之路(五)(Vivado时序约束)

1.主时钟约束 主时钟通常是FPGA器件外部的板机时钟或FPGA的高速收发器输出数据的同步恢复时钟信号等。下面这句语法大家一定不会陌生。该语句用于对主时钟的名称、周期、占空比以及对应物理引脚进行约束。 create_clock -name <clock_name> -periood <period> -wa…

简单认识Docker数据管理

文章目录 为何需要docker数据管理数据管理类型 一、数据卷二、数据卷容器三、容器互联 为何需要docker数据管理 因为数据写入后如果停止了容器&#xff0c;再开启数据就会消失&#xff0c;使用数据管理的数据卷挂载&#xff0c;实现了数据的持久化&#xff0c;重启数据还会存在…

Python爬取斗罗大陆全集

打开网址http://www.luoxu.cc/dmplay/C888H-1-265.html F12打开Fetch/XHR&#xff0c;看到m3u8&#xff0c;ts&#xff0c;一眼顶真&#xff0c;打开index.m3u8 由第一个包含第二个index.m3u8的地址&#xff0c;ctrlf在源代码中一查index&#xff0c;果然有&#xff0c;不过/…

基于GRU门控循环网络的时间序列预测matlab仿真,对比LSTM网络

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 LSTM: GRU 2.算法运行软件版本 matlab2022a 3.部分核心程序 %构建GRU网络模型 layers [ ...sequenceInputLayer(N_feature)gruLayer(N_hidden)f…

SpringBoot 01 如何创建 和pom的解析

目录 1 Springboot的创建 步骤 2 项目的书写和运行 创建service包并在其下写一个service文件 项目的运行 pom文件的一些配置 parent web test 打包 打包过程 1 Springboot的创建 步骤 首先new一个新项目 然后依照如下创建 2 项目的书写和运行 创建service包并…

Unity——DOTween插件使用方法简介(上)

例子演示&#xff1a; DOTween移动 缓动动画既是一种编程技术&#xff0c;也是一种动画的设计思路。从设计角度来看&#xff0c;可以有以下描述 事先设计很多基本的动画样式&#xff0c;如移动、缩放、旋转、变色和弹跳等。但这些动画都以抽象方式表示&#xff0c;一般封装为程…