Maker Pro
Maker Pro

Getting Started with FPGAs.....

Fish4Fun

So long, and Thanks for all the Fish!
I have been fascinated with FPGAs since I discovered them in a Digikey Catalog back in the 90's.....I even went so far as to order a "dev board" a decade or so ago...(...but I never got around to actually doing anything with it...not even sure where it might be at this point....)....so now I am thinking it might be a good time take the plunge......and I really want an "easy button" to get my feet wet, so I have been looking @ the Papolio....specifically at their upcoming release of the Arduino compatible Papilio DUO.... https://www.kickstarter.com/projects/13588168/papilio-duo-drag-and-drop-fpga-circuit-lab-for-mak (This is a link to the kickstarter page because it has more information than the primary site....) While I am not wild about the Arduino IDE, I am at least familiar with it....the notion of having a "schematic capture" type interface for synthesizing the FPGA is very appealing to me.....but I have ZERO actual experience with FPGAs and a LONG HISTORY of doing things the hard way....so I thought I would check in here and see what recommendations you might make.....

I am NOT proficient in C/C++, so I think it would be a stretch to assume Verilog or another HDL would be 'easy' for me....I am fairly proficient in AVR-ASM and can muddle through some 8051 ASM variants....I am proficient in VB6, but have not done anything with the more modern versions of VB....From casual reading a decade ago the HDLs are syntactically similar to C.....But there may be new programming platforms available now that make FPGAs more accessible....I simply have not looked into them in quite a while...so, again, I am not dead-set on the Papilio board....just ran across it a year or two ago and have been casually monitoring its progress....when I saw they were getting ready to release an Arduino compatible version with a "visual schematic capture" way to generate the FPGA synthesis it peaked my interest....

I think I just said the same thing four or five times.....sorry. I am tired, but wanted to post this before I put it off for another three months, lol.

Thanks in advance!

Fish
 
I have been fascinated with FPGAs since I discovered them in a Digikey Catalog back in the 90's.....I even went so far as to order a "dev board" a decade or so ago...(...but I never got around to actually doing anything with it...not even sure where it might be at this point....)....so now I am thinking it might be a good time take the plunge......and I really want an "easy button" to get my feet wet, so I have been looking @ the Papolio....specifically at their upcoming release of the Arduino compatible Papilio DUO.... https://www.kickstarter.com/projects/13588168/papilio-duo-drag-and-drop-fpga-circuit-lab-for-mak (This is a link to the kickstarter page because it has more information than the primary site....) While I am not wild about the Arduino IDE, I am at least familiar with it....the notion of having a "schematic capture" type interface for synthesizing the FPGA is very appealing to me.....but I have ZERO actual experience with FPGAs and a LONG HISTORY of doing things the hard way....so I thought I would check in here and see what recommendations you might make.....

I am NOT proficient in C/C++, so I think it would be a stretch to assume Verilog or another HDL would be 'easy' for me....I am fairly proficient in AVR-ASM and can muddle through some 8051 ASM variants....I am proficient in VB6, but have not done anything with the more modern versions of VB....From casual reading a decade ago the HDLs are syntactically similar to C.....But there may be new programming platforms available now that make FPGAs more accessible....I simply have not looked into them in quite a while...so, again, I am not dead-set on the Papilio board....just ran across it a year or two ago and have been casually monitoring its progress....when I saw they were getting ready to release an Arduino compatible version with a "visual schematic capture" way to generate the FPGA synthesis it peaked my interest....

I think I just said the same thing four or five times.....sorry. I am tired, but wanted to post this before I put it off for another three months, lol.

Thanks in advance!

Fish
Good for you Fish, I would love to see more of what you come up with! Admittedly, I barely understood what you were talking about :p:D
 

Harald Kapp

Moderator
Moderator
the notion of having a "schematic capture" type interface for synthesizing the FPGA is very appealing to me
You're not the only one to feel comfortable with schematic entry for FPGAs. However, considering FPGAs with a complexity of 10000 gates or more, this becomes a daunting task. Get started with FPGAs using schematic entry, that's o.k.. But get accustomed to programming an FPGA via a High level language, be it Verilog, VHDL or another dialect.

Apart from making it possible to program large FPGAs in the first place, it will also make it much easier to switch between different types or even vendors of FPGAs. This will be much harder using schematic entry as the libraries and tools used may differ widely.
 

Fish4Fun

So long, and Thanks for all the Fish!
@Harald Kapp....Thanks for the reply! I assume from your suggestions about an HDL that you have some working knowledge of FPGAs....and while I understand the importance of platform migration, I am not 100% certain it is pertinent to my needs.....I am a hobbyist and as such I have absolutely NO delusions of grandeur....no plans to synthesize the next generation of smart phones nor even attempt to bring a simple logic analyzer design to the "open source market".....I like to "piddle & play"...I don't expect anyone to ever be interested in my projects nor care to worry about explaining the convoluted ways I might employ to get any particular project to work....but I do love "adding new tools to my tool box...." With that in mind, I view FPGAs as a sort of "virtual breadboard" for logic circuits....while I don't have any particular project in mind that might require an FPGA, I would likely be interested in simply synthesizing things like logic circuits/timers/counters/buffers/serial - parallel interfaces/SRAM controllers/UARTs/Video Controllers and perhaps even playing a bit with simple hardware encryption/decryption....but the projects themselves are just mind-candy....I don't have any rigid requirements, deadlines or long-term goals.....

