

<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.8.0-dev (info@mypapit.net)" -->
<rss version="2.0"  xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Your First CPU</title>
        <description><![CDATA[In this collection of articles, I will showcase my progress of designing a very simple cpu in Verilog and progressively making it more complex with features like pipelining, memory and IO, coprocessors and it's own assembler using Flex and Bison.]]></description>
        <link>http://colinmackenzie.net/</link>
        <lastBuildDate>Sat, 14 Mar 2026 08:05:46 GMT</lastBuildDate>
        <generator>FeedCreator 1.8.0-dev (info@mypapit.net)</generator>
		<atom:link href="http://colinmackenzie.net/index.php?option=com_ninjarsssyndicator&amp;feed_id=3&amp;format=raw" rel="self" type="application/rss+xml" />        <item>
            <title>Your First CPU - Chapter 4 - Pipelining</title>
            <link>http://colinmackenzie.net/index.php?option=com_content&amp;view=article&amp;id=29:yfcpupipelining&amp;catid=12:yfcpu&amp;Itemid=6</link>
            <description><![CDATA[<p>There are four cycles in our previous CPU design, Fetch, Decode, Execute and Store (aka 'Write back'). In our current cpu design these 4 cycles are performed one at a time, thus our CPU executes an instruction from memory for every 4 cycles of the CPU clock. With a few changes we can increase our performance substantially to almost achieve a single instruction per clock cycle.</p>

<p><a href="http://colinmackenzie.net/index.php?option=com_content&view=article&id=29:yfcpupipelining&catid=12:yfcpu&Itemid=6">Read more...</a></p>]]></description>
            <pubDate>Tue, 18 Nov 2008 15:10:13 GMT</pubDate>
            <guid isPermaLink="false">http://colinmackenzie.net/index.php?option=com_content&amp;view=article&amp;id=29:yfcpupipelining&amp;catid=12:yfcpu&amp;Itemid=6</guid>
        </item>
        <item>
            <title>Your First CPU - Chapter 3 - Your First Assembler</title>
            <link>http://colinmackenzie.net/index.php?option=com_content&amp;view=article&amp;id=18:yfcpu-ch3&amp;catid=12:yfcpu&amp;Itemid=6</link>
            <description><![CDATA[<p>What good is a cpu without an assembler? In this chapter we use flex and bison (i.e. lex and yacc) to make an assembler for our cpu. The assembler generates a binary file that can be loaded by the verilog $readmemh statement, or in a synthesized FPGA we would use the binary file to initialize the instruction memory inside the FPGAs internal memory blocks.</p>

<p><a href="http://colinmackenzie.net/index.php?option=com_content&view=article&id=18:yfcpu-ch3&catid=12:yfcpu&Itemid=6">Read more...</a></p>]]></description>
            <pubDate>Mon, 07 Apr 2008 12:03:46 GMT</pubDate>
            <guid isPermaLink="false">http://colinmackenzie.net/index.php?option=com_content&amp;view=article&amp;id=18:yfcpu-ch3&amp;catid=12:yfcpu&amp;Itemid=6</guid>
        </item>
        <item>
            <title>Your First CPU - Chapter 2 - Branching</title>
            <link>http://colinmackenzie.net/index.php?option=com_content&amp;view=article&amp;id=17:your-first-cpu-chapter-2-branching&amp;catid=12:yfcpu&amp;Itemid=6</link>
            <description><![CDATA[<p>Before we move on to updating our basic cpu verilog code let us talk a little more about the four basic units of a cpu. These parts are typically called the Datapath, Function Unit or ALU, Memory/Register File and the Control Unit. Any cpu must at least have these four basic blocks.</p>

<p><a href="http://colinmackenzie.net/index.php?option=com_content&view=article&id=17:your-first-cpu-chapter-2-branching&catid=12:yfcpu&Itemid=6">Read more...</a></p>]]></description>
            <pubDate>Sun, 30 Mar 2008 19:30:15 GMT</pubDate>
            <guid isPermaLink="false">http://colinmackenzie.net/index.php?option=com_content&amp;view=article&amp;id=17:your-first-cpu-chapter-2-branching&amp;catid=12:yfcpu&amp;Itemid=6</guid>
        </item>
        <item>
            <title>Your First CPU - Chapter 1 - Basic CPU</title>
            <link>http://colinmackenzie.net/index.php?option=com_content&amp;view=article&amp;id=16:your-first-cpu-chapter-1-basic-cpu&amp;catid=12:yfcpu&amp;Itemid=6</link>
            <description><![CDATA[<p><img src="http://colinmackenzie.net/images/stories/articles/electronics/meinside.png" border="0" align="left" />In this first chapter we learn the very basics of a CPU's core logic. We include basic Function Unit logic such as logical operators and math functions. To keep our first chapter simple, branching is not yet implemented so our programs are strictly linear and cannot include loop constructs. Also, the program code is included directly in the CPU source file.</p>

<p><a href="http://colinmackenzie.net/index.php?option=com_content&view=article&id=16:your-first-cpu-chapter-1-basic-cpu&catid=12:yfcpu&Itemid=6">Read more...</a></p>]]></description>
            <pubDate>Sat, 29 Mar 2008 08:34:18 GMT</pubDate>
            <guid isPermaLink="false">http://colinmackenzie.net/index.php?option=com_content&amp;view=article&amp;id=16:your-first-cpu-chapter-1-basic-cpu&amp;catid=12:yfcpu&amp;Itemid=6</guid>
        </item>
    </channel>
</rss>
