Im looking for advice - FPGA's
Zap-o
Posts: 452
I really want to learn to work with FPGAs and feel its necessary in my profession.
Could someone recommend a good starting platform that would get me going. Something that has good support sort-of-like the propeller has and Parallax Inc. I have been with Parallax for decades and actually developed several products using the propeller & basic stamp but I feel I need to improve my education and skill-set.
Ill always use the propeller but many of my clients need more power and want it cheaper! I think FPGAs etc, offer this.
Thanks
Could someone recommend a good starting platform that would get me going. Something that has good support sort-of-like the propeller has and Parallax Inc. I have been with Parallax for decades and actually developed several products using the propeller & basic stamp but I feel I need to improve my education and skill-set.
Ill always use the propeller but many of my clients need more power and want it cheaper! I think FPGAs etc, offer this.
Thanks
Comments
- more power - maybe YES depending on size
- cheaper - definitely NOT
P2 will give you lots of more power than P1 ...
and looks much cheaper than a FPGA
I just got my DE0-nano -- still in package waiting ....
Cheaper? How so? As I understand it the propeller is an FPGA When you populate the propeller 1 or 2 with an FTDI ic, and other I/o expanders etc it all adds up including labor to pick and place these parts on my PCBs - at the same time the need for smaller footprints.
Don't get me wrong, the Propeller is awesome but seriously limited now (for me), sort of legacy imho - can it run linux, no. An FPGA can do much more from what I understand.
I need "FPGA information" instead of reasons to "NOT" leave the propeller and wait more for the propeller 2 because ill never leave Parallax I just want to grow as an engineer.
If your primary goal is to simply learn about FPGAs, I suggest the following:
* Pick a Hardware Design Language (HDL) to learn. VHDL has been around a long time, as has Verilog. Personally, I found Verilog easier to learn. There are others, such as SystemVerilog (which I acutally prefer to Verilog), Chisel, and many others. Unless you have a specific desire, I suggest focusing on Verilog (or VHDL), as you will find an enormous amount of sample code online.
* Start with a small FPGA demo board. You can get really cheap, but something like the BEMicro CV A9 (150 USD) should give you a good combination of capabilities at a modest price. Note that the cheaper FPGA boards will likely not include any hard CPU cores or other special-purpose hardware. It will still be possible to use soft cores (implementations that use up part of the FPGA fabric instead of being built in to the hardware), which should be good enough for learning purposes. Also, note that FPGA implementations differ across manufacturers and product lines (e.g. the Altera Cyclone IV and Cyclone V use different designs). Try, as much as possible, to learn hardware-independent design approaches. There will be some points where that will be very inconvenient, and you will find it much easier to code against an architecture-specific feature. Just be very aware that you are doing it, as that part of your code will likely not translate to any other product line.
* Some of what you will actually be learning is the IDE/tools that interface with the FPGA. Altera's Quartus II software is what I know and I think it will cover everything you need while learning FPGAs (even up through fairly advanced topics). Expect to spend some time getting to know the ins and outs of the software, as it can be a significant time saver. However! Be careful of one thing: all of these systems tend to provide pre-packaged modules for common features (memory, i/o protocols, etc.). Avoid these when you first start learning, as they hide a lot of details. Like the comment on hardware-independent design above, these modules will also be proprietary (to the manufacturer, and possibly the product line).
* Ask a lot of questions! When I was initially learning, there were quite a number of misconceptions I had (I come from a software background, not hardware) that only got corrected by asking others.
The propeller is not an FPGA, the P2 is being developed using an FPGA for prototyping, and that requires an FPGA with far more gates than the final P2 chip will need.
The point is, FPGAs aren't better or worse, just different.
As for the Propeller, there is some interesting overlap with FPGAs.
* Currently, the original Propeller is available as open source Verilog. This allows you to implement a propeller soft core on an FPGA, as well as tweak the propeller design to meet your needs. It is also a great codebase for learning Verilog! (edit: Note that there is no FPGA that's as cheap as the Propeller chip that can also fully implement the Propeller. In other words, if you want to use a Propeller in your product, the chip will always be cheaper than an FPGA version. However, if you have a number of additional peripheral ICs that could also be implemented in an FPGA, it is conceivable that they could all be combined with the propeller Verilog in a single FPGA and end up saving money. But I suspect this will be a very rare occurrence.)
* The Propeller 2 design has also being released to run on a limited set of FPGAs. This has allowed us to test/tweak the design. Also, as the design stabilizes, it will also allow early adopters to work on a Propeller 2 design prior to the release of the actual chip. To get some analog emulation of a P2, you will need to buy the 1-2-3 board. Otherwise, you will pretty much be limited to digital I/O.
* Then there's the design intent of an FPGA as compared to a Propeller, particularly the Propeller 2. The new smart pins (or spins, or whatever we are calling them this week) are deliberately designed to be flexible in a way that is reminiscent of FPGA architectures. By this, I mean that each pin has a general-purpose hardware block that can be configured to behave in a myriad of ways, just as an FPGA LUT, ALM, etc. is a general-purpose hardware block that can be configured to behave in a myriad of ways. Of course, the FPGA blocks are more general-purpose than the P2 pins, and everything (except hard cores/peripherals) in an FPGA is general purpose blocks, while in the P2, this is limited to the I/O. But that still allows for significant overlap of functionality that should make the P2 a viable alternative to some FPGA applications.
Getting started with FPGAs
http://forums.parallax.com/discussion/132578/getting-started-with-fpgas/p1
Parallax Cyclone V FPGA Development Board: Programming and development tool for Propeller 1 and 2
https://www.parallax.com/news/2014-10-20/parallax-cyclone-v-fpga-development-board-programming-and-development-tool-propeller
http://saanlima.com/store/index.php?route=product/category&path=62
Saanlima Electronics
https://store.digilentinc.com/
So You Want to Learn FPGAs...
https://www.sparkfun.com/news/1203
Digital Design Using Digilent FPGA Boards
http://store.digilentinc.com/digital-design-using-digilent-fpga-boards/
Introduction to Digital Design Using Digilent FPGA Boards
http://store.digilentinc.com/introduction-to-digital-design-using-digilent-fpga-boards/
Oberon System Implemented on a Low-Cost FPGA Board
http://forums.parallax.com/discussion/163343/oberon-system-implemented-on-a-low-cost-fpga-board#latest
Pepino Oberon
http://www.saanlima.com/pepino/index.php?title=Pepino_Oberon
Learning:
https://learn.digilentinc.com/classroom/realdigital/
Basys 3 Artix-7 FPGA Trainer Board: Recommended for Introductory Users
http://store.digilentinc.com/basys-3-artix-7-fpga-trainer-board-recommended-for-introductory-users/
(I use a Nano board and I also use it for prop2 experiments)
DE0-Nano Development and Education Board
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=593
Parallax Propeller 1 on Pipistrello (ISE project) Complete ISE project including source code for running the Parallax Propeller 1 processor on Pipistrello
http://pipistrello.saanlima.com/index.php?title=Welcome_to_Pipistrello#Open_Bench_Logic_Sniffer_on_Pipistrello
What finally worked for me was the Propeller1Verilog release. I started out with the cheapest board available... moved up to a DE2-115 at the other end of the scale. I spent many happy months learning more about both the Propeller and FPGA's surrounded by people on the forum doing exactly the same sort of thing.
There are all kinds of example FPGA projects somewhere around here... and most of the early questions you might have will have been answered many times.
The nice thing about the P1v is that you can do anything you want to add on functionality and at the end of the day you have a board with a Propeller... doing stuff the Propeller can't do alone with all of the tools and code you are used to using.
The A7 board is a beauty, but it has an expansion slot and no on-board external memory.
Getting an FPGA to talk to SDRAMS is an adventure I started but never completed.
The new A9 board has 16MBx16 SDRAM... eventually, there will be FPGA sources from Chip showing how he hooked up the SDRAM... and a bunch of ideas from the guys on the P2 forum about how else it can be done.
So, take the plunge. Put yourself on the list for the next crop of A9 boards... and count yourself lucky that you didn't buy a whole bunch of other stuff you'll never use before figuring out that it was the P123-A9 that you needed all along.
I can't think of a better way to learn about FPGA than to have a really nice design(P1v or P2v)... and know exactly what comes out of it before you ask the question, "how?"
Cheaper is maybe optimistic, but more powerful should be no problem, especially for focused hardware tasks.
The main players are Altera, Lattice and Xilinx, and all offer FPGAs and CPLDs.
You really need to decide on what you want the FPGA to actually do, before you buy a board.
You can work backwards by listing what the Prop was unable to do, for your customers.
Cheapest 'more powerful' solution may be a Prop1 and a CPLD, or small FPGA.
Whilst you can swallow the processor into the FPGA too, to get enough Code Memory, and LEs to synth the opcodes, does not come cheap.
eg the P2 emulation FPGA, is circa $400 !
What may be practical is a single P1V COG, in a modest FPGA alongside a std P1 (8 COGS).
http://www.fpga4fun.com/DDS1.html