As you may recall, my recent postings have been on the topic of building an SPI interface using my Spartan 6 LX9 FPGA development board. I've since given this a little more polish and am almost ready to move on to learning about the next thing on my list. I still need to turn the interface into a standalone module I can instantiate in future projects. This remains a "work in progress," but I'm far enough along that I can afford a little distraction.
My fellow bloggers Adam Taylor and Mike Field recently wrote about their new Zynq-7000 All Programmable SoC-based ZedBoards. I'm very much looking forward to reading what they come up with as they get to know their "Zeds." I'm also happy to report that I too have been visited by the FPGA elves, who have addressed my need for more computational and programmable power in the form of my very own ZedBoard ("I'm wearing my happy face," as our illustrious leader Max would say).
The ZedBoard is very exciting to me because (a) it has a dual hard-core ARM Cortex-A9 microcontroller sub-system capable of running Linux; (b) it has bigger, badder programmable FPGA fabric in the same chip as the Cortex-A9; and (c) it has loads of I/O and sample peripherals on the board. All of this will add much more power to the robot I've been slowly working on -- if only I knew where the elves left my ZedBoard...
Now I'm really chomping to dive into the ZedBoard. While my Spartan 6 LX9 and Papilio boards really are just traditional FPGA development boards, the ZedBoard is a true system. It has a lot of buttons, switches, and I/O on it, which means I don't need to hang wires all over the place like I have in my previous blogs. It's also equipped with a little 128 x 32 pixel OLED display, which is just large enough for me to put my name into as shown in the image below. (Click here to see a larger, more detailed version of this image):
The five connectors (two on the bottom left and three on the left side) shown in the above image are for Pmod (a trademark of Digilent) cards -- small I/O cards with a variety of interfaces. The old Spartan 6 LX9 had two Pmod interface headers but I never got to use them for my Pmods. However, I will with the ZedBoard.
The reason I'm talking about Pmods so much is that the folks at Maxim kindly sent me a set of their Analog Essentials Collection Pmods to play with. There are a lot of good modules here, but the three that first caught my eye are the DS3231M Real-Time Clock, the MAX11205 16-bit Analog-to-Digital Converter (ADC), and the MAX4824 Relay Driver. The real-time clock is important because the ZedBoard doesn't have one, but anything that's primarily interacting with the human world (like my tele-presence robot) needs to know what time it is. The analog-to-digital is necessary because the FPGA doesn't have any native A-to-D. Finally, I'll use the relay driver to control the robot's main power relay for the high current motor drive system.
I will, of course, have a big and prominent completely mechanical "kill switch" on the high current bus, but I will also use the relay to "safe" the robot when not in use or when some major problem has been detected. When the robot apocalypse comes to pass (click here to see Max's blog on this topic), you'll have to climb six stories up a laser-protected ventilation shaft, dodge giant slicing blades, and make a timed dash through shooting flames to disable most robots -- but all you'll have to do to stop mine is push a big red button.
Two other Pmods from the Maxim's Analog Essentials Collection that also look likely to be used are the MAX31723 temperature sensor and the MAX44000 proximity detector. I'd like my robot to have an understanding of ambient temperature. When it's developed far enough to be used for human interaction, I have a feeling that I'll be able to make use of that information. For example, if you're using the robot to keep tabs on a distant relative, you could set a temperature alarm for too low (as in the heater isn't working) or too high (as in no air conditioning in the hot of summer or a fire).
OK, that's all I've got to say about my ZedBoard today, but there will be more here on All Programmable Planet in the coming weeks and months, so stay tuned...
Adam - I've been reading up on the techniques for creating an RTC in the FPGA. It doesn't sound like an overly difficult problem - except for the battery backup. I haven't run across an example or explanation of how to keep the power low enough or just keep a tiny section of the FPGA running when powered down.
You could of course create a RTC within the FPGA fabric, I am just looking at implementing the XADC within the Zynq architecture with a view to do some interesting switching Dc Dc regualtor implementation.
Brian - I've never actually seen "The Rock", but that pretty much nails it. The lasers are from the movie Andromeda strain - although I don't really remember how far up the guy had to climb and in the book, it was poison darts instead of lasers. I was thinking Galaxy Quest for the blades and fire, but it was spoofed in Galaxy Quest because so many movies have that sort of thing. There's probably dozens of correct answers.