This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| acquisition_and_control_module_acm_board [2025/03/11 11:19] – [Starting CDAQ and Communicating with the ACM Board] simon | acquisition_and_control_module_acm_board [2026/02/12 15:39] (current) – vagelis | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== The Acquisition and Control Module (ACM Board) ====== | ====== The Acquisition and Control Module (ACM Board) ====== | ||
| - | Detailed schematics of the board are available | + | ===== Schematics ===== |
| + | |||
| + | Detailed schematics of the board are available | ||
| + | |||
| + | In the following table you can find the schematics of the ACM board (in this setup Revision A is used): | ||
| + | ^ Block | ||
| + | | Top level diagram | ||
| + | | Digital Input and Clocks | ||
| + | | ADC Block | {{ : | ||
| + | | ADC Channel (x4) | ||
| + | | Power Block | {{ : | ||
| + | | FPGA | ||
| + | | FPGA Decoupling Circuit | ||
| + | | VME Block | {{ : | ||
| + | | VME - P1 | ||
| + | | VME - P2 | ||
| + | | Ethernet Block | ||
| + | | SFP Block - Optical Output (x2) | {{ : | ||
| + | | CCD Control Block | {{ : | ||
| + | | DAC | {{ : | ||
| + | | Clock Generator Block (x5) | ||
| + | | VSUB Generator Block | ||
| + | | Bias Generator Block (x4) | {{ : | ||
| + | | Bias Generator with Offset Block (x2) | {{ : | ||
| + | | CCD Connector Block | {{ : | ||
| + | | Connector placement | ||
| + | ^ Synchronisation board ||| | ||
| + | | {{ : | ||
| + | | {{ : | ||
| + | | {{ : | ||
| + | ^ Test Sequencer board Paris ||| | ||
| + | | {{ : | ||
| + | | {{ : | ||
| + | | {{ : | ||
| ===== Powering the ACM Board ===== | ===== Powering the ACM Board ===== | ||
| Line 14: | Line 47: | ||
| There exists an outdated user manual; please use it with care: {{ : | There exists an outdated user manual; please use it with care: {{ : | ||
| + | |||
| ==== Powering On and Off the ACM Board ==== | ==== Powering On and Off the ACM Board ==== | ||
| To start the ACM board, it is important to follow this order: | To start the ACM board, it is important to follow this order: | ||
| - | Turn on the VME crate. | + | * Turn on the VME crate. |
| - | + | | |
| - | Turn on the external supplies (HMP 2030). | + | |
| To shut down the ACM board: | To shut down the ACM board: | ||
| - | Turn off the HMP2030. | + | * Turn off the HMP2030. |
| + | * Turn off the VME crate. | ||
| + | |||
| + | |||
| + | ===== Power Rail to Ground test ===== | ||
| + | |||
| + | * +3.3 -> GND 170 Ohm | ||
| + | * +5.0 -> GND: 480 kOhm | ||
| + | * +12 -> GND: 4.36 kOhm | ||
| + | * -12 -> GND: 490 kOhm | ||
| + | * -15 -> GND 285 Ohm | ||
| + | * +15 -> GND 500 kOhm | ||
| + | * -30 -> GND 825 kOhm | ||
| + | |||
| + | Fuse continuity test | ||
| + | * +3.3V -> ok | ||
| + | * +5V -> ok | ||
| + | * +15V -> ok | ||
| + | * -15V -> ok | ||
| + | * -30V -> ok | ||
| + | |||
| + | Output Fuse test from top to bottom including the back side resistors (measuring between capacitors and resistors) | ||
| + | * 100 Ohm | ||
| + | * 100 Ohm | ||
| + | * 1 kOhm | ||
| + | * 1 kOhm | ||
| + | * 1 kOhm | ||
| + | * 1 kOhm | ||
| + | |||
| + | ^ Supply | ||
| + | | +5 V | 4.02 A | ||
| + | | +3.3 V | 4.0 A | 970 mA | 2.4 A | | ||
| + | | -30 V | ||
| + | | +12 V | Disconnected, | ||
| + | | -12 V | ::: | ::: | ::: | | ||
| + | | + 15 V | 600 mA | ||
| + | | - 15 V | 600 mA | ||
| - | Turn off the VME crate. | ||
| ===== Software ===== | ===== Software ===== | ||
| The ACM is driven by a two-stage software system: | The ACM is driven by a two-stage software system: | ||
| - | cdaq: Sets up the ACM as a server station. | + | **cdaq:** Sets up the ACM as a server station. |
| - | + | **ldaq:** Manages communication between the server and your workstation. | |
| - | ldaq: Manages communication between the server and your workstation. | + | |
| For download and installation, | For download and installation, | ||
| Line 54: | Line 122: | ||
| - ./ | - ./ | ||
| - | - ./ | + | - ./ |
| - | - ./ | + | - ./ |
| - | - ./ | + | - ./ |
| - | - ./ | + | - ./ |
| These steps are part of the start_module.py script. | These steps are part of the start_module.py script. | ||
| Line 84: | Line 152: | ||
| The CCDID is assigned by the board. For example, board number 105 has the ID ccd105 (For Rev A, it’s 1). The ID is determined by the board' | The CCDID is assigned by the board. For example, board number 105 has the ID ccd105 (For Rev A, it’s 1). The ID is determined by the board' | ||
| - | ==== How to start the CDAQ and to communicate with the acm board ==== | ||
| - | - Go into the directory /ccd-cdaq | + | ==== Synchronization Board ==== |
| - | - ./ | + | |
| - | - Python start_imagebuilders.py | + | |
| - | - Python ./ | + | |
| - | - ./ | + | |
| - | - ./ | + | |
| - | - ./ | + | |
| - | - ./ | + | |
| - | - ./ | + | |
| - | The second part (step 5 and futher) are part of the start_module.py script | + | To synchronize multiple ACMs, a synchronization board is used. Communication between ACMs and the synchronization board is managed by the cdaq software, but ACMs must be set up correctly: |
| - | **Erase/ | + | |
| - | * daq.ops.erase_CCD(highP=9., delay = 2)d | + | * Send the ESS command to the master board, enabling it to communicate with the sync board. |
| - | * aq.ops.epurge_CCD(lowP=-9., delay = 1) | + | * Assign all ACMs to the same pool (otherwise, commands will be chained instead of handled simultaneously). |
| + | * Send the CEX command to the pool so they listen to the sync board’s clock. (Yellow LED next to the Ethernet connection indicates an internal clock; off means external.) | ||
| + | * Send commands to the pool; the software will handle the rest. | ||
| + | If the external clock is disconnected, | ||
| - | **image aquisation** | + | Master/ |
| - | * daq.set_run(“testimages”, | + | |
| - | * daq.prepare_image(fname=”img”, | + | |
| - | * daq.only_take_image(level=2) | + | |
| + | * DSS+EXS = Slave board (Green LED) | ||
| + | * ESS+EXS = Master board (Red LED) | ||
| - | **Trace acquisistion** | + | **Note:** Different cable lengths can cause issues. |
| - | * daq.take_trace(fname=”trace”, | + | |
| - | when shuting the cdaq down proceed as follows: | + | ===== Software Installation |
| - | - screen -ls (shows all existing clients) | + | |
| - | - ./ | + | |
| - | - Screen -r ID (If ./ | + | |
| - | - Close Tmux session using ctrl+c &ctrl+d | + | |
| - | The CCDID is set by the board for example board number 105 has the ID ccd105. (For Rev A it’s 1). The Id is set by the IP of the board, and the IP is set by the Chip ID. It is possible to change the IP through the firmware manually but in general not needed because every board gets the IP set individual by its Chip ID. The default IP for Rev B is 192.168.105.5 | + | Before installing |
| - | ==== Synchronisation Board ==== | + | [[https:// |
| + | * Install: sudo apt install mosquitto | ||
| + | [[https:// | ||
| + | * Install: sudo apt install tmux | ||
| - | To use multiple ACM together it is necessary to synchronize them, for this a synchronisation board was developed. Communicaiton between the ACM and the syncrhonisation board is handled by the cdaq software, but the ACM's have to be set up properly: | + | Before installing cdaq and ldaq, the firmware must be uploaded. Firmware is located at: |
| - | | + | |
| - | - Send to the Masterboard the command ESS, which allows it to send commands to the sync board | + | |
| - | - Asign all ACM to the same pool (otherwise commands are chained and not simultaneously handled) | + | |
| - | - Send to the pool the command CEX such that they will listen to the clock of the sync board (Yellow led next to ethenert connection means internal clock, off external). | + | |
| - | - then send command to pool, and the software will handle the rest. | + | |
| - | If the external clock is cut it will automatically switch to internal, not a recommended procedure, it will try to always search for an externall one, if reconnected it will switch to external. For the commands see chapter commands. Since the commands are wrapped in different stages it is possible to send a master/slave command that handles everything and to set it up manually command by command. | + | To upload firmware, use Quartus: |
| - | * DSS+EXS= slave board (green LED) | + | Located at: / |
| - | * ESS+EXS= master board (red LED) | + | |
| - | **Note:** Different cable length can cause trouble. | + | - Open Quartus and navigate to Tools → Programmer. |
| + | - Select USB-Blaster 2-1.4 and press Start. | ||
| + | - To allow USB Blaster communication, | ||
| + | - SUBSYSTEM==" | ||
| + | Reload rules: | ||
| + | | ||
| + | | ||
| + | After shutting down the ACM board, firmware must be re-uploaded. A permanent installation using a .pof file is possible. | ||
| + | ==== cdaq and ldaq ==== | ||
| + | |||
| + | After this you can download the files from [[https:// | ||
| + | - cd experiment | ||
| + | - cp example.ini default.ini | ||
| + | - cp example_ccd_clients.json ccd_clients.json | ||
| + | - cd .. | ||
| + | - ./ | ||
| + | |||
| + | now a tmux window sould appear, in the bottom shel type: | ||
| + | * python scripts/ | ||
| + | |||
| + | Now you should see command moving around. | ||
| + | If the test was sucessull, you have to shut down the run que, clients and CDAQ: | ||
| + | * delqueue.py | ||
| + | wait for this process to finish | ||
| + | * ./ | ||
| + | * ./ | ||
| + | shutdown the CDAQ | ||
| + | * ./ | ||
| + | * close the tmux sessioin using ctrl+c, | ||
| + | |||
| + | Now for the ldaq software follow also the README file. | ||
| + | |||
| + | === Rev A === | ||
| + | Multiple modificatioins have to made for the Rev A to work properly, first make sure that you use the correct commits: | ||
| + | * Ldaq: c5121925 | ||
| + | * Cdaq: 6adb7739 | ||
| + | |||
| + | Once this happens it is necessary to manually link the path of the libACM (which should be in / | ||
| + | |||
| + | Second, also the init file in the libDAQ directory has to be heavely modified, otherwise it will fail to initialize the clients {{ : | ||
| + | |||
| + | Third, there are two files the acmpy.py and daemon.py file, that have to be exchange with this versions: | ||
| + | |||
| + | otherwise the communication between the cdaq server and the ACM itself is not proparly started and some commands will produce errors. | ||
| + | |||
| + | Fourth, you have to correct an error in the acmpy file in line 120 os.mkdirs(tmppath, | ||
| ===== Command list ===== | ===== Command list ===== | ||
| The main idea of the CDAQ is that you can send a list of commands to several | The main idea of the CDAQ is that you can send a list of commands to several | ||
| Line 147: | Line 246: | ||
| Each CCD client can either be treated as an individual client or as part of a CCD pool. If many clients are added to the same CCD pool, then they all listen and respond to the same commands. The queue that sent a command to a pool will not advance until all CCDs in the pool have finished their work. The general command structure is: | Each CCD client can either be treated as an individual client or as part of a CCD pool. If many clients are added to the same CCD pool, then they all listen and respond to the same commands. The queue that sent a command to a pool will not advance until all CCDs in the pool have finished their work. The general command structure is: | ||
| - | **./ | + | **./ |
| Take note of the quotation marks around the CMD, they are indeed needed (we send a string). The CCDID is set by the board for example board number 105 has the ID ccd105. All daq functions can be found in the acmpy.py file. Some function are calling ops/aqs functions, they are second level function and there corresponding files (operation/ | Take note of the quotation marks around the CMD, they are indeed needed (we send a string). The CCDID is set by the board for example board number 105 has the ID ccd105. All daq functions can be found in the acmpy.py file. Some function are calling ops/aqs functions, they are second level function and there corresponding files (operation/ | ||
| Line 178: | Line 277: | ||
| | ./ | | ./ | ||
| | ./ | | ./ | ||
| - | |||
| - | |||
| - | ===== Power Rail to Ground test ===== | ||
| - | |||
| - | * +3.3 -> GND 170 Ohm | ||
| - | * +5.0 -> GND: 480 kOhm | ||
| - | * +12 -> GND: 4.36 kOhm | ||
| - | * -12 -> GND: 490 kOhm | ||
| - | * -15 -> GND 285 Ohm | ||
| - | * +15 -> GND 500 kOhm | ||
| - | * -30 -> GND 825 kOhm | ||
| - | |||
| - | Fuse continuity test | ||
| - | * +3.3V -> ok | ||
| - | * +5V -> ok | ||
| - | * +15V -> ok | ||
| - | * -15V -> ok | ||
| - | * -30V -> ok | ||
| - | |||
| - | Output Fuse test from top to bottom including the back side resistors (measuring between capacitors and resistors) | ||
| - | * 100 Ohm | ||
| - | * 100 Ohm | ||
| - | * 1 kOhm | ||
| - | * 1 kOhm | ||
| - | * 1 kOhm | ||
| - | * 1 kOhm | ||
| - | |||
| - | ^ Supply | ||
| - | | +5 V | 4.02 A | ||
| - | | +3.3 V | 4.0 A | 970 mA | 2.4 A | | ||
| - | | -30 V | ||
| - | | +12 V | Disconnected, | ||
| - | | -12 V | ::: | ::: | ::: | | ||
| - | | + 15 V | 600 mA | ||
| - | | - 15 V | 600 mA | ||
| Line 297: | Line 361: | ||
| | ::: | Z30 | 158 | ::: | ::: | ::: | ::: | | | ::: | Z30 | 158 | ::: | ::: | ::: | ::: | | ||
| | ::: | Z32 | 160 | ::: | ::: | ::: | ::: | | | ::: | Z32 | 160 | ::: | ::: | ::: | ::: | | ||
| - | |||
| - | ===== Software Installation and Test ===== | ||
| - | |||
| - | Before installing the ACM Board software, you have to install the auxilliary software. On our setup the files are installed in the /Home/ACM directory. | ||
| - | |||
| - | * [[https:// | ||
| - | |||
| - | sudo apt install mosqiotto | ||
| - | |||
| - | * [[https:// | ||
| - | |||
| - | sudo apt install tmux | ||
| - | |||
| - | Before the installation of the cdaq and ldaq take place the firmware has to be uploaded. The firmware for the ACM driver can be found here: | ||
| - | * / | ||
| - | |||
| - | To upload or update the firmware the auxiliary software //Quartus// is needed it is located here: | ||
| - | * / | ||
| - | It can be started by klicking on the icon on the destop, it takes a while to start. | ||
| - | After quartus started go to the taskbar and go to //Tools// and click // | ||
| - | * SUBSYSTEM==" | ||
| - | Then reload the rules: | ||
| - | * sudo udevadm control --reload-rules | ||
| - | * sudo udevadm trigger | ||
| - | After this the setup has to be restarted for the modification to take effect. | ||
| - | The firmware can be found here (installed is: damic_m_acm_v11a.sof): | ||
| - | * / | ||
| - | |||
| - | **Note:** After every shutdown (see above chapter) of the ACM board you have to upload the firmware again. | ||
| - | |||
| - | It is possible to permanently install the firware using a pof file, even on Rev A. | ||
| - | |||
| - | |||
| - | |||
| - | ==== cdaq and ldaq ==== | ||
| - | |||
| - | After this you can download the files from [[https:// | ||
| - | - cd experiment | ||
| - | - cp example.ini default.ini | ||
| - | - cp example_ccd_clients.json ccd_clients.json | ||
| - | - cd .. | ||
| - | - ./ | ||
| - | |||
| - | now a tmux window sould appear, in the bottom shel type: | ||
| - | * python scripts/ | ||
| - | |||
| - | Now you should see command moving around. | ||
| - | If the test was sucessull, you have to shut down the run que, clients and CDAQ: | ||
| - | * delqueue.py | ||
| - | wait for this process to finish | ||
| - | * ./ | ||
| - | * ./ | ||
| - | shutdown the CDAQ | ||
| - | * ./ | ||
| - | * close the tmux sessioin using ctrl+c, | ||
| - | |||
| - | Now for the ldaq software follow also the README file. | ||
| - | |||
| - | **Note:** for RevA we had to manually link the path of the libACM (which should be in / | ||
| - | |||
| - | ===== Schematics ===== | ||
| - | In the following table you can find the schematics of the ACM board (in this setup Revision A is used): | ||
| - | ^ Block | ||
| - | | Top level diagram | ||
| - | | Digital Input and Clocks | ||
| - | | ADC Block | {{ : | ||
| - | | ADC Channel (x4) | ||
| - | | Power Block | {{ : | ||
| - | | FPGA | ||
| - | | FPGA Decoupling Circuit | ||
| - | | VME Block | {{ : | ||
| - | | VME - P1 | ||
| - | | VME - P2 | ||
| - | | Ethernet Block | ||
| - | | SFP Block - Optical Output (x2) | {{ : | ||
| - | | CCD Control Block | {{ : | ||
| - | | DAC | {{ : | ||
| - | | Clock Generator Block (x5) | ||
| - | | VSUB Generator Block | ||
| - | | Bias Generator Block (x4) | {{ : | ||
| - | | Bias Generator with Offset Block (x2) | {{ : | ||
| - | | CCD Connector Block | {{ : | ||
| - | | Connector placement | ||
| - | ^ Synchronisation board ||| | ||
| - | | {{ : | ||
| - | | {{ : | ||
| - | | {{ : | ||
| - | ^ Test Sequencer board Paris ||| | ||
| - | | {{ : | ||
| - | | {{ : | ||
| - | | {{ : | ||