精简的FPGA编程方法
本文给出了一种精简的FPGA编程电路如图2所示。控制器的I/O控制信号线包括P/C和Data。P/C控制信号产生图2中所示的波形,经过Prog解码电路(如图4所示)得到Prog信号,经过CLK解码电路(在本例中也可以不经过),得到CLK信号,它们与Data一起组成完整的FPGA控制信号,完成对FPGA的编程控制。
该电路只使用2根I/O控制信号线,比标准编程电路要少,利用特殊控制信号的编码与解码,得到完成FPGA的编程工作。
更进一步,也可以只使用一个I/O控制信号线,如图3所示,使用Prog解码电路(如图4所示)、CLK解码电路和Data解码电路(如图5所示),得到FPGA编程所必须的Prog信号、CLK信号和Data信号。该方法比图2所示的电路所需要的控制线还要少。
本方法利用比标准FPGA编程电路更少的I/O控制线,经过解码电路的解码得到FPGA编程所需要的控制信号。对于不同公司的产品,本方法只要稍加变动就可以使用。
应用
以Xilinx的Spartan II系列产品为例,图4为Prog控制信号解码电路,图5为Data信号解码电路。不妨假定CLK信号的周期为Tclk,Prog解码电路中的时间常数为tProg=R1*C1,Data解码电路的时间常数为tData=R2*C2。
Prog控制信号解码电路的原理: P/C信号或P/C/D信号由Prog编码和CLK(Data)编码组成,其中Prog编码是一个周期比较长的高电平,见图4的t2-t0,它大于Prog解码电路的时间常数tProg,CLK(Data)编码是周期比较短的脉冲,小于解码电路的时间常数tProg,所以Prog信号可以被解码得到,而其他不相关信号则被过滤掉。一般可以选择Prog编码周期t2-t0>5tProg,而CLK(Data)编码周期t3-t2<1/5tProg。当FPGA编程结束以后,P/C信号,或者P/C/D信号应当立即复位,否则Prog会出现错误。
Data解码电路的原理可以分成Data=0和Data=1两种情况:
Data=0时,当P/C/D信号的前一个数据的上升沿t5结束,并保持一段时间,到达t6后,继续保持高电平,经过大约tData(与先前状态有关),Data控制信号线就会出现低电平,即信号0,为了更加可靠,可以等一段时间,到达时刻t9时P/C/D信号再给出一个负脉冲用于锁定数据。当然负脉冲的宽度应当比较窄,否则Data信号会反转,通常负脉冲宽度t10-t9<1/4tCLK。
Data=1时,当P/C/D信号的前一个数据的上升沿t5结束,并保持一段时间,到达t6后,立即进入低电平,经过大约tData(与先前状态有关),Data控制信号线就会出现高电平,即信号1,为了更加可靠,可以等一段时间,到达时刻t10时,P/C/D信号再给出一个上升沿用于锁定数据。
这样Data信号也可以被正确地解码出来。在本例中CLK信号无须专门的解码电路,P/C/D信号可以直接作为CLK控制信号使用。
本方法经过实验验证,其中R1=10KW,C1=0.1mF, R2=1KW, C2=0.01mF,D1为1N5817,U1/U2为74HC14。当然也可以根据需要进行调整。
结语
FPGA是一种功能非常强大,非常灵活的器件,正在向各种中、的应用普及,采用本文提出的精简FPGA编程方法,节省了控制器的I/O线,克服了FPGA在便携式设备中应用的一个瓶颈。文中给出了其基本原理并通过了实验,具有一定的使用价值。■
参考文献:
1 Mohan; Sundararajarao (Cupertino, CA),On-chip self-modification for PLDs . United States Patent 6,255,849 ,July 3, 2001.
2 Tan; Charles M. C. (Santa Clara, CA),Programmable gate array configuration memory which allows sharing with user memory ,United States Patent5,737,766,1998年4月7日.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。