General Facts

FPGA design, architecture, means and methods of work. The given special course is dedicated to the theoretical and practical foundations of FPGA design. FPGA stands for Field-Programmable Gate Array, which is a semi-conductive crystal, the connections between gates of which and the logic of work can be modeled and changed repeatedly during its work. Acquired skills: practical skills of FPGA Xilinx design of devices under ISE Foundation. VHDL and Verilog basics, Spartan-3e and Virtex-5 architecture. Working with i2c interfaces, PCI, Ethernet, controller of a serial port, LCD display controller unit, working with ADC/DAC.

The duration of each special course within the frames of this program is two semesters. Each semester has 12 obligatory classes of four (4) academic hours each once a week, which totals in 48 hours per semester. Autumn semester hours are distributed the following way: 8 hours of lectures, 16 hours of seminars, 20 hours of practical classes, and 4 hours of examination. Apart from that, there might be additional classes appointed on agreement. In spring semester students have 44 hours to work on their term papers on design and then 4 hours for defending them.

FPGA Design

You all know what a chip is. At the physical level each chip consists of transistors, resistors and condensers etched into a silicon crystal; at the level of logic it consists of elements and triggers. Each type of chips is designed and optimized for executing a particular function or a set of functions (calculations, digital signal transmission and processing, data storage, etc.) and their structure (logic) is prescribed at the time of its fabrication, and it cannot be changed when used. All chips are like that. Almost all of them…

There are digital devices the logic of which can be changed infinite number of times after its fabrication (naturally, in case of circuit diagram only nanotechnology can be of help.) Such chips are referred to as FPGA as in field programmable gate array. This is a very young and fast-growing electronics industry - the first FDGA was made by Xiling in 1985. FPGA consists of sets of logical blocks (from thousands to hundreds of thousands, depending on the size of a crystal). They consist of elements, which can be programmed for execution of any logical function of several arguments and a data cell. These logical blocks can be connected in various ways with the help of a programmable gate array. The logic of each block, as well as connections of blocks, are defined by a so-called firmware which you upload on the chip from your laptop, via network or any other convenient way (that is why it is called ‘field programmable’ as in programmable in the field). As a result, you completely define the logic of chip functioning, and you can then use it for the organization of various interfaces (PCI/PCI Express, USB, TCP/IP, RS232, etc.), for processing digital signals (signal-noise discrimination, compression, encoding, encryption, etc.) or for operating one’s own physical experimental apparatus (issuing clock signals for lasers, for logging systems, and for data processing). You can even upgrade the firmware on your FPGA microcontroller, and you will still have enough space for memory and peripheral circuits.

The main task of the course is to teach method and principles of work with such devices. Education process is conducted on the modern material basis, which includes Spartan 3e Starter Kit boards with installed Xilinx Spartan 3e FPGA as well as numerous peripheral devices (ADC/DAC, LCD display, and PS/2, VGA, RS232, TCP/IP ports). In the first semester students learn VHDL programming language for logic description of their future devices and work on elementary projects on controller kits. In the second semester students apply the acquired knowledge for the development of their original projects, which, for instance, can be connected with the data transmission through PCI/PCI Express interfaces or with digital signal processing using MATLAB Simulink. And that is not all…


  • Class #1: Introduction to circuit technique. Computation systems. Boolean algebra: truth tables, Boolean functions. Combinational logic circuits (multiplexers, comparators, decoders). Design and modeling of combinational logic circuits under ISE schematic editor.
  • Class #2: Circuit engineering. Serial logical devices. RS trigger (asynchronous, synchronous). D-trigger. Triggers with static management (latches) and with dynamic management (flip-flops). D flip-flop. Registers and counters. Working with sequential logical elements under ISE schematic editor. Implementation of the task ‘LED flickering under given frequency’.
  • Class #3: Architecture of Spartan 3e. Structure of a chip (configurable logical blocks, input/output blocks, general tracing resources, clock resources, multipliers, block storage. CLB structure. IOB structure. FPGA configuration. Implementation of Spartan 3e primitives under ISE schematic editor.
  • Class #4: Introduction to VHDL. Objects and structure of the language. Project hierarchy. Signal, process, insertion assignment statements. Synthesis and modeling constructs. Description of the logic function on VHDL, modeling. Implementation of the task ‘LED flickering under given frequency’ on VHDL.
  • Class #5: VHDL. Types of data, signals, variables. Attributes of signals. Serial and parallel operators. Implementation of circuit crosspoints and elements on VHDL. Std_logic package and signal enable. Implementation of ‘serial data transmission interface and LED operation’. Implementation of finite-state automatons on VHDL. Implementation of the ‘traffic lights’ task.
  • Class #6: Control automatons. Introduction. Finite-state automaton theory. Moore machine and Mealy machine.
  • Class #7: Control automatons and an LCD display controller. Theory of the LCD display controller. Implementation of the finite-state automaton for LCD display initialization alarms using a program from memory.
  • Class #8: Working with the keyboard controller. Structure and functioning of a keyboard controller. Data in from a keyboard and its visualization on an LCD display.
  • Class #9: Working on an individual task. Developing structure of the project.
  • Class #10: Working on an individual task. Creating project code on VHDL.
  • Class #11: Working on an individual task. Debugging the program on a controller kit.
  • Class #12: Working on an individual task. Presentation of the project.


  • Opadchiy. Analog and digital electronics. (classes #1 & 2)
  • Serguiyenko. VHDL (classes #3-5)
  • Maxfield, C. (2004). The design warrior's guide to FPGAs: Devices, tools and flows. Boston: Newnes. (class #3)