CS/COE 535

Acceleration of Algorithms in Reconfigurable Hardware

Lockwood, Fall 2003

Machine Problem 1

Implementation of a Network Statistics Monitor

 

Assigned

Wednesday, September 24th, 2003

Due Date

Friday, October 3rd, 2003 5 pm

Purpose:

Introduction to the FPX Environment and
CAD Synthesis Tools

Points

 (100 points)

Introduction

In Homework 1 you analyzed the control packet processor, viewing how it traverses through an IP packet.  In addition, you saw how it set the packet type to be either TCP or UDP.  Now we are going to build upon the pre-existing state machine to deal with control packets as well as add a statistics application to this application. 

Your goal in this assignment is to use the state machine from Homework 1, the statistics counter you built in Homework 2 and Homework 3 to count the number of TCP, UDP, Control, or generic IP packets that are input to the network application.  By the end of this assignment you will have learned:

 

Background: Application Environment

Our application will be implemented in the Reprogrammable Application Device (RAD), which currently is a Xilinx XCV2000E class FPGA.  The RAD is configured as in Figure 1.  Note that the loopback module sits on the switch interface (egress path), while our network application sits on the line card interface (ingress path). 

Figure 1: RAD Configuration.

The loopback module simply feeds incoming traffic back out on the outgoing traffic port.  The network module is where we will implement our design, as shown in Figure 2. 

Figure 2: Network module block diagram.

In this mp, we will be modifying the contents of snort_app.vhd.  This file, sits inside the Protocol Wrappers, as Figure 2 shows.  For this Machine Problem, we need only consider the signals of the IP wrapper interface (later, we will also consider SRAM and SDRAM signals).  A list of the input and output signals can be found in Table 1. 

 

Input Side

Output Side

  • clk

  • reset_l

  • D_OUT_APPL

  • DataEn_OUT_APPL

  • SOF_OUT_APPL

  • SOIP_OUT_APPL

  • EOF_OUT_APPL

  • SOP_OUT_APPL

  • TCA_OUT_APPL(an output)

 

  • D_APPL_IN

  • DataEn_APPL_IN

  • SOF_APPL_IN

  • SOIP_APPL_IN

  • EOF_APPL_IN

  • SOP_APPL_IN

  • TCA_APPL_IN (an input)

 

The alert_generator.vhd component has been provided for you.  It is responsible for forming an UDP alert packet to be sent to a designated location.  This will allow you to send in a control packet to read a counter number from your statistics module.

Note that space has been left in the diagram of Figure 2.  We will be adding additional components to this as the semester progresses. 

Directions:

Table 2: Symbol Key

Of Interest

Modify

Synthesizable

Table 3: Contents of MP1.tar.gz

MP1/sim/ Simulation Folder

 

 

 

makefile

Example make file used to automate compilation and simulation.

 

 

 

mp1_wave.do

Wave list including top level of snort_app.vhd and cpp_rules_programmer.vhd

 

 

 

mp1_test.dat

Test data packets.

 

 

 

 

MP1/backend/ Backend Folder

 

bitgen.ut

Bitfile generation constraints file.

 

 

 

cellproc.edn

Cell Processor EDN specification.


 

 

cntr_ram.edn

16 by 256 Block RAM EDN specification.


 

 

fifo15x35.edn

Wrapper Specific FIFO.


 

 

fifo31x32.edn

Wrapper Specific FIFO.


 

 

fifo32x36.edn

Wrapper Specific FIFO.


 

 

fifo_127x32.edn

Wrapper Specific FIFO.


 

 

fifo_15x32.edn

Wrapper Specific FIFO.


 

 

fifo_15x7.edn

Wrapper Specific FIFO.


 

 

fifo_16_by_16.edn

Alert Generator Specific FIFO.


 

 

fifo_16_by_32.edn

Alert Generator Specific FIFO.


 

 

fifo_512x32.edn

Wrapper Specific FIFO.


 

 

fifo_512x34.edn

Wrapper Specific FIFO.


 

 

frameproc.edn

Frame Processor EDN specification.


 

 

ipproc.edn

IP Processor EDN specification.


 

 

llc_proc.edn

LLC EDN specification.


 

 

makefile

File used to build your design.

 

 

 

network_application_core.edf

Top level EDF file, generated by synplicity.

 

 

network_application_core.pcf

Constraints file generated by Synplicity.

 

 

 

rad.ucf

Pin constraints file.

 

 

 

ram512x16.edn

Wrapper Specific Block RAM.


 

MP1/syn/ Synthesis Source Folder

 

Nothing yet, but you will add a snort_app.prj file.

MP1/vhdl/ VHDL Source Folder

 

testbench

 

 

clock.vhd

The vhdl file for simulating the Cell Processor.

 

 

 

 

 

IP_packets_in.vhd

The vhdl file for simulating interface from our network application into the IP Wrapper.

 

 

 

 

IP_packets_out.vhd

The vhdl file for simulating interface from the IP Wrapper into our network application.

 

 

 

 

testbench.vhd

The main simulation file.  You will simulate this entity.

 

 

 

alert_generator.vhd

UDP Alert message generator

 

 

alert_generator_fsm.vhd

Packet generator control FSM

 

 

 

cpp_rules_programmer.vhd

Main FSM.

 

cntr_ram.vhd

Block RAM component

 

 

 

 

fifo_16_by_32.vhd

Fifo Used by the alert generator

 

 

 

 

snort_app.vhd

Top Level Design Unit

 

Things to Turn In:

Here is a checklist of the things you need to turn in: