1. AHB-Lite总线架构概述
AHB-Lite(Advanced High-performance Bus Lite)是ARM AMBA总线协议家族中的轻量级成员,专为低功耗、高实时性要求的嵌入式系统设计。作为AHB协议的简化版本,它保留了关键性能特性,同时减少了协议复杂度,非常适合Cortex-M系列处理器等资源受限的嵌入式场景。
与完整版AHB相比,AHB-Lite最主要的区别在于它仅支持单主设备(Single Master)架构。这意味着系统中同一时间只有一个主设备能够发起总线传输,从而省去了复杂的总线仲裁逻辑。不过在实际应用中,我们仍然可以通过主控多路复用器(Master Multiplexer)这样的组件,实现多个主设备共享总线资源的效果。
AHB-Lite总线的主要技术特点包括:
- 支持高带宽突发传输(Burst Transfers)
- 单时钟沿操作简化时序设计
- 分离的地址/数据相位提升总线利用率
- 支持字节、半字和字访问
- 提供传输响应信号(OKAY/ERROR/RETRY/SPLIT)
在典型的Cortex-M系列SoC中,AHB-Lite通常用于连接处理器核心与关键外设,如:
- 嵌套向量中断控制器(NVIC)
- 系统定时器(SysTick)
- 存储器保护单元(MPU)
- 调试访问端口(DAP)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 主控多路复用器设计解析
2.1 模块功能与接口定义
主控多路复用器(cmsdk_ahb_master_mux.v)是AHB-Lite系统中的关键互联组件,它允许最多三个AHB主设备共享同一个从设备接口。这种设计在需要多个主设备(如CPU+DMA)访问共享资源的系统中非常有用。
模块的主要接口信号可分为三组:
-
主设备侧接口(Port 0/1/2):
- HSELSn:主设备选择信号
- HADDRSn[31:0]:地址总线
- HTRANSSn[1:0]:传输类型(IDLE/BUSY/NONSEQ/SEQ)
- HWDATASn[DW-1:0]:写数据总线
- 其他控制信号(HWRITE, HSIZE, HBURST等)
-
从设备侧接口:
- HSELM:从设备选择信号
- HADDRM[31:0]:地址总线
- HWDATAM[DW-1:0]:写数据总线
- 其他控制信号
-
仲裁相关信号:
- HMASTERM[1:0]:指示当前传输来自哪个主设备端口
- HREADYSn:各主设备的传输就绪信号
模块采用参数化设计,通过PORT0_ENABLE、PORT1_ENABLE和PORT2_ENABLE三个参数灵活配置启用哪些主设备端口,未启用的端口不会生成对应逻辑,有效节省芯片面积。
2.2 仲裁机制实现细节
主控多路复用器采用固定优先级与轮询相结合的混合仲裁策略:
- Port 0和Port 1:相同优先级,采用轮询(Round-Robin)调度
- Port 2:更高优先级,可抢占Port 0/1的传输
仲裁器在以下情况下会禁止主设备切换:
- 固定长度突发传输(Fixed-length burst)未完成时
- 锁定传输(Locked transfer)进行中
- 从设备返回等待状态(HREADY为低)时
一个值得注意的实现细节是:当仲裁器决定切换主设备时,会强制将第一个传输的HTRANS信号设置为NONSEQUENTIAL。这是因为协议要求突发传输必须从NONSEQ开始,这样可以确保总线协议的正确性,即使前一个主设备的传输被打断。
实际应用中,建议将DMA控制器等高优先级设备连接到Port 2,而将CPU等对延迟不敏感的设备连接到Port 0/1。这种配置可以确保关键数据传输不被阻塞。
2.3 关键参数与配置选项
模块提供以下可配置参数:
verilog复制parameter PORT0_ENABLE = 1; // 启用Port 0(默认启用)
parameter PORT1_ENABLE = 1; // 启用Port 1(默认启用)
param
