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.
To date, I've conducted all of my FPGA education on the aforementioned Spartan 6 LX9 development board and a Spartan 3E-based Papilio One development board. Both have been fun, but neither quite have everything I need to get my tele-presence robot up and running.
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...
Duane Benson 1/2/2013 5:05:59 PM User Rank Blogger
Re: RTC in the FPGA
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.
Adam Taylor 12/31/2012 10:25:22 AM User Rank Blogger
RTC in the FPGA
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.
No not yet -- Most of my work is High Temperature -- Thus the Spartan III series Automotive and CoolRunnner parts are what are adaptable to that high an operating temp.
Duane Benson 12/24/2012 8:12:36 PM User Rank Blogger
Re: Bonus
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.
Duane has decided that the time is ripe to get his ZedBoard bolted onto his robot with a Linux distribution up and running. That was the ultimate plan anyway, so why wait?
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.