This is course programming project worth 30% from the total mark.Because the limitted time that i have I cannt do it .The project is to design a software switch (8x8 knockout switch )using C language .
For an 8 x 8 crossbar with knockout we need to have the parts below:
more detaile of this switch is on the attachment.
1. one 8 x 8 crossbar switch, this is probably the easiest part. As Fahad says its like a broadcast bus with each input port connected to every output ports of the switch.
2. we need to have 8 blocks of knockout section with one connected to each of the output ports of the crossbar switch. The knockout section takes 8 input and gives 1 output.
3. Each knockout section is identical with three internal parts, they are the packet filters, concentrator and the shift.
4. The Packet Filter (section A in lecture notes) takes 8 input and gives 8 output. The 8 inputs are the packets from 8 input ports. It looks at the destination of those packets, then attaches an active tag with each of the packet that is destined to the output port which A is connected to. The packets with this active tag is known as the active cells.
5. The Concentrator takes in 8 inputs and gives out 4 output, ie in worst case, where all 8 input are active cell, it will drop 4 packets. For better understanding of this part, it would benefit to have the slide 13 of lecture 4 open, specially look at the green (B) figure in the middle of the slide. This concentrator has 4 internal rounds, i.e. same number of stages as its output ports. This is really the knockout part of the knockout switch. The 1st round takes all 8 inputs from the packet filter, it has 3 stages (row of the little blue box) within it, the no. of stages in each round depend of the no. of input it needs to handle. The no. of input reduces by one after each stage. Each stage have some no. of the nodes (little blue box) again depended on the no. of input to that stage. Each node has two input and two output. When a node have an active cell on its left input port, it sends that to the left most available node to the next stage, send the right input ports packet to the leftmost available node in the next round. When both input ports are non-active, it does the same. When right input port has the active cell it reverses, sends the right input to the leftmost node in the next stage and the left (inactive port) to the next round. Whenever there is one odd input port left, it is delayed and joins in the next stage, look at round two stage 3 in the figure. This continues until each round has an winner. In the last round all those that do not win are dropped.
6. The Shifter takes in 4 inputs from the concentrator and gives one output. However, this does not mean the other 3 packets have been dropped, most likely they have been buffered. The shifter contains 4 input buffer. Each buffer is filled and emptied in round robin fashion. The round robin function is needed to make sure at one point none of the four buffers are not over flowing when there is space in another buffer. The 1st packet coming from input port 1 (most active port due to bias given to left ports in the concentrator) goes to buffer one, the 2nd packet from this port goes to 2nd buffer and so on. Similarly, the 1st packet from the 2nd input port will go to 2nd buffer, the 2nd packet to 3rd buffer and so on, the same applies to all the input ports. Whenever any buffer 4 is reached by any of the input port it will place the next packet in the 1st buffer and the process will continue again. The output port will also operate in the round robin fashion, that is it’ll start by getting packet from the 1st buffer, then the 2nd second buffer, then 3rd and 4th and comes back to 1st to start over again. There’s an special condition for when the output port find any of the buffer empty, I think that triggers the event of making all the buffers empty and the output pointer stays at the buffer that was found empty until there is some packet there to read. But please read further on this special condition before implementing it.