Final Year Engineering Projects

Project Description:

Spock I completed my final year project in 2002. The project was "Hardware and Software Implementation of RamDisk using FPGA" Basically we designed a controller using XILINX VIRTEX FPGA with I2C which transferred the data between Micron SDRAM and any other storage devices through PCI interface. Basic building blocks were Register File, DMA, I2C, SDRAM Controller and a PCI Interface on top of it. We also wrote a device drive in C/C++ while the hardware development was done in Verilog/VHDL.

Primary Motives for doing the Project:

  • To learn advance digital design techniques, modeling, and prototyping using FPGA's.
  • To understand PCI/PCIX Interface/specification, DMA operation, data synchronization, FIFO/LIFO techniques
  • To use Computer Architecture, Digital System Interfacing, Data Communication techniques
  • To lean how to write Device Drivers
  • To design a storage device that can be used for fast boot or data processing w/o any moving parts

Some Project Suggestions:

  • Digital System Interfacing
  • NatCar (search on google for more info)
  • VOIP using SIP
  • Pattern Recognition
  • PCI bus in an embedded system
  • Network processor design and/or implementation
  • Simple network device on a chip
  • Network appliance
  • TCP/IP implementation @ hardware level (FPGA/ASIC

Like other guppies have suggested, always check out CmpE/EE project websites and see what other students are doing.

[QUOTE]
*Originally posted by Saqib Khan: *

Project Description:

Spock I completed my final year project in 2002. The project was "Hardware and Software Implementation of RamDisk using FPGA" Basically we designed a controller using XILINX VIRTEX FPGA with I2C which transferred the data between Micron SDRAM and any other storage devices through PCI interface. Basic building blocks were Register File, DMA, I2C, SDRAM Controller and a PCI Interface on top of it. We also wrote a device drive in C/C++ while the hardware development was done in Verilog/VHDL.

Primary Motives for doing the Project:

  • To learn advance digital design techniques, modeling, and prototyping using FPGA's.
  • To understand PCI/PCIX Interface/specification, DMA operation, data synchronization, FIFO/LIFO techniques
  • To use Computer Architecture, Digital System Interfacing, Data Communication techniques
  • To lean how to write Device Drivers
  • To design a storage device that can be used for fast boot or data processing w/o any moving parts

Some Project Suggestions:

  • Digital System Interfacing
  • NatCar (search on google for more info)
  • VOIP using SIP
  • Pattern Recognition
  • PCI bus in an embedded system
  • Network processor design and/or implementation
  • Simple network device on a chip
  • Network appliance
  • TCP/IP implementation @ hardware level (FPGA/ASIC

Like other guppies have suggested, always check out CmpE/EE project websites and see what other students are doing.
[/QUOTE]

Now that is really impressive. One question for you though, why did you use FPGAs? Isnt it better to use a CPLD in this situation?

[QUOTE]
*Originally posted by Spock: *

Now that is really impressive. One question for you though, why did you use FPGAs? Isnt it better to use a CPLD in this situation?
[/QUOTE]

Difference between FPGAs and CPLDs

The most widely accepted definition of a CPLD is that it is a device composed of a number of product-term arrays/register combinations that are interconnected by a switch. All other high-density PLDs are considered to be FPGAs. The product-term array is usually an AND array that is followed by a number of OR gates and registers. The number of inputs to the OR gates and the number of OR gate/register combinations, called a macrocell, vary from manufacturer to manufacturer.

FPGAs offer much higher complexity -- up to 70,000 flip-flops -- and their idle power consumption is reasonably low. Because the configuration bitstream must be reloaded every time power is re-applied, design security is an issue, but the advantages and opportunities of dynamic reconfiguration, even in the end-user system, are an important advantage. FPGAs offer more logic flexibility than CPLDs, and more sophisticated system-level features (clock management, on-chip RAM, programmable I/O levels).

Our Reasons for using FPGA

  • Data Path Logic
  • Register Files
  • FIFOs/LIFOs
  • Serial-Parallel/Parallel-Serial
  • Bus Interfaces
  • Registered Logic
  • High Capacity

We basically designed SOC which included Register File, DMA, I2C, SDRAM Controller, PCI Interface etc. Using an FPGA was a feasible solution

Relative Advantage in Using CPLDs

  • Control Logic
  • State Machines
  • Address Decoders
  • Bus Controllers
  • Priority Encoders
  • Wide Functions
  • Combinatorial Logic
  • High Speeds
  • Predictable Timing
  • Moderate Capacity

It is not unusual to find CPLDs and FPGAs on the same circuit board, with the different devices used for the circuit functions appropriate to their architectures. Many of the distinctions between the two types of PLDs are beginning to blur.

Here is an image of finished product.

[thumb=B]P1010002v1.JPG[/thumb]

Saqib, thanks... Another difference (a big one) would be the fact that the CPLD does not retain the programming implemented through Xilinx, and everything wipes off once the power is removed... However, the FPGA retains everything...

Mods, I was wondering if I can post some links from different universities to their senior engineering projects... Plz let me know...

Sure.