I just started a digital system design course today at university. We are going to be using FPGA's instead of microcontrollers to run our applications on. Although we are going to be using similar components like a 1602 lcd display, keypads, motor control and all that. I was wondering if there is anything I could extrapolate anything from the Arduino platform that would be useful while using an FPGA. We are using a Spartan 6 development board with a Xilinix FPGA.
In terms of programming, is it the same? We are programming the FPGAs in C and I believe processing is just a twist on C.
We are using all of those. I wouldn't be surprised if we did I2C as well
FPGA designs are typically synthesized from Verilog or VHDL, which are hardware description languages (HDLs). System C is a very C-like HDL, and there's at least one more C-like HDL whose name escapes me at the moment. A synthesis path from C to hardware is a bit of a holy grail, as it would allow a single design to be realized in hardware or software.
It is also possible to load the FPGA with a microcontroller or microprocessor design, and run typical C code on the synthesized CPU. This allows you to connect custom hardware peripherals to the CPU, or even modify the architecture of the CPU to explore new CPU features.
If you interface the FPGA to external peripherals, you'll probably learn useful things about interfacing, reading datasheets, etc that will apply to microcontroller work.
funkyguy4000:
WAIT! so you are telling me that I can have a microcontroller within an FPGA?
Yes and if your FPGA chip is large enough (i.e. has enough logical elements and memory) it can emulate multiple microcontrollers. Personally, I'm more impressed by the ability of some modern FPGAs to reconfigure themselves to varying degrees during operation.
In some cases you don't have to reconfigure the whole device at once - you can reconfigure part of it. This allows for self-modifying hardware - pretty cool!
funkyguy4000:
Thats awesome! is that semi-reconfiguration feature in most FPGAs now?
I wouldn't say most (yet), but many do have some form of partial reconfiguration capability. It's prevalent enough that your class should discuss it at some point.
Holy cow, that is a nice one. Nice discount on the academic price, but still an expensive board.
Please keep us appraised on how it is going. I have an interest in programmable logic too. I am starting with a few Atmel ATF16V8 chips which I intend to program with WinCUPL and my TopMax programmer and then a Xilinx CPLD (XC9572) which I intend to program with Xilinx ISE Webpack and a Digilent JTAG cable I just ordered. We will see how that goes, it's probably enough for a couple of weeks. I have two simple logic designs in mind for these chips.
Cypress PSoC line is interesting (Windows only dev.) But the drag-n-drop GUI actually writes VHDL underneath for fabric and components. Pretty cool and reasonable. The Pioneer board was only about $25 a couple of years ago and I had a fun play over the summer.