假如说用一个词来描绘FPGA的特性,灵活性必定独占鳌头。
FPGA的灵活性在于:
(一)I/O的灵活性,其可以经过其I/O组成各种接口与各种器材衔接,而且支撑不同的电气特性。
(二)内部存储器灵活性,可以经过IP生成东西生成各种深度和宽度的RAM或许FIFO等。
(三)逻辑的灵活性,内部逻辑通可生成的各种类型IP。
关于I/O接口来说,FPGA的I/O可以支撑不同类型的电平缓驱动才干,各I/O未界说之前其方位相等,例如一个数据信号可将其束缚在恣意引脚,只需其电平契合衔接的标准。因而硬件工程师依据这种知道,在PCB布线时,依据布线需求,便调整其布线的次序,例如交换两个信号的方位。一般状况上,这种调整是没有任何问题的。可是跟着FPGA的接口IP核硬核化的趋势,逐步由许多的接口IP不能支撑这种调整。例如关于较早的SDRAM或许DDRSDRAM来说,在xilinx和ALTERA的FPGA上,其数据、地址信号等都是可调的。可是跟着DDR2,DDR3接口的呈现,其IP接口,只能支撑在某个BANK而且例化完毕后直接生成相应的束缚文件,而这些的改动将会导致布局布线的过错。另一些比如则是一些高速SERDES的组合。例如关于XAUI接口来说,其硬核IP(ALTERA)上就不支撑4组SERDES的次序交换,这将会影响其硬核FCS的编码。假如板级衔接上与PHY的次序与FPGA例化IP的束缚不共同,则其硬核PCS就不能布局布线经过(软核FCS可以支撑调整)。这种灵活性知道导致硬件板级互联的问题可谓层出不穷,特别是体系复杂度的上升,板级连线的添加,将会导致规划人员忽略然后掉入“灵活性的圈套”。处理此类问题的办法。包含(1)预评价,在规划之前就在FPGA上评价所需的接口的逻辑占用、束缚方位、时钟需求等等,预先评价给体系规划供给相应的数据支撑和规划参阅。(2)交流,关于规划的改变,要进行有用交流,不能使铁路差人,各管一段。(3)规划评定,尽管老套,但每个环节上的评定能有用削减掉入相似圈套的几率。
关于内部存储资源,大多数FPGA工程师便是拿来就用的状况。而短少全体内部memory规划,一般来说,关于单端口、双端口、假双端口,各型芯片手册中都有清晰的界说,例如xilinx的SPATAN3系列中最小RAM单元为18K。一个RAM例化最小单位便是18K。而新的器材中最小单位一般为9K。也便是说尽管工程师例化的较小的RAM,例如256*16.只要4K,可是其也占用一个最小单元,依据器材的不同而不同。而乱用双端口导致RAM资源的过火占用则是更常见的规划问题。FPGA内部关于单个RAM可以支撑的真双端口是有约束的。举例说明,关于ALTERA的9K的存储单元一般支撑512*18的双端口RAM。但假如是一个256*32的双端口则需求占用2个9K的存储RAM。也便是说,RAM器材的才干是有限的,这取决于RAM的外部互联线是有限的,以方才说的256*32的双端口RAM来说,其需求数据线便是64根(双端口),关于单个RAM的连线资源来说,这是FPGA内部逻辑资源难以承受的。所以依据器材特定,合理规划内部memory资源,才干在最大极限的到达高效的使用。
FPGA内部可以例化各型IP,依据IP的复用的可以大大添加研制的进展。可是各种IP的互联之间则需对IP的特性了解清楚,清晰IP是否为事务所需的IP。有的IP和工程所需或许仅仅称号共同,但其功用却不是你想要的。例如网口IP在MII衔接方法下,是用于FPGA衔接PHY的操作。假如FPGA与CPU经过MII衔接,现有的IP则难以满意需求。这是由于MII衔接PHY其所有的时钟都是PHY供给的。CPU的规划也是与PHY衔接,其时钟也有PHY供给。而假如二者衔接,就变成都等着对方供给时钟,则就变成没有时钟。这种调试问题相对来说简单处理,不过在体系规划是,就需求对整个IP是否可以满意体系的规划要求,有着清晰的判别。
灵活性是FPGA最大的特性,在规划中避开那些灵活性的圈套,才干从FPGA全体上提高规划才干,而不是做只会写Verilog的码农。究竟FPGA规划不是软件规划,其终究要成为变成硬件承载的,每一行句子都要考虑其归纳后的电路,才干真实体会FPGA规划的精华。