FPGA流水线

FPGA流水线

简单了解了一下流水线的概念,以下内容都是看了一些资料自己的理解,可能有些地方是不对的,有大佬看见了还希望能指导小弟一手,万分感谢。

在FPGA中,组合逻辑的反应时间看起来是很快的,但是即使反应速度再快,在输入和输出之间也是有时延的,如果一个组合逻辑很复杂,经过了很多很多的电路,这时候的输出和输入之间就会有比较长的时延。那在设计功能的时候,在写入数据和读取数据之间就不能隔的时间太短了,如果时间间隔太短的话,电路的输出还没有稳定,就会导致结果错误。这也就限制了系统的最高工作频率,也就是限制了数据输入和读取之间的时间,也就是影响了数据处理的效率,因为要按照时钟来读取和写入数据,这时候的时钟就不能太快了。

流水线的思想就是把一个复杂的电路分成先后不同的部分。假设一个很长的复杂逻辑电路一共要10秒才能出稳定的结果,那我只能隔10秒给他一个数,同时读出一个数,也就是时钟只能10秒一个周期。但是用流水线的想法拆分之后,可以把这一整个流程转换成5个小流程,一步一步进行计算,假设每个小步骤都要2秒就能出结果,这样我把第一个步骤的结果存起来然后交给第二个步骤,以此类推。这样我每隔2秒中就给他喂一个数据,虽然不会马上就出结果,甚至这些数据经过了存储之后需要的总的处理时间比10秒还要多,但是对系统总体来看,我之前最快只能10秒给他喂一个数据,但是现在我可以2秒就给他喂一个数据,因此系统整体的处理能力就变强了,速度也变快了。

对于单一的数据来说,因为要进行存储,理论上是经过了更加复杂的处理,可能时间的延迟会更高,但是流水线是要算总账的,如果需要处理的数据一个接一个有很多的话,把这些数据全都处理完,流水线的优势就显现出来了。

为了在仿真中把这个现象直观的表达出来,可以利用全加器进行试验,你要使用4位的全加器设计一个8位的全加器,而且有好多好多8位的数据需要处理,而且为了扩大时间的延迟,体现出流水线的优势,强制必须用时序逻辑,也就是每个4位全加器都得要一个时钟才能出结果。在模拟传统过程的时候,因为整个计算过程是一个整体,因此必须等最终结果输出了,下一个数据才能输入进去。

写了一个程序


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值