AMBA总线—AHB总线协议详解

article/2025/10/14 1:11:13

文章目录

  • 一、AMBA总线介绍
    • 1.1.AMBA发展史
    • 1.2.典型的AMBA系统
  • 二、AHB总线(宏观构造)
    • 2.1.AHB总线组成
    • 2.2.AHB总线组成互连
    • 2.3.AHB操作概述
    • 2.4.AHB基本传输阶段
  • 三、AHB总线传输(时序)
    • 3.1.AHB信号描述(重要)
    • 3.2.基本AHB传输(重要)
      • 3.2.1零等待传输(no wait state transfer)
      • 3.2.2等待传输(transfers with wait states)
      • 3.2.3.多重传送(multiple transfer)—Pipeline
    • 3.3.AHB控制信号
      • 3.3.1.传送状态 HTRANS[1:0]
      • 3.3.2.批量传送 HBURST[2:0]
      • 3.3.3.传送方向 HWRITE
      • 3.3.4.传送大小 HSIZE[2:0]
      • 3.3.5.保护控制 HPROT[3:0]
    • 3.4.AHB响应信号
  • 四、AHB模块接口 (重要)

一、AMBA总线介绍

1.1.AMBA发展史

AMAB1.0
AMBA2.0
AMBA3.0
AMBA4.0

          在这里插入图片描述

AMBA1.0: ASB协议和APB协议;
AMBA2.0: AHB协议、ASB协议和APB协议;
AMBA3.0: 增加了AXI协议;
AMBA4.0: ACE协议(了解)

本文主要介绍AMBA2.0 (Advanced Microcontroller Bus Architecture,先进微控制总线结构),主要定义了三种总线:

  • AHB:Advanced High-performance Bus(先进高性能总线) 高速高性能总线;支持2级流水操作(优势)
  • APB:Advanced Peripheral Bus(先进外围总线) 低速总线、低功耗;接口简单
  • ASB:Advanced System Bus(先进系统总线)

1.2.典型的AMBA系统

AHB总线的强大之处在于它可以将微控制器(CPU)、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线master、各种拥有AHB接口的控制器等等连接起来构成一个独立的完整的SOC系统,不仅如此,还可以通过AHB-APB桥来连接APB总线系统。
AHB可以成为一个完整独立的SOC芯片的骨架。
在这里插入图片描述

二、AHB总线(宏观构造)

2.1.AHB总线组成

完整的AHB总线由四个部分组成:
AHB主设备Master; 发起一次读/写操作; 某一时刻只允许一个主设备使用总线
AHB从设备Slave; 响应一次读/写操作; 通过地址映射来选择使用哪一个从设备;
AHB仲裁器Arbiter; 允许某一个主设备控制总线;
AHB译码器Decoder; 通过地址译码来决定选择哪一个从设备;

2.2.AHB总线组成互连

在这里插入图片描述
总线可以分为三组

  • 写数据总线(HWDATA)
  • 读数据总线(HRDATA)
  • 地址控制总线(HADDR)

2.3.AHB操作概述

   有需要占用总线的Master向arbiter发出请求,arbiter授权给指定的master。任一时间周期只有一个master可以接入总线,对其指定的slave进行读写操作。
   获得总线授权的master开始AHB传输,首先发出地址和控制信号,提供地址信息、传输方向、带宽和burst类型。总线统一规划slave的地址,译码器根据地址和控制信号确定哪个slave与master进行数据通信数据传输通过数据总线完成。为避免出现三态总线,AHB将读写总线分开,写数据总线用于从master到slave的数据传输,读数据总线用于从slave到master的数据传输每笔传输包括一个地址和控制周期,一个或多个数据周期。地址和控制周期不能被扩展,因此slave必须在一个周期内采样地址信号。数据周期可以通过HREADY信号扩展,但HREADY为低时给传输加入一个等待状态以使slave获得额外的时间来提供或采样数据,另外slave通过响应信号HRESP反映传输状态。
   AHB 支持批量式数据传送,可以自动递增地址。递增地址方式分为:持续递增与回绕传送。
   一般情况下master完成完整的burst传输,arbiter才会授权给其他的master接入总线,然而为避免过大的判决延迟,arbiter也可能打断burst传输。在这种情况下master必须再次接入总线以进行中断的burst剩余部分的传输。

