Communication Channel

Define a serial channel, parallel channel, FPGA-to-FPGA link, Aurora communication channel, and wireless channel with BER.

Stop_n_Wait_w_Channel

Browsable image of the model.

  • 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.
Stop_n_Wait_w_Channelmodel <h2>Disp_Nack</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>&nbsp;</td><td>&nbsp;</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>/* No Expressions. */</td><td>/* No Expressions. */</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.ID,input.DELTA</td><td>&quot;input.ID,input.DELTA&quot;</td></tr><tr><td>Output_Conditions</td><td>true,true</td><td>&quot;true,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>0.5</td><td>&quot;0.5&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.Uniform_Rand_Noise = irand (1, 100)\\n\\nResult_A = (input.Uniform_Rand_Noise &gt; 2)?true:false\\ninput.Time_Stamp = (Result_A == true)?TNow:input.Time_Stamp\\ninput.DELTA =(Result_A == true)?(TNow - input.TIME):input.DELTA\\n\\ninput.Uniform_Rand_Noise = (Result_A == false)?(irand (1, 100)):input.Uniform_Rand_Noise\\ninput.TIME = (Result_A == false)?TNow:input.TIME</td><td>input.Uniform_Rand_Noise = irand (1, 100)\\n\\nResult_A = (input.Uniform_Rand_Noise &gt; 2)?true:false\\ninput.Time_Stamp = (Result_A == true)?TNow:input.Time_Stamp\\ninput.DELTA =(Result_A == true)?(TNow - input.TIME):input.DELTA\\n\\ninput.Uniform_Rand_Noise = (Result_A == false)?(irand (1, 100)):input.Uniform_Rand_Noise\\ninput.TIME = (Result_A == false)?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</td><td>&quot;input,input&quot;</td></tr><tr><td>Output_Conditions</td><td>(Result_A == true),!(Result_A == true)</td><td>&quot;(Result_A == true),!(Result_A == true)&quot;</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.Uniform_Rand_Length = irand (1, 19)\\ninput.Uniform_Rand_Noise = irand (1, 100)\\ninput.Time_Stamp = rand(0.1, 1.9)\\ninput.Packet_Bytes = irand (100, 1900)</td><td>input.Uniform_Rand_Length = irand (1, 19)\\ninput.Uniform_Rand_Noise = irand (1, 100)\\ninput.Time_Stamp = rand(0.1, 1.9)\\ninput.Packet_Bytes = irand (100, 1900)</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>DS_Type</td><td>&quot;Stop_n_Wait&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</td><td>1.0</td></tr><tr><td>Value_2</td><td>2.0</td><td>2.0</td></tr><tr><td>Random_Seed</td><td>123457L</td><td>123457L</td></tr><tr><td>Time_Distribution</td><td>Fixed (Value_1)</td><td>Fixed (Value_1)</td></tr></table> <h2>Channel_Release</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>Channel_Name</td><td>&quot;CH&quot;</td><td>&quot;CH&quot;</td></tr></table> <h2>Channel</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>Channel_Name</td><td>&quot;CH&quot;</td><td>&quot;CH&quot;</td></tr><tr><td>Channel_Rate_Mhz</td><td>0.001</td><td>1.0E-3</td></tr><tr><td>Number_of_Channels</td><td>Number_of_Channels</td><td>3</td></tr><tr><td>Channel_Width_Bytes</td><td>1</td><td>1</td></tr><tr><td>Packet_Size_Bytes</td><td>&quot;Packet_Bytes&quot;</td><td>&quot;Packet_Bytes&quot;</td></tr><tr><td>Max_Channel_Packets</td><td>32</td><td>32</td></tr></table> <h2>SingleEvent</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>_explanation</td><td>Source-&gt;Event-&gt;SingleEvent\t</td><td>Source-&gt;Event-&gt;SingleEvent\t</td></tr><tr><td>time</td><td>Stats_Time</td><td>800.0</td></tr><tr><td>value</td><td>0</td><td>0</td></tr></table> <h2>Join</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>HistoPlotter</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>Packet Delay Histogram</td><td>Packet Delay Histogram</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><tr><td>binWidth</td><td>0.2</td><td>0.2</td></tr><tr><td>binOffset</td><td>0.1</td><td>0.1</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>Packet IDs</td><td>Packet IDs</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>

Channels represent connectivity between two or more inputs and output interfaces.

Channel Modeling

This models demonstrates the use of the Channel SmartBlock in VisualSim to define a complex channel architecture. In this system, a channel is created between a transmitter and a receiver. The transmitter sends a single packet and waits for an acknowledge before sending another packet. If it receives a negative acknowledge across the same channel, then the packet is retransmitted. The channel can be defined using parameters such queue length, delay through the channel, number of channel streams and average packet size.

This Model generates Stop_n_Wait DSs and delays based on the uniform random length of the packets. If the noise is less than (2) in a range from 0 to 100, then a negative acknowledge is generated and retransmitted through the channel. The negative acknowledge is retransmitted through Channel_Complete.