本帖最后由 shiyinjita 于 2012-12-23 18:35 编辑
转眼间2012即将过去,在这一年中,由SPARTAN3平台转到了SPARTAN6平台,在这一年中就做了3个项目,比如PCI,PCIe,还有DDR2,项目虽然小,但是收获却是不小,在这里写一点自己的小小体会。
在SP6中的PCIe 和DDR2 都是硬核,都是有固定的位置,如果不按照它的手册进行,那么将会导致很惨的结果,我在调试DDR2的时候就深有体会,闲话少说,在这里简单的说一下我的综合体会,
下面是一个很简单的例子
module ctl(
input clk ,
input rst ,
input en ,
input black_up ,
output wire [7:0]addr_o
);
reg [7:0]addr ;
always @(posedge clk ,negedge rst )
begin
if (!rst)
addr <= #1 8'b0000_0000 ;
else if ( black_up )
addr <= #1 addr - 1'b1 ;
else if (en )
addr <= #1 addr + 1'b1 ;
end
assign addr_o = addr ;
endmodule
这个例子很简单,也就是很简单的加减法计数器,综合出来的结果大家也可以预料到,就是D锁存器,一般综合的时候大家会选择synplfy 或者ISE 自带的综合工具,在这里做了一下比较
下面是ISE 综合的结果
从这个图中可以看到综合结果,
而下图是sysplify中的综合结果
可以看到在Ise中,EN 和black_UP 综合出一个与非门,而sysplify中却是选择器的方式,如果在FPGA中,采用LUT的方式,这一点不会有任何影响,而在DFF中,却发现ISE中综合出来的不一样,在ISE中利用了CE引脚,而在syplify中没有利用,继续进行布局布线
下图为ISE的布局布线
下图为synplify的布局布线结果
从图中可以看到两者的布局布线都充分的利用了进位链
进一步看
ISE的
Synplify的
由以上两个图就能真正的比较出来ise充分了利用了CE这个时钟时能信号,而synplify没有利用这个信号
所以由上面得出结论,
如果想跑高速,那么可以选择synplify优先,
如果是低功耗,那么ISE的综合优先。
|