2.4.AHB基本传输阶段

AHB 的传送模式包含二个阶段。第一阶段为地址的传递,另一阶段为数据的传递。

  1. 地址传输阶段; ( address phase): 一个时钟周期
  2. 数据传输阶段;(data phase): 一个或多个时钟周期 (以 HREADY 信号控制周期数目).

三、AHB总线传输(时序)

3.1.AHB信号描述(重要)

信号名含义I O描述
HCLK总线时钟clock source各module总线时钟,上升沿采样
HRESETn复位reset controller各module总线复位,低电平有效
HADDR[31:0]地址总线Masterdecoder;
mux to slave;
arbiter
32位系统地址总线
HTRANS[1:0]传送类型Mastermux to slave当前传输类型 IDLE, BUSY, NONSEQ, SEQ
HWRITE传送方向Mastermux to slave1为写,0为读
HSIZE[2:0]传送带宽Mastermux to slave每一个transfer传输的数据大小,以字节为单位,最高支持1024位
HBURST[2:0]批量传送Mastermux to slaveburst类型,支持4、8、16 burst,incrementing/wrapping
HPROT[3:0]保护控制Mastermux to slave保护控制信号,需要slave带保护功能,一般不用
HWDATA[31:0]写数据总线Mastermux to slave写数据总线,Master到Slave
HRDATA[31:0]读数据总线Slavemux to master读数据总线,Slave到Master
HREADY传送完成Slavemux to master;
arbiter
控制HRDATA的读出数据周期
高:Slave输出传输结束
低:Slave需延长传输周期
HRESP[1:0]传送响应Slavemux to master;
arbiter
Slave发给Master的总线传输状态OKAY, ERROR, RETRY, SPLIT
HSELx从选择Decoderslaveslave选择信号

说明:在实际的传输过程中,一般作为AHB总线的Slave设备都有2根hready信号,一个为input类型(hready_in),另一个为output类型(hready_out)。AHB总线协议中,如果Master设备发起读写操作的时候,Slave设备不能及时响应的话,由Slave设备把hready_out信号拉低来拖延Data Phaze周期。

  但是在Pipeline操作的时候,本次操作data phaze是下一次操作的address phaze,所以作为Slave设备在响应Master设备的时候,必须先判断一下Master设备对上一次其它Slave设备的操作是否已经完成。如果完成,则响应主设备的操作;如果没有完成,则等待完成,然后才响应操作。hready_in就是Slave设备用来判断Master设备是否对其它Slave设备的操作已经完成的信号
如:
    在这里插入图片描述

AHB仲裁信号:

信号名含义I O描述
HBUSREQxBus请求MasterM2AMx 向 A 发出的总线使用请求信号。最多 16 个 M
HLOCKx锁定传送MasterM2A如果一个master希望自己在传输期间不希望丢掉总线,则需要向仲裁器发送这个锁定信号
HGRANTxBus 同意arbiterA2Mmaster 授权信号,当前bus master x的优先级最高。
当HREADY和HGRANTx同时为高时,master获取系统总线的权利
HMASTER [3:0]主号arbiterA2M具有split功能的slave 仲裁器为每一个master分配的ID,
指出哪个主设备正在进行传输,提供进行split的信息
HMASTLOCK锁序arbiter具有split功能的slave表示当前的master正在执行Locked操作。
这个信号和HMASTER有这相同的时序
HSPLITx[15:0]分段请求slaveS2A从设备用这个信号告诉仲裁器哪个主设备运行重新尝试一次split传输,每一位对应一个主设备

3.2.基本AHB传输(重要)

3.2.1零等待传输(no wait state transfer)

在这里插入图片描述
第一个周期的上升沿,master驱动地址和控制信号;
第二个周期的上升沿,slave采样地址和控制信号,并将HREADY拉高;
   如果是写操作,master会在第二个周期的上升沿传输要写入的数据;
   如果是读操作,slave会在HREADY信号拉高后将读取的数据写入总线;
