Project

General

Profile

Task #9761

Milestone #9608: Down Converter Test

ACNET device for setting/reading frequency curve

Added by John Diamond over 5 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
bpmacsys
Start date:
07/29/2015
Due date:
% Done:

100%

Estimated time:
8.00 h
Spent time:
Duration:

Description

An ACNET devices that set & read the time-value pairs for the frequency curve. Should behave just like B:VFRQTT[] (time) & B:VFRQTV (values).

Also, an ACL script that copies B:VFRQTT and B:VFRQTV to our devices.

History

#1 Updated by John Diamond over 5 years ago

Documented the design for programming the NCO frequency table/curve in the Operations_Manual section of the wiki.

Started work on the DAQDevice class that will implement the ACNET interface to the NCO frequency table.

#2 Updated by John Diamond over 5 years ago

  • % Done changed from 0 to 30

Created NCO frequency table test devices: Z:BTSNFT[] & Z:BTSNFF[] - just a setting property right now, will add the control property later.

Spent some time struggling to get the DAQDevice class returning data to ACNET. Turns out that the framework launches a different process for each class. This was causing the rt_task_init_schmod call to fail on the second launch because the task name had already been reserved.

Have reading of the setting working. Will work on processing sets after lunch.

#3 Updated by John Diamond over 5 years ago

Changed the way we register the Device class with the framework so that the attribute numbers don't conflict.

#4 Updated by John Diamond over 5 years ago

  • % Done changed from 30 to 60

Created DAQDevice methods for returning status and control. Added bits for showing when the frequency table is "dirty" to the status property on Z:BTSNFF and a control bit for sending the table to the digitizers. Will work on implementing that command tomorrow.

#5 Updated by John Diamond over 5 years ago

Also created an ACL script on clx cluster that copies the Booster LLRF frequency curve devices into the test stand NCO frequency devices.
See:

booster_cp_freq.acl

The script looks like this:
set Z_BTSNFT[0:1023]=B:VFRQTT[0:1023]
set Z_BTSNFF[0:1023]=B:VFRQTV[0:1023]

#6 Updated by John Diamond over 5 years ago

  • % Done changed from 60 to 80

Created a SharedNCOFreqTable class that resides in the SHM segment 'BPMDNF'.
DAQPool constructs the shared memory pool when bpmd starts up.
BpmdInterface provides a ftLoad(..) method that delegates to SharedNCOFreqTable::load(..) to process the time/value pairs and load the table with 10240 regular-spaced frequency values.
The shared memory segment also includes a "dirty" flag which DAQPool can use to decide when it's OK to send the new table to the digitizers (e.g. we don't want to do this when the digitizers are armed).

Tested and it seems to work but we're still waiting on Alexei to provide his interface for loading the table into the digitizer.

Need to modify the ACL script to set the "Process & Load" bit after copying the LLRF frequency curve devices.
Also need to signal the control task to try to load the frequency table when idle.

#7 Updated by John Diamond over 5 years ago

Added the following to booster_cp_freq.acl to process and load the frequency table:

set Z&BTSNFF "Process and Load NCO Freq Table" 

#8 Updated by John Diamond over 5 years ago

  • Status changed from Accepted to Closed
  • % Done changed from 80 to 100

Added an FT_LOAD command to the Controller which requests that the NCO frequency table be downloaded to the digitizers immediately. If the digitizers are arm the request will pend until the digitizers are disarmed.

Verified that this operation works -

Aug  3 14:48:31 bbpmts user.info BPMDSM: Entering in-cycle state for machine reset event $20.
Aug  3 14:48:31 bbpmts user.info BPMDSM: Using command list: raw test, commands: 3
Aug  3 14:48:31 bbpmts user.info BPMDSM: executing command type 0
Aug  3 14:48:31 bbpmts user.info BPMDCT: Arming digitizer pool, measurement = 0, trigger = 0, samples = 1024
.
Aug  3 14:48:31 bbpmts user.info BPMDCT: Digitizer pool armed, took 151827 ns.
Aug  3 14:48:32 bbpmts user.info syslog: Process & Load command complete.
Aug  3 14:48:32 bbpmts user.info BPMDCT: DAQ Pool armed, frequency table will load when disarmed.
[12969.893447] adc250x12xsmod: _handle_raw_readout completed in 1842415 ns.
[12969.893447] adc250x12xsmod: _handle_raw_readout completed in 1840261 ns.
[12969.893447] adc250x12xsmod: _handle_raw_readout completed in 1841371 ns.
[12969.893447] adc250x12xsmod: _handle_raw_readout completed in 1840783 ns.
Aug  3 14:48:36 bbpmts user.info BPMDSM: msg.tclk_event = 26.
Aug  3 14:48:36 bbpmts user.info BPMDSM: executing command type 3
Aug  3 14:48:36 bbpmts user.info BPMDSM: executing command type 2
Aug  3 14:48:36 bbpmts user.info BPMDSM: Entering idle state.
Aug  3 14:48:36 bbpmts user.info BPMDCT: DAQ pool disarmed.
Aug  3 14:48:36 bbpmts user.info BPMDCT: todo: send new frequency table to the digitizers
Aug  3 14:48:36 bbpmts user.info BPMDCT: Control task idle.

Also available in: Atom PDF