SPI

Single PHY to single Link-Layer connection, extendable using virtual links

SPI_Bus_Model

Browsable image of the model.

  • To download OpenWebStart click on the links -
    Windows- Compatibility:Windows 10 or higher (*)
    macOS - Compatibility:macOS 10.15 (Catalina) or higher (*)
    Linux - Compatibility:Ubuntu 18.04 LTS or higher (*)
  • For an executable version,
  • Mouse over the icons to view parameters. Click on hierarchy and plotters to reveal content (if provided).
  • To simulate, click on Launch button, open downloaded file and click Run on the Java Security Page.
SPI_Bus_Modelmodel <h2>INIT</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Initial_Value</td><td>0</td><td>0</td></tr><tr><td>Initial_Order</td><td>0</td><td>0</td></tr><tr><td>Output_Type</td><td>Integer</td><td>Integer</td></tr></table> <h2>Delay4</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Delay_Value</td><td>Sim_Time</td><td>&quot;Sim_Time&quot;</td></tr></table> <h2>ExpressionList8</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Expression_List</td><td>input.Packet_Delay = (TNow - input.TIME)</td><td>input.Packet_Delay = (TNow - input.TIME)</td></tr><tr><td>Output_Ports</td><td>output,out</td><td>&quot;output,out&quot;</td></tr><tr><td>Output_Values</td><td>input,input.Packet_Delay</td><td>&quot;input,input.Packet_Delay&quot;</td></tr><tr><td>Output_Conditions</td><td>true,true</td><td>&quot;true,true&quot;</td></tr></table> <h2>Delay3</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Delay_Value</td><td>&quot;DELTA&quot;</td><td>&quot;&quot;DELTA&quot;&quot;</td></tr></table> <h2>ExpressionList7</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Expression_List</td><td>input.DELTA = ((TNow  % Bus_Cycle_Time) * Bus_Cycle_Time)\\ninput.DELTA = Bus_Cycle_Time - input.DELTA</td><td>input.DELTA = ((TNow  % Bus_Cycle_Time) * Bus_Cycle_Time)\\ninput.DELTA = Bus_Cycle_Time - input.DELTA</td></tr><tr><td>Output_Ports</td><td>output</td><td>&quot;output&quot;</td></tr><tr><td>Output_Values</td><td>input</td><td>&quot;input&quot;</td></tr><tr><td>Output_Conditions</td><td>true</td><td>&quot;true&quot;</td></tr></table> <h2>ExpressionList6</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Expression_List</td><td>MyMem = (MyMem == true)?false:true\\nStart_Packet = false\\ninput.TIME = TNow</td><td>MyMem = (MyMem == true)?false:true\\nStart_Packet = false\\ninput.TIME = TNow</td></tr><tr><td>Output_Ports</td><td>output</td><td>&quot;output&quot;</td></tr><tr><td>Output_Values</td><td>input</td><td>&quot;input&quot;</td></tr><tr><td>Output_Conditions</td><td>true</td><td>&quot;true&quot;</td></tr></table> <h2>ExpressionList5</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Expression_List</td><td>input.Packet_Type  = &quot;Transmit&quot;\\ninput.Packet_Bytes_Left  = irand(Traffic_Mean_Bytes, Traffic_Max_Bytes)</td><td>input.Packet_Type  = &quot;Transmit&quot;\\ninput.Packet_Bytes_Left  = irand(Traffic_Mean_Bytes, Traffic_Max_Bytes)</td></tr><tr><td>Output_Ports</td><td>output</td><td>&quot;output&quot;</td></tr><tr><td>Output_Values</td><td>input</td><td>&quot;input&quot;</td></tr><tr><td>Output_Conditions</td><td>true</td><td>&quot;true&quot;</td></tr></table> <h2>Traffic</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Data_Structure_Name</td><td>&quot;SPI3_DS&quot;</td><td>&quot;SPI3_DS&quot;</td></tr><tr><td>Start_Time</td><td>0.0</td><td>0.0</td></tr><tr><td>Value_1</td><td>1.0 / (Traffic_Mean_Mhz * 1000000.0)</td><td>5.0E-8</td></tr><tr><td>Value_2</td><td>(1.0 / (Traffic_Mean_Mhz * 1000000.0)) * Traffic_Spread_Multiplier</td><td>6.5E-8</td></tr><tr><td>Random_Seed</td><td>123457L</td><td>123457L</td></tr><tr><td>Time_Distribution</td><td>Uniform (Value_1, Value_2)</td><td>Uniform (Value_1, Value_2)</td></tr></table> <h2>TextDisplay2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>rowsDisplayed</td><td>10</td><td>10</td></tr><tr><td>columnsDisplayed</td><td>40</td><td>40</td></tr><tr><td>suppressBlankLines</td><td>false</td><td>false</td></tr><tr><td>title</td><td>&quot;LINK Layer Packets Out, Stats&quot;</td><td>&quot;LINK Layer Packets Out, Stats&quot;</td></tr><tr><td>ViewText</td><td>true</td><td>true</td></tr><tr><td>saveText</td><td>false</td><td>false</td></tr><tr><td>fileName</td><td>Enter Filename to save text</td><td>&quot;Enter Filename to save text&quot;</td></tr><tr><td>Append_Time</td><td>true</td><td>true</td></tr></table> <h2>TextDisplay</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>rowsDisplayed</td><td>10</td><td>10</td></tr><tr><td>columnsDisplayed</td><td>40</td><td>40</td></tr><tr><td>suppressBlankLines</td><td>false</td><td>false</td></tr><tr><td>title</td><td>&quot;PHY Layer Packets Out, Stats&quot;</td><td>&quot;PHY Layer Packets Out, Stats&quot;</td></tr><tr><td>ViewText</td><td>true</td><td>true</td></tr><tr><td>saveText</td><td>false</td><td>false</td></tr><tr><td>fileName</td><td>Enter Filename to save text</td><td>&quot;Enter Filename to save text&quot;</td></tr><tr><td>Append_Time</td><td>true</td><td>true</td></tr></table> <h2>ExpressionList4</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Expression_List</td><td>input.Packet_Delay = (TNow - input.TIME)</td><td>input.Packet_Delay = (TNow - input.TIME)</td></tr><tr><td>Output_Ports</td><td>output,out</td><td>&quot;output,out&quot;</td></tr><tr><td>Output_Values</td><td>input,input.Packet_Delay</td><td>&quot;input,input.Packet_Delay&quot;</td></tr><tr><td>Output_Conditions</td><td>true,true</td><td>&quot;true,true&quot;</td></tr></table> <h2>Delay2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Delay_Value</td><td>&quot;DELTA&quot;</td><td>&quot;&quot;DELTA&quot;&quot;</td></tr></table> <h2>ExpressionList3</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Expression_List</td><td>input.DELTA = ((TNow  % Bus_Cycle_Time) * Bus_Cycle_Time)\\ninput.DELTA = Bus_Cycle_Time - input.DELTA</td><td>input.DELTA = ((TNow  % Bus_Cycle_Time) * Bus_Cycle_Time)\\ninput.DELTA = Bus_Cycle_Time - input.DELTA</td></tr><tr><td>Output_Ports</td><td>output</td><td>&quot;output&quot;</td></tr><tr><td>Output_Values</td><td>input</td><td>&quot;input&quot;</td></tr><tr><td>Output_Conditions</td><td>true</td><td>&quot;true&quot;</td></tr></table> <h2>ExpressionList2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Expression_List</td><td>MyMem2 = (MyMem2 == true)?false:true\\nStart_Packet = false</td><td>MyMem2 = (MyMem2 == true)?false:true\\nStart_Packet = false</td></tr><tr><td>Output_Ports</td><td>output</td><td>&quot;output&quot;</td></tr><tr><td>Output_Values</td><td>input</td><td>&quot;input&quot;</td></tr><tr><td>Output_Conditions</td><td>true</td><td>&quot;true&quot;</td></tr></table> <h2>Delay</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Delay_Value</td><td>5.0e-09</td><td>&quot;5.0e-09&quot;</td></tr></table> <h2>VariableList</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Memory_Init_Text</td><td>/* Memory Initialize Template          \\nName          Type          Value     */\\nMyMem2 local true;\\nMyMem local true;</td><td>/* Memory Initialize Template          \\nName          Type          Value     */\\nMyMem2 local true;\\nMyMem local true;</td></tr></table> <h2>ExpressionList</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Expression_List</td><td>input.TIME = TNow</td><td>input.TIME = TNow</td></tr><tr><td>Output_Ports</td><td>output</td><td>&quot;output&quot;</td></tr><tr><td>Output_Values</td><td>input</td><td>&quot;input&quot;</td></tr><tr><td>Output_Conditions</td><td>true</td><td>&quot;true&quot;</td></tr></table> <h2>While2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>While_Statement</td><td>&quot;Packet_Bytes_Left == -1&quot;</td><td>&quot;Packet_Bytes_Left == -1&quot;</td></tr><tr><td>True_Execute</td><td>&quot;1, 2&quot;</td><td>&quot;1, 2&quot;</td></tr><tr><td>False_Execute</td><td>&quot;2, 3, 4&quot;</td><td>&quot;2, 3, 4&quot;</td></tr><tr><td>Field_Statement_1</td><td>&quot;Packet_Bytes_Left  -= Bus_Width_Bytes&quot;</td><td>&quot;&quot;Packet_Bytes_Left  -= Bus_Width_Bytes&quot;&quot;</td></tr><tr><td>Field_Statement_2</td><td>&quot;none&quot;</td><td>&quot;&quot;none&quot;&quot;</td></tr><tr><td>Field_Statement_3</td><td>&quot;End_Packet = true&quot;</td><td>&quot;&quot;End_Packet = true&quot;&quot;</td></tr><tr><td>Field_Statement_4</td><td>&quot;none&quot;</td><td>&quot;&quot;none&quot;&quot;</td></tr><tr><td>Loop_Delay_Value</td><td>1.0e-09</td><td>1.0E-9</td></tr><tr><td>Max_Loop_Count</td><td>&quot;MemName_FldName_Param_Num&quot;</td><td>&quot;MemName_FldName_Param_Num&quot;</td></tr><tr><td>Random_Seed</td><td>123457L</td><td>123457L</td></tr></table> <h2>While</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>While_Statement</td><td>&quot;Packet_Bytes_Left &gt; 4&quot;</td><td>&quot;Packet_Bytes_Left &gt; 4&quot;</td></tr><tr><td>True_Execute</td><td>&quot;1, 2&quot;</td><td>&quot;1, 2&quot;</td></tr><tr><td>False_Execute</td><td>&quot;2, 3, 4&quot;</td><td>&quot;2, 3, 4&quot;</td></tr><tr><td>Field_Statement_1</td><td>&quot;Packet_Bytes_Left  -= Bus_Width_Bytes&quot;</td><td>&quot;&quot;Packet_Bytes_Left  -= Bus_Width_Bytes&quot;&quot;</td></tr><tr><td>Field_Statement_2</td><td>&quot;none&quot;</td><td>&quot;&quot;none&quot;&quot;</td></tr><tr><td>Field_Statement_3</td><td>&quot;End_Packet = true&quot;</td><td>&quot;&quot;End_Packet = true&quot;&quot;</td></tr><tr><td>Field_Statement_4</td><td>&quot;None&quot;</td><td>&quot;&quot;None&quot;&quot;</td></tr><tr><td>Loop_Delay_Value</td><td>1.0e-09</td><td>1.0E-9</td></tr><tr><td>Max_Loop_Count</td><td>&quot;MemName_FldName_Param_Num&quot;</td><td>&quot;MemName_FldName_Param_Num&quot;</td></tr><tr><td>Random_Seed</td><td>123457L</td><td>123457L</td></tr></table> <h2>OR4</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr></table> <h2>OR3</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr></table> <h2>OUT5</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Destination_Name</td><td>&quot;Stats&quot;</td><td>&quot;&quot;Stats&quot;&quot;</td></tr><tr><td>Destination_Type</td><td>Local</td><td>Local</td></tr></table> <h2>To_PHY_Level</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Destination_Name</td><td>&quot;Pop&quot;</td><td>&quot;&quot;Pop&quot;&quot;</td></tr><tr><td>Destination_Type</td><td>Local</td><td>Local</td></tr></table> <h2>OUT3</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Destination_Name</td><td>&quot;Top&quot;</td><td>&quot;&quot;Top&quot;&quot;</td></tr><tr><td>Destination_Type</td><td>Local</td><td>Local</td></tr></table> <h2>Queue_One2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Max_Queue_Length</td><td>30</td><td>30</td></tr><tr><td>Initial_Queue_State</td><td>First_Token_Flow_Through</td><td>First_Token_Flow_Through</td></tr><tr><td>Queue_Type</td><td>FIFO</td><td>FIFO</td></tr></table> <h2>IN4</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Destination_Name</td><td>&quot;Top&quot;</td><td>&quot;&quot;Top&quot;&quot;</td></tr><tr><td>Destination_Type</td><td>Local</td><td>Local</td></tr></table> <h2>From_Link_Level</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Destination_Name</td><td>&quot;Pop&quot;</td><td>&quot;&quot;Pop&quot;&quot;</td></tr><tr><td>Destination_Type</td><td>Local</td><td>Local</td></tr></table> <h2>IN3</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Destination_Name</td><td>&quot;Stats&quot;</td><td>&quot;&quot;Stats&quot;&quot;</td></tr><tr><td>Destination_Type</td><td>Local</td><td>Local</td></tr></table> <h2>IN2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Destination_Name</td><td>&quot;Pop&quot;</td><td>&quot;&quot;Pop&quot;&quot;</td></tr><tr><td>Destination_Type</td><td>Local</td><td>Local</td></tr></table> <h2>Queue_One</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Max_Queue_Length</td><td>30</td><td>30</td></tr><tr><td>Initial_Queue_State</td><td>First_Token_Flow_Through</td><td>First_Token_Flow_Through</td></tr><tr><td>Queue_Type</td><td>FIFO</td><td>FIFO</td></tr></table> <h2>xTimeyDataPlot</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>fillOnWrapup</td><td>true</td><td>true</td></tr><tr><td>legend</td><td>LNK, PHY</td><td>LNK, PHY</td></tr><tr><td>startingDataset</td><td>0</td><td>0</td></tr><tr><td>fileName</td><td>Enter Filename to save plot</td><td>&quot;Enter Filename to save plot&quot;</td></tr><tr><td>viewPlot</td><td>true</td><td>true</td></tr><tr><td>savePlot</td><td>false</td><td>false</td></tr></table>