第三个周期的上升沿,
   如果是写操作,master获取HREADY高信号,表明slave已成功接收数据,操作成功;
   如果是读操作,master获取HREADY高信号,表明此时的读数据有效并且接收下来,操作成功。
需要注意,HREADY信号在数据有效期间必须为高,并且延续到第三个周期的上升沿之后,确保master的正确采样。

  • 当 HCLK 正沿触发后, M 送出地址与控制信号 ,HCLK 由 CLOCK 驱动送至 AHB 接口。
  • S 在 HCLK下一个正沿触发时, S 收到地址与控制信号
  • 在 HCLK 的第三个正沿触发时, M 收到S 的响应信号
    AHB支持流水线的动作,在收上一笔数据的同时,可将下一笔数据的地址送出。

3.2.2等待传输(transfers with wait states)

传送完成时间因等待而延迟,这是由于寻址到较慢的 S 单元所造成。当 HREADY 被 S 拉低时,会发生等待状态。需要延迟传送的周期时,就会在数据期间将 HREADY 拉低,此时地址与数据都必须延伸。有等待状态的 AHB 传递,下图中可看到在数据模式时,时序必须多花二个周期的延迟等待时间(HREADY 为 0),S 才能正常的接收到 M 写的数据或准备好 M 欲读取的数据
在这里插入图片描述
  slave可以及时处理master请求,但也可能存在slave太慢不能立即处理的情况。这时需要让master稍微等一等,需要slave插入一些等待的状态。如下图所示,HREADY信号在第二和第三周期拉低,意在告诉master,slave不能立即处理,需要master等待2个周期。在这里需要注意2点:
   如果是写操作,master需要在等待期间保持写数据不变,直到本次传输完成(?)
   如果是读操作,slave不需要一开始就给出数据,仅当HREADY拉高后才给出有效数据

3.2.3.多重传送(multiple transfer)—Pipeline

一次完整的数据传送会有多个传送周期,如下图下一笔地址可与上一笔数据同时在总线上,时序图的说明如下:
在这里插入图片描述
下图是对上图的补充:
在这里插入图片描述
扩展数据周期的一个负效应是必需延长相应的下一笔传输的地址周期。A和C为零等待传输,B加入了一个等待周期,因此相应的C地址周期要进行扩展。
  第一个周期,master发起一个操作A,并驱动地址和控制信号;
  第二个周期,slave收到了来自总线的请求,将HREADY信号拉高;
  第二个周期上升沿后,master发现有操作B需要执行,并且检查到上一周期的HREADY为高,则发起第二个操作B;
  第三个周期,master获取HREADY信号为高,表示操作A已经完成;
  第三个周期上升沿后,master发现有操作C需要执行,并且检查到上一周期的HREADY为高,则发起第三个操作C;
  第三个周期上升沿后,slave由于繁忙插入了一个等待状态,将HREADY拉低;
  第四个周期,master获取HREADY信号为低,知道slave希望等待,于是master保持和上一拍一样的信号;
  第四个周期,slave处理完了事务,将HREADY信号拉高,表示可以继续处理;
  第五个周期,master获取HREADY信号为高,知道slave已经可以处理B操作;
  第五个周期上升沿后,B操作完成;
  第六个周期上升沿后,C操作完成。
需要注意几点:
HREADY在一定程度上表示了slave的pipeline能力,在AHB中是2个pipe,也就是总线上最多存在2个未处理完的transfer。只有当总线上未完成的transfer少于2个时,master才能发起操作。

3.3.AHB控制信号

3.3.1.传送状态 HTRANS[1:0]

在 AHB 总线上,M 的传送状态可由 HTRANS[1:0]来表示,这两位所代表的意义如下:
在这里插入图片描述

3.3.2.批量传送 HBURST[2:0]

批量传送是以群组为单位的传送方式,主要依地址的给法来区分:

  • 递增传送(incrementing burst),会依上一笔的地址来递增。
  • 回绕传送(wrapping burst),如:回绕长度 = 4;每 4 个字节要对齐在 16 字节的范围内。如果第一个地址=0x64,则传送的顺序为 0x68、0x6C、0x60。

