关于FPGA的功耗优化,笔者曾经在一个项目上做过深入的比对实践。近期在Xilinx官网搜到这篇文章,有种醍醐灌顶、相见恨晚的感觉。这篇文章的原创应该是来自科通的FAE技术分享集,值得大家好好研读一番。
AMD -Xilinx FPGA功耗优化设计简介
重要的事情说三遍,文章里面说一遍,笔者接下来将会结合自身的设计经验和体会再说一遍,读后也请大家默默回味一遍。若能牢记在心,相信这些要点将来一定能够成为指导大家设计的一些基本原则。
● 仔细检查一下设计中的PLL,是不是可以把两个PLL整合为一个;或者是否可以对时钟频率做一些“整合”,尽量减少时钟频率数量,从而省去一个PLL。如果可以,恭喜你,你将收获的是几十mW的功耗降低,这个数值很可能是整个功耗优化项目中的top1。
● 尽可能降低FPGA资源的使用,这句话只能在优化功耗的时候说,因为从整个设计角度看,“速度”和“资源”有时是跷跷板的两端,必须在它们之间做出权衡。或者换句话说,在满足“速度”性能要求的情况下,尽可能减少“资源”的消耗。一种看似行之有效的方法,就是在产品应用允许的情况下,让FPGA器件的加载者在多个不同的比特流之间切换,这样就能做到在单独运行某个功能时,其它功能不会白白消耗任何的静态功耗。这也可能会带来一点麻烦,需要设计者为一个设计维护多个工程,并且最重要的是,产品应用以及存在一个合适的FPGA加载者支持这么干。
● 接着上面的点,如果要在片内存储器和逻辑资源之间做选择,尽量减少片内存储器的使用,原因很简单,片内存储器相比逻辑资源更耗电。
● 使用门控时钟或片选信号(存储器的CE信号),在非运行时间关闭时钟或逻辑(存储器),从而降低不必要的动态功耗。
FPGA内部的功耗优化,其实就如同水龙头,要么减少开启时间,要么尽可能调小流量。很多时候很难像去掉一个PLL那样有立竿见影的效果,大多数的优化尝试可能收获的都是杯水车薪,但是积少成多,一点一滴也可能省出一个可观的百分比。有很多细节的优化,也并不是笔者可以一一娓娓道来的,只有工程师结合自身具体的工程应用,耐心细致的进行不断尝试和比对测试,才可以做到设计功耗的最优化。
全部0条评论
快来发表一下你的评论吧 !