AvalonST总线规范文档格式.docx
《AvalonST总线规范文档格式.docx》由会员分享,可在线阅读,更多相关《AvalonST总线规范文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
流传输系统如图6.1所示。
包括Avalon-ST接口,用来从系统输入端接收数据并传输到输出端;
和Avalon-MM接口,用来允许软件控制其中的控制和状态寄存器。
⏹Avalon-ST流传输组件——典型的系统中,使用Avalon-ST接口连接的多个功能模块叫做组件。
设计者需要同时配置组件和接口,以完成一个系统。
⏹源端口、目标端口和连接——当两个组件连接时,数据从源端口流向目标端口。
源端口和目标端口的互连叫做连接。
⏹反馈——反馈是一种机制,目标端口可以发送信号,使得发送端口停止发送数据。
当目标组件的FIFO已经是满状态或者它的输出口被阻塞时,目标端口通常使用反馈信号停止数据流。
总线对反馈的支持是可选的。
⏹传输周期和准备周期——传输是从指数据和控制信号从源端口传到目标端口的操作。
对于数据接口来说,准备周期指目标端口等待的周期数,以保证可以接收传输。
⏹通道——通道指物理或者逻辑上的路径或者连接,信息由通道从一个端口到达另一个端口。
⏹数据包——数据包指一起发送的数据和控制信号的集合。
一个数据包可能包括一个包头,使得路由器或者其他的网络设备将数据包发送到正确的目标端。
本规范不定义数据包的格式,而是由应用程序定义。
Avalon-ST的数据包的长度可变,可以在多个通道间交错传输。
在Avalon-ST接口中,数据包的使用是可选的。
6.2Avalon-ST接口信号
在Avalon-ST总线的源端口和目标端口的每个接口信号对应一个Avalon-ST的信号类型。
Avalon-ST的接口可能只包含一个实例模块的信号。
所有的Avalon-ST的信号类型在源端口和目标端口的含义都是相同的。
表6.1列出了构成一个Avalon-ST的数据接口的信号类型。
表6.1Avalon-ST接口信号
信号类型
宽度
方向
必须
描述
基本信号
ready
1
目标-源
否
高时,表明目标端口可以接收数据。
目标端口在周期<
n>
拉高ready信号,表示周期<
n+readyLatency>
为准备完成的周期。
在此期间,源端口可以使valid有效并传输数据。
源端口在没有ready信号输入时不能被反馈。
同样的,目标端口在没有ready信号输出时不能发送反馈。
valid
源-目标
valid信号置高表示源端到目的端的信号是有效的。
在vaild刚被置高后的准备周期,目的端采集数据总线和其他源端到目的端的信号,而在其他周期时候这些信号将会被忽略。
data
1-256
数据信号从源端口发送到目标端口,一般的数据包从通过data信号发送。
data信号的内容和格式将在后面的参数中定义。
channel
0-8
定义了本周期发送数据的通道数。
如果一个接口支持channle信号,则必须定义maxChannel参数。
error
1-255
二进制位组合的形式,用来标记本周期正在传输的数据中的的错误。
error中的单个位对应的错误由模块的errorDescriptor属性定义。
包传输信号
startofpacket
源端口置高表明数据包的开始
endofpacket
源端口置高表明数据包的结束
empty
数据包发送结束的周期指示本数据包中的空符号的数目。
在一次传输中如果只有一个符号,empty信号是无用的。
如果endofpacket没有置高,本信号无效。
6.2.1信号极性
表6.1所示的所有信号均为高电平有效。
6.2.2信号时序
本节介绍Avalon-ST信号时序等问题。
6.2.2.1同步接口
Avalon-ST连接的所有传输均在关联时钟的上升沿发生。
从源端口输出到目的端口的所有信号必须在时钟的上升沿从寄存器输出,包括data,channel和error信号。
输入到目的端口的信号不需要寄存器锁存。
在源端口寄存器输出信号保证了高频率的数据操作,同时消除了模块到模块的非反向逻辑寄存器。
6.2.2.2时钟使能
Avalon-ST组件通常不包括时钟使能输入,因为Avalon-ST本身的接口信号就可以决定本组件是否正在被使能。
配合Avalon-ST总线的组件可能包括一个供内部逻辑使用的时钟使能输入,但是必须小心设计,保证接口控制信号的时序仍然符合协议的要求。
6.3Avalon-ST接口属性
表6.2列出了构成Avalon-ST接口的特性。
表6.2Avalon-ST接口属性
属性名称
默认值
允许数值范围
dataBitsPerSymbol
8
1-512
定义了每一个符号包含的二进制位数。
例如,面向字节的接口有8位宽度的符号。
这个值不一定是2的整数幂。
readyLatency
定义了ready信号的有效/无效与准备好数据传输的时间关系,每个接口的设置都是独立的。
maxChannel
0-255
本接口支持的数据传输的最大通道数。
errorDescriptor
字符串列表
一个字符列表描述了错误和error信号的比特位的对应关系。
列表的长度必须和error信号比特位的数目一致,列表的第一个字符串对应的是error中的最高位。
例如,一个信号表中的单词的错误的描述有点错误关联的每个。
该信号的长度是错误的列表必须相同,因为在数位和第一个单词的列表中适用的最高位。
例如,"
crcoverflow"
表明error信号的bit[1]表明的是CRC错误,bit[0]表明的是溢出错误。
6.4基本数据传输
本节定义了从一个源端口到目标端口的数据传输。
在所有情况下,数据的源端口和目标端口都必须符合规范。
目标端口没有责任检测协议上的错误。
6.4.1信号的具体细节
本节介绍了数据传输必须遵守的基本Avalon-ST协议。
它突出了设计的灵活性,选择Avalon-ST,可以满足用户特定的需求。
图6.1显示了基本的Avalon-ST接口的信号。
如图所示,基本的Avalon-ST接口信号包括从valid,data,error和channel。
目标端口可以使用ready信号用于反馈。
图6.2标准的Avalon-ST接口信号
以下的内容介绍了接口信号的更多细节。
⏹ready——当接口支持反馈时,目标端口将ready信号置高提示ready周期开始,实际传输数据的周期可能发生变化。
支持反馈的数据接口必须定义readyLatency参数,以便确定:
当ready信号在<
周期置高时,那么<
N+readyLatency>
周期时端口做好准备。
⏹valid——在数据正在从源端口向目标端口传输的任何周期,valid信号表明了本周期数据有效。
在所有形式的ST接口,valid信号都是必须的。
在每个valid信号有效的周期,目标端口会采样数据信号和其他源端口到目标端口的信号。
⏹data——data信号一般用来传输由源端口到目的端口的大部分数据。
在每一个时钟周期,一个或者更多的符号被传输出去。
dataBitsPerSymbol参数定义了数据被分成几个符号。
⏹error——Error信号的每一个比特位对应一个可能的错误状态。
error为0时表明本周期的数据没有错误。
当出现错误时,本协议没有定义组件对这些错误的处理方法。
⏹channel——channel是源端口发向目标端口的可选信号,表明本次数据属于哪个通道。
对于一个给定的端口,channel的意义取决于应用程序:
一些应用程序使用channel作为端口号,而其他应用程序使用channel作为页编号或者时间码或时间编号。
源端口可能在一个活动周期内改变channel的值。
⏹接口如果使用channel信号,则必须定义maxChannel参数,以确定最大的通道数。
如果组件在运行时接口改变了channel值,maxChannel是接口支持的channel信号的最大值。
6.4.2数据结构
符号排列使用大端格式,即编号较大的符号排在最高位。
图6.3显示了一个64比特宽度的信号,此时对应参数为symbolsPerBeat=4dataBitsPerSymbol=16。
图6.3数据符号(DataSymbols)
时序图见下图6.4。
图中对应的参数为dataBitsPerSymbol=8symbolsPerBeat=4。
图中,D0是编号最高的符号,data[31]是这个符号的最高位。
图6.4大端格式的数据结构
6.5无反馈信号的数据传输
无反馈信号的数据传输是Avalon-ST数据传输的基础。
在任何的时钟周期,源端口驱动data信号以及可选的channelerror信号,并拉高valid信号。
当valid信号为高时,目的端口在时钟上升沿采样data、channel、error信号。
图6.5显示了一个无反馈信号的数据传输的例子。
图6.5无反馈信号的数据传输
6.6带反馈信号的数据传输
目的端口在有效传输时拉高ready信号一个时钟周期,以提示源端口自己已经准备完成。
目的端口准备好数据传输的时钟周期称为ready周期。
在ready周期,源端口可能拉高valid信号并发送数据到目的端口。
如果没有数据发送,源端口一直保持valid信号为低,此时data信号可以为任意值。
支持反馈的ST接口定义了readyLatency参数,表明从ready信号有效到源端口可以发送有效数据的延时周期数。
如果一个接口定义readyLatency为0,那么ready信号拉高的周期即为ready周期。
如果readyLatency不为0,当ready信号在<
周期拉高,接口会认为<
周期为ready周期。
任何包含ready信号并定义了readyLatency参数的ST接口模式都支持反馈传输。
当readyLatency为0时,数据只在ready信号和valid信号同时拉高时传输。
在这种操作模式下,在开始发送有效数据前,源端口不会接收到目标端口的ready信号。
目的端口可以接收数据时拉高ready,源端口等待ready信号为高时,发送数据并拉高valid信号。
源端口可以在任何时候改变发送的数据。
目的端口只能在ready信号和valid信号同时为高时捕捉数据的data信号。
当readyLatency参数大于等于1时,目的端口在自身准备好接收数据前拉高ready信号。
源端口可以在合适的时钟周期拉高valid以做出响应。
源端口可能在ready信号不为高时拉高valid。
图6.6显示了readyLatency为4时的Avalon-ST接口时序。
图6.6readyLatency为4时的Avalon-ST接口时序
图6.7显示了一个readyLatency=0时带反馈信号的数据传输。
源端口在周期1拉高valid信号并输出数据,虽然目的端口并没有准备好;
源端口等待到周期2时,目的端口拉高ready信号,此时没有发送新的数据;
在周期3,源端口发送数据,此时目的端口已经准备好接收数据,此时数据传输发生;
在周期4,目的端口拉高ready信号,但是源端口没有输出有效数据。
图6.7readyLatency为0时带反馈信号的数据传输
图6.8和6.9显示了readyLatency为1和2时,带反馈信号的数据传输。
在这两种情况下,ready信号在ready周期前拉高,同时源端口在1个或2个时钟周期后输出数据并拉高valid信号以响应目标端口。
当readyLatency为0时,如果没有ready信号,源端口必须置valid信号无效。
目标端口将在valid信号为高时捕捉信号,无论ready信号为何值。
图6.8readyLatency为1时带反馈信号的数据传输
图6.9readyLatency为2时带反馈信号的数据传输
6.7数据包传输
包传输属性增加了从源端口到目的端口传输数据包的支持。
增加定义的三个信号用于实现包传输。
源端口和目的端口都必须增加这些信号。
当源端口和目的端口不同时支持包传输时,不能将两者直接相连。
图6.10Avalon-ST包传输信号
6.7.1信号的具体细节
本节介绍了这三个信号的具体细节。
⏹startofpacket——startofpacket在所有的支持包传输接口中都是必须的,以确定包头数据传输的时钟周期。
该信号的值仅在valid信号拉高时有意义。
⏹endofpacket——endofpacket在所有的支持包传输接口中都是必须的,以确定包尾数据传输的时钟周期。
startofpacket和endofpacket信号可能在同一时钟周期拉高。
当两次包传输之间没有空闲周期时,startofpacket信号可以紧跟前一次包传输的endofpacket信号。
⏹empty——empty为可选信号。
表明最后一个数据包发送的时,数据线上有效符号的数目。
目的端口仅在endofpacket信号为高时检测empty信号值。
空符号总是数据流的最后几个符号,即在低位数据线上传输。
当接口data信号宽度超过一个符号的宽度时,有效的数据宽度是变化的,这样的接口是必须使用empty信号。
empty信号的数据范围是log2(<
每个时钟周期发送的符号数>
)。
6.7.2协议的细节
和“6.4节说明的基本数据传输”的通信协议相比,包传输遵循相同的协议,只是增加了startofpacket,endofpacket和empty信号。
图6.11显示了一次源端口到目的端口的一次包传输,共传输17字节,且readyLatency参数为0。
数据传输发生在第1,2,4,5,6周期,此时ready信号和valid信号均为高。
在周期1,startofpacket信号为高,最开始的4个字节被发送。
在周期6,endofpacket信号为高,empty信号值为3,表明发送包尾数据的4个符号中有3个为空符号。
因为Avalon-ST遵守大端格式,在周期6中,数据线的高位data[31:
24]上为有效信号。
图6.11包传输