每次传送数据的大小由 HBURST[2:0]定义:
在这里插入图片描述
详细的种批量式传送的时序在此不做详细解释。

3.3.3.传送方向 HWRITE

HWRITE:表示传送方向(依读或写的动作来决定传送信号的方向)

  • HWRITE 拉高时(),M 必须对写入动作初始化,数据会由 M 放到 HWDATA[31:0] 总线上。
  • HWRITE 拉低时(),M 会对读取动作初始化,被寻址到的S会将数据放到 HRDATA[31:0] 总线上。

3.3.4.传送大小 HSIZE[2:0]

传送数据大小由 HSIZE[2:0] 信号控制,表示每次传送的字节数目。
在这里插入图片描述
HSIZE[2:0]与 HBURST[2:0]两个信号可合起来定义回绕地址的范围。
例如: HSIZE[2:0]= 32 位,HBURST[2:0]长度为 4 字节,则回绕地址须对齐在 16 字节。
通常的 AHB 从设备是 32 位数据线,所以它支持 8 位,16 位和 32 位 3 种大小。

3.3.5.保护控制 HPROT[3:0]

HPROT[3:0] 为总线协议保护信号用来定义存取的型态与特性,并非所有的 M 都会传送出 HPROT[3:0],所以除非 S 有需要否则不会使用到 HPROT[3:0]信号。一般来讲该信号很少用到。

3.4.AHB响应信号

master发起一笔传输后,slave可以决定这笔传输的进程,而master不能取消已经发出的传输。slave通过 HREADY信号反映传输是否完成,通过HRESP[1:0]反映传输的状态

1)、 slave可以如下方式完成一笔传输:
      - 立即完成一笔传输;
      - 延迟一个或几个周期完成传输;
      - 传输失败返回error;
      - 延迟传输,释放总线。

2)、传输完成标志HREADY
      -HREADY为高时传输完成,
      -HREADY为低时传输需要延迟。

3)、传输响应标志HRESP[1:0]
      00: OKAY—传输完成
      01: ERROR—传输错误
      10: RETRY—传输未完成,请求主设备重新开始一个传输,arbiter会继续使用通常的优先级
      11: SPLIT—传输未完成,请求主设备分离一次传输,arbiter会调整优先级方案以便其他请求总线的主设备可以访问总线

4)、地址译码
  地址译码器用于为总线上每个slave提供选择信号HSELx,选择信号是通过组合逻辑对地址码译码产生的。只有当前的数据传输完成后(HREADY为高),slave才会采样地址和控制信号以及HSELx。在一定条件下可能会出现这样的情况:产生HSELx信号而HREADY为低,在当前传输后slave会改变。
在这里插入图片描述

  每个slave最小的地址空间为1KB,所有的master的burst传输上限也是1KB,如此设计保证了不会出现地址越界问题。当一个设计不会用到所有的地址空间时,可能出现访问到一个不存在的地址的情况,这就需要增加一个附加的默认slavedefault slave)来为上面的情况提供一个响应。当SEQ或NONSEQ传输访问到一个不存在的地址,默认slave应该提供ERROR响应;当IDLE或BUSY传输访问到一个不存在的地址,默认slave会响应OKAY。地址译码器会带有实现默认slave的功能。

5)、仲裁
  仲裁机制保证了任意时刻只有一个master可以接入总线。arbiter决定哪个发出接入请求的master可以接入总线,这通过优先级算法实现。AHB规范并没有给出优先级算法,设计者需要根据具体的系统要求定义。一般情况下arbiter不会中断一个burst传输,将总线接入权让给其他master。当然未定义长度的burst传输是可以打断的,这要看优先级算法是如何规定的。如果一笔burst被打断,master再度获得接入权限时,会传递剩余的部分。如一笔长度为INCR8的传输在传递3 beat后被打断,master再次获得接入授权后,会继续传输剩余的5 beat,剩余部分可以由一个SINGLE和一个INCR4组成,或者一个INCR。
  HBUSREQx:master向arbiter发出接入请求的信号。
  HLOCKx:指示是否要进行不可中断的传输,这一信号与HBUSREQx同时由master向arbiter发出。
  HGRANTx:arbiter产生指示master获得授权,当HGRANTx信号为高同时HREADY为高时,master可以向总线传输地址信号。
  HMASTER[3:0]:arbiter产生指示哪个master获得授权,这一信号用于地址控制多路来选择哪个master接入总线。
  HMASTERLOCK:arbiter产生指示当前传输是否为锁定序列传输。
  HSPLIT:供支持SPLIT传输使用。