Model of the PHY-Link Layer Interface part of the SPI3 Protocol Standard


This model has been created based on the specification laid out by the Optical Internetworking Forum (OIF) titled: OIF-SPI3-01.0 from June 2000.  The title of the committee is the Physical-Link Layer Interface and the Titel of this paper is: System Packet Interface Level 3 (SPI-3): OC-48 System Interface for Physical and Link Layer Devices.  
SPI-3 fulfills the need for system designers to target a standard POS Physical Layer interface. Although targeted at implementing POS, the SPI-3 specification is not restricted to this application. It provides a versatile bus interface for exchanging packets within a communication system.  SPI-3 defines the requirements for interoperable single-PHY (one PHY layer device connected to one Link Layer device) and multi-PHY (multiple PHY layer devices connected to one Link Layer device) applications. It stresses simplicity of operation to allow forward migration to more elaborate PHY and Link Layer devices.  

The model has been constructed as a single PHY to single Link-Layer connection.  it can be easily extended by using the Virtual Connectors and adding additional segmenting setup to create a multi-multi scenario.  This model contains the
  1. Fragment and reassembly
  2. The signaling protocol used to communicate data
  3. The data structure used to store the data into holding FIFO’s
  4. Queuing setup for the PHY and Link Layers
  5. Models the one way messaging from the Link Layer to the PHY.  The reverse could be created by copying the existing blocks and reversing the flow of data.
