I am learning to program programmable devices using a XC9572XL CPLD. I would like to know how much knowledge from programming CPLDs (in Verilog, VHDL) will be transferable to programming FPGAs (not necessarily Xilinx FPGAs).


The main difference is that you program a CPLD once, and it stores its configuration in non-volatile memory, and then if you power cycle it it will return to the previous configuration without needing to be programmed again. With FPGAs (except for a few special devices or families) every time you power up the device you need to re-program it.

Because of that, many FPGAs have hard-coded logic to re-program themselves from an EEPROM or flash chip after power-up.

Another thing to keep in mind is FPGAs are generally more complex than CPLDs so their configuration files are generally larger, sometimes much, much larger.

Also, the XC95 series is quite old at this point, and the configuration options available for FPGAs have evolved since then. So read the datasheet (or configuration users guide) for your FPGA to find out all the configuration options available for it and pick the best one for how you're using the device.

  • 1
    \$\begingroup\$ The initialization difference is one of SRAM-based FPGAs vs. basically everything else including other sorts of FPGAs, and so somewhat tangential to the question. The points about the architecture and scope of the logic fabric are what really matter. \$\endgroup\$ – Chris Stratton Dec 14 '19 at 19:04
  • \$\begingroup\$ @ChrisStratton, AFAIK SRAM based FPGAs are the vast majority of FPGAs sold. If you're designing a real system, it makes a big difference whether you are going to program your device once at production time, or need to arrange for it to be re-programmed in the field every time you turn it on. \$\endgroup\$ – The Photon Dec 14 '19 at 19:07
  • \$\begingroup\$ That really depends on what you are buying a device for. Also there are modern SRAM FPGA's with a configuration ROM in-package. \$\endgroup\$ – Chris Stratton Dec 14 '19 at 19:12
  • 1
    \$\begingroup\$ The OP's use of the term "programming" refers to the engineering/language skills required to produce the functional design, not the nuts-and-bolts associated with configuring the actual device. \$\endgroup\$ – Dave Tweed Dec 14 '19 at 19:12
  • 1
    \$\begingroup\$ @ChrisStratton, I answered the question as written. If you have a crystal ball able to read the mind of OP, you should be working the tables in Vegas, or selling financial products, not trolling StackExchange. \$\endgroup\$ – The Photon Dec 14 '19 at 19:17

All of it. Think of a CPLD as a subset of what's available on an FPGA. The way you synthesize HDL to a CPLD is the same. The main difference is an FPGA typically contains IP blocks that you can include without having to write the code yourself.

There are certainly differences in the way the devices implement your logic, and the steps needed to download that implementation, but the skills need to write synthesizable RTL are the same.

  • \$\begingroup\$ Another half right/half wrong answer. Even absent add-ons like block memories, multipliers, clock modules, etc, FPGAs and CPLDs traditionally have fundamental differences in the architecture and scope of their logic fabric and routing. Of course there are oddball devices that have fallen in between the norms, too. Also "IP blocks" includes libraries compiled into a design even more than it refers to fixed hardware engines on the chip. \$\endgroup\$ – Chris Stratton Dec 14 '19 at 19:21
  • \$\begingroup\$ While those differences don't typically impact the basic mechanism which a new user would use for design, they very much do impact the scope of the projects which can be attempted and which sort of device should be chosen for a given type of goal - CPLD's aren't all that useful for beginners. \$\endgroup\$ – Chris Stratton Dec 14 '19 at 19:33
  • \$\begingroup\$ @ChrisStratton, true, there are difference in design domain whether you are building a toaster controller, or a beam-forming satellite transponder. And the skills you need to learn about what devices are part of the platform you intend to implement your design are the same--it's just there are a different spread of IP devices. \$\endgroup\$ – dave_59 Dec 14 '19 at 20:01
  • \$\begingroup\$ @ChrisStratton, there are products being sold as CPLDs now that have more features and more resources than FPGAs did 20 years ago. I don't see how you can write them off as "not all that useful for beginners". \$\endgroup\$ – The Photon Dec 15 '19 at 0:39
  • \$\begingroup\$ @ThePhoton - you really need to actually read the question. The asker's experience with a CPLD is with the XC9572XL \$\endgroup\$ – Chris Stratton Dec 15 '19 at 2:19

Not the answer you're looking for? Browse other questions tagged or ask your own question.