以下的内容介绍了接口信号的更多细节。
ready当接口支持反馈时,目标端口将ready信号置高提示ready周期开始,实际传
输数据的周期可能发生变化。
支持反馈的数据接口必须定义readyLatency参数,以便确
定:
当ready信号在<n>周期置高时,那么<N+readyLatency>周期时端口做好准备。
valid――在数据正在从源端口向目标端口传输的任何周期,valid信号表明了本周期数
据有效。
在所有形式的ST接口,valid信号都是必须的。
在每个valid信号有效的周期,目标端口会采样数据信号和其他源端口到目标端口的信号。
一个或者更多的符号被传输出去。
dataBitsPerSymbol参数定义了数据被分成几个符号。
errorError信号的每一个比特位对应一个可能的错误状态。
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)
634B47323116150
symbol0
symboll1
symbol2
symbol3
时序图见下图6.4。
图中对应的参数为dataBitsPerSymbol=8symbolsPerBeat=4。
图中,
D0是编号最高的符号,data[31]是这个符号的最高位。
图6.4大端格式的数据结构
6.5无反馈信号的数据传输
无反馈信号的数据传输是Aval。
n-ST数据传输的基础。
在任何的时钟周期,源端口驱动
data信号以及可选的channelerror信号,并拉高valid信号。
当valid信号为高时,目的端口在时钟上升沿采样data、channel、error信号。
图6.5显示了一个无反馈信号的数据传输的例子。
图6.5无反馈信号的数据传输
6.6带反馈信号的数据传输
目的端口在有效传输时拉高ready信号一个时钟周期,以提示源端口自己已经准备完成。
目的端口准备好数据传输的时钟周期称为ready周期。
在ready周期,源端口可能拉高valid
信号并发送数据到目的端口。
如果没有数据发送,源端口一直保持valid信号为低,此时data
信号可以为任意值。
支持反馈的ST接口定义了readyLatency参数,表明从ready信号有效到源端口可以发
送有效数据的延时周期数。
目的端口准备好数据传输的时钟周期称为ready周期。
如果一个
接口定义readyLatency为0,那么ready信号拉高的周期即为ready周期。
如果readyLatency不为0,当ready信号在<n>周期拉高,接口会认为<N+readyLatency>周期为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接口时序
观—LTLrLrLrLrLrLrLrLrLrLrLrLTLi
i&ady
图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时带反馈信号的数据传输
-TTTTTTTlJlTTJlTTTTTT-rLn
图6.9readyLatency为2时带反馈信号的数据传输
rLrLrLrLrLrLrLrLTLnj
6.7数据包传输
包传输属性增加了从源端口到目的端口传输数据包的支持。
增加定义的三个信号用于实
现包传输。
源端口和目的端口都必须增加这些信号。
当源端口和目的端口不同时支持包传输时,不能将两者直接相连。
图6.10Avalon-ST包传输信号
DataSink
DataSource
4
ready
valkj
k
data
error
>
channel
1
startofpacket
►
endofpacket
►
empty
6.7.1信号的具体细节
本节介绍了这三个信号的具体细节。
startofpacketstartofpacket在所有的支持包传输接口中都是必须的,以确定包头
数据传输的时钟周期。
该信号的值仅在valid信号拉高时有意义。
endofpacketendofpacket在所有的支持包传输接口中都是必须的,以确定包尾数
据传输的时钟周期。
该信号的值仅在valid信号拉高时有意义。
startofpacket和
endofpacket信号可能在同一时钟周期拉高。
当两次包传输之间没有空闲周期时,
startofpacket信号可以紧跟前一次包传输的endofpacket信号。
empty——empty为可选信号。
表明最后一个数据包发送的时,数据线上有效符号
的数目。
目的端口仅在endofpacket信号为高时检测empty信号值。
空符号总是数
据流的最后几个符号,即在低位数据线上传输。
当接口data信号宽度超过一个符
号的宽度时,有效的数据宽度是变化的,这样的接口是必须使用empty信号。
empty
信号的数据范围是Iog2(<每个时钟周期发送的符号数>)。
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包传输
1234567
咖-LrLTLrLrLrLrLrLi
ready