/EE314-NetworkQueueing-on-FPGA

This is the repository for the term project of the course EE314 Digital Electronics Laboratory. It contains simulation work, design requirements, drawings and reports.

Primary LanguageMATLAB

EE314 Term Project

FPGA Implementation of a Not-So-Very-Simple Network Quality of Service (QoS) Algorithm

Project Summary

Our problem definition selects packet latency and packet loss/drop as the only factors over a buffering structure consisting of four parallel linear buffers, each with six packets, working in a first-in-first-out manner. The exemplary network requires three specifications, Latency precedence, Reliability precedence, and minimum packet loss. Latency precedence can be explained as the most up-to-date packets over the buffers should be arranged as the condition in 1.

L1 < L2 < L3 < L4    [1].

Similarly, reliability precedence is that the least amount of drops should occur in buffer four with decreasing order as in 2.

R4 > R3 > R2 > R1    [2].

The final specification is that overall drops should be minimized for all buffers. Another property of the exemplary system is data output rate, which is fixed at 3 seconds. There exist numerous algorithms with generalized performance over the implemented medium. The test environment for our algorithm to run is selected as FPGA, which is a configurable integrated circuitry dedicated to implementing logic circuit elements.

In this project, a weighted selection algorithm is designed, optimized for randomized inputs with average congestion on the network using the NSGA-II algorithm, and finally implemented on Altera DE1-SoC FPGA with a visual user interface over the VGA (Video Graphics Array). The design of the queuing algorithm, determination of weights using optimization, and the implementation of the algorithm on FPGA environment is discussed in the report which can be found under report.

Report

This report discusses the design, optimization, and implementation of a queueing algorithm. The problem is defined around the requirements and limitations. An exemplary decision function is constructed and tested in a simulation environment. Later weights are optimized using a genetic algorithm, more precisely NSGA-II, in a multi-objective manner. It is shown that the decision function is capable of satisfying the requirements. Moreover, with the optimized weights of the decision function, it is ensured that the algorithm’s performance is at its top level. At last, the queuing algorithm is implemented on FPGA with inputs from buttons and output to the user using the VGA interface.

Demonstration

The algorithm is implemented on Altera Cyclone V FPGA developement board (DE1 SoC). A working photo of the VGA screen is given below.