Pixie16 digitizer: Difference between revisions

From FSU Fox's Lab Wiki
Jump to navigation Jump to search
Line 115: Line 115:


In the last step, it loads the 9054 driver to the Linux Kernel. Fro more detail, see [https://fsunuc.physics.fsu.edu/elog/NSCLDAQ/18 | elog]
In the last step, it loads the 9054 driver to the Linux Kernel. Fro more detail, see [https://fsunuc.physics.fsu.edu/elog/NSCLDAQ/18 | elog]
=== Load 9054 driver on start up ===
To make the driver get loaded on start up, create a file at '''/etc/systemd/system/''', say broadcom.service
[Unit]
Description=Broadcom PCI/PCIe 9054 Driver
After=network.target
[Service]
Type=oneshot
Environment=PLX_SDK_DIR=/usr/opt/PlxSdk/
ExecStart=/bin/bash /usr/opt/PlxSdk/Bin/Plx_load 9054
ExecStop=/bin/bash /usr/opt/PlxSdk/Bin/Plx_unload 9054
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
and then
sudo systemctl daemon-reload
sudo systemctl enable broadcom.service


= Pixie SDK =  
= Pixie SDK =  

Revision as of 19:18, 14 April 2022

Introduction

Illustration of Pixie16 Crate to DAQ PC connection

In order to control the Pixie16 digitizer, the DAQ computer needs to recognize the digitizer via a PCIe card( for example NI PCI-8366).

The digitizer crate (XIA PXI CompactPCI) has 14-slot. The 1st slot must be the communication card (for example, NI PXI-8366). The remaining 13 slots can be used for digitizer and other modules.

The PCIe card and PXI Board requires no driver. The DAQ computer will treat it as a bridge.

In the computer (LINUX), using the command lspci to show the PCI connection

>lspci

as an example, part of the output:

04:00.0 PCI bridge: Intel Corporation 41210 [Lanai] Serial to Parallel PCI Bridge (A-Segment Bridge) (rev 09)
04:00.2 PCI bridge: Intel Corporation 41210 [Lanai] Serial to Parallel PCI Bridge (B-Segment Bridge) (rev 09)
05:0f.0 Unassigned class [ff00]: National Instruments PXI-8368 
06:05.0 PCI bridge: Texas Instruments PCI2050 PCI-to-PCI Bridge (rev 02)
06:0f.0 Bridge: PLX Technology, Inc. PCI9054 32-bit 33MHz PCI <-> IOBus Bridge (rev 0b)

In the above output, the NI PXI-8368 board on the crate is detected. Also the PCI9054 communication chip is detected.

The location of the PCI9054 communication chip on Pixie16 digitizer.

The PCI9054 (or PLX9054) chip is located at the corner of the Pixie16 digitizer.

The PCI9054 chip requires a driver. The driver is provided by Broadcom, and the package is called PlxSDK. (The Broadcom PCI/PCIe Software Development Kits [1]).

After the driver for the PCI9054 chip is done, the DAQ PC can talk to the digitizer. Next, the PixieSDK has to be installed for controlling the digitizer. The PixieSDK provides methods to control the digitizer.

Broadcom PlxSDK

The chip was a product of PLX Technology, acquired by Broadcom Inc in 2014. The chipset driver is now called the Broadcom PCI/PCIe Software Development Kits [2]. The package provides complete documentation and driver. The last release is on 2020.

installation

After downloaded the package, unzip it, and we have

├── Documentation
│   ├── PLX API DLL with Visual Basic.htm
│   ├── PLX_LegacyAPI.pdf
│   ├── PlxRdkReferenceGuide.htm
│   ├── PLX_SDK_General_FAQ.pdf
│   ├── PLX_SDK_Linux_Release_Notes.htm
│   ├── PLX_SDK_Release_Notes.htm
│   └── PlxSdkUserManual.pdf
└── PlxSdk.tar

The tarball contains the driver. I extract the tarball into /usr/opt/PlxSdk

├── Bin
│   ├── Plx_load
│   ├── Plx_unload
│   └── startlog
├── COPYING
├── Driver
│   ├── buildalldrivers
│   ├── builddriver
│   ├── Makefile
│   ├── Source.Plx6000_NT
│   │   ├── ...
│   ├── Source.Plx8000_DMA
│   │   ├── ...
│   ├── Source.Plx8000_NT
│   │   ├── ...
│   ├── Source.Plx9000
│   │   ├── ApiFunc.c
│   │   ├── ApiFunc.h
│   │   ├── Chip
│   │   │   ├── ...
│   │   │   ├── 9054
│   │   │   │   ├── PlxChipApi.c
│   │   │   │   ├── PlxChipFn.c
│   │   │   │   └── PlxInterrupt.c
│   │   │   ├── ...
│   │   ├── ....
│   └── Source.PlxSvc
│       ├── ....
├── Include
│   ├── ....
├── Makefile
├── Makefiles
│   ├── ...
├── PlxApi
│   ├── ...
└── Samples
    ├── ApiTest
    │   ├── ApiTest.c
    │   └── Makefile
    ├── DSlave
    │   ├── DSlave.c
    │   └── Makefile
    ├── DSlave_BypassApi
    │   ├── ...
    ├── ...

To setup the package (make) and also make the driver:

~>cd /usr/opt/PlxSdk/
PlxSdk>export PLX_SDK_DIR=$(pwd)
PlxSdk>sudo make                   # This shold make everything, including things in Samples
PlxSdk>cd Driver
PlxSdk/Driver>export PLX_CHIP=9054
PlxSdk/Driver>sudo ./builddriver 9054
PlxSdk>cd ../Bin
PlxSdk/Bin>sudo ./Plx_load 9054
Install: Plx9054
  Load module......... Ok (/usr/opt/PlxSdk/Driver/Source.Plx9000/Output)
  Verify load......... Ok
  Get major number.... Ok (MajorID = 243)
  Create node path.... Ok (/dev/plx)
  Create nodes........ Ok (/dev/plx/Plx9054)

In the last step, it loads the 9054 driver to the Linux Kernel. Fro more detail, see | elog

Load 9054 driver on start up

To make the driver get loaded on start up, create a file at /etc/systemd/system/, say broadcom.service

[Unit]
Description=Broadcom PCI/PCIe 9054 Driver
After=network.target

[Service]
Type=oneshot
Environment=PLX_SDK_DIR=/usr/opt/PlxSdk/
ExecStart=/bin/bash /usr/opt/PlxSdk/Bin/Plx_load 9054
ExecStop=/bin/bash /usr/opt/PlxSdk/Bin/Plx_unload 9054
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

and then

sudo systemctl daemon-reload 
sudo systemctl enable broadcom.service

Pixie SDK

Legacy PixieSDK

PixieSDK 3.2

Pixie SDK for control.

Pixie16 API

Pixie API error code


PixieSDK 3.3

DAQ Programs

NSCL DAQ

PixieDAQ

PixieDAQ is a GUI program for complete controlling and taking data from Pixie16 digitizer, developed by Ryan Tang. The program used the PixieSDK 3.3 and ROOT 6.24.

NSCOPE

nscope is a GUI program for setting digitizer parameters, developed by David Caussyn. The program used the Legacy PixieSDK, CERN ROOT 5.