<?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>Truly Integrated</title>
	<atom:link href="http://truly-integrated.net/en/feed/" rel="self" type="application/rss+xml" />
	<link>http://truly-integrated.net</link>
	<description>electronics microcontrollers fpga vhdl</description>
	<lastBuildDate>Fri, 19 Feb 2010 21:22:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>USBasp based AVR programmer</title>
		<link>http://truly-integrated.net/en/2009/12/usbasp/</link>
		<comments>http://truly-integrated.net/en/2009/12/usbasp/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 18:09:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Projekty]]></category>

		<guid isPermaLink="false">http://truly-integrated.net/?p=228</guid>
		<description><![CDATA[A week ago i&#8217;ve ended my work on a new project which is AVR programer, entirely based on USBasp project. This programmer is supported by almost any normal operating system. It&#8217;s main features are:

it does not require LPT port &#8211; and that makes it usable with any sort of laptop, not only the old ones, [...]]]></description>
			<content:encoded><![CDATA[<p>A week ago i&#8217;ve ended my work on a new project which is AVR programer, entirely based on <a title="usbasp" href="http://www.fischl.de/usbasp/">USBasp</a> project. This programmer is supported by almost any <em>normal</em> operating system. It&#8217;s main features are:</p>
<ul>
<li>it does not require LPT port &#8211; and that makes it usable with any sort of laptop, not only the old ones, that still have LPT,</li>
<li>firmware can be uploaded 10x faster than with LPT based programmers,</li>
<li>it is very small.</li>
</ul>
<p>The programmer works without any problems with famous <em>avrdude</em> software. It has three configuration jumpers. First one (pins 1-2) is used to configure programming speed. When connected, targets slower than 1.5 MHz can be programmed. Jumper number 2 (pins 3-4) is used for upgrading firmware of programmer itself. The last one (pins 5-6) is used to connect target to VCC taken directly from USB port. I&#8217;ve taken some photos of my device and posted it below.<br />
<a href="http://truly-integrated.net/wp-content/uploads/2009/12/usbasp3.jpg"><img class="alignleft size-thumbnail wp-image-233" title="usbasp3" src="http://truly-integrated.net/wp-content/uploads/2009/12/usbasp3-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://truly-integrated.net/wp-content/uploads/2009/12/usbasp4.jpg"><img class="alignleft size-thumbnail wp-image-234" title="usbasp4" src="http://truly-integrated.net/wp-content/uploads/2009/12/usbasp4-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://truly-integrated.net/wp-content/uploads/2009/12/usbasp5.jpg"><img class="alignleft size-thumbnail wp-image-235" title="usbasp5" src="http://truly-integrated.net/wp-content/uploads/2009/12/usbasp5-150x150.jpg" alt="" width="150" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://truly-integrated.net/en/2009/12/usbasp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VGA signal generator written in VHDL</title>
		<link>http://truly-integrated.net/en/2009/08/generator-sygnalow-vga-w-vhdl/</link>
		<comments>http://truly-integrated.net/en/2009/08/generator-sygnalow-vga-w-vhdl/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 11:01:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[FPGA]]></category>

		<guid isPermaLink="false">http://truly-integrated.net/?p=189</guid>
		<description><![CDATA[Today i&#8217;ve decided to post some information about making VGA signal generator, working in 640&#215;480@60Hz mode. With use of such generator man can develop simple display device that works with almost any type of monitor. I wouldn&#8217;t go so far to call it a video card, but it&#8217;s definetley some part of video card project.
Every [...]]]></description>
			<content:encoded><![CDATA[<p>Today i&#8217;ve decided to post some information about making VGA signal generator, working in 640&#215;480@60Hz mode. With use of such generator man can develop simple display device that works with almost any type of monitor. I wouldn&#8217;t go so far to call it a video card, but it&#8217;s definetley some part of video card project.</p>
<p>Every monitor (it does not matter if its LCD or an old CRT..) requires five signals to display things correctly. These are:</p>
<ul>
<li>R,G,B &#8211; 3 color lines</li>
<li>v_sync &#8211; vertical synchonization</li>
<li>h_sync &#8211; horizontal synchronization</li>
</ul>
<p>Those signals must satisfy timing norms, which are described in details on <a href="http://www.epanorama.net/documents/pc/vga_timing.html">this page</a>. Every single pixel is read from RGB lines at about 25MHz. Entire display area is 800&#215;525 in size, and within this area there is so called <em>active </em>area that represents things that we see on monitor. It has a size of 640&#215;480 px. The rest of the area is used for front and back porch and return. I&#8217;ll give some details of timing synchronization lines.</p>
<p>There are four stages of horizontal syncronization</p>
<ol>
<li>640px of active area (pixels are read from rgb lines and are displayed on monitor) (HD)</li>
<li>16px  of horizontal front porch. (HF)</li>
<li>96px of horizontal return (HR)</li>
<li>48px of horizontal back porch (HB)</li>
</ol>
<p>The sum of all 4 stages gives us 800 px. Horizontal sync signal should be driven to logical 0 during stage 3 and then should go high during stages 1,2 and 4.</p>
<p>Vertical sync is treated in simmilar manner.</p>
<ol>
<li>480 lines  of active area (VD)</li>
<li>10 lines of vertical front porch (VF)</li>
<li>33 lines of vertical back porch (VB)</li>
<li>2 lines of vertical return (VR)</li>
</ol>
<p>This gives us 525 lines when added together. Just like horizontal sync signal, this one should be low during stage 3 and high during any other stage. Now we go from theory to practice.</p>
<p>Firstly we should define VHDL entity. We already know that we require 5 output signals to drive monitor. Vertical sync signal is called <em>vs, </em>and horizontal sync is<em> hs. </em>We will generate three color signals (R,G,B) later.</p>
<div class="codesnip-container" >
<div class="vhdl codesnip" style="font-family:monospace;"><span class="kw1">entity</span> vga_640_gen <span class="kw1">is</span><br />
<span class="kw1">port</span> <span class="br0">&#40;</span> &nbsp;<span class="co1">&#8211; common signals</span><br />
clk, rst <span class="sy0">:</span> <span class="kw1">in</span> <span class="kw2">std_logic</span><span class="sy0">;</span><br />
<span class="co1">&#8211; vga signals</span><br />
pix_x, pix_y <span class="sy0">:</span> <span class="kw1">out</span> <span class="kw2">std_logic_vector</span><span class="br0">&#40;</span>9 <span class="kw1">downto</span> 0<span class="br0">&#41;</span><span class="sy0">;</span><br />
hs, vs, blank, pix_clk <span class="sy0">:</span> <span class="kw1">out</span> <span class="kw2">std_logic</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">end</span> vga_640_gen<span class="sy0">;</span></div>
</div>
<p>The purpose of signals: <em>clk </em>and <em>rst</em> is obvious. Clock source has a frequency of 50MHz. It will be devided per 2, to give us pixel clock of desired frequency equal to 25MHz, as mentrioned above. Ten bit signals <em>pix_x</em> and <em>pix_y </em>contain currently displayed pixel coordinates. Pixel (0,0) is the one in upper-left corner of display area. The <em>blank</em> signal is high when generator is not in active area.</p>
<p>Let&#8217;s implement some VHDL code:</p>
<div class="codesnip-container" >
<div class="vhdl codesnip" style="font-family:monospace;"><span class="kw1">architecture</span> Behavioral <span class="kw1">of</span> vga_640_gen <span class="kw1">is</span></p>
<p><span class="co1">&#8211; signals for pixel clock generation</span><br />
<span class="kw1">signal</span> pix_clk_reg, pix_clk_next <span class="sy0">:</span> <span class="kw2">std_logic</span><span class="sy0">;</span></p>
<p><span class="kw1">signal</span> blank_reg, blank_next <span class="sy0">:</span> <span class="kw2">std_logic</span><span class="sy0">;</span></p>
<p><span class="co1">&#8211; internal signals</span><br />
<span class="kw1">signal</span> h_tick, v_tick <span class="sy0">:</span> <span class="kw2">std_logic</span><span class="sy0">;</span><br />
<span class="kw1">signal</span> h_sync_reg, h_sync_next <span class="sy0">:</span> <span class="kw2">std_logic</span><span class="sy0">;</span><br />
<span class="kw1">signal</span> v_sync_reg, v_sync_next <span class="sy0">:</span> <span class="kw2">std_logic</span><span class="sy0">;</span></p>
<p><span class="co1">&#8211; counters for horizontal and vertical sync</span><br />
<span class="kw1">signal</span> v_count_reg, v_count_next <span class="sy0">:</span> <span class="kw2">std_logic_vector</span><span class="br0">&#40;</span>9 <span class="kw1">downto</span> 0<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">signal</span> h_count_reg, h_count_next <span class="sy0">:</span> <span class="kw2">std_logic_vector</span><span class="br0">&#40;</span>9 <span class="kw1">downto</span> 0<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="co1">&#8211; horizontal and vertical syncs generating constants</span><br />
<span class="kw1">constant</span> HD <span class="sy0">:</span> <span class="kw2">integer</span> <span class="sy0">:=</span> <span class="nu0">640</span><span class="sy0">;</span><br />
<span class="kw1">constant</span> HF <span class="sy0">:</span> <span class="kw2">integer</span> <span class="sy0">:=</span> <span class="nu0">16</span><span class="sy0">;</span><br />
<span class="kw1">constant</span> HB <span class="sy0">:</span> <span class="kw2">integer</span> <span class="sy0">:=</span> <span class="nu0">48</span><span class="sy0">;</span><br />
<span class="kw1">constant</span> HR <span class="sy0">:</span> <span class="kw2">integer</span> <span class="sy0">:=</span> <span class="nu0">96</span><span class="sy0">;</span><br />
<span class="kw1">constant</span> VD <span class="sy0">:</span> <span class="kw2">integer</span> <span class="sy0">:=</span> <span class="nu0">480</span><span class="sy0">;</span><br />
<span class="kw1">constant</span> VF <span class="sy0">:</span> <span class="kw2">integer</span> <span class="sy0">:=</span> <span class="nu0">10</span><span class="sy0">;</span><br />
<span class="kw1">constant</span> VB <span class="sy0">:</span> <span class="kw2">integer</span> <span class="sy0">:=</span> <span class="nu0">33</span><span class="sy0">;</span><br />
<span class="kw1">constant</span> VR <span class="sy0">:</span> <span class="kw2">integer</span> <span class="sy0">:=</span> <span class="nu0">2</span><span class="sy0">;</span></p>
<p><span class="kw1">begin</span></p>
<p><span class="co1">&#8211; update process</span><br />
update <span class="sy0">:</span> <span class="kw1">process</span> <span class="br0">&#40;</span>clk, rst<span class="br0">&#41;</span><br />
<span class="kw1">begin</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span>rst <span class="sy0">=</span> &#8216;1&#8242;<span class="br0">&#41;</span> <span class="kw1">then</span><br />
h_count_reg &amp;lt<span class="sy0">;=</span> <span class="br0">&#40;</span><span class="kw1">others</span> <span class="sy0">=</span>&amp;gt<span class="sy0">;</span> &#8216;0&#8242;<span class="br0">&#41;</span><span class="sy0">;</span><br />
v_count_reg &amp;lt<span class="sy0">;=</span> <span class="br0">&#40;</span><span class="kw1">others</span> <span class="sy0">=</span>&amp;gt<span class="sy0">;</span> &#8216;0&#8242;<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>pix_clk_reg &amp;lt<span class="sy0">;=</span> &#8216;0&#8242;<span class="sy0">;</span><br />
h_sync_reg &amp;lt<span class="sy0">;=</span> &#8216;0&#8242;<span class="sy0">;</span><br />
v_sync_reg &amp;lt<span class="sy0">;=</span> &#8216;0&#8242;<span class="sy0">;</span></p>
<p>blank_reg &amp;lt<span class="sy0">;=</span> &#8216;0&#8242;<span class="sy0">;</span><br />
<span class="kw1">elsif</span> <span class="kw1">rising_edge</span><span class="br0">&#40;</span>clk<span class="br0">&#41;</span> <span class="kw1">then</span><br />
pix_clk_reg &amp;lt<span class="sy0">;=</span> pix_clk_next<span class="sy0">;</span></p>
<p>h_count_reg &amp;lt<span class="sy0">;=</span> h_count_next<span class="sy0">;</span><br />
v_count_reg &amp;lt<span class="sy0">;=</span> v_count_next<span class="sy0">;</span></p>
<p>h_sync_reg &amp;lt<span class="sy0">;=</span> h_sync_next<span class="sy0">;</span><br />
v_sync_reg &amp;lt<span class="sy0">;=</span> v_sync_next<span class="sy0">;</span></p>
<p>blank_reg &amp;lt<span class="sy0">;=</span> blank_next<span class="sy0">;</span><br />
<span class="kw1">end</span> <span class="kw1">if</span><span class="sy0">;</span><br />
<span class="kw1">end</span> <span class="kw1">process</span> update<span class="sy0">;</span></p>
<p><span class="co1">&#8211; clock generation</span><br />
pix_clk_next &amp;lt<span class="sy0">;=</span> <span class="kw1">not</span> pix_clk_reg<span class="sy0">;</span></p>
<p><span class="co1">&#8211; blank generation</span><br />
blank_next &amp;lt<span class="sy0">;=</span> &#8216;0&#8242; <span class="kw1">when</span> <span class="br0">&#40;</span>h_count_reg &amp;lt<span class="sy0">;</span> HD<span class="br0">&#41;</span> <span class="kw1">and</span> <span class="br0">&#40;</span>v_count_reg &amp;lt<span class="sy0">;</span> VD<span class="br0">&#41;</span> <span class="kw1">else</span> &#8216;1&#8242;<span class="sy0">;</span></p>
<p><span class="co1">&#8211; horizontal and vertical tick signal generation</span><br />
h_tick &amp;lt<span class="sy0">;=</span> &#8216;1&#8242; <span class="kw1">when</span> h_count_reg <span class="sy0">=</span> <span class="br0">&#40;</span>HD+HF+HB+HR-1<span class="br0">&#41;</span> <span class="kw1">else</span> &#8216;0&#8242;<span class="sy0">;</span><br />
v_tick &amp;lt<span class="sy0">;=</span> &#8216;1&#8242; <span class="kw1">when</span> v_count_reg <span class="sy0">=</span> <span class="br0">&#40;</span>VD+VF+VB+VR-1<span class="br0">&#41;</span> <span class="kw1">else</span> &#8216;0&#8242;<span class="sy0">;</span></p>
<p><span class="co1">&#8211; sync signals generation</span><br />
h_sync_next &amp;lt<span class="sy0">;=</span> &#8216;1&#8242; <span class="kw1">when</span> <span class="br0">&#40;</span>h_count_reg &amp;gt<span class="sy0">;=</span> <span class="br0">&#40;</span>HD+HF<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">and</span><br />
<span class="br0">&#40;</span>h_count_reg &amp;lt<span class="sy0">;=</span> <span class="br0">&#40;</span>HD+HF+HR-1<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">else</span> &#8216;0&#8242;<span class="sy0">;</span><br />
v_sync_next &amp;lt<span class="sy0">;=</span> &#8216;1&#8242; <span class="kw1">when</span> <span class="br0">&#40;</span>v_count_reg &amp;gt<span class="sy0">;=</span> <span class="br0">&#40;</span>VD+VF<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">and</span><br />
<span class="br0">&#40;</span>v_count_reg &amp;lt<span class="sy0">;=</span> <span class="br0">&#40;</span>VD+VF+VR-1<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">else</span> &#8216;0&#8242;<span class="sy0">;</span></p>
<p><span class="co1">&#8211; horizontal counter process</span><br />
h_counter <span class="sy0">:</span> <span class="kw1">process</span> <span class="br0">&#40;</span>pix_clk_reg, h_tick, h_count_reg<span class="br0">&#41;</span><br />
<span class="kw1">begin</span><br />
<span class="kw1">if</span> pix_clk_reg <span class="sy0">=</span> &#8216;1&#8242; <span class="kw1">then</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span>h_tick <span class="sy0">=</span> &#8216;1&#8242;<span class="br0">&#41;</span> <span class="kw1">then</span><br />
h_count_next &amp;lt<span class="sy0">;=</span> <span class="br0">&#40;</span><span class="kw1">others</span> <span class="sy0">=</span>&amp;gt<span class="sy0">;</span> &#8216;0&#8242;<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">else</span><br />
h_count_next &amp;lt<span class="sy0">;=</span> h_count_reg + <span class="nu0">1</span><span class="sy0">;</span><br />
<span class="kw1">end</span> <span class="kw1">if</span><span class="sy0">;</span><br />
<span class="kw1">else</span><br />
h_count_next &amp;lt<span class="sy0">;=</span> h_count_reg<span class="sy0">;</span><br />
<span class="kw1">end</span> <span class="kw1">if</span><span class="sy0">;</span><br />
<span class="kw1">end</span> <span class="kw1">process</span> h_counter<span class="sy0">;</span></p>
<p><span class="co1">&#8211; vertical counter process</span><br />
v_counter <span class="sy0">:</span> <span class="kw1">process</span> <span class="br0">&#40;</span>pix_clk_reg, h_tick, v_tick, v_count_reg<span class="br0">&#41;</span><br />
<span class="kw1">begin</span><br />
<span class="kw1">if</span> pix_clk_reg <span class="sy0">=</span> &#8216;1&#8242; <span class="kw1">and</span> h_tick <span class="sy0">=</span> &#8216;1&#8242; <span class="kw1">then</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span>v_tick <span class="sy0">=</span> &#8216;1&#8242;<span class="br0">&#41;</span> <span class="kw1">then</span><br />
v_count_next &amp;lt<span class="sy0">;=</span> <span class="br0">&#40;</span><span class="kw1">others</span> <span class="sy0">=</span>&amp;gt<span class="sy0">;</span> &#8216;0&#8242;<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">else</span><br />
v_count_next &amp;lt<span class="sy0">;=</span> v_count_reg + <span class="nu0">1</span><span class="sy0">;</span><br />
<span class="kw1">end</span> <span class="kw1">if</span><span class="sy0">;</span><br />
<span class="kw1">else</span><br />
v_count_next &amp;lt<span class="sy0">;=</span> v_count_reg<span class="sy0">;</span><br />
<span class="kw1">end</span> <span class="kw1">if</span><span class="sy0">;</span><br />
<span class="kw1">end</span> <span class="kw1">process</span> v_counter<span class="sy0">;</span></p>
<p><span class="co1">&#8211; pixel clock signal</span><br />
pix_clk &amp;lt<span class="sy0">;=</span> pix_clk_reg<span class="sy0">;</span></p>
<p><span class="co1">&#8211; blank signal</span><br />
blank &amp;lt<span class="sy0">;=</span> blank_reg<span class="sy0">;</span></p>
<p><span class="co1">&#8211; generate horizontal sync signal</span><br />
hs &amp;lt<span class="sy0">;=</span> h_sync_reg<span class="sy0">;</span><br />
<span class="co1">&#8211; generate vertical sync signal</span><br />
vs &amp;lt<span class="sy0">;=</span> v_sync_reg<span class="sy0">;</span></p>
<p><span class="co1">&#8211; output pixel counter signals</span><br />
pix_x &amp;lt<span class="sy0">;=</span> h_count_reg<span class="sy0">;</span><br />
pix_y &amp;lt<span class="sy0">;=</span> v_count_reg<span class="sy0">;</span></p>
<p><span class="kw1">end</span> Behavioral<span class="sy0">;</span></div>
</div>
<p><em>Update </em>process is responsible for writing new waluest to all registers, which were used in this implementation. Clock division is done by one bit register negating itself at main clock frequency. <em>h_count </em> is responsible for horizontal syncronization, it is implemented as a simple counter, that count to 800 and then resets itself. v_count is implemented in simmilar way. Ouput signals are generated by comparers that compare counter values with constants defined (HD, VD, HF, VF and so on&#8230;).</p>
<p><strong>Generator test</strong></p>
<p>In order to test our generator we need to create a testbed. The simplest way to do so is to display a xor pattern on our tube. In xor pattern pixel color is derived form xor of its coordinates. Here is an implementation of such testbed.</p>
<div class="codesnip-container" >
<div class="vhdl codesnip" style="font-family:monospace;"><span class="kw1">library</span> <span class="kw2">IEEE</span><span class="sy0">;</span><br />
<span class="kw1">use</span> <span class="kw2">IEEE</span>.<span class="kw2">STD_LOGIC_1164</span>.<span class="kw1">ALL</span><span class="sy0">;</span><br />
<span class="kw1">use</span> <span class="kw2">IEEE</span>.<span class="kw2">STD_LOGIC_ARITH</span>.<span class="kw1">ALL</span><span class="sy0">;</span><br />
<span class="kw1">use</span> <span class="kw2">IEEE</span>.STD_LOGIC_UNSIGNED.<span class="kw1">ALL</span><span class="sy0">;</span><br />
<span class="kw1">entity</span> test <span class="kw1">is</span><br />
<span class="kw1">port</span><span class="br0">&#40;</span> clk <span class="sy0">:</span> <span class="kw1">in</span> <span class="kw2">std_logic</span><span class="sy0">;</span></p>
<p>vga_hs, vga_vs <span class="sy0">:</span> <span class="kw1">out</span> <span class="kw2">std_logic</span><span class="sy0">;</span><br />
vga_rgb <span class="sy0">:</span> <span class="kw1">out</span> <span class="kw2">std_logic_vector</span><span class="br0">&#40;</span>7 <span class="kw1">downto</span> 0<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">end</span> test<span class="sy0">;</span></p>
<p><span class="kw1">architecture</span> Behavioral <span class="kw1">of</span> test <span class="kw1">is</span><br />
<span class="kw1">signal</span> pix_x, pix_y <span class="sy0">:</span> <span class="kw2">std_logic_vector</span><span class="br0">&#40;</span>9 <span class="kw1">downto</span> 0<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">signal</span> blank <span class="sy0">:</span> <span class="kw2">std_logic</span><span class="sy0">;</span><br />
<span class="kw1">begin</span></p>
<p>vga_gen <span class="sy0">:</span> <span class="kw1">entity</span> vga_640_gen<br />
<span class="kw1">port</span> <span class="kw1">map</span><span class="br0">&#40;</span>clk <span class="sy0">=</span>&amp;gt<span class="sy0">;</span> clk, rst <span class="sy0">=</span>&amp;gt<span class="sy0">;</span> ‘0′,<br />
pix_x <span class="sy0">=</span>&amp;gt<span class="sy0">;</span> pix_x, pix_y <span class="sy0">=</span>&amp;gt<span class="sy0">;</span> pix_y,<br />
hs <span class="sy0">=</span>&amp;gt<span class="sy0">;</span> vga_hs, vs <span class="sy0">=</span>&amp;gt<span class="sy0">;</span> vga_vs, blank <span class="sy0">=</span>&amp;gt<span class="sy0">;</span> blank, pix_clk <span class="sy0">=</span>&amp;gt<span class="sy0">;</span> <span class="kw1">open</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>vga_rgb &amp;lt<span class="sy0">;=</span> pix_x<span class="br0">&#40;</span>7 <span class="kw1">downto</span> 0<span class="br0">&#41;</span> <span class="kw1">xor</span> pix_y<span class="br0">&#40;</span>7 <span class="kw1">downto</span> 0<span class="br0">&#41;</span> <span class="kw1">when</span> blank <span class="sy0">=</span> ‘0′ <span class="kw1">else</span> x<span class="st0">&quot;00&quot;</span><span class="sy0">;</span></p>
<p><span class="kw1">end</span> Behavioral<span class="sy0">;</span></div>
</div>
<p>It&#8217;s worth noticing that RGB signals need to be low when we are out of acive area. If we dont take care of this some tubes are starting to freak out and emit strage noise (: I&#8217;ve heard it by myself, so beware of this. Testbed executed on NEXYS 2 board gives result shown below.<br />
<a href="http://truly-integrated.net/wp-content/uploads/2009/08/monitor.jpg"><img class="aligncenter size-medium wp-image-205" title="monitor" src="http://truly-integrated.net/wp-content/uploads/2009/08/monitor-468x570.jpg" alt="monitor" width="468" height="570" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://truly-integrated.net/en/2009/08/generator-sygnalow-vga-w-vhdl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Turtelizer 2 JTAG Cloned.</title>
		<link>http://truly-integrated.net/en/2009/04/turtelizer-2-jtag-cloned/</link>
		<comments>http://truly-integrated.net/en/2009/04/turtelizer-2-jtag-cloned/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 12:50:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HW]]></category>

		<guid isPermaLink="false">http://rzech.int.pl/~vontas/?p=3</guid>
		<description><![CDATA[Truly Integrated Turtelizer 2 Clone is another hardware implementation of well known Turtelizer 2, which was deriverd from ethrenut.de. The programmer was designed to be fully supported by OpenOCD. 10-pin JTAG connector is pin compatible with the original Turtelizer. Whole Project is based on FT2232 IC from FTDI. This IC is supported by Windows and [...]]]></description>
			<content:encoded><![CDATA[<p>Truly Integrated Turtelizer 2 Clone is another hardware implementation of well known Turtelizer 2, which was deriverd from <a title="ethernut.de" href="http://ethernut.de">ethrenut.de</a>. The programmer was designed to be fully supported by <a href="http://openocd.berlios.de/web/">OpenOCD</a>. 10-pin JTAG connector is pin compatible with the original Turtelizer. Whole Project is based on FT2232 IC from FTDI. This IC is supported by Windows and Linux operating systems. Next to JTAG, this programmer has  RS232 interface, driven by ST3232. JTAG pins are connected via buffers which ensure that tis toy can support any target no matter its supply voltage (:.</p>
<p>In order to use programmers serial interface we need to load <em>ftdi_sio</em> module. Due to the fact that this device uses non-typical vendor and product id, we need to give parameters as follows:</p>
<pre># modprobe ftdi_sio vendor=0x403 product=0xbdc8</pre>
<p>I heard that Windows drivers are included in OpenOCD package, but i never tested it, because i don&#8217;t have Windows on my computer.</p>
<p><img class="aligncenter size-medium wp-image-76" title="Programator JTAG" src="http://truly-integrated.net/wp-content/uploads/2009/04/prog1-570x358.jpg" alt="Programator JTAG" width="570" height="358" /></p>
]]></content:encoded>
			<wfw:commentRss>http://truly-integrated.net/en/2009/04/turtelizer-2-jtag-cloned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
