<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ATEGPU &#187; fpga</title>
	<atom:link href="http://www.ategpu.com/tag/fpga/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ategpu.com</link>
	<description>Embedded GPU With OpenGL ES API</description>
	<lastBuildDate>Thu, 24 Nov 2011 05:46:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>用Bresenham算法在FPGA上实现小数分频器</title>
		<link>http://www.ategpu.com/2009/09/17/%e7%94%a8bresenham%e7%ae%97%e6%b3%95%e5%9c%a8fpga%e4%b8%8a%e5%ae%9e%e7%8e%b0%e5%b0%8f%e6%95%b0%e5%88%86%e9%a2%91%e5%99%a8.html</link>
		<comments>http://www.ategpu.com/2009/09/17/%e7%94%a8bresenham%e7%ae%97%e6%b3%95%e5%9c%a8fpga%e4%b8%8a%e5%ae%9e%e7%8e%b0%e5%b0%8f%e6%95%b0%e5%88%86%e9%a2%91%e5%99%a8.html#comments</comments>
		<pubDate>Thu, 17 Sep 2009 14:02:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[Bresenham]]></category>
		<category><![CDATA[divider]]></category>
		<category><![CDATA[fpga]]></category>

		<guid isPermaLink="false">http://www.ategpu.com/?p=385</guid>
		<description><![CDATA[呵呵，人真的很奇妙，什么样的想法都有。
最近朋友问了一个问题，输入时钟是33MHz，要分出一路2.048MHz的时钟来，要求相位抖动尽可能小。我想到可以用计算机图形学中绘制直线的Bresenham算法来解决，获得成功。
输入时钟是33000kHz，输出时钟是2048kHz，好比从原点画一条到(33000,2048)的直线，用输入时钟驱动画笔在 x 方向的运动，那么对应的 y 方向的运动就是输出时钟。
Verilog代码如下：
module  divider(clk_in, clk_out, nrst);
  input  clk_in,  nrst;
  output clk_out;
  reg    clk_out;
  parameter input_freq = 33000;   // both in kHz
  parameter output_freq = 2048;
 
  reg[16:0] err;          // change to 18 bits if necessary, look down
 
  always @(posedge clk_in or negedge nrst)
  begin
    if (nrst == 1&#8242;b0) begin
      clk_out &#60;= 1&#8242;b0;
      err &#60;= [...]]]></description>
		<wfw:commentRss>http://www.ategpu.com/2009/09/17/%e7%94%a8bresenham%e7%ae%97%e6%b3%95%e5%9c%a8fpga%e4%b8%8a%e5%ae%9e%e7%8e%b0%e5%b0%8f%e6%95%b0%e5%88%86%e9%a2%91%e5%99%a8.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FPGA配置电路综述</title>
		<link>http://www.ategpu.com/2009/07/02/fpga%e9%85%8d%e7%bd%ae%e7%94%b5%e8%b7%af%e7%bb%bc%e8%bf%b0.html</link>
		<comments>http://www.ategpu.com/2009/07/02/fpga%e9%85%8d%e7%bd%ae%e7%94%b5%e8%b7%af%e7%bb%bc%e8%bf%b0.html#comments</comments>
		<pubDate>Thu, 02 Jul 2009 02:46:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[FPGA BOARD , Altera and Xilinx]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[fpga]]></category>
		<category><![CDATA[Xilinx]]></category>

		<guid isPermaLink="false">http://www.ategpu.com/2009/07/02/fpga%e9%85%8d%e7%bd%ae%e7%94%b5%e8%b7%af%e7%bb%bc%e8%bf%b0.html</guid>
		<description><![CDATA[






 
5.1.1 Xilinx FPGA配置电路综述 FPGA芯片是基于SRAM工艺的，不具备非易失特性，因此断电后将丢失内部逻辑配置。因此在每次上电后，都需要从外部非易失存储器中导入配置比特流。硬件配置是FPGA开发的最关键的一步，只有将HDL代码下载到FPGA芯片中，才能进而调试并最终实现相应的功能。完成FPGA配置，必须要有类似于单片机仿真器的下载电缆才能完成，典型的FPGA配置系统如图5-1所示。 
 图5-1 FPGA配置系统组成
 在FPGA配置系统中，编程软件由FPGA提供商提供，设计人员要掌握其操作方法；下载电缆是固定的JTAG电路，只要将其连接在PC上和目标板上即可；只有目标板上的配置电路需要设计人员设计。其中，JTAG链路是器件编程的关键传输枢纽。因此JTAG链路的工作原理、FPGA的各种配置电路以及编程软件的操作是本章的重点内容。 将配置数据从PC上加载到Xilinx FPGA芯片中的整个配置过程，可分为以下步骤： 1．初始化 统上电后，如果FPGA满足以下条件：Bank2 的I／O输出驱动电压Vcc0_2大于lv；器件内部的供电电压Vccint为2．5v，器件便会自动进行初始化。在系统上电的情况下，通过对PROG引脚置低电子，便可以对FPGA进行重新配置。初始化过程完成后，DONE信号将会变低。 2．清空配置存储器 在完成初始化过程后，器件会将INIT信号置低电平，同时开始清空配置存储器。在清空完配置存储器后，INIT信号将会重新被置为高电平。用户可以通过将PROG或INIT信号(1NIT为双向信号)置为低电平，从而达到延长清空配置存储器的时间，以确保存储器被清空的目的。 3．加载配置数据 配置存储器的清空完成后，器件对配置模式脚M2、N1、M0进行采样，以确定用何种方式来加载配置数据。 4．CRC错误检查 器件在加载配置数据的同时，会根据一定的算法产生一个CRC值，这个值将会和配置文件中内置的CRC值进行比较，如果两者不一致，则说明加载发生错误，INIT引脚将会被置低电平，加载过程被中断。此时若要进行重新配置，只需将PROG置为低电平即可。 5．START-UP START-UP阶段是FPGA由配置状态过渡到用户状态的过程。在START-UP完成后，FPGA便可实现用户编程的功能。在START-UP阶段中，FPGA会进行一下操作： &#60;1&#62; 将DONE信号置高电平，若DONE信号没有置高，则说明数据加载过程失败； &#60;2&#62; 在配置过程中，器件的所有I／O引脚均为三态，此时，全局三态信号GTS置低电平，这些I／O脚将会从三态切换到用户设置的状态； &#60;3&#62; 全局复位信号GSR置低电平，所有触发器进入工作状态； &#60;4&#62; 全局写允许信号GWE置低电平，所有内部RAM有效； 整个过程需要8个时钟周期C0-C7。在默认的情况下，这些操作都和配置时钟CCLK同步，在DONE信号置高电子之前，GTS，GSR，GWE都保持高电平。如果选用JTAG配置电路，则所有操作都和JTAG电路的TCK保持同步。 5.1.2 Xilinx FPGA常用的配置管脚 对于FPGA芯片而言，无论何种配置方式，都必须通过FPGA相应的管脚把设计加载到FPGA芯片中。和配置有关的管脚可以分为专用管脚和复用管脚两类，前者只能用于FPGA配置，后者在配置过程结束后，还可当作普通I/O使用。 专用的配置引脚有：配置模式脚M2、M1、M0；配置时钟CCLK；配置逻辑异步复位PROG，启动控制DONE及边界扫描TDI，TDO，TMS，TCK。非专用配置引脚有Din，D0：D7，CS，WRITE，BUSY，INIT。当然，部分专业配置管脚在配置结束后也可作为普通管脚使用。例如，在Spartan-3E系列FPGA中，3个FPGA管脚M2、M1和M0用于选择配置模式，其配置说明如表M所式，M[2:0]的值在INIT_B输出变高后才有效。在FPGA配置完成后，M[2:0]可以作为普通IO使用。 
表M Spartan 3E配置模式选择以及特性综述 

 5.1.3 Xilinx FPGA配置电路分类 FPGA配置方式灵活多样，根据芯片是否能够自己主动加载配置数据分为主模式和从模式。典型的主模式都是加载片外非易失（断电不丢数据）性存储器中的配置比特流，配置所需的时钟信号（称为CCLK）由FPGA内部产生，且FPGA控制整个配置过程。从模式也被称为下载模式，需要外部的主智能终端（如处理器、微控制器或者DSP等）将数据下载到FPGA中，其最大的优点就是FPGA的配置数据可以放在系统的任何存储部位，包括：Flash、硬盘、网络，甚至在其余处理器的运行代码中。此外，目前Xilinx已推出基于Internet的可重构逻辑技术System ACE。 1．主模式 在主模式下，FPGA上电后，自动将配置数据从相应的外存储器读入到SRAM中，实现内部结构映射；主模式根据比特流的位宽又可以分为：串行模式（单比特流）和并行模式（字节宽度比特流）两大类。如：主串行模式、主SPI Flash串行模式、内部主SPI Flash串行模式、主BPI并行模式以及主并行模式，如图5-2所示。 2．从模式 在从模式下，FPGA作为从属器件，由相应的控制电路或微处理器提供配置所需的时序，实现配置数据的下载。从模式也根据比特流的位宽不同分为串、并模式两类，具体包括：从串行模式、JTAG模式和从并行模式三大类，其概要说明如图5-3所示。 3． JTAG模式 在JTAG模式中，PC和FPGA通信的时钟为JTAG接口的TCLK，数据直接从TDI进入FPGA，完成相应功能的配置。 目前，主流的FPGA芯片都支持各类常用的主、从配置模式以及JTAG，以减少配置电路失配性对整体系统的影响。在主配置模式中，FPGA自己产生时钟，并从外部存储器中加载配置数据，其位宽可以为单比特或者字节；在从模式中，外部的处理器通过同步串行接口，按照比特或字节宽度将配置数据送入FPGA芯片。此外，多片FPGA可以通过JTAG菊花链的形式共享同一块外部存储器，同样一片/多片FPGA也可以从多片外部存储器中读取配置数据以及用户自定义数据。 [...]]]></description>
		<wfw:commentRss>http://www.ategpu.com/2009/07/02/fpga%e9%85%8d%e7%bd%ae%e7%94%b5%e8%b7%af%e7%bb%bc%e8%bf%b0.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nes games</title>
		<link>http://www.ategpu.com/2009/05/30/nes-games.html</link>
		<comments>http://www.ategpu.com/2009/05/30/nes-games.html#comments</comments>
		<pubDate>Fri, 29 May 2009 16:27:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[NES GAMES]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[fpga]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[sd card]]></category>

		<guid isPermaLink="false">http://www.ategpu.com/?p=59</guid>
		<description><![CDATA[红白机，小时候的最喜欢玩的游戏机。目前想实现一款可以运行nes游戏的CPU核，能实现从SD卡直接装载游戏ROM，呵呵，这个挺好玩的。目前已经完成初步的资料收集，等后面有空就可以测试了。还得买两个游戏手柄。
]]></description>
		<wfw:commentRss>http://www.ategpu.com/2009/05/30/nes-games.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Embedded GPU with OpenGL ES AP&#8230;</title>
		<link>http://www.ategpu.com/2009/05/30/embedded-gpu-with-opengl-es-ap.html</link>
		<comments>http://www.ategpu.com/2009/05/30/embedded-gpu-with-opengl-es-ap.html#comments</comments>
		<pubDate>Fri, 29 May 2009 16:02:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[32bits Embedded Processor]]></category>
		<category><![CDATA[8bits or 16bits MCU]]></category>
		<category><![CDATA[Embedded GPU]]></category>
		<category><![CDATA[fpga]]></category>
		<category><![CDATA[nes]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[OpenGL ES]]></category>
		<category><![CDATA[SoC]]></category>

		<guid isPermaLink="false">http://www.ategpu.com/2009/05/30/embedded-gpu-with-opengl-es-ap/</guid>
		<description><![CDATA[Embedded GPU with OpenGL ES API. http://www.ategpu.com
]]></description>
		<wfw:commentRss>http://www.ategpu.com/2009/05/30/embedded-gpu-with-opengl-es-ap.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

