转自:
FPGA设计高手是怎么设计关键模块的
一般我们习惯于把HDL综合、仿真、然后选定合适的FPGA器件实现,系统能正常工作,也就OK了。对于想把FPGA做的更高深和细致,切实发挥FPGA效用的工程师来说,仅仅做到这些可能还不够,详细阅读了一些代码,也接触了一些通信类公司内做FPGA算法的高手后,认识到做FPGA设计的高境界是:他们理所当然的非常熟悉需要实现的算法,同时能详细理解器件结构,然后把对关键算法模块仔细的进行布线约束(Directed routing constraints),差不多就是手工走线了,这样设计的模块稳定、高效。在这些非常强壮关键模块的支持下,下一个高境界就是把整个系统做稳定了,如果前面说的是微观的,那么大规模设计的控制是另一个挑战,相对就是宏观的概念了,在这方面和软件系统工程有很多类似的地方。
另外,很多约束,比如多时钟路径约束,是在模块设计的时候提交的,因为只有具体的模块设计者最清楚什么路径需要做这些约束。不管是altera还是xilinx,那些phy层模块的设计中最能看出FPGA相关的设计的能力。
作为硬件描述语言的VHDL语言,不只是被注重其本身的运用,更多的是要理解它更深层次的含义。如果说能用它写出一个简单的逻辑来用FPGA硬件实现,但是却并不了解这段程序在FPGA内部实现的是怎样的一个硬件逻辑,尽管这个FPGA的输入管脚与输出管脚的逻辑关系满足了设计要求,但是FPGA芯片对于设计者来说却是一个黑箱。在超大规模的FPGA系统开发中,对于FPGA内部的硬件特性了解更是尤为重要,或许会碰到为什么用软件仿真时的时序都是正确的,但是配置到FPGA芯片之后却是有问题的呢,然而在超大规模FPGA的系统设计经验告诉我,熟知它的硬件特性对于解决这些“莫名其妙”的问题就不会让人焦头烂额了。如果说一个FPGA工程师不懂硬件(FPGA本身就是硬件),那么他也只能是一个“硬件工匠”,而不能成为一个“硬件工程师”。本课程不同于“通俗”课程那样只是讲讲程序和软件运用而已,因为我们是高级硬件工程师,结合超大规模的FPGA系统研发经验,结合具有代表性的工程设计着重讲解VHLD映射到FPGA内部的逻辑特性、时钟特性、同一逻辑功能在优化系统工作频率与优化资源的不同要求上的设计和优化方法。
作者:杨波,清华同方 研发部 项目主管;清华大学 国家关盘研究中心 光存储实验室 FPGA硬件总工程师。
说的好及了"FPGA芯片对于设计者来说却是一个黑箱",很多设计者都是如此,所以需要更详细的去了解FPGA细节
阅读(1732) | 评论(1) | 转发(0) |