This is a new blog on the Art of FPGA Design. For those who want to follow along, I will try to add a new post every week.
While intended mainly for beginners initially, this is not an FPGA 101 kind of material. There are many of them that can be found online, including some excellent ones here on the Element 14 site. Some familiarity with FPGAs, HDLs and hardware design in general will be assumed. Some software programming experience might help (or hinder, we will have to see) but is not really necessary.
I will talk mainly about Xilinx FPGAs and VHDL in my posts but this blog is not intended to promote a particular FPGA manufacturer or HDL or design flow so no flaming please. The subjects I will talk about will be general enough to apply to other FPGAs, different HDLs or even other hardware design flows. I am not here to promote Xilinx FPGAs or products but this is my main area of expertise and this is what I will be talking about.
I will be targeting two different groups of users. On one hand I will address engineering students, hobbyists or even young engineers who have some basic knowledge of hardware design, would be interested in learning how to use FPGAs but are dissuaded by the financial entry costs and the very steep learning curve. My main goal is to provide some pointers and show that the path is not as expensive and difficult as it seems at first.
At the same time, I will also try to talk about some really advanced design matters, related to using VHDL and especially VHDL-2008 to do high performance FPGA design, which should be of interest even to very seasoned hardware designers.
In my first few posts I will try to give you a taste of both directions and then based on the feedback I will hopefully receive, I will steer the blog in the direction that interests most readers or even split it into two separate beginner and advanced tracks.
While I do work for Xilinx, this is my personal blog. The ideas expressed here are my own and do not represent the views or opinions of my employer. Although I will talk about Xilinx FPGAs among other things, this is not a hidden marketing promotional campaign - this is a technical blog about the Art of FPGA Design.
The code examples that will be used here are placed in the public domain and can be freely used by anybody without any restrictions, although providing attribution would be nice. On the other hand they come with no warranty of any kind, they are provided "as is" and you use them at your own risk.
So, without any further ado, let's go to the first blog post, which will try to dispel the perception that the entry into the field of FPGA design is financially difficult and for that reason an almost insurmountable barrier for most beginners.
The Art of FPGA Design - Post 1 - Running Out of Excuses
The Art of FPGA Design - Post 2 - Why learn FPGA Design?
The Art of FPGA Design - Post 3 - Two Free VHDL Books
The Art of FPGA Design - Post 4 - What's Your Type?
The Art of FPGA Design - Post 5 - Beyond STD_LOGIC
The Art of FPGA Design - Post 6 - VHDL User Defined Types
The Art of FPGA Design - Post 7 - We're Not in Kansas Anymore
The Art of FPGA Design - Post 8 - The Universal DELAY Building Block
The Art of FPGA Design - Post 9 - The Universal DELAY Building Block Part 2, the one with the cake
The Art of FPGA Design - Post 10 - Instantiating LUT6 Primitives
The Art of FPGA Design - Post 11 - Instantiating LUT6 Primitives Part 2
The Art of FPGA Design - Post 12 - The Universal MUX Building Block
The Art of FPGA Design - Post 13 - The Universal MUX Building Block Part 2
The Art of FPGA Design - Post 14 - The Universal MUX Building Block Part 3, the one with the Dutch Cocoa Box and the Ouroboros
The Art of FPGA Design - Post 15 - Counters, Adders and Accumulators
The Art of FPGA Design - Post 16 - The Carry-Save Adder, two for the price of one
The Art of FPGA Design - Post 17 - Using the Carry-Save Adder, Computing a Running Average
The Art of FPGA Design - Post 18 - Using the Carry-Save Adder, A Generic Adder Tree
The Art of FPGA Design - Post 19 - Using the Carry-Save Adder, The Constant Coefficient Multiplier