TroiaDoc - PixelRoom - DistributionModule
A distribution module supplies serial data to 32 Pixel modules, i.e. 16 Pixel boxes.
This data is transmitted to the distribution modules via ethernet (10base-T).
The name (of the circuit board, of the firmware, ...) of the new distribution module is "DistributionModule2".
The power supply of the distribution modules is realized with separate power supply units, which are independent of the pixel modules.
(It is principially allowed to attach multiple distribution modules to a single power supply unit,
but this does not make sense because of the distances (5m) between the distribution modules.)
Protocol and Hardware
- The 32 output channels of a distribution module are connected with the line as a 10mA current loop (exactly: HCMOS push-pull driver).
The NRZ coded 8N1 protocol is used with 38400 bps.
- At an output of a distribution module, there are 16 RJ45 jacks, having the following pinout:
- 4 (blue): A - positive output
- 5 (blue white): A - negative output
- 7 (brown white): B - negative output
- 8 (brown) : B - positive output
- The numbering ot the 32 output channels is done in the following oder:
- 0: jack 0, channel A
- 1: jack 0, channel B
- 2: jack 1, channel A
- ...
- 31: jack 15, channel B
- To be able to address the distribution modules, the MAC- and IP-address must be configurable. This is done using switches for 8 bit.
- The data for the 32 serial Channels is delivered to a distribution module pber 10base-T ethernet (RH45 jack at the input, too). To keep the PC side easy, the distribution module understands ARP, IP, ICMP (only echo request and echo reply) and UDP. A TCP implementation and IP fragmentation is not needed.
- The MAC-address of the distribution modules is: 02:23:42:23:42:XX with XX standing for the 8 bit distribution module address configured via the switches.
- The IP configuration of the distribution modules is:
- IP address: 10.23.42.XX
- subnet mask: 255.255.0.0
- network: 10.23.0.0
- broadcast: 10.23.255.255
- XX stands for the 8 bit distribution module address configured via the switches.
- (Remark: Because of the subnet mask /16, 10.23.42.0 and 10.23.42.255 is also allowed! E.g. the IP 10.23.23.23 is also in this subnet.)
- The data for the serial output channels arrives already prepared for the output. UDP port 2342 is used.
- A packet arriving at UDP port 2342, has to be divided into pieces of 32 bytes each.
(Additional bytes that are fewer than 32 are ignored.)
Every 32 byte piece is then transmitted on the output channels simultaneously.
The first byte is transmitted on output channel 0, ... and the 32nd byte is transmitted on outout channel 31.
Because the output is done using the 8N1 protocol, start and stop bits have to be added by the distribution module.
If a piece has been sent, the next one follows using the same principle.
- example:
- initial state/idle: all channels 1
- received piece: 0x01 0x23 0x45 0x67 0x89 0xAB 0xCD 0xEF [24 additional bytes]
- start bits: all channels to 0
- [26us]
- channels (0..31): 1 1 1 1 1 1 1 1 [24 additional channels]
- [26us]
- channels (0..31): 0 1 0 1 0 1 0 1 [24 additional channels]
- [26us]
- channels (0..31): 0 0 1 1 0 0 1 1 [24 additional channels]
- [26us]
- channels (0..31): 0 0 0 0 1 1 1 1 [24 additional channels]
- [26us]
- channels (0..31): 0 0 0 0 0 0 0 0 [24 additional channels]
- [26us]
- channels (0..31): 0 1 0 1 0 1 0 1 [24 additional channels]
- [26us]
- channels (0..31): 0 0 1 1 0 0 1 1 [24 additional channels]
- [26us]
- channels (0..31): 0 0 0 0 1 1 1 1 [24 additional channels]
- [26us]
- stop bits: all channels to 1
- [26us]