ASIC设计中串行、并行和流水设计

在做ASIC设计方案的时候,当设计规格比如时延、吞吐率和面积定下来后,我们就得考虑逻辑采用串行还是并行方案。整体模块是否采用流水设计。

1.串行还是并行

串行设计的好处是可以复用逻辑,节省逻辑资源。缺点是,控制复杂,时延大。处理模型如下。我们可以看到如果data_in0~n都要做PROCSEE处理,那么我们在输入PROCESS前要做一个控制逻辑,把data_in0~n一个一个的送入PROCESS中

并行设计的好处是控制简单,时延小。缺点是,逻辑资源大。处理模块模型如下。我们可以看到对于data_in0~n,我们可以分别例化一套PROCESS。这其中的优缺一目了然,优点就是处理起来简单,缺点就是要花n倍串行的资源。这样和串行对比的条件是,我们的PROCESS逻辑单元的资源比较大。如果PROCESS资源比较小,采用串行处理反而复杂化了。

2.流水设计

对于流水这个词,虽然我们可能早就听说过,但是把这种思维用到自己所属的专业里面,还是需要实践的,初学者可能要花点时间去理解一些。流水最大的好处就是节省时间,提升效率。还可以解决一些综合时序问题。流水的模型如下所示。一个输入data_in经过PROC_1处理后送个PROC_2,PROC_2处理完后再送给PROC_3。经过这样一级级的处理,经过最后一级PROC_n处理后输出处理结果。

每一级之间的传递可以用1.握手实现,这样每级之间都存在反压。比如如果PROC_2级启动的条件是PROC_2本身要ready,它的上一级PROC_1要做完。

2.也可以用上一级给的开始信号起动,一级一级向下传。比如第1级做完了,会有结束信号,这个结束信号就是第二级的启动信号。用这种方式处理的前提是,后一级的处理速度不能慢于前一级。也就是说前一级启动下一级时候,必须保证下一级没有任务在处理,不然就会出错。

 

 

在流水设计中,要注意如果支持多任务流水,每一级在传递数据的同时也要把相关参数传递给下级。下图示意了3级流水工作的流程。

  1. 在t0时刻启动了任务0。
  2. 在t1时刻任务0的第一级处理结束,任务0传递给第二级,同时开始启动任务1。
  3. 在t2时刻任务1的第二级处理结束,把任务0传到第三级。这时刻之前任务1的第一级处理已完成,在等待第二级空闲,这时候第二级空闲了,第一级把任务1传到第二级。当第一级把任务1传到第二级,第一级空闲了,所以可以启动任务2。
  4. 在t3时刻,任务1的第二级处理完,所以任务2的第二级开始启动。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值