原创 FPGA/CPLD设计中的逻辑复制

2008-10-17 18:36 6683 12 12 分类: FPGA/CPLD

FPGA/CPLD设计中的逻辑复制<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 


    逻辑复制时一种通过增加面积而改善时序条件的优化手段。逻辑复制最常使用的场合时调整信号的扇出。如果某个信号需要驱动后级很多单元,换句话说,也就是其扇出非常大,那么为了增加这个信号的驱动能力,就必须插入很多级Buffer,这样就在一定程度上增加了这个信号的路径延时。这时可以复制生成这个信号的逻辑,用多路同频同相的信号驱动后续电路,使平均到每路的扇出变低,这样不需要插入Buffer就能满足驱动能力增加的要求,从而节约该信号的路径延时。


    先来做个实验吧:


    EX1:


input a,b,c,d;


input sel;


output dout;


assign dout = sel ? (a+b)c+d);


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


e3f2cc4e-bc55-45f4-8d3a-d14e1020dfda.jpg


    从综合出来的RTL视图来看,ADDER内部应该是使用了两个加法器,分别做好了(a+b)和(c+d)的运算,然后把结果送到后端21选择器的输入,所以此代码的设计时综合出了两个加法器和一个21选择器。


    EX2:


input a,b,c,d;


input sel;


output dout;


wire ab,cd;


assign ab = sel ? a:c;


assign cd = sel ? b:d;


assign dout = ab+cd;



022abf83-b4d1-4dd9-b1d0-bfed73c917af.jpg


    从这个视图看出,综合出来的斯两个21选择器和一个加法器。相比较两个不同的设计语法(其目的是一样的),EX1占用的资源多一些,但是速度快些;而EX2恰恰时相反。


    相对于EX2来说,我们似乎更倾向于这种设计方式,因为它节约资源。但是另一方面来说,EX1就是一种逻辑复制的设计方法,因为本来我们在这个设计中只要一个加法器就可以了(如EX2),但是为了加快速度,我们就需要逻辑复制这个设计方法(如EX1),这个实验中就是利用两个加法器,用增加面积为代价换来了速度。从另一个角度说,逻辑复制也可以说是面积换速度的一个特例。


    需要说明的时,现在很多综合工具都可以自动设置最大扇出值,如果某个信号的扇出值大于最大扇出值,则该信号将会自动被综合工具复制。


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
12
关闭 站长推荐上一条 /3 下一条