FPGA是一种可编程逻辑器件,这说明两点:FPGA可编程特性表明其灵活性,同时逻辑器件说明其是主要的功能是形成数字逻辑电路。早期的FPGA是用原理图方式进行设计,这种方式很直接,设计直接逻辑网表层面进行表达。这样的好处是设计者非常清楚设计的逻辑层次和甚至可以预测映射到FPGA资源后的情况。比如,简单的四输入与门,或者一个加法器。因为设计很清楚逻辑层次,这样就能用最好的算法结构和最适合FPGA资源的逻辑设计,让设计的逻辑能运行更高的速度,以及更少的资源使用。
现在FPGA设计往往使用抽象度更高的HDL。虽然这提高了设计效率,让层次更低的逻辑网表类似的东西交给综合器去处理,但这也导致初学者往往沉迷于HDL语法本身,而不注意语句与硬件之间的映射关系。这会导致代码层面上的不可控,从而导致FPGA资源使用效率低下,设计时序出现问题。这点比较像C语言描述的高效与汇编语言运行快速和节省存储空间的关系。而在设计FPGA这种与硬件和底层密切相关的可编程器件时,就特别需要注意语言与实际资源的关系。
一条HDL代码最先被综合器综合成标准逻辑网表,然后再映射到FPGA硬件资源上去,然后在一定规则和约束下进行布局布线到器件,最后生成FPGA配置文件。作为FPGA设计者,需要在编写HDL阶段就要考虑到代码的综合情况,以及与FPGA资源的映射关系,这样才能使设计更好地利用FPGA资源的一些特性,从而在时序和面积,甚至功耗上得到优化。因此进行FPGA设计时需要了解如下几点:
1.FPGA资源结构特性,包括其可编程逻辑块,全局时钟,IOB结构等等
2.综合器对HDL语言的综合情况
3.设计本身的速度与面积要求
文章评论(0条评论)
登录后参与讨论