gpt4 book ai didi

vhdl - 通过 VHDL 流水线同步信号的设计技巧

转载 作者:行者123 更新时间:2023-12-01 02:30:11 24 4
gpt4 key购买 nike

我正在用 VHDL 设计一个视频像素数据处理管道,它涉及多个步骤,包括乘法和除法。
我想保持信号同步,以便我可以例如保持同步信号并在流水线末端正确输出,以及经过多个处理阶段的操作像素数据。

我假设我想使用移位寄存器或其他东西将信号延迟正确的周期数,以便输出正确,但我正在寻找有关设计它的好方法的建议,特别是不同信号的流水线级数随着我对设计的改进,可能会有所不同。

最佳答案

好问题。

我不知道一个完整的解决方案,但这里有两个部分策略......

互连组件 ...如果一个组件可以导出一个其值是其管道深度的泛型,那将是非常好的。不幸的是你不能,并且为此专门提供一个端口似乎很愚蠢(尽管它可能是可行的;因为它是一个整数常量,它会在综合中消失)

如果做不到这一点,请传入一个通用的指示此模块的预算。在模块内部,如果无法满足预算,则断言 (severity FAILURE)...(此断言在合成时是可检查的,并且至少 Xilinx XST 可以处理类似的断言)

将预算设为硬数字,如果不等于实际管道深度则断言,或者如果预算太大,则在模块内添加管道阶段,仅在预算太小时时断言。

这样您就可以连接可预测的模块,并且顶层可以执行流水线算法来平衡事物(例如,将计算出的常数值传递给可编程延迟线)

在组件内 ...我使用单个进程,寄存器表示为内部信号,其名称反射(reflect)了它们的管道阶段,exponent_1, exponent_2, exponent_3等等。在流程中,第一部分描述了第一个周期的所有 Action ,第二部分描述了第二个周期,依此类推。通常,“更简单”的路径可以逐字复制到下一个管道阶段,只是为了将它们与关键路径同步。该过程相当有条理且易于维护。

我可能会将 32 位乘法分解为 16*16 的 block ,并将部分乘积添加流水线化。这给出的控制,用于给出比 XST 单独给出的更好的结果......

我知道有些人更喜欢流程中的变量,我将它们用于管道阶段的中间结果,但是使用信号我可以按自然顺序描述管道(感谢延迟分配),而使用变量,我必须描述它向后!

关于vhdl - 通过 VHDL 流水线同步信号的设计技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13626266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com