您能否推荐一种将任何循环组合逻辑转换为非循环组合逻辑加锁存器的算法?谢谢
1 回答
2
这是一个相当开放的问题,在一般形式下可能是一个非常困难的问题。这更像是一个 CAD 问题,与 Verilog 关系不大。从循环组合逻辑图创建一个非循环组合逻辑图很容易:找到一个循环并通过插入一个锁存器来打破它。继续,直到没有剩余的循环。
但是,您还应该定义某种功能正确性和等效性,并在转换后保留它。通过向电路添加锁存器,您正在改变信号的相对时序(也称为同步距离),并且结果图可能在功能上与原始图不同。
一种称为重定时的经典算法试图移动已经存在的锁存器以满足/最小化时钟周期时间。
我认为保留同步距离的算法草图如下:n
在主输入处添加锁存器并运行增强的重定时算法,在该算法中添加额外的约束以保持等距离节点与主输入的同步距离。这些节点是组合门的输入和初级输出。例如,a and b
与门的两个输入的顺序距离应始终与所有主要输入保持相同,即在从每个输入i
到您的路径中,a
您应该看到与从i
到看到相同数量的锁存器b
。
通过这些添加的约束,重定时会告诉您它是否可以移动锁存器以满足时钟周期时间(在这种情况下,它可能是一个非常大的数字,即大于您的最长周期)。如果n
足够了,重定时算法应该能够把锁存器打破所有的周期。您可以在不同的值上迭代算法n
以获得答案。
于 2014-11-12T20:39:27.660 回答