With all of that in mind....I would love any input you might have regarding a good "starting place"....if you feel strongly that the only viable starting place is learning an HDL then I will accept that and likely not pursue FPGAs until I see fit to dedicate the time/effort to learning one (as I said above, I already have a dev kit from a decade ago that i have never even taken out of the box, lol), but if there is a viable "easy button" to get me started down the path then I am all ears....I don't really have any budget issues, so if there is a development platform that you feel is 'better' than the one I referenced.....then by all means do tell.....What I am looking for is a way to "get my foot in the door" without spending a month memorizing syntactic constructs, mnemonics and stylistic caveats....that's work....and if I really wanted to work I wouldn't spend so much time on my hobbies, lol. I am not saying once I "get my feet wet" I won't immediately want to "see what's behind the curtain", but "seeing what's behind the curtain" is only fun if you have already "seen the show"....LOL if that rather extended metaphor makes any sense? Anyway, I understand that the typical target audience for FPGAs is not hobbyist and that most people using FPGAs aren't interested in synthesizing $0.50 ICs just to watch them work, but being the odd duck in the pond is not something I am unfamiliar with....

Thanks in Advance for any input!

Fish
 
Hi Fish,

I too am interested in FPGA and would like to develop my own CPU within one, once I retire next year. I would like to hear your experience. Perhaps you could start a project log when you get started.

The company I work for made a multi-core network processor with a internal tool that was based on schematics, so it is not impossible to do large projects that way. I played with the tool a little and had the basics instruction decode and sequencing for a pipelined processor coded just to learn it.

Bob
 

Harald Kapp

Moderator
Moderator
....I would love any input you might have regarding a good "starting place
Google "https://www.google.de/?gws_rd=ssl#q=fpga+starter+kit". These kits include a working prototype PCB plus the required development tools. I'm in no position to recommend any particular type or make of FPGA.

You may know (or not) that there are two different types of FPGA technology (apart from diffferent architectres):
  1. SRAM based: the connections between the FPGA's logic elements are created by transistors that are controlled via the content of SRAM cells. This type of FPGA "forgets" the configuration on power off and needs to be initialized from an EEPROm or FLASH on startup.
  2. EEPROM based: The connections are controlled by EEPROM cells. This type of FPGAs keeps the configuration during power off and does not need a configuration EEPROM or FLASH.
For hobbyist purposes, this may make no difference.

The company I work for made a multi-core network processor with a internal tool that was based on schematics, so it is not impossible to do large projects that way.
I didn't say "impossible", but it will become increasingly difficult to manage.
 

Fish4Fun

So long, and Thanks for all the Fish!
@BobK.....WOW, ok, so it turns out I am not the first person to think learning an HDL w/o having 'played' with an FPGA first is a lot to ask......

The problem is that VHDL is complex due to its generality. Introducing students to the language first, and then showing them how to design digital systems with the language, tends to confuse students. The language issues tend to distract them from the understanding of digital components. And the synthesis subset issues of the language add to the confusion.

Excerpt taken from : http://esd.cs.ucr.edu/labs/tutorial/

I found the link to the above quoted site here: http://papilio.cc/index.php?n=Playground.Playground along with links to other Tutorials on how to get started with FPGA Synthesis....like soooo many other things all of the "answers" are not only readily available but offered in a wide variety of presentation styles.... it is mostly a matter of sifting through them and finding the style that best suits the way you learn.....For me, I learn best by "doing" and making mistakes. (I would have made a really lousy engineer!) So I am going to casually read through some of these tutorials over the next month or two while I wait for the new Papilip DUO boards to become available in December/January/February.....then I will likely order one and use the "visual tools" to become familiar with the basics of loading a synthesis and maybe making it "do something"....I will keep my expectations low and try to keep my enthusiasm high and then it will either become a new tool or perhaps just another curiosity in one of my junk drawers....I will occasionally post progress updates in the event you or anyone else might benefit from my follies....

@Harald Kapp....Thanks! I don't think I was aware that FPGAs had branched to EEPROM/FLASH Architectures....or more correctly, I did not give it any thought.....Somewhere in a dusty corner of my mind I had noted that many of the FPGA dev boards did not appear to have EEPROM//Flash chips on the board.....which should have been a "clue" that the hosted FPGA had some way of maintaining a persistent synthesis, but I had not thought it through enough to consider that the implication of this implied a fundamentally different hardware Architecture....So....I would ask, "Is there any distinct advantages to one platform over the other?" Off-the-cuff it would seem the advantage to the EEPROM/Flash types would include Initialization time (ie, Not having to load the synthesis into the FPGA via a serial connection.....) and intuitively I would think the advantage to the SRAM type would likely be higher speed operation....but these are just guesses. What would you say the advantages of each type are?

