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
  • hawktalon
    0 hawktalon over 9 years ago

    Ok, one more question. How do you differentiate the chips from the vendors in terms of the design of the chips themselves not the IDEs. What makes Xillinx/Altera/Lattice chips different from each other?

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

    Ok, one more question. How do you differentiate the chips from the vendors in terms of the design of the chips themselves not the IDEs. What makes Xillinx/Altera/Lattice chips different from each other?

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

    At the beginner level it doesn't matter much - simple things like power, price, packages, ip support and availability are more important than the core architecture.

    You'll only fully understand and care about the differences as you become more experienced.

    You can read a lot of interesting material on the Xilinx and Altera websites about the high end stuff.

    Lattice are much more in to the low end small devices.

    Although I've been FPGA-ing since Xilinx made the first 64 LUT device I wouldn't be able to give you a good analysis of the relative merits of Altera and Xilinx high end devices, quite simply because I don't work in that area.

     

    Things that might sway some people are:

    Xilinx have a fairly low cost C -> FPGA tool (it isn't quite C and it isn't 100% automatic),

    Altera have just announced a new RAD hard device for space applications,

    Lattice ICE40 parts use hardly any power (I just measured the core current on an ICE40 HX8 running  a data acquisition application at 400k samples/second and using 50MHz primary clock at 3.5mA)

     

    MK

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

    Patrick Wong wrote:

     

    Ok, one more question. How do you differentiate the chips from the vendors in terms of the design of the chips themselves not the IDEs. What makes Xillinx/Altera/Lattice chips different from each other?

    As michaelkellett pointed out, this will become more important as you gain experience and start looking for ways to optimize designs.  But here's some of the things I look for...

     

    You can get a quick overview of an FPGA architecture by looking at the family's data sheet, technical reference, or user guide.  Take a look at the basic cell architecture.  Most FPGAs are based on k-input look-up tables (LUTs) which can realize any k-input logic function.  However, the value of "k" varies.  I've mostly used Xilinx Spartan-II, -IIE, -3A, and -3E which have 4-input LUTs.  The newer Spartan-6 has 6-input LUTs, which can be used as two 5-input LUTs that share the same input signals.  Actel (now MicroSemi) ProAsic3 have the equivalent of 3-input LUTs.  I've found that 4-input LUTs work quite well, but that 3-input LUTs require far more LUTs to realize a design, and you'll get more levels of logic and thus poorer performance.  6-input LUTs are kind of overkill, but have a big advantage for distributed RAM (see below).

     

    A logic cell also has a flip-flop or latch.  Here you get lots of differentiation.  For example, the Xilinx Spartan parts I've used have a flip-flop that can be either an edge-triggered FF (either clock edge) or level-sensitive latch (either clock level).  However, Lattice iCE40 only has edge-triggered FFs.  Some families require groups of FFs to share the same clock edge.  This is not a problem if your design has a single clock (very highly recommended) but if you have multiple clocks there's a potential for placement to fail.

     

    Some families (Xilinx Spartan) let you use the LUT and FF independently, which means you have lots of extra FFs lying around which can be useful for pipelining.  Others (iCE40) directly connect the FF to the LUT, so you can't use the FF independently.  Still others (ProAsic3) let you use a cell as a LUT or a FF, but not both.  This can burn through cells quickly in a design with lots of FFs.

     

    Some logic families (Spartan) let you use a LUT as a small RAM, a concept called "Distributed RAM" as opposed to "Block RAM" which are larger blocks of dedicated RAM.  Distributed RAM can be incredibly useful for some designs.  For example, Spartan-IIE/3A/3E let you use a 4-input LUT as a 16x1 RAM, or two together as a 32x1 RAM or a 16x1 dual-port RAM.  I use this to time-multiplex combinational logic with 16 different copies of the "state" instead of having to implement 16 copies of the combinational logic.  Seymour Cray used this trick with the CDC 6600 peripheral processors.

     

    The Lattice iCE40 doesn't have distributed RAM.  The Xilinx Spartan-6 has very powerful distributed RAM thanks to its 6-input LUTs, which lets you easily multiplex 32 virtual copies of a block of logic.

     

    Cells may also have built-in carry chain logic and 2:1 multiplexers for combining the outputs of adjacent LUTs to form large multiplexers and other logic functions.

     

    Then there are other features like Block RAM, multiply/accumulate blocks for DSP, and PLLs for clock control.  Making use of these restricts your ability to switch between FPGA families, but they can create powerful functionality in a low-cost FPGA.

    • Cancel
    • Vote Up +1 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