All,
The following is a simple exemplar of a BCI protocol that supports a
channel with one redriver, and the downstream Rx controls the upstream Tx
and the redriver models.
In the following discussion, the BCI_ID for the primary (upstream) Tx,
redriver Rx, redriver Tx and primary (downstream Rx) is "Bci". There will
be two files that each DLL will either read and/or write and/or append to:
bci_down.txt and bci_up.txt.
The Primary (upstream) Tx AMI_Init writes the bci_down.txt . The Redriver
Rx AMI_Init appends information about itself to the bci_down.txt , as does
the Redriver Tx AMI_Init. The Primary (downstream) Rx AMI_Init reads the
bci_down.txt and learns about all of the upstream AMI_Init's. The Primary
Rx writes bci_up.txt with instructions for the Primary Tx, Redriver Rx,
Redriver Tx.
The bci_down.txt might look like the following when the Primary
(downstream) Rx AMI_Init reads it:
(1 (Tap (-1 0.) (0 1.)(1 0.))) | written by primary Tx (who
know it is 1 because bci_down.txt did not exist)
(2 (CTLE 3)) |written by redriver
Rx (who know it is 2 because is read the bci_down.txt and found the
previous tree)
(3 (Tap (-1 0.) (0 1.)(1 0.))) | written by redriver Tx (who
know it is 3 because is read the bci_down.txt and found the previous two
trees))
Primary (downstream) Rx AMI_Init writes bci_up.txt
(1 (Tap (-1 -.1) (0 .8)(1 -.1))) | instructions to primary Tx
GetWave
(2 (CTLE 6)) | instructions to
redriver Rx GetWave
(3 (Tap (-1 -.15) (0 .8)(1 0.05))) | instructions to redriver Tx GetWave
Then the GetWave functions are called:
The Primary (upstream) Tx AMI_GetWave over-writes the bci_down.txt . The
Redriver Rx AMI_GetWave appends information about itself to the
bci_down.txt , as does the Redriver Tx AMI_GetWave. The Primary
(downstream) Rx AMI_GetWave reads the bci_down.txt and learns about all
of the upstream AMI_GetWave's. The Primary Rx over-writes bci_up.txt with
instructions for the Primary Tx, Redriver Rx, Redriver Tx.
Repeat these GetWave sequences until simulation completes. The Primary Rx
deletes the bci_down.txt file on each call after reading it. When training
is finished, the Primary (downstream) Rx AMI_GetWave will make sure that
the bci_up.txt is deleted as a sign to the other models that training is
done.
If there are two redrivers, then the bci_down.txt might look like the
following when the Primary (downstream) Rx AMI_Init reads it:
(1 (Tap (-1 0.) (0 1.)(1 0.))) | written by primary Tx (who
know it is 1 because bci_down.txt did not exist)
(2 (CTLE 3)) |written by redriver
one Rx (who know it is 2 because is read the bci_down.txt and found the
previous tree)
(3 (Tap (-1 0.) (0 1.)(1 0.))) | written by redriver one Tx
(who know it is 3 because is read the bci_down.txt and found the previous
two trees))
(4 (CTLE 3)) |written by redriver
two Rx (who know it is 4 because is read the bci_down.txt and found the
previous three trees)
(5 (Tap (-1 0.) (0 1.)(1 0.))) | written by redriver two Tx
(who know it is 5 because is read the bci_down.txt and found the previous
four trees))
Walter
Walter Katz
<mailto:wkatz@xxxxxxxxxx> wkatz@xxxxxxxxxx
Phone 303.449-2308
Mobile 303.335-6156