SpinalHDL stream握手电路的寄存器打断

1. m2sPipe(data插入寄存器打断)

电路图:
在这里插入图片描述
时序图:
可以看到折叠气泡时如果流水线上正好有气泡,b.ready 为0 时 不会传导给 a.ready, 流水线继续。
但是如果不折叠气泡,b.ready为0时,不管流水线有没有气泡,都会传导给a.ready, 导致流水线要保持hold一拍。
在这里插入图片描述

{signal: [
    ["折叠气泡",
  {wave: 'P...................', name: 'clk'},
  {wave: '0.1.01...01....0....', name: 'a.valid[I]', node:'....a',},
  {wave: 'x.22x3.22x22222x....', name: 'a.data[I]',data:["a","b","c","d","e","f","g","h","i","g"]},
  {wave: '1.....01............', name: 'a.ready[O]', node:'......b...f',},{},
 
  {wave: '0..1.01...01....0...', name: 'b.valid[O]', node:'.....c',},
  {wave: 'x..22x3.22x22222x...', name: 'b.data[O]',data:["a","b","c","d","e","f","g","h","i","g"]},
  {wave: '1.....01..01........', name: 'b.ready[I]', node:'......d...e',}, {},
  ],
       ["不折叠气泡",
  {wave: '0.1.01...01.....0...', name: 'a.valid[I]', node:'....z',},
  {wave: 'x.22x3.22x2.2222x...', name: 'a.data[I]',data:["a","b","c","d","e","f","g","h","i","g"]},
  {wave: '1.....01..01........', name: 'a.ready[O]', node:'......x...y',},{},
  {wave: '0..1.01...0.1....0..', name: 'b.valid[O]', node:'.....g',},
  {wave: 'x..22x3.22x.22222x..', name: 'b.data[O]',data:["a","b","c","d","e","f","g","h","i","g"]},
  {wave: '1.....01..01........', name: 'b.ready[I]', node:'......h...i',}, 
        ],
],
  edge: ['a~>c ',"d->b","e=>f","i->n"]
}

2. s2mPipe(ready信号插入寄存器打断)

电路图:

时序图
在这里插入图片描述

{signal: [
  {wave: 'P........................', name: 'clk'},
  {wave: '0.1.............0.10.....', name: 'this.valid[I]'},
  {wave: 'x.22234.252...22x.2x.....', name: 'this.data[I]',data:["a","b","c","d","e","f","g","h","i","g"], node:'.....c',},
  {wave: '0.1...01..0..1..0.10.....', name: 'this.ready[O]', node:'......a',},{},
  {wave: '0.....10..1..0...........', name: 'TmplockValid'},
  {wave: 'z.....3z..5..z...........', name: 'TmplockData',data:["d","g","c",],node:'......d',},{},
  {wave: '0.1.............0.10.....', name: 'that.valid[O]'},
  {wave: 'x.2223.425...222x.2x.....', name: 'that.data[O]',data:["a","b","c","d","e","f","g","h","i","g"]},
  {wave: '0.1..01..0..1......0.....', name: 'that.ready[I]', node:'.....b',}, 

],
  edge: ['b~>a ready Delay',"c->d","h->m","i->n"]
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值