FPGA的硬件设计不同于DSP和ARM系统,比较灵活和自由。只要设计好专用管脚的电路,通用I/O的连接可以自己定义。因此,FPGA的电路设计中会有一些特殊的技巧可以参考。
2.3.1 管脚兼容性设计
前面的内容提到过,FPGA在芯片选项的时候要尽量选择兼容性好的封装。那么,在硬件电路设计时,就要考虑如何兼容多种芯片的问题。
例如,红色飓风II代-Altera的开发板就是兼容了EP1C6Q240和EP1C12Q240两个型号的FPGA。这两个芯片有12个I/O管脚定义是不同的。在EP1C6Q240芯片上,这12个I/O是通用I/O管脚,而在EP1C12Q240芯片上,它们是电源和地信号。
为了能保证两个芯片在相同的电路板上都能工作,我们就必须按照EP1C12Q240的要求来把对应管脚连接到电源和地平面。因为,通用的I/O可以连接到电源或者地信号,但是电源或者地信号却不能作为通用I/O。
在相同封装、兼容多个型号FPGA的设计中,一般的原则就是按照通用I/O数量少的芯片来设计电路。
2.3.2 根据电路布局来分配管脚功能
FPGA的通用I/O功能定义可以根据需要来指定。在电路图设计的流程中,如果能够根据PCB的布局来对应的调整原理图中FPGA的管脚定义,就可以让后期的布线工作更顺利。
例如,如图2.1所示,SDRAM芯片在FPGA的左侧。在FPGA的管脚分配的时候,应该把与SDRAM相关的信号安排在FPGA的左侧管脚上。这样,可以保证SDRAM信号的布线距离最短,实现最佳的信号完整性。
2.3.3 预留测试点
目前FPGA提供的I/O数量越来越多,除了能够满足设计需要的I/O外,还有一些剩余I/O没有定义。这些I/O可以作为预留的测试点来使用。
例如,在测试与FPGA相连的SDRAM工作时序状态的时候,直接用示波器测量SDRAM相关管脚会很困难。而且SDRAM工作频率较高,直接测量会引入额外的阻抗,影响SDRAM的正常工作。
如果FPGA有预留的测试点,那么可以将要测试的信号从FPGA内部指定到这些预留的测试点上。这样既能测试到这些信号的波形,又不会影响SDRAM的工作。
如果电路测试过程中发现需要飞线才能解决问题,那么这些预留的测试点还可以作为飞线的过渡点。