verilog流水线的实现流程,详解!!谢谢

verilog流水线的实现流程,详解!!谢谢,第1张

流水线处理是高速设计中的一个常用设计手段。如果某个设计的处理流程分为若干步骤,而且整个数据处理是 “ 单流向 ” 的,即没有反馈或者迭代运算,前一个步骤的输出是下一个步骤的输入,则可以考虑采用流水线设计方法来提高系统的工作频率。

流水线设计的结构示意图如上图 所示。其基本结构为:将适当划分的 n个 *** 作步骤单流向串联起来。流水线 *** 作的最大特点和要求是,数据流在各个步骤的处理从时间上看是连续的,如果将每个 *** 作步骤简化假设为通过一个 D触发器 ( 就是用寄存器打一个节拍 ) ,那么流水线 *** 作就类似一个移位寄存器组,数据流依次流经 D触发器,完成每个步骤的 *** 作。流水线设计时序如下图所示。

流水线设计的一个关键在于整个设计时序的合理安排,要求每个 *** 作步骤的划分合理。如果前级 *** 作时间恰好等于后级的 *** 作时间,设计最为简单,前级的输出直接汇入后级的输入即可;如果前级 *** 作时间大于后级的 *** 作时间,则需要对前级的输出数据适当缓存才能汇入到后级输入端;如果前级 *** 作时间恰好小于后级的 *** 作时间,则必须通过复制逻辑,将数据流分流,或者在前级对数据采用存储、后处理方式,否则会造成后级数据溢出。

流水线设计就是用时间换取资源的一种方法吧。比如你要对一个信号做高阶数的FIR滤波器,这种处理需要在两个数据之间进行大量的乘累加 *** 作,这时候就设计到你的时钟够不够高,高到你足以在这么短的数据间隔内处理完所有的 *** 作。

如果时间不够充裕,那可能就需要并行 *** 作,需要很多个乘法器同时进行来缩短计算需要的时钟数,但是如果你的时间足够充裕,那么就完全可以采用串行的计算方法来减少硬件资源的消耗。我们都知道乘法器的资源是很紧俏的。换句话就是一个乘法器使用多次

我个人认为这不是规定了个运行顺序什么的,而是你要转变你的考虑问题的方式,verilog是硬件需要,硬件的运行方式不是一条一条的执行的,而是并行的。你可以参考一下数电,从具体电路入手就好理解了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11662499.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存