四、AHB模块接口 (重要)

1…从接口框图(很重要、会画):

在这里插入图片描述
  仲裁器在决定出哪一个 M 拥有总线使用权之后,会将这个 M 数据地址、控制信号及欲写入 S 的数据选出,并且送至每一个 S,而所选出的数据地址会再经由 AHB 译码器产生唯一的 HSELx 使能信号来启动一 S 的数据传送。M 启动一个数据传送之后,被使能的 S(即 HSELx 为 1 的 S) 会发出 HREADY 信号来决定是否要延长当前数据的传送,若 S 响应 HREADY 为 0,表示此笔数据的传递必须被延迟,若 S 送出的HREADY 为 1,则表示 S 能够完成此笔数据的传递。
  由图中可发现,S 除了用 HREADY 信号来告知此笔数据是否需要额外的延迟时间之外,还会透过HRESP[1:0]信号响应当前数据传送的情形,以下将说明四种 S 的响应型态:
  第一种响应为 OKAY,当一笔数据可完成传送时,S 会响应以 HREADY 为 1,且 HRESP[1:0]为 OKAY;另外 S 也会在必须差入额外延迟时(HREADY 为 0),但未决定出何种响应方式时,作出 OKAY 的响应;
  另一种的响应方式为 ERROR,这种响应会在 M 所要求传送的数据发生错误时发生,而这种错误常常出现在 M 试图去存取一有读或写的保护机制模块,如 M 试图在只读存储器来写入数据。
  第三种响应方式为 RETRY,此种响应会在 S 无法立即完成此笔数据传送,希望 M 重新传送此笔数据(了解)
  最后一种 S 响应模式为 SPLIT,这种方式的响应跟 RETRY 相似,都是发生在数据未能完成传递时。最大的不同是仲裁器在这两种信号响应之后,选择 M 时所使用的权位算法不一样。如为 SPLIT 响应,仲裁器只允许其它 M 来对 S 作存取的动作,即使要求数据传送的 M 比当前 M 的优先权位来的低,也就是说仲裁器不会选择当前的 M 来进行数据传送;如果 S 响应的是 RETRY,那么仲裁器会用一般的权位算法去找出当前发出数据传递要求权位最高的 M 来进行数据传递。(了解)

2…主接口框图(很重要、会画):
在这里插入图片描述
  每一次的数据传送可分成四种型态,M 用 HTRANS[1:0] 信号来决定此次传送数据的型态,这四种传送型态分别是 IDLE、BUSY、NONSEQ 和 SEQ。
  当 M 传送的数据型态为 IDLE 时,表示 M 这时候想要拥有总线的使用权,但并不需要作数据的传送,此时的 S 必须立即作出 OKAY 的响应;
  第二种数据传送型态为 BUSY,当 M 进行一连续笔数据传递期间,若有些数据无法实时在下一个周期作传送,此时 M 会发出 BUSY 信号来延迟此笔数据的传送,S 这时候也会响应一个和 IDLE 传送型态一样的 OKAY 信号,同时忽略这笔数据的传递;
  另一种传送型态为 NONSEQ,NONSEQ 的传送型态表示此次的传送为单笔数据传送或一连续笔数据传送中的第一笔,因此这种的传送型态,数据的地址和控制信号跟前一笔数据不具有关联性;
  最后一种数据传送型态为 SEQ,在一连续笔数据的传递中,除了第一笔数据之外,其它的数据传递型态为 SEQ (第一笔为 NONSEQ),这种数据传递的控制信号和前一笔相同,而数据的地址则为前一笔数据地址加上由 HBURST[2:0]和 HSIZE[2:0] 信号所决定出的地址累加值。

3…仲裁器接口框图在这里插入图片描述
4…译码器接口框图
在这里插入图片描述

