|
|
# Documentation for the CONV-TTL-BLO-RTM PTS
|
|
|
|
|
|
## User guide
|
|
|
|
|
|
### PTS system
|
|
|
|
|
|
Unlike the rest of the PTS systems, that for the CONV-TTL-BLO-RTM is for
|
|
|
now not designed for sending to the assembly facility. Instead, we will
|
|
|
be testing the boards right here at CERN once they arrive upon shipment.
|
|
|
|
|
|
The test system is really simple. It comprises the following components:
|
|
|
|
|
|
- CONV-TTL-BLO-RTM with piggyback under test
|
|
|
- CONV-TTL-BLO with dedicated PTS bitstream
|
|
|
- two signal loopback boards, described in the hardware guide
|
|
|
- dedicated Python scripts
|
|
|
|
|
|
![](/uploads/c04fc6d71ded7e4b43f4bfa151e5827d/pts-sys.svg)
|
|
|
|
|
|
### Tests
|
|
|
|
|
|
<table>
|
|
|
<tbody>
|
|
|
<tr class="odd">
|
|
|
<td><b> Number </b></td>
|
|
|
<td><b> Name </b></td>
|
|
|
<td><b> Description </b></td>
|
|
|
</tr>
|
|
|
<tr class="even">
|
|
|
<td>test01</td>
|
|
|
<td>RTM</td>
|
|
|
<td>Read RTM lines and compare versus [RTM detection table](https://www.ohwr.org/project/conv-ttl-blo/wikis/RTM-board-detection)</td>
|
|
|
</tr>
|
|
|
<tr class="odd">
|
|
|
<td>test02</td>
|
|
|
<td>Pulse repetition</td>
|
|
|
<td>Send seven pulses on each channel and check input versus the number of pulses that should be received on each channel</td>
|
|
|
</tr>
|
|
|
<tr class="even">
|
|
|
<td>test03</td>
|
|
|
<td>LEDs</td>
|
|
|
<td>Light each rear panel LED in sequence and ask the user whether they light</td>
|
|
|
</tr>
|
|
|
</tbody>
|
|
|
</table>
|
|
|
|
|
|
### Running
|
|
|
|
|
|
You should follow these steps to get started with the CONV-TTL-BLO-RTM
|
|
|
PTS. Note that the steps are performed under Ubuntu Linux.
|
|
|
|
|
|
\# Unpack the archive from the **folder-struct/** folder in the
|
|
|
repository to a location of your choice
|
|
|
|
|
|
\# Go to the newly unpacked **folder-struct/** and edit the file
|
|
|
*pyts/pts.py** at lines 67, 68,
|
|
|
69:
|
|
|
|
|
|
##-------------------------------------------------------------------------------------------------
|
|
|
## ELMA crate hostname and password
|
|
|
##-------------------------------------------------------------------------------------------------
|
|
|
def_hname = "" # Add the hostname or IP of the ELMA crate here
|
|
|
def_pwd = "" # Add the admin password of the ELMA crate here
|
|
|
def_slot = 0 # Add the slot number where the CONV-TTL-BLO is placed
|
|
|
|
|
|
1. Run the **make-links** script in the newly-unpacked
|
|
|
**folder-struct/**
|
|
|
2. Plug a CONV-TTL-BLO in an ELMA crate of your choice
|
|
|
3. Connect a JTAG cable to the CONV-TTL-BLO
|
|
|
4. Format a USB key and format it as **pts**
|
|
|
|
|
|
Now, you're ready to run the script:
|
|
|
|
|
|
\# Run the **pts.py** script in the unpacked **folder-struct/**
|
|
|
|
|
|
%> ./pts.py
|
|
|
Hello and Welcome to the CONV-TTL-BLO-RTM PTS!
|
|
|
|
|
|
\# Scan or type the 1st and second barcodes
|
|
|
|
|
|
--> Scan the 1st barcode: 1234
|
|
|
--> Scan the 2nd barcode:
|
|
|
|
|
|
--> Plug the CONV-TTL-BLO-RTM board '1234-0' into the VME crate.
|
|
|
|
|
|
1. Connect two RTM board testers to the RTM under test, one between
|
|
|
CH1-3 and one between CH4-6
|
|
|
2. Now, plug the RTM board under test in the **rear part of the ELMA
|
|
|
crate** and type "ok"
|
|
|
3. A new **xterm** window will open up, informing you on the results
|
|
|
4. When testing is finished, the **xterm** window will close and the
|
|
|
output file will be copied to the stick
|
|
|
5. In case of errors, they will be output to the console
|
|
|
6. Unplug the card, disconnect the RTM board testers and place the RTM
|
|
|
in its box
|
|
|
|
|
|
## Debugging
|
|
|
|
|
|
### FATAL ERROR: VME Crate: Unable to switch ON
|
|
|
|
|
|
Have you properly set the ELMA crate IP, username and password in
|
|
|
*pyts/pts.py**?
|
|
|
|
|
|
### Pulse errors
|
|
|
|
|
|
LED errors should be pretty straightforward to debug, since you see
|
|
|
which LED doesn't work.
|
|
|
|
|
|
However, errors on the pulse LED test can be harder to debug, but not
|
|
|
too hard. The connection diagram on the back is the following:
|
|
|
|
|
|
<table>
|
|
|
<tbody>
|
|
|
<tr class="odd">
|
|
|
<td align="center">* Output *</td>
|
|
|
<td align="center">* Input *</td>
|
|
|
<td></td>
|
|
|
<td align="center">* Input *</td>
|
|
|
<td align="center">* Outputs *</td>
|
|
|
</tr>
|
|
|
<tr class="even">
|
|
|
<td align="center">O1</td>
|
|
|
<td align="center">I1 I2 I3</td>
|
|
|
<td></td>
|
|
|
<td align="center">I1</td>
|
|
|
<td align="center">O11 O32 O23</td>
|
|
|
</tr>
|
|
|
<tr class="odd">
|
|
|
<td align="center">O2</td>
|
|
|
<td align="center">I2 I3 I1</td>
|
|
|
<td></td>
|
|
|
<td align="center">I2</td>
|
|
|
<td align="center">O21 O12 O33</td>
|
|
|
</tr>
|
|
|
<tr class="even">
|
|
|
<td align="center">O3</td>
|
|
|
<td align="center">I3 I1 I2</td>
|
|
|
<td></td>
|
|
|
<td align="center">I3</td>
|
|
|
<td align="center">O31 O22 O13</td>
|
|
|
</tr>
|
|
|
<tr class="odd">
|
|
|
<td align="center">O4</td>
|
|
|
<td align="center">I4 I5 I6</td>
|
|
|
<td></td>
|
|
|
<td align="center">I4</td>
|
|
|
<td align="center">O41 O62 O53</td>
|
|
|
</tr>
|
|
|
<tr class="even">
|
|
|
<td align="center">O5</td>
|
|
|
<td align="center">I5 I6 I4</td>
|
|
|
<td></td>
|
|
|
<td align="center">I5</td>
|
|
|
<td align="center">O51 O42 O63</td>
|
|
|
</tr>
|
|
|
<tr class="odd">
|
|
|
<td align="center">O6</td>
|
|
|
<td align="center">I6 I4 I5</td>
|
|
|
<td></td>
|
|
|
<td align="center">I6</td>
|
|
|
<td align="center">O61 O52 O43</td>
|
|
|
</tr>
|
|
|
</tbody>
|
|
|
</table>
|
|
|
|
|
|
The outputs of the test program show you the number of pulses sent and
|
|
|
received on each channel:
|
|
|
|
|
|
good : O1 = 7 / I1 = 7
|
|
|
good : O1 = 7 / I2 = 7
|
|
|
good : O1 = 7 / I3 = 7
|
|
|
good : O2 = 7 / I1 = 14
|
|
|
good : O2 = 7 / I2 = 14
|
|
|
good : O2 = 7 / I3 = 14
|
|
|
good : O3 = 7 / I1 = 21
|
|
|
good : O3 = 7 / I2 = 21
|
|
|
good : O3 = 7 / I3 = 21
|
|
|
ERROR: O4 = 7 / I4 = 0 - expected 7
|
|
|
ERROR: O4 = 7 / I5 = 0 - expected 7
|
|
|
ERROR: O4 = 7 / I6 = 0 - expected 7
|
|
|
ERROR: O5 = 7 / I4 = 0 - expected 14
|
|
|
ERROR: O5 = 7 / I5 = 7 - expected 14
|
|
|
ERROR: O5 = 7 / I6 = 0 - expected 14
|
|
|
ERROR: O6 = 7 / I4 = 0 - expected 21
|
|
|
ERROR: O6 = 7 / I5 = 7 - expected 21
|
|
|
ERROR: O6 = 7 / I6 = 7 - expected 21
|
|
|
|
|
|
Using these test program outputs and the above connection diagram, we
|
|
|
can find which connection is wrong.
|
|
|
|
|
|
## Other documentation
|
|
|
|
|
|
- HDL guide
|
|
|
- Hardware guide
|
|
|
|
|
|
-----
|
|
|
|
|
|
Theodor-Adrian Stana, Jan. 2014
|
|
|
|