FPGA的时钟输入都有专用引脚,通过这些专用引脚输入的时钟信号,在FPGA内部可以很容易的连接到全局时钟网络上。所谓的全局时钟网络,是FPGA内部专门用于走一些有高扇出、低时延要求的信号,这样的资源相对有限,但是非常实用。FPGA的时钟和复位通常是需要走全局时钟网络的。如图3.17所示,这是Cyclone III器件的内部全局时钟网络的布局示意图。如果说一个城市当中的各种羊肠小道、普通马路是FPGA器件内部的一般布线资源,那么我们就可以认为FPGA内部的全局时钟网络就是高架路(高速公路)。图中我们也不难发现,除了FPGA外部的一些专用时钟引脚,PLL的输出以及FPGA内部的一些信号也都可以连接到FPGA的全局布线网络上。
图3.17 FPGA全局时钟网络
时钟和复位电路如图3.18所示。外部使用了25MHz的有源晶振,连接FPGA的专用时钟输入引脚,FPGA内部的PLL可以将外部时钟频率进行倍频或分频,甚至进行相位的调整。复位使用简单的RC电路,也是连接到FPGA的专用输入时钟引脚,走内部全局时钟网络。
图3.18 时钟和复位电路
前面我们提到过,FPGA上电复位时间需要大于FPGA器件启动后的配置加载时间,这样才能够确保FPGA运行后的复位初始化过程有效。因此,我们也可以来看看这个电路的设计是否满足实际要求。
如图3.19所示,这是器件手册中关于上电配置时间的计算公式。
图3.19 器件手册中AS配置时间计算公式的截图
如图3.20所示,我们所使用的EP3C器件的配置数据量为3,000,000bits。
图3.20 器件手册中配置数据存储量的截图
如图3.21所示,配置时钟的频率为20~40MHz,对应周期为25~50ns。
图3.21 器件手册中配置时钟频率的截图
有了这两个参数,我们便可以计算配置所需的时间,取最坏的情况,即配置时钟频率在最低情况下,配置所需时间为:3000000bits*(50ns/1bit) = 150ms。
如图3.22所示,这里标示了复位输入引脚作为3.3-V LVTTL标准电平的最低VOH电压值是1.7V,那么可以由此计算阻容复位电路从0V上升到1.7V所需的时间。
图3.22 器件手册中I/O电平标准的截图
设V0 为电容上的初始电压值;V1为电容最终可充到或放到的电压值;Vt 为t时刻电容上的电压值。则有公式t = RC*Ln[(V1-V0)/(V1-Vt)]。
求充电到1.7V的时间。将已知条件V0=0,V1=3.3V,Vt=1.7V代入上式得: 1.7=0+3.3*[[1-exp(-t/RC)],算得t = 0.7239RC。
代入R=47k ,C=10uf得t = 0.34s,即340ms。
由此我们验证了阻容复位的时间远大于FPGA器件的上电复位时间。当然了,这里没有考虑FPGA器件从上电到开始配置运行所需的电压上升时间,一般这个时间不会太长。所以我们的阻容复位肯定是有效的。如果需要实际的确认,还是要通过示波器设备来辅助观察实际信号的延时情况。