首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FPGA开发之控制集control sets

FPGA开发之控制集control sets

控制集就是对一个寄存器的所有控制信号(复位,置位,使能,时钟信号)的一个集合。对于一个Slice的控制必须在同一个控制集下面。
Xilinx推荐:在设计中要尽可能多的共享寄存器的控制信号。
1、逻辑包装(logic packing):将可以集成在一个slice的逻辑放在slice里面,这个技术也叫做逻辑分组。(related packing)
2、LUT组合(LUT combining):可以利用综合进程的“LUT combining”特性,LUT可以减少设计总的LUT的使用,但是对时序会有负面的影响。这时候是共享输入信号,所以可以用一个LUT来做两个LUT才能实现的事情。
3、SRL组合(SRL combining):具有两个SRL16带有公共输入的总线利用两个SRL16可以用一个公用输入代替,就得到了以下的slice。
4、精简控制集(reduced control sets):如果控制集不同,那么就不能包装进入一个slice,所以控制集数量不能太多,不然就导致FPGA资源浪费了。使用综合工具中的“reduced control sets“就可以设置这个特性。slice包装后一般是在前面加上门控制。
IOB寄存器的使用:采集片外数据和时钟的最快方法。一般设计只有在满足I/O的时序的是才使用IOB寄存器。最好的话是根据时序约束把寄存器放入IOB中,否则,在综合工具中禁止使用全局I/O寄存器;在布局工具中禁止将寄存器步入IOB;通过XDC或tcl,命令选择性将寄存器步入IOB。
Block RAM:避免使用read before write模式,为的是获得最快的block RAM性能。可以用综合工具插入旁路逻辑来避免RTL和硬件行为的不匹配。当读和写同时出现的时候可以使用属性attribute syn _ramstyle of mem : signal is "no_rw_check";
BUGCE或BUFHCE:在进行时序设计的时候,使用全局时钟使能缓冲器可以门控整个时钟域,以达到降低功耗的目的!!!!!!
附:
之前看别人写的verilog,有看到复位或置位低电平有效,也有高电平。我当时觉得都一样,后来发现使用高电平有效才是更好地选择。使用低电平很多坏处:比如更低的资源利用率,更长的综合和更差的时序和功耗标准。低电平有效会消耗更多的LUT。

一般设计都采用同步/复位信号:使用XST的选项Use Synchronous Reset来设置是否进行同步优化设计。采用同步可以大大提高可靠性,不需要做特别的时序约束,避免了竞争冒险。但是没有免费的午餐,采用了同步时序电路需要进行更多的时序分析!!!!!!而且会使得综合采用逻辑复制的方法满足时序要求!!!!!
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表