element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
FPGA
  • Technologies
  • More
FPGA
Forum FPGA Design Consideration
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join FPGA to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Suggested Answer
  • Replies 11 replies
  • Answers 3 answers
  • Subscribers 552 subscribers
  • Views 2651 views
  • Users 0 members are here
  • considerations
  • fpga
  • Design
  • beginner
Related

FPGA Design Consideration

hawktalon
hawktalon over 10 years ago

Hi, I'm very new to FPGA. Most of what I did was PIC and Atmel microcontrollers. I want to know about the design consideration of implementing an FPGA into a system. How do you pick the suitable FPGA to suit your needs? I know there are specifications such as number of logic elements, PLLs, multiplier and such but you will never know how much of those you will need until you finish the vhdl and compile it. Correct me if I'm wrong but I'm pretty sure the hardware has to be finalized before the vhdl codes are done in a general development process.

 

Also, I see that there are a few companies making FPGA. Namely Xillinx, Altera, Lattice etc. What are the differences between their product? Most of what I can search online talks about their development IDEs in terms of which one has free tools or which company has IP restrictions. It's hard for a beginner like me to make sense of what Cyclone offers compared to Spartan and such.

 

Third question is how do you objectively quantify and compare the performance between FPGAs? Assuming they all run at the same clock. Since they are all essentially doing the same thing and is functionally the same when loaded with the same vhdl code. How do they fare against each other in terms of efficiency, speed and what not? Googling around I only find people comparing them with GPUs and CPUs. Companies advertising their product using vague and very general descriptions doesn't help at all.

 

Sorry if these are very newb questions but I am a newb trying to learn FPGA. My college provides FPGA courses which I am now just starting but they only teach how to write vhdl. There are no info on hardware considerations or even how to set up a FPGA chip. Thanks in advance!

  • Sign in to reply
  • Cancel

Top Replies

  • michaelkellett
    michaelkellett over 9 years ago in reply to johnbeetem +3
    I wouldn't consider myself to be an Altera expert but I do use VHDL quite a bit. I've been away so others have covered the key points. You don't really suffer from vendor lock in on simple FPGA hardware…
  • johnbeetem
    johnbeetem over 10 years ago +2 suggested
    That's a lot of material to cover, but I'll try to tackle a few items. First, it's unfortunate that your college only does VHDL. I personally prefer Verilog, which is more concise and IMO easier to write…
  • Jan Cumps
    Jan Cumps over 10 years ago in reply to johnbeetem +2 suggested
    On the tutorial part, there's also the very good VHDL handbook (and a list of FPGA projects he did, with source code) from hamsternz . FPGA course - Hamsterworks Wiki! I'm using a jack.gassett 's Papilio…
