Avalon内存映射接口(Avalon-MM)

3.1 Avalon-MM介绍

可以使用Avalon-MM接口实现主从设备之间的读写接口,典型的设备如:

  1. 微处理器
  2. 内存
  3. UARTS
  4. DMAs
  5. Timers

Avalon-MM接口可以很简单,也可以很复杂,比如具有固定周期的读写传输的SRAM具有很简单的Avalon-MM,具有突发传输能力的流水线接口可能会是很复杂。

图5是个典型的系统,高亮显示一个连接到互联架构上的Avalon-MM从接口

Avalon内存映射接口(Avalon-MM)_第1张图片

Avalon-MM设备一般仅包括设备逻辑要求的信号。

图6为一个从设备的例子,16bit通用I/O设备,仅响应写请求,设备仅包括从设备写传输要求的从信号。

在Avalon-MM从设备中的每个信号对应充当一个Avalon-MM信号的作用,一个Avalon-MM接口仅能作为每个信号的一个实例。

3.2 Avalon-MM接口信号作用

3.3 接口属性

3.4 定时

3.5 传输

3.5.1 典型的读写传输

         从设备可以通过发出waitrequest信号,来延迟传输。

图7 带等待请求的读写传输

Avalon内存映射接口(Avalon-MM)_第2张图片

参照这个定时图:

  1. address,byteenable,read在clk的上升沿断言,从设备断言waitrequest阻塞传输
  2. waitrequest被采样,因为waitrequest被断言,于是进入等待周期,adrress、read、write和byteenable保持不变
  3. 从设备在clk的上升沿之后解除断言,从设备输出readdata和response
  4. 主设备采样readdata、response和失效的waitrequest信号,完成传输
  5. Address、writedata、byteenable和write信号在clk的上升沿后断言,从设备断言waitrequest以阻塞传输
  6. 从设备在clk上升沿后解除断言waitrequest
  7. 从设备捕获写数据结束传输

 

3.5.2 使用waitrequestAllowances属性的传输

WaitrequestAllowance属性是指定:在waitrequest信号断言之后,Avalon-MM Master能发布的或Avalon-MM必须接收的传输次数。

WaitrequestAllowance = 0,对应于前面说的典型的读写传输,在典型的读写传输时序中,waitrequest有效将停止当前的传输。

当waitrequestAllowance到达时,Master必须解除read或write信号。

3.5.2.1 waitrequestAllowances等于2

         图8:Master写:waitrequestAllowance = 2

Avalon内存映射接口(Avalon-MM)_第3张图片

  1. Avalon MM Master驱动write和data
  2. Avalon MM Slave断言waitrequest,因为waitrequestAllowance是2,所以,master能完成额外的2次数据传输
  3. 按要求,Master解除断言write,因为slave在第三个周期还在断言waitrequest。
  4. Avalon MM master驱动write和data,slave没有断言waitrequest,write完成
  5. Avalon master驱动write和data,尽管slave断言了waitrequest,因为waitreauestAllowance = 2,write完成
  6. Avalon master驱动write和data,slave没有断言waitrequest,write完成。

3.5.2.2 waitrequestAllowances等于1

         图9:Master write:waitrequestAllowance = 1

Avalon内存映射接口(Avalon-MM)_第4张图片

3.5.3 具有固定等待周期的读和写传输

使用readWaitTime和writeWaitTime属性,Slave能设定一个固定长度的等待状态,使用固定的等待周期,可以代替waitrequest信号的作用。地址和控制信号(byteenable、read、write)保持不变。

图11中,slave的writeWaitTime = 2,readWaitTime = 1

图11:slave接口具有固定等待状态的读写传输

Avalon内存映射接口(Avalon-MM)_第5张图片

  1. 在时钟的上升沿,master断言address和read
  2. 下个上升沿表示第一个时钟的结束,仅1个wait-state周期,readWaittime = 1
  3. Slave在时钟上升沿断言readdata和response,读传输结束
  4. Slave得到Writedata,address,byteenable和write信号
  5. 在2个等待周期后,写传输结束

