Welcome back. Here's hoping you and your family are doing well. I apologize in advance for this column's rantings, which will seem a lot like "First do this, and then do that." Well, that's what they are. We're going to follow up on from my previous columns relating to Opal Kelly's XEM3005 FPGA/USB module.
We're going to do a lot today. If you've already installed the Xilinx integrated software environment (ISE) on your host computer, you can skip down a bit to where we use schematics to capture the hardware equivalent of a simple Hello World application.
First, let's get the ISE tools installed. This is really beyond the scope of this blog, but go to Xilinx.com and click on the Products tab. When that opens, choose "ISE Design Suite" under the Design Tools option. Down toward the bottom, you'll see the option for the ISE WebPack. I'm doing this on my own dime, so that's the option I chose. You may be rich, or you may be doing this on someone else's dime, in which case you should choose what you need. Since I can't afford the other stuff, I have no idea how different they may be. My understanding is that the WebPack is just a stripped-down version of the others.
Next, click the Download ISE Webpack link. I picked the "Full Platform Installer for Windows" option. This is a big download -- about six or seven gigabytes -- so if you're at home, this might be a good time to go get some coffee, a beer, or whatever else you enjoy. Once the download is complete, you will have a big tarball in your download directory. Expand this tarball (I use WinZip these days). Go get another drink. Use the head. It'll take a few minutes.
After the tarball is fully expanded, go into the newly created directory structure. At the top level, there should be an executable called "xsetup.exe" -- run that puppy, and answer any dialogues. As I recall, this took about 30 minutes on my machine. A reboot may be required.
Now what? If you are a software developer working with a new set of tools or development environment, the first thing you do is create a simple application that displays the message "Hello World" on a display device. By comparison, if you are a hardware designer, the hardware equivalent is to create a circuit that can flash a light-emitting diode. (See Why PicoBlaze? Running Blinky the LED.)
Let's create our hardware equivalent. As I've mentioned in previous columns, I'm an anachronism of sorts. I'm surrounded by modern technology, and I use it, but I can't quite seem to grasp it. I'm stuck in the past and trying to dig my way up to a few years ago, it seems. I don't quite get the whole HDL synthesis thing. Well, that's not strictly true. When I did my master's thesis back in 1998, I relied on a lot of HDL-type stuff for logic simulation. However, I still created symbols and wired the things together in schematics.
Yes, schematics. I understand those right now. A wire here goes to a port there -- a nice, pretty picture of connectivity. I'm a very visual person, and I find this kind of thing much easier to understand. Many times when I write code, I find myself with a general idea of what I want things to do at the end, but I start at the bottom and work my way to the top. I can't easily build the big, interconnected block diagram that shows the ins and outs, and this is my current hurdle with HDL.
Don't get me wrong -- I realize I can build with a bottom-up approach, even though it may not be as clean. I'm just stumbling a bit on using software to define hardware. When I write software, I expect instructions to occur sequentially. In hardware, they happen concurrently. Coding state machines might be interesting.
But never mind all that for now. Let's get on with our Hello World app.
To Page 2 >