Changes

Jump to navigation Jump to search
1,307 bytes added ,  14:42, 6 July 2007
no edit summary
Line 1: Line 1: −
FPGA programming using a hardware description language is not a commonly taught skill in physics programs, but is a necessary skill for designing the electronics required for this project.  This tutorial aims to layout the design process and teach the basics of VHDL.
+
FPGA programming using a hardware description language is not a commonly taught skill in physics programs, but is a necessary skill for designing the electronics required for this project.  This tutorial aims to layout the design process and teach the basics of hardware description language; in particular [http://en.wikipedia.org/wiki/Vhdl VHDL].  The main competitor to VHDL is [http://en.wikipedia.org/wiki/Verilog Verilog]; tutorials and information regarding Verilog can be found through Google web searching.
   −
<code>
+
== Design example ==
\frac{1}{2}
  −
This is a code box... I think
  −
</code>
     −
\frac{1}{2}
+
To illustrate the discussions in this tutorial, a design example is discussed along the way.  The design example is the [[http://zeus.phys.uconn.edu/wiki/index.php?title=Programming_the_FPGA#Emulator_.28D.29|emulator for the AD5535 DAC]].  As each step of the design process is discussed, the DAC emulator will be used for illustration.
This is outside a code box or a math region.
     −
<math>
+
== Where to start ==
\frac{1}{2}
  −
This is a math region.
  −
</math>
      +
The first part of the design process is completely independent of any code.  The first step is to define the "black box" of your circuit; that is, draw a box and say what goes in and what comes out.  VHDL allows three types of ''pins'' (connections to the outside world):
 +
* '''in''': An ''in'' pin can be read from but never written to.
 +
* '''out''': An ''out'' pin can be written to but never read from.
 +
* '''inout''': An ''inout'' pin can be both read from and written to, providing the flexibility to allow bidirectional communication on a single line.  At first this seems the ideal choice and that you would always want inout pins; in actual fact you want to avoid inout pins unless you absolutely need them for bidirectional communication.
    +
 +
 +
Having defined your block box, you need to fill in your black box.
 +
 +
 +
 +
== VHDL Resolution Table ==
    
{| style="text-align:center"
 
{| style="text-align:center"
461

edits

Navigation menu