参考:https://www.cnblogs.com/HolmeXin/p/9530711.html


http://chatgpt.dhexx.cn/article/preu71KG.shtml

相关文章

Docker详解之EXPOSE

EXPOSE <端口1> [<端口2>...] 大家都知道以上代码是Dockerfile中来声明端口的命令&#xff0c;但是你真的了解过它吗&#xff1f;现在我带大家来深入了解我们的EXPOSE命令。 首先&#xff0c;我们最应该明确的一点就是&#xff0c;EXPOSE命令只是声明了容器应该打…

Network: use `--host` to expose

vite启动后提示&#xff1a; Network: use --host to expose&#xff0c;且无法通过网络IP访问服务 你遇到的问题是不是跟下图这样&#xff1a; 此问题的原因 当 局域网 中另一台设备需要访问该服务时&#xff0c;必须通过本机 IP 端口 访问。 尝试访问后&#xff0c;发现找…

AE(Auto Expose)自动曝光

AE Auto Expose自动曝光 1.作者&#xff1a;一隅生 自动曝光就是相机根据光线条件自动确定曝光量。 从根本测光原理上分可分两种&#xff1a;入射式和反射式。入射式就是测量照射到相机上的光线的亮度来确定曝光组合&#xff0c;这是一种简单粗略的控制&#xff0c;多用于低档相…

简单的聊一聊 Vue3.2 中新出的 expose 是做啥用的?

随着Vue 3.2的发布&#xff0c;一个新的组合工具提供给我们&#xff0c;叫做 expose。 你是否曾经创建过一个需要向模板提供一些方法和属性的组件&#xff0c;但又希望这些方法对组件是私有的&#xff0c;不能被父类调用&#xff1f; 如果你在开发一个开源的组件或库&#xff0…

Android gson解析@SerializedName、transient、@Expose

