You can get really nice Xilinx starter kits compatible with this book for cheap. To be absolutely compatible, you can get the old Spartan-3 starter board from digilentinc.com for $99, but be aware that you need a PC with a parallel port. If you prefer like me to connect your FPGA board to your computer using USB, I recommend either the Nexys-2 board for $99 or the Spartan-3E starter board for $149, available at digilentinc.com, or the more up-to-date Spartan-3A starter board for $189, which you can buy at nuhorizons.com or avnet.com. These boards are mostly compatible with the book, and you can get lots of peripheral modules like seven-segment LED's for them from Digilent.
The software necessary to program these starter boards is available for free from Xilinx. The only slight problem is that you need to use Windows or Linux--no Mac OS X.
With FPGA design, you start with a board with an FPGA on it and then write some code in Verilog (Verilog is much easier to learn than VHDL). Once the design is complete, you hit the synthesize and place and route buttons and download the reulting file into the FPGA.
With embedded programming, you start with a board with a microcontroller on it and then write some code in assembly (you could also use C or something else). Once the design is complete, you hit the compile button and download the resulting file into the microcontroller.
If one prefers Verilog, Pong Chu also has an edition of his book using that language. VHDL is more verbose than Verilog, and more strict about typing, which many consider to be a good thing for hardware designs. But at the level of Chu's books, they're almost equivalent--he uses a bunch of re-usable code templates which are easily translated between Verilog and VHDL. It's not worth agonizing about the difference; I chose VHDL mostly because more reference designs for the Xilinx starter kits are written in VHDL.
- Building kits?
- Building circuits someone else designed?
- Designing printed circuit boards?
- Designing digital circuits?
- Designing analog circuits?
- Designing power electronics?
- Designing RF and microwave electronics?
- System design and assembly?
It's a great hobby. You can spend decades learning all this, and more. I have.. And don't get just one book. Get a few different ones. Google for stuff. Search Isohunt for ebooks. Get application notes from component manufacturers. There are tons of free useful info in those.
Learn the basics - resistors, clock signals, how chips work, and the rest you can pick up by experimentation.
I think that the best way to learn electronics is to start with the very basics (resistors, capacitors, coils, voltage dividers, simple RC and RL circuits, etc), then learn something about op-amps, then move on to nonlinear devices such as diodes and transistors. No math is needed, and simple circuits are easy to build. Building an analog amplifier is not hard, and it's quite rewarding to design and build something that actually works. If one is really devoted to the art of electronics, building a tube amplifier is even more rewarding ;-)
After the basics of analog electronics, one can move to digital circuits, learn about interfacing, what the difference between RTL and TTL is, etc, etc. Playing with logic gates on a breadboard is fun and instructive. The basics of DAC's and ADC's are fundamental too.
Finally, one is ready to move to microprocessors and stuff like the Arduino. Knowing the basics, one can actually build cool stuff with microprocessors, simple actuators and sensors. One knows how to build and connect sensors to microcontrollers, one knows what's happening in the ADC, one understands what makes it all work.
I believe that starting with the Arduino board right away is like choosing Visual Basic as a first programming language: it hides the interesting details, and it prevents one from seeing the big picture. Just a personal opinion, of course.
If you go the digital route, most (software) hackers can be creating fairly elaborate systems in an afternoon. They do the bulk of the work in the software, rather than futzing with resistors and capacitors.
Imagine the difference between creating a LED array to mimic the KITT car's LED light scanner in analog and in digital. Analog would be a nightmare, digital would be a great afternoon of fun on very limited hardware.
Yes, eventually the person will run into the limitations of not understanding the analog well enough, but since they weren't bogged down in details, they may be excited enough to keep with the hobby.
"What's a good book to teach me the basics of electronics, e.g., why do circuits need resistors, when do I use a capacitor, etc?"
I.e. he wants to learn how analog electronics work, amongst other things.
I own The Art of Electronics, but find it a bit theoretical. If you just starting out you might even wants something aimed at high-school kids (no offense intended)
If you like to learn by being taught (vs. self-taught) then sign up for class at a local school, or if you don't have the time/money then try sneaking into some lectures at your local university (I don't know how illegal / difficult that is in the US, so beware). If you do want to be self-taught then see if you can borrow the lecture notes from someone who has taken electronic engineering.
Or try this http://www.varsitynotes.com/electrical_engineering/electroni...
I would highly recommend buying a kit (lots have been mentioned) and if necessary supplementing it with components from your local electronic components store. And take things apart,
I'd also recommend building something that has an interest to you outside of electronics, e.g. if you're into cars then build a radio controlled car.
Some people prefer the details first, some prefer to staart easy, make a bunch of mistakes and learn more and more details as one goes along. I'm one of those people, and that's why my advise fits that mould.
The advantage of starting with VB is that it's very easy. However, these days there are other languages that are easy to learn and that are more powerful than VB, i.e., Python.
When dealing with analog circuits or digital signal timing issues, the trial and error method breaks down pretty quickly.
And you're dealing with physical components that can easily be destroyed when hooked up improperly. I've destroyed my fair share of components, and worse, equipment. It's also very easy to do things the "wrong way", while still appearing to work correctly. A simple example: overpowering an LED might not burn it out instantly, but it will shorten the life.
These types of situations can lead to crazy "bugs" which can be far more difficult to debug than their software counterparts, especially if you don't understand the underlying principles, and without the right equipment.
You definitely need a solid understanding of the basics if you want to get very far. Then you can experiment.
There are a few books out now that touch on the Arduino platform - the Make/O'Reilly site has a few. Additionally, there are a couple of folks using a Sanguino/Arduino for building a rep rap, so it might be a good start.
I've found "Electronics - Self Teaching Guide" by Harry Kybett to be a decent introduction to electronics in general. I also picked up "Embedded C Programming and the Atmel AVR" which is regularly recommended for the AVR platform.
If you are a programmer, and especially if you are a low-level programmer, you won't have a problem getting your feet wet on the digital side.
Snag one of the kits folks are mentioning in this thread and get busy.
in combination with
For me, nothing else comes close :-)
(phil from MAKE magazine, also a good resource)