Avalon-MM接口
Avalon-MM接口介绍
您可以使用Avalon内存映射(Avalon-MM)接口为主组件(components)和从属组件实现读写接口。
先给出一个Avalon接口的典型系统,显示了Avalon-MM slave 接口的连接:
Avalon-MM组件通常仅包含组件逻辑所需的信号。
下图所示的16位通用I / O外设仅响应写请求。该组件仅包括写传输所需的从信号。
Avalon-MM从站中的每个信号都恰好对应一个Avalon-MM信号角色。
Avalon-MM接口信号描述
信号角色定义了Avalon-MM主端口和从端口允许的信号类型。本规范并不要求Avalon-MM接口中存在所有信号。始终没有一个信号是必需的。 Avalon-MM接口的最低要求是read-only接口的readdata,或write-only接口中的writedata和write。
下面是一些接口角色的信息,重点关注方向以及功能:
注:一些信号可以是高有效也可以是低有效,在命名上会有标识,如果是低有效,则存在后缀-n
adress
方向
Master -> Slave
描述
该信号宽度从1到64之间;
Master:默认情况下,地址信号表示一个字节地址。地址值必须与数据宽度对齐。为了写入数据字中的特定字节,主机必须使用byteenable信号。
Slave:默认情况下,互连结构(interconnect)将字节地址转换为Slave地址空间中的字地址。从Slave的角度来看,每个Slave访问都是一个数据字。例如,address = 0选择Slave的第一个字。 address = 1选择Slave的第二个字。
byteenable or byteenable_n
方向
Master -> Slave
描述
byteenable信号的位宽可以是2,4,8,16,32,64,以及128位。
在宽度大于8位的数据接口上进行传输时启用一个或多个特定字节通道。 byteenable中的每个位对应于writedata和readdata中的一个字节。byteenable信号中的第n个bit指示数据中的第n个字节是否正在被写或者被读。在写的过程中,byteenable指定要写入的字节,其他字节应该被Slave忽视;同理,在读的过程中,byteenable指定Master正在读哪个字节。
read or read_n
方向
Master -> Slave
描述
该信号位宽为1;
该信号如果存在,则必须与readdata同在;其有效,则表示正在进行读过程。(类似于读使能)
readdata
方向
Slave →Master
描述
该信号位宽可以为8, 16,32,64,128,256,512,1024;
对应于byteenable信号的位宽2,4,8,16,32,64,以及128位。
该信号响应read信号,与read信号同在,其作为对read信号的响应,从slave中返回读取的数据。
response
方向
Slave →Master
描述
该信号位宽为2位;
response信号是一个可选的信号,它携带响应状态。
其值的含义如下:
- 00: OKAY --表示对传输的成功响应;
- 01: RESERVED – 编码保留;
- 10: SLAVEERROR – 来自于终端Slave的一个错误。表明一个不成功的传输过程。
- 11: DECODEERROR – 表明尝试访问一个未定义的位置。
数据手册关于这部分描述为:
write or write_n
方向
Master →Slave
描述
该信号位宽为1,类似有上面的read;如果该信号为1,也即有效,则表明正在进行写传输过程,此信号与writedata同在。
writedata
方向
Master →Slave
描述
同理于readdata,该信号位宽可以为8, 16,32,64,128,256,512,1024;
如果存在readdata信号,则writedata信号的宽度必须与readdata一致;
该信号与write信号同在。
waitrequest or waitrequest_n
方向
Slave →Master
描述
该信号是Slave发出到Master的,表示当Slave无法响应Master的read或者write请求时,可以使该信号有效。强迫Master等待直到互联结构(Interconnect)准备好进行数据传输。在传输的开始,Master初始化传输并等待直到waitrequest信号无效。
简单说来就是该信号有效的时候,即使read或者write信号有效,也要停止读或者写,等待该信号无效为止。
readdatavalid or readdatavalid_n
方向
Slave →Master
描