Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
rnd:projects:aft [2022-12-21 07:01] – asdf | rnd:projects:aft [2023-05-07 02:54] (current) – asdf | ||
---|---|---|---|
Line 13: | Line 13: | ||
==== SFP modules ==== | ==== SFP modules ==== | ||
- | SFPs (small form-factor pluggable) are compact IR transceivers designed for fiber optic networking. There are two major advantages to using an SFP in this device. First, it puts the tester on equal footing with the devices in the live environment. We don't have to worry about propagation distances; if the tester can't transmit over the entire fiber run, then neither will a switch be able to. Second, it allows the tester to check the SFP itself using DDM/DOM [(ddm_dom)] or I2C [(sfp_i2c)]. In the future, we may also be able to program the tester to talk to live network devices to help determine where the other end of the cable goes((It seems likely that an Arduino Uno is not fast enough to process Ethernet frames. One of the beefier boards may, but this feature is not essential for the tester as described.)). | + | SFPs (small form-factor pluggable) are compact IR transceivers designed for fiber optic networking. There are two major advantages to using an SFP in this device. First, it puts the tester on equal footing with the devices in the live environment. We don't have to worry about propagation distances; if the SFP-equipped |
The electrical pinout is shown in {{ref> | The electrical pinout is shown in {{ref> | ||
Line 41: | Line 41: | ||
| 20 | VeeT | Transmitter ground | | | 20 | VeeT | Transmitter ground | | ||
</ | </ | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | The '' | ||
+ | </ | ||
==== Osmocom SPF experimenter ==== | ==== Osmocom SPF experimenter ==== | ||
- | For the prototypes, we will be using the Osmocom SFP Experimenter board. This breakout contains all support circuitry required to send single-ended signals through an SFP. No restriction is made on the input data, so we need not send valid Ethernet frames. That opens up the question of how we are to encode the data for transmission [(data_encoding)]. Of course, instead of sending arbitrary bits, we could instead transmit a clock. | + | For the prototypes, we will be using the Osmocom SFP Experimenter board. This breakout contains all support circuitry required to send single-ended signals through an SFP. No restriction is made on the input data, so we need not send valid Ethernet frames. |
For whatever reason, the SFP Experimenter board is designed to accept I/O connections through SMA connectors (one per stream). The units ship without the connectors soldered to the board, so we can add whatever kind of interface we want---simple wires will do. | For whatever reason, the SFP Experimenter board is designed to accept I/O connections through SMA connectors (one per stream). The units ship without the connectors soldered to the board, so we can add whatever kind of interface we want---simple wires will do. | ||
Line 52: | Line 56: | ||
SFP modules expose a great deal of data detailing their internal status, all accessible through I2C at one of two addresses ('' | SFP modules expose a great deal of data detailing their internal status, all accessible through I2C at one of two addresses ('' | ||
- | < | + | < |
// load in the EEPROM address | // load in the EEPROM address | ||
Wire.beginTransmission(0x50); | Wire.beginTransmission(0x50); | ||
Line 65: | Line 69: | ||
After each read, the internal address register is incremented so it points to the next byte. Given the way we're most likely to access this table, this fact is of relatively little use to us. | After each read, the internal address register is incremented so it points to the next byte. Given the way we're most likely to access this table, this fact is of relatively little use to us. | ||
+ | <table |tab_sfpreg_50> | ||
+ | < | ||
+ | |||
+ | < | ||
+ | ^ Value ^ Address (dec) ^ Data length ^ | ||
+ | | Manufacturer name (ASCII) | 20 | 16 | | ||
+ | | Compliance code | 3 | 8 | | ||
+ | | Nominal signalling rate (100s Mbd) | 12 | 1 | | ||
+ | | Supported optional DDM features | 93 | 1 | | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <table |tab_sfpreg_51> | ||
+ | < | ||
+ | |||
+ | < | ||
+ | ^ Value ^ Address (dec) ^ Data length ^ | ||
+ | |||
+ | </ | ||
+ | </ | ||
==== Serial data transmission ==== | ==== Serial data transmission ==== | ||
Line 105: | Line 129: | ||
We don't want to rely on the Osmocom SFP Experimenter board for the final product, but it has the major advantage of a built-in differential transmitter and receiver((If sending differential signals, must they be of the same magnitude? Can I send a clock into one side and the actual data into the other? Need to read more and possibly simulate this.)). | We don't want to rely on the Osmocom SFP Experimenter board for the final product, but it has the major advantage of a built-in differential transmitter and receiver((If sending differential signals, must they be of the same magnitude? Can I send a clock into one side and the actual data into the other? Need to read more and possibly simulate this.)). | ||
- | {{ref> | + | {{ref> |
<table |tab_pin_usage> | <table |tab_pin_usage> | ||
Line 111: | Line 135: | ||
| ^ Device pin ^ ^ Arduino pin ^ | | ^ Device pin ^ ^ Arduino pin ^ | ||
^ LCD |||| | ^ LCD |||| | ||
- | | | RX | <- | D8 | | + | | | RX | <- | D8 ('' |
| | +5V | <- | +5V | | | | +5V | <- | +5V | | ||
| | GND | <- | GND | | | | GND | <- | GND | | ||
Line 117: | Line 141: | ||
| | +3.3V | <- | +3.3V | | | | +3.3V | <- | +3.3V | | ||
| | GND | <- | GND | | | | GND | <- | GND | | ||
- | | | __RX__ | -> | | | + | | | __RX__ | -> | D0 ('' |
- | | | TX | <- | | | + | | | TX | <- | D1 ('' |
- | | | SDA | < | + | | | SDA | < |
- | | | SCL | < | + | | | SCL | < |
| | TX_FAULT | -> | D5 | | | | TX_FAULT | -> | D5 | | ||
| | MOD_ABS | -> | D4 | | | | MOD_ABS | -> | D4 | | ||
^ Rotary encoder |||| | ^ Rotary encoder |||| | ||
- | | | __Enc A__ | -> | D0 | | + | | | __Enc A__ | -> | D18 | |
- | | | __Enc B__ | -> | D1 | | + | | | __Enc B__ | -> | D19 | |
| | GND | <- | GND | | | | GND | <- | GND | | ||
- | | | __Sw A__ | -> | D7 ('' | + | | | __Sw A__ | -> | D17 ('' |
| | Sw B | | GND | | | | Sw B | | GND | | ||
</ | </ | ||
+ | ==== Communication ==== | ||
+ | UART transmission is not looking terribly promising at this time. | ||
+ | |||
+ | Different SFP models appear to produce different signals when the output is open. The SMF unit (unknown vendor) outputs nothing, while the Veloso units send (noisy) pulse trains (see {{ref> | ||
+ | |||
+ | <figure center|fig_idle> | ||
+ | < | ||
+ | {{ : | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | {{ : | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | <figure center|fig_k> | ||
+ | < | ||
+ | {{ : | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | {{ : | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | </ | ||
==== Power considerations ==== | ==== Power considerations ==== | ||
Portable operation is a must for this tester. | Portable operation is a must for this tester. | ||
Line 150: | Line 202: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
===== References ===== | ===== References ===== | ||
Line 159: | Line 219: | ||
[(sparkfun_serialcomm> | [(sparkfun_serialcomm> | ||
[(twi_protocol> | [(twi_protocol> | ||
+ | |||
+ | {{tag> |