On the nature of hardware (FPGA) input and output
Monday, June 25th, 2007Many people who have exclusively worked with software bring their software notions of input and output to FPGA land and get frustrated with the development software. VHDL and Verilog are not languages suitable for programming in a software style unless you are only interested in simulation, as opposed to implementation.
Some folks are implementing ESL (electronic system level) languages for software types who won’t or can’t get their minds to think in terms of hardware. The tools require far more work to get decent results, because of the greater mismatch between hardware and software. As a result, these relatively new commercial products are currently very expensive.
In hardware, inputs and outputs are connections. They are not operations! Just think of any audio/video setup. The tuners and players have output connectors; the consoles, amplifiers, and other equipment (such as equalizers and mixers) have both input and output connectors; speakers and video monitors have input connectors. You use cables, which are basically bunches of wires, to connect inputs to outputs. The system will work with older analog systems, as well as with newer digital systems. In other words, the whole notion of executing input and output instructions is not needed. Going digital does not change this property of hardware.
When power is on and connections are established, there is no such thing as no input or no output. In a combinatorial (i.e., unclocked) circuit, the circuit reacts immediately to changes in the input. It also changes its outputs immediately. In a clocked circuit, a clock signal is used to “sample” or “capture” the input, and to “change” the output. Some digital outputs can also be set to a “high impedance” state, which is logically a “disconnect”. This last state is important for creating bidirectional I/O on FPGA’s.