仅对英特尔可见 — GUID: phy1523307291230
Ixiasoft
7.1.1.1.1. 寄存器集
DMA Controller中的寄存器为512-bit宽以匹配Bursting Master和Read Data Mover的 Avalon® -MM Master数据路径宽度。从而,如有需要可允许Read Data Mover在单个周期内写入描述符。
偏移 | 名称 | 访问 | 说明 |
---|---|---|---|
0x000 | WDN | R/W | 写:Write Data Mover普通描述符队列的描述符 读:Write Data Mover普通描述符队列的准备度和填充级别 |
0x200 | WDP | R/W | 写:Write Data Mover优先描述符队列的描述符 读:Write Data Mover优先描述符队列的准备度和填充级别 |
0x400 | WS | RO | Write Data Mover状态队列 |
0x600 | WI | R/W | Write Data Mover中断控制寄存器 |
0x800 | RDN | R/W | 写:Read Data Mover普通描述符队列的描述符 读:Read Data Mover普通描述符队列的准备度和填充级别 |
0xA00 | RDP | R/W | 写:Read Data Mover优先描述符队列的描述符 读:Read Data Mover优先描述符队列的准备度和填充级别 |
0xC00 | RS | RO | Read Data Mover状态队列 |
0xE00 | RI | R/W | Read Data Mover中断控制寄存器 |
对于写入描述符列队寄存器的数据,请使用与Data Mover的相应 Avalon® -ST接口中数据相同的格式和内容。应用程序的最低有效专用位显示在处理描述符完成时是否应发布中断。
DMA Controller双倍缓冲只写队列,以便描述符可在需要时一次建立一个DWORD,例如,32-bit主机控制器。当最高有效DWORD被写入时,寄存器的内容被传送到Data Mover的 Avalon® -ST输入。
当未置位相应Data Mover的ready信号, 却尝试写入描述符队列时,会导致DMA Controller置位其 waitrequest信号直到ready被置位。所以必须确保Read Data Mover不会在队列已满时尝试写入正在处理的队列,否则会导致死锁。有关死锁的更多详细信息,请参阅死锁风险和规避.
可查看队列寄存器的ready位(bit [31])找到描述符队列ready信号的状态。此外,队列寄存器的位[7:0]表示队列大概的填充级。队列寄存器的其他位被设置为0。
WS和RS寄存器中仅最低有效DWORD包含有效信息。其他位设置为0。
状态队列的格式和内容与Data Mover Avalon® -ST接口对应格式和内容相同,若外加位31,则表示队列为空。当队列为空时,从其中一个状态队列进行读取将返回512'h8000_0000。
WI和RI中断控制寄存器的格式如下:{enable, priority, reserved[414:0], msi_msg_data[15:0], reserved[15:0], msi_address[63:0]}.
“enable”位控制是否发送MSI。“priority”位指定是否使用有限队列发送MSI。MSI存储器写TLP也使用msi_msg_data和msi_address字段的内容。