This project introduces Digilent's FPGA-based circuit boards and the Adept™ software that is used to program them. In tutorial fashion, Adept is used to download a logic circuit to the board, and that circuit is used in an experiment with basic logic circuits. In future experiments, you will use the Xilinx® CAD tools, Digilent board and Adept software to design and implement a wide range of circuits, from basic logic devices through more advanced digital systems. Digilent boards are built around a chip called a “Field Programmable Gate Array” (or FPGA) produced by the Xilinx corporation. The boards include all necessary support circuits (including power supplies, clock sources, resets, programming circuits, and I/O), so that you can focus on your designs, without worrying about the hardware itself.
The FPGA can be configured many thousands of times into a virtually unlimited number of circuits, making it an ideal tool for learning about digital circuits and systems. In fact, FPGA's have gained wide acceptance in the electronics industry for the same reason—they can quickly be configured into virtually any circuit (and even entire computer systems), allowing engineers to thoroughly study designs before they are built commercially. In recent years, FPGA costs have decreased to the point where a large and growing number of customers design them into their final products; such products get the added benefit of allowing in-the-field system hardware upgrades. In the years to come, it is likely FPGA's will continue to find their way into a larger number of products, perhaps eventually replacing microprocessors and a host of other special purpose chips in the majority of designs.
After power-on, an FPGA on a Digilent board must be configured (or programmed) by the user before it can perform any useful functions. During configuration, a “bit” file is transferred into memory cells within the FPGA to define a circuit's logical functions and interconnections. The free ISE/WebPack CAD software from Xilinx can be used to create bit files from VHDL, Verilog, or schematic-based source files. After a programming file has been created, it can be downloaded to the board using Digilent's Adept software. The Xilinx iMPACT™ software can also be used, but the Digilent Plugin for Xilinx Tools is required to interface with the Digilent programming solution (this is available free of charge on the Digilent website). Once programmed, the FPGA will retain its configuration only as long as power is applied.
All Xilinx chips can be programmed using a special built-in interface known as the “JTAG” port (JTAG in an acronym for the “Joint Test Action Group,” which is group composed of member companies interested in ensuring that test and programming ports evolve to use a common interface). JTAG ports are commonly used for moving test data between computers and integrated circuits, and they are increasingly used for transferring configuration data as well. All JTAG ports follow published signal definition, timing, and control specifications, but data formatting is largely left up to individual companies. Xilinx has developed programming algorithms for their devices, and programming software (like Digilent's Adept or Xilinx's iMPACT) must drive the JTAG ports in accordance with JTAG specifications and the programming algorithms.
FPGA's on Digilent boards can be programmed in two ways: directly from a PC via a USB cable and from an on-board Platform Flash ROM that is also user-programmable. Once programmed, the Platform Flash can automatically transfer a stored bit file to the FPGA at a subsequent power-on or reset event. A “Mode Jumper” is available on Digilent boards to select between JTAG/PC-based programming and ROM based programming. Whereas JTAG/PC-based programming can occur at any time, ROM-based programming can only occur after a power-cycle or reset event (a reset-event occurs when the “FPGA reset” button on the Digilent board is pressed). The FPGA will remain configured until the next power-cycle or reset event, but the Platform Flash ROM will retain a bit file until it is reprogrammed, regardless of power-cycle events.
To program a Digilent board using Adept, attach the USB cable to the board (if USB power will not be used, attach a suitable power supply to the power jack or battery connector on the board, and set the power switch to VEXT). Start the Adept software, and wait for the FPGA and the Platform Flash ROM to be recognized. Use the browse function to associate the desired .bit file with the FPGA, and/or the desired .mcs file with the Platform Flash ROM. Right-click on the device to be programmed, and select the “program” function. The configuration file will be sent to the FPGA or Platform Flash, and the software will indicate whether programming was successful. The “configuration done” LED will also illuminate after the FPGA has been successfully configured. Further information on using Adept is available in the appendix and in documentation available at the Digilent website.
Digilent boards contain from hundreds to thousands of components, depending on the number and complexity of circuits they contain. Each component is chosen specifically for some intended function, and during manufacturing each must be correctly sourced from the manufacturer. The printed circuit board (PCB) itself must be properly designed and manufactured, and every component must be loaded onto the board to exact tolerances (typically less than 1/1000 of an inch). A single incorrect or bad component, or a single good component loaded incorrectly during manufacturing can cause the board to malfunction or fail completely. Even a relatively simple board (like the Basys) must be carefully manufactured and tested thoroughly prior to being released for sale. Ultimately, development boards (like the Digilent boards) are sophisticated engineering tools, and at one time or another, users need to understand all the components, circuits, and functions in order to use the board productively.
Three documents are available for users to fully understand a Digilent board and its functions: the reference manual, the schematic, and the parts list. It is prudent to have copies of all of these documents handy for reference, and to learn something about them prior to actually needing them.
The reference manual essentially explains the schematic. It is a good introduction for new users, but experienced engineers may not use it at all. For experienced engineers, the most concise, accurate, and unambiguous reference document is the schematic. The schematic is the engineering source document from which the board was produced, and as such, it contains all pertinent data anyone might need to use the board.
The schematic shows all components on the board, their values, and their connections to all other components. Each component on the schematic and on the PCB is identified by a unique alpha-numeric string called a reference designator. If you examine the schematic, you will see the reference designator text strings (e.g., “R21” or “C37”) near every component. The contents of designators are not really significant, although in general resistors start with the letter “R”, capicitors with “C”, inductors with “L”, chips with “IC“, diodes with “D”, LEDs with “LD”, transistors with “Q”, and connectors with “J”. The number following the letter can represent either the order in which parts were added to the schematic, the order in which they appear in the schematic, or some combination of the two. All that really matters is that each component be identified with a unique test string. If you examine the board, you will see the same reference designators spread around both sides of the board.
Before using your board, you should verify that it is functioning properly. All boards with a simple test program loaded in the Flash ROM that can be used to quickly check many of the connections and device on the board.
Now that you've finished this project, you should complete the associated exercises located through the links to the right.