I KNOW the answer to the following question is likely easy to find if you know where to look, but do you happen to know "off-the-cuff" if FPGAs are capable of "dynamic configuration"? By this I mean in a sufficiently robust target wold it be possible to have a uController synthesis running on the FPGA and the uController dynamically create functional blocks "on demand".....for instance, if a "new counter" were requisite, and the resources were available, could the uController's code create a new counter? An example might be a "race timer" where each contestant had a dedicated "lap counter" but rather than building N counters into the synthesis, for each contestant added, the microcontroller would "create a new counter...." While I have no particular interest in this specific trivial example, I think it would be really cool to be able to dynamically allocate functionality.....Obviously if we are dealing with an SRAM based FPGA connected to a host PC then the synthesis could be "custom configured" on the PC and then loaded onto the FPGA....but it would be far more interesting if the synthesis could be altered dynamically......Anyway, please don't waste any time searching for the answer if you don't know off-hand, I feel confident I will find the answer as I begin wading through the tutorials....

Thanks!

Fish
 
Hi Everyone!

I did have a little experience with FPGAs back in undergrad, but didn't really do anything fancy. Ever since then I've wanted to explore FPGAs a bit more but always got busy with other projects; things do seem better now and hopefully I should be up and running with FPGAs in the next couple of months :).

The papilio board looks good, but did you consider the Mojo V3? Initially I wanted to get one of those, but then I said I'll just buy a generic Spartan 6 development kit, but as you know, those plans are on hold for now.

Here are the links:

https://www.kickstarter.com/projects/1106670630/mojo-digital-design-for-the-hobbyist

https://embeddedmicro.com/mojo-v3.html

- Frenoy.
 

Fish4Fun

So long, and Thanks for all the Fish!
@Frenoy Osburn.....Thanks! After reading through the info about the MOJO, I ordered one of those as well :) We will see if there are enough examples between the MOJO and the Papilio to get me off the ground....lol!

Fish
 

Fish4Fun

So long, and Thanks for all the Fish!
OK....first note....the Xilinx ISE download is MASSIVE!!!!!! If you "Download the entire package" it is ~8GB! They do have an "installer" that allows you to install only components you want/are "licensed to use".....Which brings up the next caveat.....while Xilinx has "free" basic tools for their smaller FPGAs, the more robust FPGAs and many of the other tools require fee-based licensing....I have not checked the fee schedule, but I suspect it is designed to terrify hobbyist....I keep trying to imagine how that conversation goes....."Oh, so you want to buy our bleeding edge FPGAs, Great! Now I need to tell you they are really expensive, and if you want to use our software to create a synthesis for them you will have to pay us a royalty....." Not any kind of deal breaker for me because the people developing "FPGA Boards for Hobbyist" have wisely chosen FPGAs supported by the "Free" versions of the ISE.....but it must be a real bugger for smaller companies that develop a "really cool FPGA based product" only to find it needs to be one step bigger......OUCH!

Now it is time to start reading the tutorials on making an LED blink......!me

Fish
 
Thanks for letting me know about this place Fish!

I'm the guy behind the Mojo and I just wanted to say that we're well aware of how confusing the existing tools for FPGAs are. We are working on what I believe to be some really awesome tools that would make Frank Vahid (from Fish's quote on VHDL's complexity) proud.

The Mojo is definitely not simply a finished product. We will continue to pump out better tools, more tutorials, and more shields. Right now we're in the better tools phase (which is why we haven't posted much recently). Starting next year we'll add a slew of new shields with tutorials and examples to accompany all of them. (I'm also planning a tutorial for a basic processor eventually since I know that's why a lot of people get interested in FPGAs)

We also have Cyber Monday sale going on right now (20% off) if you are interested. https://embeddedmicro.com/products.html

It's probably also worth mentioning that the schematic tool Papilio is talking about is actually just part of ISE and can totally be used with the Mojo if that's what you want to do.

Justin
 

Fish4Fun

So long, and Thanks for all the Fish!
Hey Justin! Welcome to EP!

I received my MOJO a week or two back....it is sitting on my bench waiting patiently for me to make an LED blink :) That whole crawling before you run thing is slowing me down a bit....well that, and a large list of things to do on other projects...lol....Hopefully I will find some time here in the next week or so to get started.....I am really excited!

It's probably also worth mentioning that the schematic tool Papilio is talking about is actually just part of ISE and can totally be used with the Mojo if that's what you want to do.

hrmmmm.....Seems like the general consensus is the schematic tool is kinda like dating a fat chick or riding a moped....nobody wants to talk about it....nobody seems to think it is a good idea....but it is fairly obvious someone is doing it....I assume like everything else in coding and electronics what "appears to be the easy way" has plenty of caveats that make it just as hard to learn but don't offer the same rewards at the end of the course....perhaps more like trying to learn physics w/o calculus.....you still have to do all the "work", you just never quite get the "how/why"....so I will make every effort to learn FPGAs step-by-step starting with the ever popular blinking LED....I just hope no one sees how excited I get when I make the $$$ LED blink! LOL!

Cheers!

Fish
 
I'd love to hear about your experience. Let me know if there is anything you find particularly confusing that I could make better in the tutorials.

Best of luck!
Justin
 
Top