Parents
  • johnbeetem
    0 johnbeetem over 10 years ago

    That's a lot of material to cover, but I'll try to tackle a few items.

     

    First, it's unfortunate that your college only does VHDL.  I personally prefer Verilog, which is more concise and IMO easier to write and understand.  Verilog is based on C.  VHDL is based on Ada.

     

    Second, there's a huge spectrum of FPGA offerings so which you choose depends on what you want to do and how much money you want to spend.  There are cheap ($1 or a few dollars) FPGAs from Lattice -- e.g., the iCE40 family -- with a small number of look-up tables (LUTs).  They're a good alternative to CPLDs, which are now a "mature" technology.  Small FPGAs are good for "glue" logic and various specialized communication interfaces.

     

    Then you have mid-priced ($10s of dollars) FPGAs from Xilinx (Spartan) and Altera (Cyclone), with enough logic, RAM, and arithmetic to do amazing things.  I've mostly used Xilinx and it's my preference at this level.

     

    Then you have expensive FPGAs ($100s to $1000s of dollars) from Xilinx and Altera.  These are mostly for highly-specialized applications like signal/image processing and cryptography that can afford chips like these.

     

    I've always been able to fit customer applications into Spartan chips by using logic resources efficiently.  Xilinx salesmen don't like me.

     

    When I do an FPGA design for a customer, I want to use the cheapest FPGA that will do the job.  However, I also realize that the customer's needs may change and they'll want to do much more with the same hardware, so I choose an FPGA family and package that has a range of FPGA capacities in the same package.  Xilinx Spartan tend to do this well.

     

    To make sure everything fits, I do a preliminary design and synthesize it to make sure it fits the logic and RAM capacity of the FPGA and meets the clock cycle constraint.  Sometimes it's necessary to pipeline a design to meet the clock cycle.  I far prefer to use a relatively slow clock -- say, 33-40 MHz for a Spartan-3A or Spartan-6 -- so that I can fit many levels of logic into a single clock cycle.

     

    For people who are just starting out and want to play with FPGAs without investing much money, I strongly recommend Lattice's iCEstick, which is available in the USA for as little as $22 (though for some reason element14 has it listed for $30, with none available).  A unique feature of the Lattice iCE40 FPGA on iCEstick is that it can be programmed using open-source tools: http://www.element14.com/community/thread/43876/l/project-icestorm-fully-open-source-fpga-tools-for-lattice-ice40.  The tools support Verilog rather than VHDL.

     

    If you have more money to spend, I recommend Gadget Factory's Papilio boards and ValentF(x) LOGI-Pi and LOGI-Bone.  They bring out lots of I/O and some of the boards have external SRAM or SDRAM.

     

    FPGA software and chip interfacing have steep learning curves.  I recommend using an existing board like iCEstick or Papilio so you don't need to consider details like how to configure FPGAs.  The Xilinx and Altera design software packages are huge and will take a lot of time to get working.  There are tutorials out there -- Gadget Factor is a good place to start.  The open-source IceStorm for Lattice iCE40 has a much simpler learning curve, but has minimal documentation.  You'll need a GNU/Linux box with a GCC compiler that supports C++11 to compile and run the IceStorm tools.

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • hawktalon
    0 hawktalon over 10 years ago in reply to johnbeetem

    Hi John,

     

    first of all, thanks for responding! You have certainly cleared up quite alot of questions I had!

     

    My college's syllabus for VHDL is probably ancient at this time. We're still using Altera Quartus II 8.1 for some unknown reason. I've got v15 running in Ubuntu since ModelSim for some reason doesn't work in Windows 10. I will look into Verilog since if it is based on C, that will be much easier for me to work with since I am more familiar with it.

     

    My real question is targeted at the very beginning of the development process. Say you have a project, for example a cryptocurrency mining device. For the sake of the discussion, the target for the device is "x" amount of performance at "y" cost. Let's leave power consumption out of the equation for now. Where do you start? Which family/brand of FPGA would you pick? What are the specification needed for the FPGA (assuming you have not started on the VHDL/Verilog)? How do you know which FPGA could deliver what kind of performance?

     

    Also, I am currently trying to acquire a FPGA dev board to learn. I think my college has some sort of partnership with Altera since we have ample supplies of DE2 boards and everything is taught in Quartus. But since I am going to graduate soon, I will need to buy something to continue experimenting with. I am thinking of getting one of the DE0 nano boards from Terasic. They seem to offer quite alot of specifications(sorry if my judgement is too newb) for the money. Here are some links.

    http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=165&No=593&PartNo=1

    http://my.element14.com/terasic-technologies/p0082/ep4ce22f17c6n-de0-nano-dev-kit/dp/2076463

     

    Another thing is, is there any barriers to switching between companies? For example, I am now currently more familiar with Altera but I might want to switch to Xillinx products in the future. How hard would it be to make the switch?

     

    Again, thank you so much for replying!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • johnbeetem
    0 johnbeetem over 9 years ago in reply to hawktalon

    Patrick Wong wrote:

     

    My real question is targeted at the very beginning of the development process. Say you have a project, for example a cryptocurrency mining device. For the sake of the discussion, the target for the device is "x" amount of performance at "y" cost. Let's leave power consumption out of the equation for now. Where do you start? Which family/brand of FPGA would you pick? What are the specification needed for the FPGA (assuming you have not started on the VHDL/Verilog)? How do you know which FPGA could deliver what kind of performance?

     

    Another thing is, is there any barriers to switching between companies? For example, I am now currently more familiar with Altera but I might want to switch to Xillinx products in the future. How hard would it be to make the switch?

    Once you have VHDL or Verilog design, it's usually pretty easy to switch between similar FPGAs from different vendors.  If you're using a feature like Distributed RAM or DSP processing elements like multiply-accumulate blocks, you might need to tweak the source code so the synthesizer does the right thing.

     

    Getting back to the original question, guessing which FPGA to use is mostly something that comes with experience.  Sometimes you can get an idea of what is possible by looking at the IP ("Intellectual Property") offered by an FPGA vendor and seeing what size and family FPGA is needed for a given design.  For example, both Xilinx and Altera have "soft processors" which are CPUs implemented in FPGA logic.  You can see how much logic each of them require, and what CPU performance you get for various FPGAs.

     

    Another good way to do this is to write VHDL/Verilog for key parts of your application and run them through the vendor tools to see what performance you can get for various FPGA families.  If it works with a low-cost Spartan or Cyclone, go for it.  If it requires a larger chip or a faster (and more expensive) family, then you have to decide if the extra cost is worth it or review your design to see if there's something clever you can do to make it fit in a cheaper chip.  Working through these kinds of trade-offs and coming up with ingenious solutions is the essence of engineering (the word is based on "ingenuity").

     

    When selecting an FPGA family, I usually go with a family I'm already familiar with.  So recent designs have been mostly Xilinx Spartan-3A, which is a very nice family.  However, my most recent design is Spartan-6, since Spartan-3A is no longer the "sweet spot" and will go end of life in the near future.  Spartan-6 is now the "sweet spot".  It's a more complex architecture, but also more powerful than Spartan-3A and has wonderful distributed RAM capability.

     

    Some of my designs need a small FPGA.  I used to use CPLDs for this, but they have limited flip-flops and are starting to go end of life.  I've recently used Actel (now MicroSemi) ProASIC3, which are nice chips but rather expensive.  For a small FPGA, I'd check out Lattice iCE40.

     

    If you're already familiar with Altera, go ahead and keep using them.  michaelkellett is our Altera and VHDL expert and recently wrote a nice 'blog about a cheap Cyclone board: Cheap Entry into FPGA

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • johnbeetem
    0 johnbeetem over 9 years ago in reply to hawktalon

    Patrick Wong wrote:

     

    My real question is targeted at the very beginning of the development process. Say you have a project, for example a cryptocurrency mining device. For the sake of the discussion, the target for the device is "x" amount of performance at "y" cost. Let's leave power consumption out of the equation for now. Where do you start? Which family/brand of FPGA would you pick? What are the specification needed for the FPGA (assuming you have not started on the VHDL/Verilog)? How do you know which FPGA could deliver what kind of performance?

     

    Another thing is, is there any barriers to switching between companies? For example, I am now currently more familiar with Altera but I might want to switch to Xillinx products in the future. How hard would it be to make the switch?

    Once you have VHDL or Verilog design, it's usually pretty easy to switch between similar FPGAs from different vendors.  If you're using a feature like Distributed RAM or DSP processing elements like multiply-accumulate blocks, you might need to tweak the source code so the synthesizer does the right thing.

     

    Getting back to the original question, guessing which FPGA to use is mostly something that comes with experience.  Sometimes you can get an idea of what is possible by looking at the IP ("Intellectual Property") offered by an FPGA vendor and seeing what size and family FPGA is needed for a given design.  For example, both Xilinx and Altera have "soft processors" which are CPUs implemented in FPGA logic.  You can see how much logic each of them require, and what CPU performance you get for various FPGAs.

     

    Another good way to do this is to write VHDL/Verilog for key parts of your application and run them through the vendor tools to see what performance you can get for various FPGA families.  If it works with a low-cost Spartan or Cyclone, go for it.  If it requires a larger chip or a faster (and more expensive) family, then you have to decide if the extra cost is worth it or review your design to see if there's something clever you can do to make it fit in a cheaper chip.  Working through these kinds of trade-offs and coming up with ingenious solutions is the essence of engineering (the word is based on "ingenuity").

     

    When selecting an FPGA family, I usually go with a family I'm already familiar with.  So recent designs have been mostly Xilinx Spartan-3A, which is a very nice family.  However, my most recent design is Spartan-6, since Spartan-3A is no longer the "sweet spot" and will go end of life in the near future.  Spartan-6 is now the "sweet spot".  It's a more complex architecture, but also more powerful than Spartan-3A and has wonderful distributed RAM capability.

     

    Some of my designs need a small FPGA.  I used to use CPLDs for this, but they have limited flip-flops and are starting to go end of life.  I've recently used Actel (now MicroSemi) ProASIC3, which are nice chips but rather expensive.  For a small FPGA, I'd check out Lattice iCE40.

     

    If you're already familiar with Altera, go ahead and keep using them.  michaelkellett is our Altera and VHDL expert and recently wrote a nice 'blog about a cheap Cyclone board: Cheap Entry into FPGA

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
  • michaelkellett
    0 michaelkellett over 9 years ago in reply to johnbeetem

    I wouldn't consider myself to be an Altera expert but I do use VHDL quite a bit.

     

    I've been away so others have covered the key points.

     

    You don't really suffer from vendor lock in on simple FPGA hardware but as soon as you buy any serious IP (dev tools or IP to run on the chips) then the lock-in effect builds up very quickly. At the high end the device architecture drives the design much more and changing FPGA vendors is very expensive.

     

    As you would expect I would advise you to stick with VHDL (but it's best to know both).

     

    Your cheapest entry is to buy a little Chinese board with an Altera Cyclone II on it and a "usb-blaster" clone - they pair will cost you about £20 and the design tools are free.

     

    When you have a specific project you need to choose the target device, based on the demands of the project - and these are often non technical, eg your employer has invested in tools for X, so of course that's the way you go unless the parts are completely unsuitable.

     

    MK

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube