Hey, there, it's me again! Today, I'm going to explore the very basics of using the XEM3005 FPGA/USB module from Opal Kelly. This will include connecting it to my computer and getting it to run something. Fortunately, the folks at Opal Kelly were nice enough to pack some samples on their CD, which certainly made my life a little bit easier.
First things first: Let's take this testament to engineering prowess out of the box. The first thing I noticed is how small it is. The card is 1.65 x 2.52 inches (42 x 64mm). It has three connectors -- a USB (mini?) connector and two Samtec 80-pin high density connectors. It also has two unpopulated connectors -- one for power, the other for a JTAG interface.
One very important point of which you should be aware is that this board is intended to be a part of a USB "self-powered" system. That is, it expects to get power from the device of which it is a part -- and not from the USB. If you just plug it in out of the box, it'll be a brick (a small brick, but still a brick).
This is where the BRK3005 breakout board comes into play. The breakout not only brings the high-density Samtec connectors out to standard 100 mil pitch connectors (which you have to install yourself), but it also has a voltage regulator and loopback. By installing jumpers J1 and J2, the regulators are enabled and the XEM3005 can be host-powered.
Stop! There are some things you may not already know. A USB-compliant device may draw no more than 500mA from the USB bus (that's 2.5W). It can be easy to exceed this in your designs (as I've done in the past) and then who knows what will happen. Some computers are okay with it, but others will "throw a wobbly." Be careful in your designs. I would guess that for most of what we'll be doing in my blogs this won't be an issue, but you should keep it in mind.
Stop! Don't plug the board into the PC until you've installed all the software on the PC. To ensure everything goes smoothly, I strongly suggest that you follow the instructions on the CD/documentation. I would also suggest stopping by Opal Kelly's website, registering in the forums, and downloading the latest drivers and stuff.
Once the drivers are installed and the breakout board is set up, go ahead and plug the XEM3005 into the breakout board. Now connect the USB, and the normal "found new device" stuff will start to happen -- follow Opal Kelly's instructions on this.
You should also observe that a green power LED illuminates on the XEM3005 board. This is a good sign.
In my next blog, we'll go through the downloading (uploading?) of bit codes and FrontPanel GUIs...
Is this stuff neat, or what?
You want me to pay EIGHT HUNDRED BUCKS? Pass on the XEM6310.
I agree. In general, if the idea is that you buy a $200 (or $600, or $800, or whatever) board to integrate into your system, and that board has the Samtec high-density connectors, you also have to spring $$$ for a board for your electronics.
So, why bother with the Opal Kelly board? The electronics on that board can be integrated onto the board you have to make, with minimal impact on board area and cost.
Maybe it's because the FPGAs have BGA packages? That's about the only thing I can think of that makes these board attractive to the DIYer.
I won't deny the Opal Kelly products are good. They're just - not for me.
Every Dev kit has to make a choice about what to include, versus what to implement as an add-on. For every add-on, you then need to consider interface speed, protocol, interface (FMC, PMOD). What you choose then impacts the choices available to me, the developer / user.
Yes, they have one or two add-on boards. Yes, they even sell the connectors required to build your own board. Guess I'm just too picky.
I suspect, by the time a Dev kit satisfied my needs, it wouldn't be a dev kit any more - but a full grown product. In a pretty box, with a fancy logo. And then, I'd complain about the Price.
I'm really interested to know about terminations on the other side of those connectors. In most "high speed" designs using CMOS, I'd normally do a source-series termination - an ~22 Ohm resistor. (for a trace with no fan out).
I'm wondering what this might have on the board. If I go off to another PCB, I am assuming, at this point, that I'm going to need to develop a termination scheme of some sort, and source-series will be out of the question, unless it's already built into the board (or a capability of the FPGA).
I've yet to go down that particular rabbit hole to see how things work.
Duane Benson 1/21/2013 11:39:33 AM User Rank Blogger
Re: Opal Kelly
Those Samtec connectors are pretty key. I've really liked the three FPGA boards I've had experience with so far (the Spartan 6 LX9, the Papillio One and the ZedBoard), but all three are quite obviously prototyping products. The ZedBoard is a big step above the other two and is quite well appointed, but it's still not something that's going to go into an end product on a card in your PC.
Max Maxfield 1/21/2013 9:56:29 AM User Rank Blogger
Re: Opal Kelly
@Tomii, SA_Penguin: My understanding re the Opal Kelly stuff is that it's intended for folks who want to connect their designs to a PC.
For example, suppose you've created an incredible robotic vision camera/system and now you want to send the data to the PC -- possibly performing some DSP on it before you send it over. As you say, you could design something yourself, but designing USB stuff can be a real pain for the uninitiated -- so instead you use an Opal Kelly Module -- it's got the USB stiff -- plus you can use the FPGA to do some image processing -- plus their software / API that runs on the PC makes your life a LOT easier
So, remember, I bought this board several years ago, and there were no other alternatives at the time (that I know of)
Just took a look at Terasic - a similar board to the XEM3005 is about the same cost, I think - that is, about $300-$350 for the device. All their parts are Altera (I don't know much about Altera's development tools)
Now Digilentt has quite an array of offerings, it seems, and yes, you can get a pretty good deal if you're a sudent. I see a lot of stuff with things built-in, and that's really cool for learning, but I'm not so sure about their use as development boards. I'll keep an eye on them, I think.
I'm not necessarily singing OK's praises over anyone else's - it's just that their solution seems to best fit my needs.
Let me touch on your points:
The XEM3005 that I'm using is not intended so much to be a stand-alone device. It's an integrated module for you to use in an end-project - thus the high-density Samtec connectors and mounting holes.
This is also why you need the breakout bord - it's a prototyping adapter, really. And also likely why they let you install the connectors yourself - flexibility. In a prototyping environment you often want to customize your interface somewhat.
As for cost, until *very* recently, these prices were as good as you were gonna get, I think. Yes, Digilent's boards are a bunch cheaper, but when you look at their IO, they seem to be primarily limited to a couple of PMod connectors.
As for the other devices, I have no experience, and I'm really just getting into the XEM3005. Oh, which BTW, also is fully USB2.0 compliant AND has 32MB SDRAM on it. This is something I desparately need to figure out how to use for my projects, I think. I don't know of any other integrated module that has all thi stuff on it - not for the price, anyway. And it beats the heck outta me having to do the design & layout myself, especially for something with such high-speed IO. I'd probably have to go through a couple turns on the PCB before I got it right...
You get a board, but you need another board before it works? You need to solder the connectors on yourself? Pass on the XEM3005.
You need to attack it with a soldering iron, removing resistors, in order to select power source? Rather than simply removing a jumper? Pass on the XEM6001.
You want me to pay EIGHT HUNDRED BUCKS? Pass on the XEM6310.
[Sigh] Maybe I'm just too fussy. Think I'll just mosey over to Digilent or Terasic, and check out alternatives.
One of the things I've been wondering is whether or not the "okWireOR" module is really just a giant OR, or if the order in which things are attached matters.
I am convinced that every country has its own governmental office buried deep down in some dark, dank basement -- on this office door is a single word: "They!"
In this column we will extend our Opal Kelly FrontPanel interface to have two "okWireOut" devices in the FPGA... or maybe not depending on your point of view.
To save this item to your list of favorite All Programmable Planet content so you can find it later in your Profile page, click the "Save It" button next to the item.
If you found this interesting or useful, please use the links to the services below to share it with other readers. You will need a free account with each service to share an item via that service.