1.I/O方面的考虑
A.3.3/3.0/2.5V的普通I/O接口,如果接的外部信号是相同电压,就不用考虑太多。如果电压不同,就得仔细计算有没有问题。
B.引脚设置考虑。单端和差分信号的引脚必须保持一定的间隔。如果使用了参考电压的单端信号,也会有间隔上的要求。这是为了减少信号之间的干扰。QuartusII软件会检查引脚分配是否符合规则,如果不符合,设计是无法编译的。
如果实际信号是稳定的,没有翻转的(比如一直保持高或者低),可以通过assignments设置,避开规则检查。对某个单端引脚设置Toggle Rate assignments,可以去掉这个引脚和差分信号的间隔要求。Output Enable Group assignment这个设置,可以解决电压参考信号的间隔要求。
C.减少同时开关噪声(SSN)。方法:
1).把同时翻转的引脚分隔得远一些,放在2个不同的bank中更好
2)高速引脚,要远离VCC和GND,把静态和未使用的引脚靠近VCC和GND
3)对高速引脚设置slow slew rate和lower drive strength
4)做好匹配(termination,或者叫端接)
更详细的说明参考AN 508: Cyclone III Simultaneous Switching Noise (SSN) Design Guidelines.
D.未使用管脚的设置 。最好设置为输入。设置为输出,又接了外部电路,可能会导致芯片管脚损坏。
E.匹配方案。通常,信号的发送端使用串行匹配,接收端使用并行匹配。匹配电阻要符合传输阻抗。如果有可能,最好做板级的模拟来选择匹配电阻的大小。Cyclone III芯片有部分管脚可以设置片内串行匹配电阻OCT。
F.板级模拟。Altera提供芯片的IBIS和HSPICE模型,可以用来仿真。
2.供电考虑
A.供电电压包括
Vccint 内核电压,1.2V
Vccio I/O电压 ,每个bank可以不一样 。3.3V最常用。
Vcca PLL的模拟供电电压,2.5V 比Cyclone II芯片高
Vccd_pll PLL的数字供电电压,1.2V
Vref 电压参考信号的参考电压
建议使用linear regulator给Vcca供电,对其它数字电压,使用linear 或者 switching regulators。用linear regulator的噪声会好一些。
电源芯片和FPGA之间,需要串联磁珠(ferrite bead),电容一端接电源,一端接地。去耦的电路根据具体的设计要求决定。有钱就用钽电容(tantalumcapacitors)。
pcb设计,最好有专门的电源层。
B.PLL的供电。PLL包含模拟器件,因此有更严格的供电的要求。
1)到Vcca的电源走线要宽,20mil
2)Vccd的电源要干净
3)所有的pll供电脚都要连好,无论是否使用这个pll
4)使用独立的linear regulator对PLL供电
5)每个Vcca和Vccd都要去耦电路,Altera有参考设计
6)Gnda要连接到隔离的模拟地上。
3.器件上电
Cyclone III芯片支持热切换和上电复位,不需要额外的复位芯片。
下面是上电过程:
Cyclone III对于Vccint,Vccio等电压的上电顺序没有要求,只要是单调上升的就可以了。对上电时间,如果是正常的POR,<50ms即可。如果设置为快速POR,那么上电时间<3ms。
如果需要支持热插拔,需要考虑更多。
芯片的POR电路,会检测Vccint和Vcca的电压,如果低于阀值,会复位芯片。但不会检测Vccio电压。
总结一句,Cyclone III芯片的电源管理很好,省了很多外部芯片。
4.配置管脚连接
具体的配置电路,有参考设计。注意和Cyclone II有所不同,最好不要沿用老电路(似乎用老电路也可以跑^_^)。
这是常用的配置方式。其它配置方式的参考电路也都有,注意任何方式都得要按照参考电路来,不能想当然的连接。
5.配置的相关细节
用AS配置模式,bank1的Vccio必须为3.3V。
Cyclone III的DCLK为40MHz,EPCS器件中,EPCS16和EPCS64都能支持。但EPCS4器件有0.18和0.15两种工艺批次。前者只能支持20MHz,因此不能配合Cyclone III使用。
使用AP模式,需要P30和P33的flash。同样的,flash需要支持40MHz的DCLK。注意TSOP封装不支持这个速度,FBGA封装支持。
下图为配置芯片的选择