3.5.4 流水线(Pipelined)传输

  1. Wait states:等待周期确定地址相位的长度,等待周期限制了一个端口的最大通过率,如果一个slave响应一个传输请求需要1个等待周期,每次传输端口需要2个时钟周期
  2. Pipeline Latency:流水线延迟确定数据何时返回,与地址相位没有关系

3.5.4.1 具有可变延迟的读传输

下面的图显示一些slave读传输,slave具有可变的latency,在这个图中,slave能接受的最大悬挂传输是2个,slave使用waitrequest来避免超过这个最大悬挂传输数。最大悬挂传输个数是slave的一个属性。

 

Avalon内存映射接口(Avalon-MM)_第6张图片

  1. master断言address和read,发起一次读传输
  2. slave捕获addr1
  3. slave捕获addr2
  4. slave断言waitrequest,阻塞第三个传输,因为slave已经接收到可最大悬挂的读操作个数(2)
  5. slave断言data1,响应addr1的操作,slave解除waitrequest
  6. slave捕获addr3,总线上捕获data1,
  7. slave捕获addr4,总线上捕获data2
  8. slave驱动redadatavalid和readdata以响应第三个读传输
  9. slave捕获addr5,总线捕获data3,read信号解除断言,waitrequest不再相关
  10. 互联捕获data4
  11. Slave驱动data5,断言readdatavalid,完成最后一个悬挂的都传输数据相位

3.5.4.2 具有固定延迟的读传输

图13 具有2个周期固定延迟的流水线读传输

Avalon内存映射接口(Avalon-MM)_第7张图片

  1. master通过断言read和addr1发起一次读传输
  2. slave断言waitrequest阻塞传输延缓一个周期
  3. slave在clk上升沿捕获addr1,地址相位在这儿结束
  4. slave在2个周期呈现readdata,结束传输
  5. addr2和read被断言,发起又一次读传输
  6. master在下个周期发起第三个读传输,这发生在前一次传输的数据被读出之前。

3.5.5 突发(Burst)传输

3.5.5.1 写burst

Avalon内存映射接口(Avalon-MM)_第8张图片

  1. master断言address,burstcount,write,输出第一个单元的writedata
  2. slave立即断言waitrequest,表示slave并没有准备这次传输
  3. waitrequest为低,slave捕获addr1,burstcount,以及第一个单元的writedata,随后的传输周期中,address和burstcount被忽略
  4. 在clk的上升沿,slave捕获第二个单元的data
  5. 当write失效时,burst暂停
  6. 在clk的上升沿,Slave捕获第三个单元的数据
  7. Slave断言waitrequest,作为响应,所有的输出保持不变直到下个时钟周期
  8. 在clk的上升沿,Slave捕获最后一个单元的数据,slaveburst写结束

在上图中,beginbursttransfer信号在burst的第一个时钟周期被断言,在下个时钟周期解除福安眼,即使slave断言了waitrequest,beginbursttransfer信号依然仅在第一个时钟周期断言

3.5.5.2 读burst

Avalon内存映射接口(Avalon-MM)_第9张图片

  1. 在clk的上升沿,Master A断言地址address(A0),burstcount和read,slave断言waitrequest阻塞传输,使得除了beginbursttransfer以外的信号都保持不变,直到下个周期
  2. 在clk的上升沿,Slave捕获A0和burstcount,新的传输能在下个周期启动
  3. Master B驱动address(A1),burstcount和read,slave断言waitrequest阻塞传输,使得除了beginbursttransfer以外的信号都保持不变,直到下个周期。在这个时候,最早,Slave能返回第一个读请求的读数据
  4. Salve呈现valid的readdata,并断言readdatavalid,传输第一个数据字给master A
  5. Master A的第二个字被传输,slave解除断言readdatavalid,暂停read burst,slave端口能保持readdatavalid无效,可持续任意个时钟周期
  6. Master B的第一个字被返回

 

 

 

你可能感兴趣的:(FPGA)