Compound Module TTEPHYPort

Package: ttethernet.linklayer
File: src/linklayer/TTEPHYPort.ned

The TTEPHYPort is a compund module that contains the TTEOutput, TTEInput and MAC (EtherMACFullDuplex) It represents a physical port for a TTEthernet device (Switch or Host)

See also: IPort, TTEOutput, TTEInput, EtherMACFullDuplex

Author: Till Steinbach

TTEOutput TTEInput EtherMACFullDuplex

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.

Used in compound modules:

Name Type Description
TTEEtherHost compound module

Module for a TTEthernet Host. Contains a EtherLLC for best-effort traffic, a TTEPHYPort module as physical port, sync module (Sync) and a TTEScheduler module. The Host is configured by the provided TTEthernet XML network configuration (network_configuration parameter) and uses the device_name parameter to find its config. The configuration is done by the BufferManager that deletes itself at runtime.

TTEEtherSwitch compound module

Module for a TTEthernet Switch with variable number of ports. Contains a configurable best-effort implementation (beRelayUnitType like IMACRelayUnit), TTEPHYPort modules for physical ports, sync module (Sync) and a TTEScheduler module. The switch is configured by the provided TTEthernet XML network configuration (network_configuration parameter) and uses the device_name parameter to find its config. The configuration is done by the BufferManager that deletes itself at runtime.

Parameters:

Name Type Default value Description
promiscuous bool false

if true, all packets are received, otherwise only the ones with matching destination MAC address (This does not affect CT-Frames)

static_tx_delay double 0ns

Static propagation delay for the port

Properties:

Name Value Description
display bgb=188,180;i=device/port

Gates:

Name Direction Size Description
upperLayerIn input

Input from the upper layer for best-effort Traffic

upperLayerOut output

Output to the upper layer for best-effort Traffic

phys inout

Connection to the physical layer

TTin input

Input from the upper layer for time-triggered traffic

RCin input

Input from the upper layer for rate-constrained traffic

PCFin input

Input from the upper layer for rate-constrained traffic

Unassigned submodule parameters:

Name Type Default value Description
tteOutput.tt_buffers string ""

Comma seperated list of TTBuffers that send messages to this port

tteInput.ct_marker int 0

Critical traffic marker of the buffer

tteInput.ct_mask int 0

Critical traffic mask of the buffer

tteInput.incomings string ""

Comma seperated list of ctc modules the input uses

mac.address string "auto"

MAC address as hex string (12 hex digits), or "auto". "auto" values will be replaced by a generated MAC address in init stage 0.

mac.duplexMode bool true

must be set to "true", as EtherMACFullDuplex does not support half-duplex operation (parameter is present to reduce the risk of accidental misconfiguration)

mac.txQueueLimit int 1000

maximum number of frames queued up for transmission in the internal queue (only used if queueModule==""); additional frames cause a runtime error

mac.mtu int 1500B

Source code:

// The TTEPHYPort is a compund module that contains the TTEOutput, TTEInput and MAC (EtherMACFullDuplex)
// It represents a physical port for a TTEthernet device (Switch or Host)
//
// @see IPort, TTEOutput, TTEInput, EtherMACFullDuplex
//
// @author Till Steinbach
module TTEPHYPort like IPort
{
    parameters:
        @display("bgb=188,180;i=device/port");
        // if true, all packets are received, otherwise only the ones with matching destination MAC address (This does not affect CT-Frames)
        bool promiscuous = default(false);
        //Static propagation delay for the port
        double static_tx_delay @unit(s) = default(0ns);
    gates:
        //Input from the upper layer for best-effort Traffic
        input upperLayerIn @loose @labels(EtherFrame);
        //Output to the upper layer for best-effort Traffic
        output upperLayerOut @loose @labels(EtherFrame);
        //Connection to the physical layer
        inout phys @labels(EtherFrame);
        //Input from the upper layer for time-triggered traffic
        input TTin @directIn @labels(TTFrame);
        //Input from the upper layer for rate-constrained traffic
        input RCin @directIn @labels(RCFrame);
        //Input from the upper layer for rate-constrained traffic
        input PCFin @directIn @labels(PCFrame);

    submodules:
        //Module for the organisation of outbound traffic
        tteOutput: TTEOutput {
            @display("p=48,45");
        }
        //Module for the organisation of inbound traffic
        tteInput: TTEInput {
            parameters:
                @display("p=142,45");
                promiscuous = promiscuous;
        }
        //MAC interface
        mac: EtherMACFullDuplex {
            parameters:
                promiscuous = true; //MAC must be set promiscuous to allow for CT receiption with all CT-Markers
                queueModule = "tteOutput";//The tteOutput-Module(TTEOutput) is used as external queue for the interface
                @display("p=87,139");
        }
    connections:
        upperLayerIn --> tteOutput.in;
        upperLayerOut <-- tteInput.out;
        tteOutput.out --> mac.upperLayerIn;
        tteInput.in <-- mac.upperLayerOut;
        phys <--> mac.phys;

        TTin --> tteOutput.TTin;
        RCin --> tteOutput.RCin;
        PCFin --> tteOutput.PCFin;
}