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

    This is an interesting thread and I'd like to add a few (rather random) thoughts. Note, though, that I haven't done anything with FPGAs for about 5 years now, so some of this may be a bit out of date.

     

    I worked with Spartan 3 parts using VHDL.

     

    Speed. The headline speed on the datasheet is for a very simple counter. You won't create a real design to operate that fast. The way to get a feel for the realisable speeds you can achieve is to knock up some trial designs and look at the max clock speed that gets reported. It's not easy to give you an guide because it depends so much on how you code and how well that maps onto the hardware, the nature of the design and what you're trying to do, how much of the device resources you're using, and so on.

     

    The DL in VHDL stands for Description Language. You are describing the hardware. You really do need to understand the underlying hardware to code efficiently. If you approach it as a simple programming exercise you'll end up with very bloated designs that only run slowly.

     

    Watch out for implied memory.

     

    Once you've done a few designs, you'll find that you can go a long way on cut-and-pasting. I got so that my start point for a new design was generally something I'd already done that was similar.

     

    The synthesis software works very efficiently if the design is sparse [say up to 50%-60% utilisation of resources], but as you cram more and more into your design you'll find it gets harder and harder for it to complete, even though in theory there are resources still available. If you are working commercially, and don't need to shave every last penny off your costs but do need to get designs out quickly and efficiently, give yourself plenty of capability in hand. One nice feature of the Spartan parts was having 2 or 3 different densities of device available in the same footprint package - knowing that there was a higher density device available that could go on my board was reassuring early on when I wasn't very confident about estimating the logic and memory resources that I would need.

     

    Constraints (timing and placement) seem like a good idea but can be counterproductive. I had a design where I needed a very small part of my design to operate very quickly. I tried tying down the logic blocks concerned and put timimg constraints on the signals and it always did worse than the unconstrained synthesis. The programmers at Xilinx knew their chips much better than I did and me tying them down was just getting in the way. [But do experiment - that's the kind of thing that can change or you might have a flair for it that I don't]

     

    The Xilinx design software has a viewer to show you how the synthesis has arranged everything internally. Use it as you gradually build up a design and you'll get a feel for how the synthesis places everything. It will also show you [with a bit of experimentation on your part] how to organise your IO pins to best work with your internal logic and minimise timing delays.

     

    The block RAMs in the Spartan parts turned out to be very useful [though as John Beetem says you're making your design less portable]. Table look-up is very fast - I used them for gamma correction, amongst other things. The RAM can be loaded from configuration data to give a ROM, too, though I usually used the second port to load the table values from an external processor. They were also useful for moving between clock domains [several of the products I worked on involved taking DVI from a computer and processing it, and the dual-port block RAMs enabled me to set up a swinging buffer with different clocks on the two sides].

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject 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