模块化SGDMA写主控核
翻译:王敏志
核概述
SGDMA即离散集中直接存储器访问(scatter-gather direct memory access)的缩写,这里介绍的是模块化SGDMA的写主控模块,该模块负责从一个Avalon-ST端口(流端口)接收数据并将数据写到存储器中。写主控模块设计成可以连接到模块化SGDMA的调度核模块,但是你也可以连接到你自己设计的控制器上。写主控模块由ST命令端口和一些由ST响应端口发送过来的可选响应数据来控制。
这里有各种不同的功能选项可以被使能添加到写主控模块,写主控模块支持以下一些选项:
l 64-bit寻址
l 8到1024比特数据宽度
l 最高支持4GB传输长度
l 非对齐存储器访问
l 突发处理
l 跨越寻址
l 支持ST包
l 支持ST出错处理
l 支持提前终止
结构框图
图1显示了组成写主控模块的主要部件。
图1:模块化SGDMA写主控核
写主控端口列表
这节将要详细讨论下由模块化SGDMA写主控核导出的各种Avalon-MM和Avalon-ST端口。当然,和调度核一样,有些被导出的信号可能并没有被调度核使用,这里列出只是为了完成存档记录。
写命令接收端口
表1:写命令接收端口各比特定义
比特 |
信号信息 |
31-0 |
Write Address [31:0] |
63-32 |
Length [31:0] |
64 |
End on EOP |
65 |
|
66 |
Stop1 |
67 |
Reset1 |
75-68 |
Write Burst Count [7:0] |
91-76 |
Write Stride [15:0] |
123-92 |
Write Address [63:32] |
255-124 |
|
1 不遵守流控制的组合逻辑信号
2 保留位驱动到地
写响应源端口
表2:写响应源端口各比特定义
比特 |
信号信息 |
31-0 |
Actual Bytes Transferred [31:0] |
32 |
Reset Delayed1 |
33 |
Stop State1 |
41-34 |
Error [7:0] |
42 |
Early Termination |
43 |
Done Strobe |
255-44 |
|
1 不遵守流控制的组合逻辑信号
数据主(master)端口
数据主端口是负责将数据流端口的数据写到存储器缓冲。数据主端口支持有条件的突发传输。这些条件包括可配置的数据宽度、突发长度以及存储器对齐等。要了解更多有关配置选项,可参考后面的配置选项一节。
数据接收(sink)端口
数据接收端口负责从读主控模块或者任何包含有流源(source)端口的组件接收数据。该端口支持包括包操作和出错处理等。要了解更多关于配置选项的情况,请参考本文后面的配置选项一节。
配置选项
模块化SGDMA有大量的配置选项来启用各种不同的功能单元。那些没用到的功能,可以通过配置来禁用,从而可以节省资源并提高写主控模块的频率。本节将要讨论写主控模块的各种配置选项。需要重点注意的是那些需要模块化SGDMA调度核启用扩展特性支持的选项。
传输选项
表3:传输选项
参数 |
合法值 |
描述 |
Data Width |
8, 16, 32, 64, 128, 256, 512, 1024 |
主端口和流端口的数据位宽。 |
Length Width |
10-32 |
传输数据的字节长度,该传输长度也用于限定一个包传输的字节数。如果不希望限定包传输的长度,可以将该参数设置成最大值,即0xFFFFFFFF,并且据此调整传输长度的位宽。 |
FIFO Depth |
16, 32, 64, 128, 256, 512, 1024, 2048, 4096 |
FIFO的深度必须设置为至少两倍于设置的最大突发长度。为了最大化读主控模块的效率,FIFO的深度至少设置为连接在数据主端口上所有存储器的最大读延迟的两倍。 |
Stride Addressing Enable1 |
On/Off |
如果希望读主控模块执行固定的或非连续的存储器访问,请启用跨越寻址。这个特性不支持在突发或者不对齐访问被启用的时候启用。 |
Stride Width1 |
1-16 |
跨越寻址以字为单位进行指定。下面列举了几个跨越寻址的例子: 0 – 读固定的地址 1 – 连续读寻址 2 – 隔一个字读一个字 跨越长度必须至少设置为: floor(log2(maximum stride)) + 1. |
Burst Enable |
On/Off |
当读主控模块连接到一个能进行突发操作的从端口时,启用突发支持。 |
Maximum Burst Count |
2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 |
最大突发数必须小于等于FIFO深度设置值的二分之一。 |
Programmable Burst Enable1 |
On/Off |
可编程突发允许用户设置基于描述符的突发数,如1、2、4、8、16、32、64或128。可编程设置的突发数小于等于最大突发数。 |
Force Burst Alignment Enable |
On/Off |
当连接读主控模块到一个突发封装从端口(如SDRAM)时必须启用本选项。这个设置将迫使主控模块发出单一的突发事务直到下一次突发边界已经达成,以避免存储器损坏。 |
1 模块化SGDMA的调度核必须启用扩展特性
存储器访问选项
表4:存储器访问选项
参数 |
合法值 |
描述 |
Full Word Accesses Only |
On/Off |
本选项启用时,必须提供一个对齐的读地址。同时传输数据长度必须是数据端口宽度的整数倍。这种存储器访问模式的好处是使用最少的硬件资源并获得最高的频率。 |
Aligned Accesses |
On/Off |
本选项启用时,必须提供一个对齐的读地址。可以提供任意的数据传输长度。 |
Unaligned Accesses |
On/Off |
本选项启用时,可以提供任意的读地址或提供任意的数据传输长度。这种存储器访问模式将导致最大的硬件资源消耗和最低的工作频率。 |
数据流选项
表5:数据流选项
参数 |
合法值 |
描述 |
Packet Support Enable |
On/Off |
本选项启用时,数据流端口将包含有包开始(SOP)、包结束(EOP)和空标识信号。 |
Error Enable |
On/Off |
本选项启用时,数据流端口将包含错误信号。 |
Error Width |
1-8 |
本设置将调整通道信号的宽度。通道信号的宽度必须至少设置为:floor(log2(maximum error)) + 1. |
附件为该IP的源代码
文章评论(0条评论)
登录后参与讨论