仅对英特尔可见 — GUID: nik1412467948258
Ixiasoft
3.2. Avalon® 存储器映射接口信号角色
此规范不要求所有信号存在于一个 Avalon® -MM接口中。也没有始终需要哪一个信号。对 Avalon® -MM接口的最低要求是只读接口需要使用readdata,或者只写接口需要使用writedata和write。
下表列出了 Avalon® -MM接口的信号角色:
信号角色(Signal Roles) | 宽度 | 方向 | 是否需要 | 描述 |
---|---|---|---|---|
基本信号 | ||||
address | 1 - 64 | Host → Agent | No | Hosts:默认情况下,address信号代表一个字节地址。地址的值必须与数据宽度对齐。要写入一个数据字中的特定字节,host必须使用byteenable信号。请参考addressUnits接口属性来了解字寻址。 Agents:默认情况下,互连(interconnect)将字节地址转换成agent的地址空间中的一个字地址。从agent的角度来看,每个agent访问都是针对一个数据字。 例如,address = 0选择agent的第一个字。address = 1选择agent的第二个字。请参考addressUnits接口属性来了解字节寻址。 |
byteenable byteenable_n |
2, 4, 8, 16, 32, 64, 128 | Host → Agent | No | 使能宽度大于8比特接口上的传输过程中一个或者多个特定字节通道。byteenable中的每个比特对应于writedata和readdata中的一个字节。byteenable的host bit <n>表明是否写入byte <n>。写操作期间,byteenables指定写入哪些字节。其他字节会被agent忽略。读操作期间,byteenables表明host读取哪些字节。仅返回readdata而无副作用的agent可以在读操作期间忽略byteenables。如果一个接口没有byteenable信号,那么传输继续,就像所有byteenables都被置位一样。 当置位byteenable信号的多个比特时,所有置位的数据通路都是相邻的。 |
debugaccess | 1 | Host → Agent | No | 置位时,允许 Nios® II处理器对配置成ROM的片上存储器进行写操作。 |
read read_n |
1 | Host → Agent | No | 置位后,表明一个read传输。如果存在,则需要readdata。 |
readdata | 8, 16, 32, 64, 128, 256, 512, 1024 | Agent → Host | No | readdata从agent驱动到host,以响应read传输。支持读操作的接口需要。 |
response [1:0] | 2 | Agent → Host | No | response信号是一个承载响应状态的可选信号。
注: 由于该信号是共享的,因此接口不能在同一时钟周期内发布或接受写响应和读响应。
对于读响应:
对于写响应:
|
write write_n |
1 | Host → Agent | No | 置位表明一个write传输。如果存在,则需要writedata。 |
writedata | 8, 16, 32, 64, 128, 256, 512, 1024 | Host → Agent | No | 写传输的数据。宽度必须与readdata的宽度相同(如果两者都存在)。支持写操作的接口需要。 |
等待状态信号(Wait-State Signals) | ||||
lock | 1 | Host → Agent | No | lock确保一旦host赢得仲裁,此host就会维持访问多个传输事务的agent。Lock恰好与事务的锁定序列中第一个read或write同时置位。Lock在事务的锁定序列中最后一个事务时解除置位。lock置位并不保证赢得仲裁。lock-asserting host被授予之后,此host保留授权,直到lock解除置位。 具备lock的host不能是一个突发host。已配备lock的host仲裁优先级值将被忽略。 lock对于read-modify-write (RMW)操作特别有用。典型的read-modify-write操作包括以下步骤:
lock阻止host B在Host A的读与写之间执行写操作。 |
waitrequest waitrequest_n |
1 | Agent → Host | No | 当agent无法响应read或者write请求时会置位waitrequest。强制host等待,直到互连(interconnect)准备好继续传输。在所有传输开始时,host启动传输并等待,直到waitrequest解除置位。host处于空闲状态时,不得对waitrequest的置位状态做出假设:waitrequest可能是高电平或者低电平,这取决于系统属性。 当waitrequest置位时,host对agent的控制信号必须保持不变,beginbursttransfer除外。关于说明beginbursttransfer信号的时序图,请参考Read Bursts(读突发)中的图示。 Avalon® 存储器映射agent可以在空闲周期内置位waitrequest。 Avalon® 存储器映射host可以在waitrequest置位时启动一个事务,并等待此信号解除置位。为避免系统锁定,agent器件在复位状态时会置位waitrequest。 |
流水线信号(Pipeline Signals) | ||||
readdatavalid readdatavalid_n |
1 | Agent → Host | No | 用于可变延迟,流水线化的read传输。置位时表明readdata信号包含有效数据。对于突发计数(burstcount)值为<n>的读突发,readdatavalid信号必须置位<n>次,每个readdata item一次。在read的接受与readdatavalid的置位之间必须至少有一个周期的延迟。关于显示readdatavalid信号的时序图,请参考Pipelined Read Transfer with Variable Latency(通过可变频率的流水线化读传输)。 agent可以通过置位readdatavalid将数据传输到host,而不用考虑agent是否使用了waitrequest停止新命令。 如果host支持流水线化读取(pipelined read),则需要此信号。具有读功能的突发host必须包含readdatavalid信号。 |
writeresponsevalid | 1 | Agent → Host | No | 可选信号。如果存在,那么接口发布写命令的写响应。 置位时,响应信号上的值是一个有效的写响应。 仅在写命令被接受后才置位Writeresponsevalid一个或多个时钟周期。从命令接受到writeresponsevalid置位之间至少有一个时钟周期的延迟。当突发的最后一个beat被发送到agent并且waitrequest为低电平时才认为写命令被接受。在发布突发的最后一个beat后,可置位writeresponsevalid一个或多个时钟周期。 |
突发信号(Burst Signals) | ||||
burstcount | 1 – 11 | Host → Agent | No | 突发host用以指示每个突发中的传输数量。burstcount参数的最大值必须是2的幂。一个宽度为<n>的burstcount接口能够解码一个尺寸为2(<n>-1)的最大突发。例如,一个4-bit burstcount信号能够支持的最大突发数为8。最小burstcount为1。constantBurstBehavior属性控制burstcount信号的时序。具有读功能的突发host必须包含readdatavalid信号。 对于使用字节地址的host和agent,对地址宽度有以下限制:
对于使用字地址的host和agent,上述方程中的log2 项被省略。 |
beginbursttransfer | 1 | Interconnect → Agent | No | 一个突发的第一个周期时置位,以指示一个突发传输的开始。此信号在一个周期后解除置位,无论waitrequest的值如何。有关说明beginbursttransfer的时序图,请参考Read Bursts(读突发)中的图。 beginbursttransfer是可选的。通过对数据传输的计数,agent总是能够在内部计算出下一个写突发事务的开始。
警告: do not使用此信号。此信号是为了支持传统存储控制器而存在。
|