1. Lime 16位主机接口模式下的DMA传输机制解析
在汽车电子和导航系统的图形显示控制器(GDC)应用中,DMA(直接内存访问)技术是实现高速数据传输的关键。传统32位接口通过专用信号线(DREQ/DRACK)实现DMA控制,而Lime系列GDC引入的16位SRAM和地址复用模式采用了创新的连续地址访问机制。这种设计既保持了32位数据带宽,又兼容了16位接口的灵活性,特别适合VRAM写入等图形处理场景。
1.1 16位模式下的DMA架构特点
Lime的16位接口模式包含三种配置:16位专用SRAM接口、16位地址/数据复用接口以及32位地址/数据复用接口。与传统32位非复用接口不同,这些模式取消了专用的DMA控制信号(DREQ/DACK/DTACK),转而采用地址范围识别机制来区分CPU和DMA访问。
关键创新点在于:
- 双数据打包模块:独立处理CPU和DMA的16位数据,内部组合为32位数据流
- 连续地址访问:必须使用连续地址序列才能正确完成16→32位数据打包
- 地址窗口检测:通过DMA_ST_ADR和DMA_ED_ADR寄存器定义DMA访问的地址范围
注意:在未正确设置DMA地址窗口的情况下,CPU和DMA的16位数据会被错误地打包到同一32位数据块中,导致VRAM写入异常。
1.2 寄存器配置详解
实现正确DMA传输需要配置以下核心寄存器(假设HostBase为0x80000000):
| 寄存器地址 | 名称 | 功能描述 | 配置示例值 |
|---|---|---|---|
| 0x80000500 | DMA_ST_ADR | DMA传输起始地址 | 0xA0000000 |
| 0x80000504 | DMA_ED_ADR | DMA传输结束地址 | 0xA00FFFFF |
| 0x80000508 | DMA_CTRL | 传输控制(突发长度等) |
