
如图1所示,Decoupled接口是一个与握手信号Valid和Ready有关的接口。Producer(生产者)驱动数据(bits)和Valid线,Consumer(消费者)驱动Ready线。当生产者产生的数据准备就绪时,生产者将Valid信号拉高。当消费者准备接收数据时,消费者把Ready信号拉高。如果Valid和Ready信号同时处在高电平时,生产者和消费者发生交火(fire)。
fire()方法是chisel里面包装好的一个方法。它的行为如下:
1)消费者(或者说接收者)必须在Valid和Ready信号同时为高电平的情况下读取Bits 线上的数据。
2) 生产者可以在下一个周期在Bits线上放新的数据。
3) 如果下一个周期Valid信号依旧为高,可以认为生产者产生了新的数据。
这一行为可对应如图2,和图3所示。

