<?xml version="1.0" encoding="gbk"?> <rss version="2.0"><channel> <title>定阅帖子更新</title> <link>http://www.broadkey.com.cn/XML.ASP</link><description>TEAM Board - 意得法电子</description> <copyright>TEAM 2.0.5 Release</copyright><generator>TEAM Board by TEAM5.Cn Studio</generator> <ttl>30</ttl><item><link>http://www.broadkey.com.cn/Thread.asp?tid=109 </link><title>精简的FPGA编程方法&amp;nbsp;强烈推荐~~~~~~</title><author>julia</author><pubDate>2009-11-28 11:56:15</pubDate><description><![CDATA[引言<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;便携式、小型的仪表和设备是一个非常重要的应用领域，在未来一段时间内会有比较大的市场<br />
<br />
。而FPGA等现场可编程器件也是正在兴起与普及的一种器件，把FPGA更好地运用到上述仪表和设备中，<br />
<br />
可以减少这些仪器、设备的开发周期，大幅度提升这些仪器的性能，减少总成本和体积等。<br />
　<br />
　　在许多应用场合，如大型设备中的板卡，比较适合采用标准的FPGA编程电路。但是对于便携式设备<br />
<br />
的应用场合，采用标准电路联系FPGA与CPU需要消耗的资源太多。许多DSP芯片只有2个通用I/O引脚，所<br />
<br />
以如果能只使用1~2个引脚就完成FPGA编程功能，意义将非常重大。<br />
　<br />
　　本文提出一种精简的FPGA的编程电路，它只占用控制器的1~2条I/O控制线，其成本和功耗很低，很<br />
<br />
适合大规模地在便携式小型仪表产品中应用。<br />
　<br />
　　标准的FPGA编程电路以Xilinx的Spartan系列FPGA为例，图1是一个标准的编程电路。电路中控制器<br />
<br />
使用了4条控制信号线PROG，CLK，Data，DONE.首先Prog信号控制FPGA的初始化，一个Prog信号的低电平<br />
<br />
使FPGA进入编程状态，在编程过程及以后的运行过程中，Prog信号保持高电平；在编程过程中，Data信<br />
<br />
号与CLK信号配合，在每个Clk信号的上升沿，FPGA锁定/读取一个Data信号，如此循环，直到控制器将需<br />
<br />
要编程的程序全部送到FPGA中；当FPGA正确接收到编程程序以后，就会产生一个DONE信号，通知控制器<br />
<br />
一切完毕。<br />
　<br />
　　该电路是Xilinx公司推荐的一个FPGA的标准电路，对于许多常规应用场合，它还是比较合适的，但<br />
<br />
是对于手持式仪表等尺寸非常小的设备，由于控制器本身只有1~2个I/O控制线，而上述标准电路占用4个<br />
<br />
I/O口，就有可能无法应用。&lt;/P&gt;&lt;P&gt;精简的FPGA编程方法本文给出了一种精简的FPGA编程电路如图2所示<br />
<br />
。控制器的I/O控制信号线包括P/C和Data.P/C控制信号产生图2中所示的波形，经过Prog解码电路（如图<br />
<br />
4所示）得到Prog信号，经过CLK解码电路（在本例中也可以不经过），得到CLK信号，它们与Data一起组<br />
<br />
成完整的FPGA控制信号，完成对FPGA的编程控制。<br />
　<br />
　　该电路只使用2根I/O控制信号线，比标准编程电路要少，利用特殊控制信号的编码与解码，得到完<br />
<br />
成FPGA的编程工作。<br />
　<br />
　　更进一步，也可以只使用一个I/O控制信号线，如图3所示，使用Prog解码电路（如图4所示）、CLK<br />
<br />
解码电路和Data解码电路（如图5所示），得到FPGA编程所必须的Prog信号、CLK信号和Data信号。该方<br />
<br />
法比图2所示的电路所需要的控制线还要少。<br />
　<br />
　　本方法利用比标准FPGA编程电路更少的I/O控制线，经过解码电路的解码得到FPGA编程所需要的控制<br />
<br />
信号。对于不同公司的产品，本方法只要稍加变动就可以使用。&lt;/P&gt;&lt;P&gt;应用案例以Xilinx的Spartan&nbsp;II<br />
<br />
系列产品为例，图4为Prog控制信号解码电路，图5为Data信号解码电路。不妨假定CLK信号的周期为Tclk<br />
<br />
，Prog解码电路中的时间常数为tProg=R1*C1，Data解码电路的时间常数为tData=R2*C2.&nbsp;Prog控制信号<br />
<br />
解码电路的原理：&nbsp;P/C信号或P/C/D信号由Prog编码和CLK（Data）编码组成，其中Prog编码是一个周期<br />
<br />
比较长的高电平，见图4的t2-t0，它大于Prog解码电路的时间常数tProg，CLK（Data）编码是周期比较<br />
<br />
短的脉冲，小于解码电路的时间常数tProg，所以Prog信号可以被解码得到，而其他不相关信号则被过滤<br />
<br />
掉。一般可以选择Prog编码周期t2-t0&gt;5tProg，而CLK（Data）编码周期t3-t2&lt;1/5tProg.当FPGA编程结<br />
<br />
束以后，P/C信号，或者P/C/D信号应当立即复位，否则Prog会出现错误。<br />
　<br />
　　Data解码电路的原理可以分成Data=0和Data=1两种情况：Data=0时，当P/C/D信号的前一个数据的上<br />
<br />
升沿t5结束，并保持一段时间，到达t6后，继续保持高电平，经过大约tData（与先前状态有关），Data<br />
<br />
控制信号线就会出现低电平，即信号0，为了更加可靠，可以等一段时间，到达时刻t9时P/C/D信号再给<br />
<br />
出一个负脉冲用于锁定数据。当然负脉冲的宽度应当比较窄，否则Data信号会反转，通常负脉冲宽度<br />
<br />
t10-t9&lt;1/4tCLK.&nbsp;Data=1时，当P/C/D信号的前一个数据的上升沿t5结束，并保持一段时间，到达t6后，<br />
<br />
立即进入低电平，经过大约tData（与先前状态有关），Data控制信号线就会出现高电平，即信号1，为<br />
<br />
了更加可靠，可以等一段时间，到达时刻t10时，P/C/D信号再给出一个上升沿用于锁定数据。<br />
　<br />
　　这样Data信号也可以被正确地解码出来。在本例中CLK信号无须专门的解码电路，P/C/D信号可以直<br />
<br />
接作为CLK控制信号使用。<br />
本方法经过实验验证，其中R1=10KW，C1=0.1mF，&nbsp;R2=1KW，&nbsp;C2=0.01mF，D1为1N5817，U1/U2为74HC14.<br />
<br />
当然也可以根据需要进行调整。&lt;/P&gt;&lt;P&gt;结语FPGA是一种功能非常强大，非常灵活的器件，正在向各种中<br />
<br />
、高档的应用普及，采用本文提出的精简FPGA编程方法，节省了控制器的I/O线，克服了FPGA在便携式设<br />
<br />
备中应用的一个瓶颈。文中给出了其基本原理并通过了实验，具有一定的使用价值.<br />]]></description></item></channel></rss>