This model supports a 32-bit bus structure.  The bus interface is point-to-point (one output driving only one input load) and thus a 32-bit data bus would support only one device. This SPI-3 model defaults to a transfer clock rate of 104 MHz.  The clock rate has been made a parameter and different clock rates can be setup simply by modifying the Clock Rate parameter. Generally, devices targeted at single or multi-PHY applications, where the aggregate PHY bit rate approaches 622 Mbit/s will use the 8-bit data bus structure with a 104 MHz FIFO clock rate. Devices targeted at applications where the aggregate PHY bit rate approaches 2.4 Gbit/s will use the 32-bit data bus structure with a 104 MHz FIFO clock rate.

The SPI-3 model packet interface supports transmit and receive data transfers at clock rates independent of the line bit rate. The line rates are defined by the rate of packet creation at the Data Structure Generator blocks.  The PHY layer devices support packet rate decoupling using FIFO Queues.  All of the Control signals required to conduct the transfer between the two layers have been modeled either in the Data Structure that is transfered or at the top-level of the model using memory variables. The data structure also includes the actual transmitted for further algorithm processing at the PHY for error corrections, processor for searches, TCP termination and security tasks.

Below is the Data Structure that is transmitted through the model:
_______________________________________________________________________________________
Packet_Type            String  Transmit                              ;
Packet_Bytes_Left      int     20                                    ;
Packet_Delay           double  0.0                                   ;
Enable                 boolean true                                  ;
Data                   binary  32'b11010101010101010101010101010101  ;
Data_Int               int     32                                    ;
Modulo                 binary  2'00                                  ;
Modulo_Int             int      0                                    ;
Valid                  boolean true                                  ;
Start_Packet           boolean true                                  ;
End_Packet             boolean false                                 ;
Error_Packet           boolean false                                 ;
Start_Xmit             int     64                                    ;
_______________________________________________________________________________________
Notes on the Model:
  1. Modify the parameters in the model canvas and view the results being updated.
  2. View Saw-Tooth packet latency graph that validates the accuracy of the model
  3. The parameter Bus_Cycle_Time contains the 104 which indicates the 104 MHz.  Modify this value to create other data rates.
  4. View the new While blocks as it creates the fragments based on a decision and has a delay between fragment creation to accound for hardware overhead.
  5. The entire interface was created with 10 different blocks instantiated 25 in all.
Model and Simulation Plots:

Results:
The three graphs pages describe the following:
  1. Packet Latency: The plot computes the latency between the arrival at the Link Layer FIFO until it leaves the PHY FIFO.  As expected this is a saw-tooth.
  2. Statistics from PHY and Link-Layer:  The statistics show the buffering and utilization of the FIFOs at the PHY and the Link Layer.  In addition, view the transmitted Data Structure at the PHY and the Link Layer.