Electronic – Importance of an FPGA external clock

clockfpga

I am very new to FPGA development, but I have a relatively simple application I'm trying to implement on a Microsemi ProASIC3. The hardware I have to work with has no external clock source (i.e., no crystal or resonator). At first, I assumed there was some way to generate an independent internal clock, as you can with some microcontrollers, but reading through the datasheet this doesn't appear to be something this family can do (indeed, reading the internet, it seems to not be a feature of most FPGAs).

For this application, there isn't strictly a need for a clock – nothing is time-driven. The FPGA is simply maintaining an internal register that corresponds with a bunch of outputs. This register's value changes depending on the present state of some inputs and some internal logic.

But, looking at the various FPGA resources I see that clocks are fairly ubiquitous in example designs. While I'm fairly confident that I don't need one – I fear that half way through development I will find a need for one will arise in some unexpected place.

My question is: should I throw out this hardware and get something with a clock onboard, because clocks are effectively required for all designs and I'm wasting my time working without one? Or is it entirely possible to build sensible FPGA designs that never need external clocking?

Best Answer

If you need a clock inside FPGA, you can synthesize an internal ring oscillator, see an example here. If totally internal, there might be some implementation caveats, it might be either optimized out, or too fast and unstable. However, if you can sacrifice two I/O pins on your hardware platform, you can put a RC delay there, and close the loop internally.