FPGA中的面积优化
一、优化的意义
面积优化,就是在实现预定功能的情况下,使用更小的面积。通过优化,可以使设计能够运行在资源较少的平台上,节约成本,也可以为其他设计提供面积资源。
二、操作符平衡
对于复杂逻辑操作,输入到输出的对称性越好,往往中间逻辑就越少,面积越小。一般优化中,可以将不关注中间信号的设计的逻辑优化掉,实现对称结构。
三、打破设计流水
流水设计可以提高时序余量,同样需要消耗面积资源。去除这些缓存器,降低设计的频率,即可实现面积的优化。
四、资源共享
(1)互斥操作的共享
对于不会同时出现的操作,其共用单元可以共享,方法有很多,简单的就是使用控制信号切换模块的工作模式。
(2)表达式共享
将可以写成一样结构的表达式用括号连接起来。
(3)逻辑功能模块共享
某些逻辑功能相同的模块,可以进行共享,但是控制逻辑可能会复杂一些。
五、复位对设计面积的影响
能不用复位最好不用,优先使用异步复位,其次使用同步复位。三者的资源消耗依次增加。
六、器件角度的面积节约
(1)使用原语设计
可以直接调用数字电路的结构,降低面积的使用率。
(2)使用触发器控制端口
某些复位信号可以作为输入来实现某些功能。
(3)多路选择器优化
每个LAB自带的信号有:时钟、时钟使能、异步清零、异步加载、同步清零、同步加载。
1️⃣时钟和时钟使能
时钟用于驱动LAB中的寄存器,时钟使能则是驱动数据。但是一般不要使用这些低扇出的信号,对LAB的使用率产生消极的影响。
2️⃣异步加载和异步清零
异步清零可以使用全局或者普通布线资源,二异步加载只能使用普通布线资源。两者同样控制LAB内部的寄存器。
3️⃣同步清零和加载
在LAB中,同步信号一般全局使用。
了解了LAB常用的信号,然后看一下多路选择器的实现:
①二进制多路选择器(case):二进制编码的选择器
②多路复用选择器(case 状态机 IF):采用独热编码的选择器
③带优先级多路选择器(IF):由比较器组成的选择器。
上面三种结构中,资源消耗依次增加。
如果想进一步缩小资源消耗,则可以使用LAB的全局资源实现选择。
七、小结
想要节约面积,就必须尽可能地利用资源。从简单的从大到小的顺序调整,到人为的共享,再到结构的改变,还有硬件结构资源的利用,都是在不断地提高资源使用频率。对于某些设计的资源紧张时,可以考虑这些方法进行设计简化。
======== ======\\ ======= -
|| || \\ // \\ /-\
|| || || // // \\
|| || // || // \\
====== ======= || === ========
|| || || \\ // \\
|| || \\ || // \\
|| || \\ // // \\
|| || ======= // \\
作者:绿叶落秋风,专注FPGA技术分析和分享,转载请注明原文链接:https://www.cnblogs.com/electricdream/p/13656200.html,文中资源链接如下:
1. GITHUB开源仓库