原创 【博客大赛】模块化SGDMA读主控核

2014-2-8 12:07 2839 12 12 分类: FPGA/CPLD 文集: PCIE

模块化SGDMA读主控核

翻译:王敏志

核概述

       SGDMA即离散集中直接存储器访问(scatter-gather direct memory access)的缩写,这里介绍的是模块化SGDMA的读主控模块,该模块负责从存储器中读出数据并将数据送到一个Avalon-ST端口(流端口)。读主控模块设计成可以连接到模块化SGDMA的调度核模块,但是你也可以连接到你自己设计的控制器上。读主控模块由ST命令端口和一些由ST响应端口发送过来的可选响应数据来控制。

    这里有各种不同的功能选项可以被使能添加到读主控模块,读主控模块支持以下一些选项:

  • 64-bit地址
  • 8到1024比特数据宽度
  • 最高支持4GB传输长度
  • 非对齐存储器访问
  • 突发处理
  • 跨越寻址
  • 支持ST包
  • 支持ST通道
  • 支持ST出错处理

结构框图

    图1显示了组成读主控模块的主要部件。

 

1.jpg

图1:模块化SGDMA读主控模块框图

读主控端口列表

    这节将要详细讨论下由模块SGDMA读主控核导出的Avalon-MM和Avalon-ST端口。当然,和调度核一样,有些被导出的信号可能并没有被调度核使用,这里列出只是为了完成存档记录。

读命令接收端口

表1:读命令接收端口各比特定义

 

比特

信号信息

31-0

Read Address [31:0]

63-32

Length [31:0]

71-64

Transmit Channel [7:0]

72

Generate SOP

73

Generate EOP

74

Stop1

75

Reset1

83-76

Read Burst Count [7:0]

99-84

Read Stride [15:0]

107-100

Transmit Error [7:0]

108

Early Done Enable

140-109

Read Address [63:32]

255-141

2

1 不遵守流控制的组合逻辑信号

2 保留位驱动到地

读响应源端口

表2:读响应源端口各比特定义

 

比特

信号信息

0

Reset Delayed1

1

Stop State1

2

Done Strobe 2

3

Early Done Strobe2

255-4

1 不遵守流控制的组合逻辑信号

2 当所有数据读完后被置位

数据主(master)端口

    数据主端口是负责从存储器中读取数据,然后读主控模块将读出的数据传递到数据接收(sink)端口。数据主端口支持流水线传输,而且支持有条件的突发传输。这些条件包括可配置的数据宽度、突发长度以及存储器对齐等。要了解更多有关配置选项,可参考后面的配置选项一节。

数据接收(sink)端口

       数据接收端口负责到写主控模块或者任何包含有流接收端口的组件。该端口支持包括包操作、通道和出错处理等。要了解更多关于配置选项的情况,请参考本文后面的配置选项一节。

配置选项

       模块化SGDMA有大量的配置选项来启用各种不同的功能单元。那些没用到的功能,可以通过配置来禁用,从而可以节省资源并提高读主控模块的频率。本节将要讨论读主控模块的各种配置选项。需要重点注意的是那些需要模块化SGDMA调度核启用扩展特性支持的选项。

传输选项

表3:传输选项

 

参数

合法值

描述

Data Width

8, 16, 32, 64, 128, 256, 512, 1024

主端口和流端口的数据位宽。

Length Width

10-32

传输数据的字节长度。

FIFO Depth

16, 32, 64, 128, 256, 512, 1024, 2048, 4096

FIFO的深度必须设置为至少两倍于设置的最大突发长度。为了最大化读主控模块的效率,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.

Channel Enable

On/Off

本选项启用时,数据流端口将包含通道信号。

Channel Width

1-8

本设置将调整通道信号的宽度。通道信号的宽度必须至少设置为:floor(log2(maximum channel)) + 1.

 

 

 

 

文章评论0条评论)

登录后参与讨论
我要评论
0
12
关闭 站长推荐上一条 /2 下一条