目录 SerializedName和transient Expose SerializedName和transient SerializedName 自定义序列化与反序列化过程中json数据的的key transient 加这个关键字表示这个字段 不会参与任何的序列化与反序列化 看代码 该商品类,name字段加上SerializedName("goodsName"…

kubectl 命令详解(七):expose

一、命令作用 将资源暴露为新的Kubernetes Service。 指定deployment、service、replica set、replication controller或pod &#xff0c;并使用该资源的选择器作为指定端口上新服务的选择器。deployment 或 replica set只有当其选择器可转换为service支持的选择器时&#xf…

Dockerfile EXPOSE指令 语法解析

Docker容器启动后&#xff0c;需要宿主机和容器端口进行映射&#xff0c;以便容器内服务对外暴露&#xff0c;这可以在启动是通过docker run -p host:port ...指定&#xff0c;也可以在镜像构建时通过dockerfile的EXPOSE指令指定&#xff0c;本文本来具体对EXPOSE指令进行解析。…

Dockerfile中的expose到底有啥用

如题&#xff0c;看过Dockerfile常识的肯定都知道这个EXPOSE指令是暴露容器的端口。 docker run 的时候指定 -P 或者 -p 将容器的端口映射到宿主机上。这样外界访问宿主机就可以获取到容器提供的服务了。 -P命令可以结合这个dockerfile文件中的EXPOSE暴露的端口。会将容器…

Dockerfile(6) - EXPOSE 指令详解

EXPOSE 通知 Docker 容器在运行时监听指定的网络端口 EXPOSE 端口号 EXPOSE 端口号/协议 默认协议是 TCP 同时在 TCP、UDP 上暴露端口 EXPOSE 80/tcp EXPOSE 80/udp EXPOSE 原理 个人理解&#xff1a;EXPOSE 暴露的端口更像是指明了该容器提供的服务需要用到的端口EXPOSE 并不…

2019中兴捧月·初赛心得

2019中兴捧月初赛心得 原文链接&#xff1a;https://hey-yahei.cn/2019/05/22/zte_challenge_preliminary/ 赛题背景 自从 Alex Krizhevsky 夺得 ILSVRC 2012 ImageNet 图像分类竞赛的冠军后&#xff0c;深度卷积神经网络在图像分类、物体检测、语义分割、目标跟踪等多个计算…

2019中兴捧月之智能音频处理参赛总结

抱着免笔试的心态参加了中兴捧月比赛&#xff0c;赛题一下来&#xff0c;呦&#xff01;题目可选余地很大&#xff0c;稳了&#xff01;看完题之后&#xff0c;凉了&#xff01;再见&#xff0c;中兴。。。 正题开始&#xff0c;博主选的是智能音频识别&#xff0c;题目给了几段…

算法4-中兴捧月杯热身赛1素数判断-热身赛2亲和串-热身赛3旅游路线-

题目1&#xff1a;素数判断 需求 给定一个数n&#xff0c;要求判断其是否为素数(0,1&#xff0c;负数都是非素数)。输入描述:测试数据有多组&#xff0c;每组输入一个数n。输出描述:对于每组输入,若是素数则输出yes&#xff0c;否则输入no。 样例1: 输入:13输出:yes 代码 //…

2021中兴捧月神算师算法赛,4-24第一场,第四题:D-换队伍,2021-4-28

第四题&#xff1a;D-换队伍 分析&#xff1a; 1.问题本身很简单&#xff0c;也只有两条队伍&#xff0c;一个队伍中的人换到另一个队伍的末尾。问题在于对其他人排队位置的保存和排序。 2.用什么数据结构进行保存&#xff0c;是一个很关键的问题&#xff0c;对问题解决的方法和…

中兴捧月算法挑战赛-RAW夜景图像去噪总结

最终排名 85/1159 网址&#xff1a;https://zte.hina.com/zte/denoise 无缘复赛&#xff0c;太菜了&#xff0c;不好意思说自己学去噪的了&#xff0c;代码会开源&#xff0c;但是感觉没什么人看吧 尝试过的模型 DnCNN&#xff1a;很差&#xff0c;0分UNet&#xff1a;很蓝…

2021中兴捧月神算师算法赛,4-24第一场,第二题:B - 切绳子,2021-4-27

第二题&#xff1a;B - 切绳子 题目如下图所示&#xff1a; 这道题目难度中等&#xff0c;但是有很多细节要注意。 分析&#xff1a; 1.首先数据类型问题&#xff0c; 1<n<1e18,这个显然超过了int的长度65535&#xff0c;需要使用big int 或者是long long 型进行定义…

中兴捧月算法-切绳子

中兴捧月算法-切绳子 题目描述 来源&#xff1a;牛客网 示例一&#xff1a;

中兴捧月比赛DIJKSTRA派算法说明

因为文章包含太多公式&#xff0c;无法复制&#xff0c;所以只能截图 我现在不知道怎么传源码&#xff0c;代码的话如果有人要&#xff0c;留言QQ 输出的次优解路径为&#xff1a; S->N2->N4->N5->N3->N7->N8->N14->N13->N12-…

2019中兴捧月·总决赛心得

2019中兴捧月总决赛心得 原文链接&#xff1a;https://hey-yahei.cn/2019/05/25/zte_challenge_final/ 赛题背景 与初赛类似&#xff0c;不过初赛更多关注的是加速&#xff0c;而总决赛更关注的是压缩。 原始模型是一个简单的3x112x112输入大小的resnet18&#xff0c;人脸识…

2020年中兴捧月傅里叶派决赛题目

目录 题目&#xff1a; 模型建立 题目分析 注意的小问题 计算结果 代码 模型改进和精细预测 写在最后 题目&#xff1a; 假设&#xff1a; 病毒正在一个居民总数为N100,000, 的城市里扩散。在我们研究的时间段内&#xff08;300天&#xff09;&#xff0c;没有新生儿…

2022中兴捧月算法挑战赛(RAW图像去噪)——初赛到决赛总结与反思

文章目录 1. 初赛经历&炼丹详情1.1 初赛经历1.2 炼丹详情 2、复赛经历&反思与总结2.1 复赛经历2.2 复赛反思 3、决赛经历&反思与总结3.1 决赛题目3.2 决赛思路总结3.3 冠军方案记录3.4 决赛经历3.5 决赛反思 1. 初赛经历&炼丹详情 1.1 初赛经历 最后分数57.2…