At the electrical level, a port consists of an interface and a protocol.
The interface is the set of pins or wires that connect the components.
The protocol defines the rules for changing the logic levels and the meaning of the associated data.
For example, an interface might be defined in RTL as:
Transmit view of interface: Receive view of interface: Idle specification: output [7:0] data; input [7:0] data; four_phase_idle = !strobe and !ack; output stobe; input stobe; input ack; output ack;
Ports commonly implement flow-control by handshaking. Data is only transferred when both the sender and receiver are happy to proceed.
A port generally has an idle state which it returns to between each transaction.
Sometimes the start of one transaction is immediately after the end of the previous, so the transition through the idle state is only nominal.
Sometimes the begining of one transaction is temporaly overlaid with the end of a previous, so the transition through idle state has no absolute time associated with it.
There are four basic clock strategies for an interface:
|Left Side||Right Side||Name|
|1. Clocked||Clocked||Synchronous (such as Xilinx LocalLink)|
|2. Clocked||Different clock||Clock Domain Crossing (see later)|
|3. Asynchronous||Clocked||Hybrid (swapped).|
|4. Asynchronous||Asynchronous||Asynchronous (such a four-phase parallel port)|