Register setup from Leonid
To run DAC with single sample you need set the following registers in additional default file you set DAC for playback
- AmcCarrierCore:
- DacSigGen:
- Waveform:
- MemoryArray: !<value> 0xYYYY # Value you want to use to drive if same on all DACs. If different you need to do differently
- PeriodSize: !<value> 0x00000001 #Also, I am not sure it is 1 or 0 to be, need to experiment
- SoftwareTrigger: !<value> 0x0
- SignFormat: !<value> 0x3
- HoldLastValue: !<value> 0x1
- ModeMask: !<value> 0x0
- EnableMask: !<value> 0x3
Plus you need to set DAC configuration to updated settings:
- AmcCarrierCore:
- AppCore:
- Dac38J84:
- InitJesd: !<value> 0x01
- EnableTx: !<value> 0x1
- DacReg: !<value>
############################
- 0x0018 # DacReg[0]: 0x0018
- 0x0003 # DacReg[1]: 0x0003
- 0x2080 # DacReg[2]: 0x2080
- 0xF300 # DacReg[3]: 0xF300
- 0xFCFC # DacReg[4]: 0xFCFC
- 0xFC07 # DacReg[5]: 0xFC07
- 0xFFFF # DacReg[6]: 0xFFFF
- 0x3800 # DacReg[7]: 0x3800
- 0x0000 # DacReg[8]: 0x0000
- 0x0000 # DacReg[9]: 0x0000
- 0x0000 # DacReg[10]: 0x0000
- 0x0000 # DacReg[11]: 0x0000
- 0x0400 # DacReg[12]: 0x0400
- 0x0400 # DacReg[13]: 0x0400
- 0x0400 # DacReg[14]: 0x0400
- 0x0400 # DacReg[15]: 0x0400
- 0x0000 # DacReg[16]: 0x0000
- 0x0000 # DacReg[17]: 0x0000
- 0x0000 # DacReg[18]: 0x0000
- 0x0000 # DacReg[19]: 0x0000
- 0x0000 # DacReg[20]: 0x0000
- 0x0000 # DacReg[21]: 0x0000
- 0x0000 # DacReg[22]: 0x0000
- 0x0000 # DacReg[23]: 0x0000
- 0x0000 # DacReg[24]: 0x0000
- 0x0000 # DacReg[25]: 0x0000
- 0x0020 # DacReg[26]: 0x0020
- 0x0000 # DacReg[27]: 0x0000
- 0x0000 # DacReg[28]: 0x0000
- 0x0000 # DacReg[29]: 0x0000
- 0x9999 # DacReg[30]: 0x9999
- 0x9980 # DacReg[31]: 0x9980
- 0x8008 # DacReg[32]: 0x8008
- 0x0000 # DacReg[33]: 0x0000
- 0x1b14 # DacReg[34]: 0x1b14
- 0xffff # DacReg[35]: 0xffff
- 0x0010 # DacReg[36]: 0x0010
- 0x0000 # DacReg[37]: 0x0000
- 0x0000 # DacReg[38]: 0x0000
- 0x0000 # DacReg[39]: 0x0000
- 0x003f # DacReg[40]: 0x003f
- 0xffff # DacReg[41]: 0xffff
- 0x0000 # DacReg[42]: 0x0000
- 0x0000 # DacReg[43]: 0x0000
- 0x0000 # DacReg[44]: 0x0000
- 0x0000 # DacReg[45]: 0x0000
- 0xffff # DacReg[46]: 0xffff
- 0x0004 # DacReg[47]: 0x0004
- 0x0000 # DacReg[48]: 0x0000
- 0x1000 # DacReg[49]: 0x1000
- 0x0000 # DacReg[50]: 0x0000
- 0x0000 # DacReg[51]: 0x0000
- 0x0000 # DacReg[52]: 0x0000
- 0x0000 # DacReg[53]: 0x0000
- 0x0000 # DacReg[54]: 0x0000
- 0x0000 # DacReg[55]: 0x0000
- 0x0000 # DacReg[56]: 0x0000
- 0x0000 # DacReg[57]: 0x0000
- 0x0000 # DacReg[58]: 0x0000
- 0x0000 # DacReg[59]: 0x0000
- 0x0228 # DacReg[60]: 0x0228
- 0x00AD # DacReg[61]: 0x00AD # Fully adaptive equalizer, boost on
- 0x0108 # DacReg[62]: 0x0108 # JESD termination setting and rate.
- 0x0000 # DacReg[63]: 0x0000
- 0x0000 # DacReg[64]: 0x0000
- 0x0000 # DacReg[65]: 0x0000
- 0x0000 # DacReg[66]: 0x0000
- 0x0000 # DacReg[67]: 0x0000
- 0x0000 # DacReg[68]: 0x0000
- 0x0000 # DacReg[69]: 0x0000
- 0x0044 # DacReg[70]: 0x0044
- 0x190a # DacReg[71]: 0x190a
- 0x31c3 # DacReg[72]: 0x31c3
- 0x0004 # DacReg[73]: 0x0004
- 0x0321 # DacReg[74]: 0x0321
- 0x1F01 # DacReg[75]: 0x1F01
- 0x1f01 # DacReg[76]: 0x1f01
- 0x0100 # DacReg[77]: 0x0100
- 0x0f2f # DacReg[78]: 0x0f2f # Enable scrambler
- 0x1c61 # DacReg[79]: 0x1c61
- 0x0000 # DacReg[80]: 0x0000
- 0x0026 # DacReg[81]: 0x0026 # sync_request_ena_link0
- 0x0026 # DacReg[82]: 0x0026 # error_ena_link0
- 0x0000 # DacReg[83]: 0x0000
- 0x0026 # DacReg[84]: 0x0026 # sync_request_ena_link1
- 0x0026 # DacReg[85]: 0x0026 # error_ena_link1
- 0x0000 # DacReg[86]: 0x0000
- 0x00ff # DacReg[87]: 0x00ff
- 0x00ff # DacReg[88]: 0x00ff
- 0x0000 # DacReg[89]: 0x0000
- 0x00ff # DacReg[90]: 0x00ff
- 0x00ff # DacReg[91]: 0x00ff
- 0x6666 # DacReg[92]: 0x6666 # Skip two SYSREF pulses then use all pulses.
- 0x0000 # DacReg[93]: 0x0000
- 0x0000 # DacReg[94]: 0x0000
- 0x0123 # DacReg[95]: 0x0123
- 0x4567 # DacReg[96]: 0x4567
- 0x0211 # DacReg[97]: 0x0211
- 0x0000 # DacReg[98]: 0x0000
- 0x0000 # DacReg[99]: 0x0000
- 0x0000 # DacReg[100]: 0x0 # write to clear alarms
- 0x0000 # DacReg[101]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[102]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[103]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[104]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[105]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[106]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[107]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[108]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[109]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[110]: 0x0000
- 0x0000 # DacReg[111]: 0x0000
- 0x0000 # DacReg[112]: 0x0000
- 0x0000 # DacReg[113]: 0x0000
- 0x0000 # DacReg[114]: 0x0000
- 0x0000 # DacReg[115]: 0x0000
- 0x0000 # DacReg[116]: 0x0000
- 0x0000 # DacReg[117]: 0x0000
- 0x0000 # DacReg[118]: 0x0000
- 0x0000 # DacReg[119]: 0x0000
- 0x0000 # DacReg[120]: 0x0000
- 0x0000 # DacReg[121]: 0x0000
- 0x0000 # DacReg[122]: 0x0000
- 0x0000 # DacReg[123]: 0x0000
- 0x0000 # DacReg[124]: 0x0000
- 0x0000 # DacReg[125]: 0x0000
############################
- 0x0018 # DacReg[0]: 0x0018
- 0x0003 # DacReg[1]: 0x0003
- 0x2080 # DacReg[2]: 0x2080
- 0xF300 # DacReg[3]: 0xF300
- 0xFCFC # DacReg[4]: 0xFCFC
- 0xFC07 # DacReg[5]: 0xFC07
- 0xFFFF # DacReg[6]: 0xFFFF
- 0x3800 # DacReg[7]: 0x3800
- 0x0000 # DacReg[8]: 0x0000
- 0x0000 # DacReg[9]: 0x0000
- 0x0000 # DacReg[10]: 0x0000
- 0x0000 # DacReg[11]: 0x0000
- 0x0400 # DacReg[12]: 0x0400
- 0x0400 # DacReg[13]: 0x0400
- 0x0400 # DacReg[14]: 0x0400
- 0x0400 # DacReg[15]: 0x0400
- 0x0000 # DacReg[16]: 0x0000
- 0x0000 # DacReg[17]: 0x0000
- 0x0000 # DacReg[18]: 0x0000
- 0x0000 # DacReg[19]: 0x0000
- 0x0000 # DacReg[20]: 0x0000
- 0x0000 # DacReg[21]: 0x0000
- 0x0000 # DacReg[22]: 0x0000
- 0x0000 # DacReg[23]: 0x0000
- 0x0000 # DacReg[24]: 0x0000
- 0x0000 # DacReg[25]: 0x0000
- 0x0020 # DacReg[26]: 0x0020
- 0x0000 # DacReg[27]: 0x0000
- 0x0000 # DacReg[28]: 0x0000
- 0x0000 # DacReg[29]: 0x0000
- 0x9999 # DacReg[30]: 0x9999
- 0x9980 # DacReg[31]: 0x9980
- 0x8008 # DacReg[32]: 0x8008
- 0x0000 # DacReg[33]: 0x0000
- 0x1b14 # DacReg[34]: 0x1b14
- 0xffff # DacReg[35]: 0xffff
- 0x0010 # DacReg[36]: 0x0010
- 0x0000 # DacReg[37]: 0x0000
- 0x0000 # DacReg[38]: 0x0000
- 0x0000 # DacReg[39]: 0x0000
- 0x003f # DacReg[40]: 0x003f
- 0xffff # DacReg[41]: 0xffff
- 0x0000 # DacReg[42]: 0x0000
- 0x0000 # DacReg[43]: 0x0000
- 0x0000 # DacReg[44]: 0x0000
- 0x0000 # DacReg[45]: 0x0000
- 0xffff # DacReg[46]: 0xffff
- 0x0004 # DacReg[47]: 0x0004
- 0x0000 # DacReg[48]: 0x0000
- 0x1000 # DacReg[49]: 0x1000
- 0x0000 # DacReg[50]: 0x0000
- 0x0000 # DacReg[51]: 0x0000
- 0x0000 # DacReg[52]: 0x0000
- 0x0000 # DacReg[53]: 0x0000
- 0x0000 # DacReg[54]: 0x0000
- 0x0000 # DacReg[55]: 0x0000
- 0x0000 # DacReg[56]: 0x0000
- 0x0000 # DacReg[57]: 0x0000
- 0x0000 # DacReg[58]: 0x0000
- 0x0000 # DacReg[59]: 0x0000
- 0x0228 # DacReg[60]: 0x0228
- 0x00AD # DacReg[61]: 0x00AD # Fully adaptive equalizer, boost on
- 0x0108 # DacReg[62]: 0x0108 # JESD termination setting and rate.
- 0x0000 # DacReg[63]: 0x0000
- 0x0000 # DacReg[64]: 0x0000
- 0x0000 # DacReg[65]: 0x0000
- 0x0000 # DacReg[66]: 0x0000
- 0x0000 # DacReg[67]: 0x0000
- 0x0000 # DacReg[68]: 0x0000
- 0x0000 # DacReg[69]: 0x0000
- 0x0044 # DacReg[70]: 0x0044
- 0x190a # DacReg[71]: 0x190a
- 0x31c3 # DacReg[72]: 0x31c3
- 0x0004 # DacReg[73]: 0x0004
- 0x0321 # DacReg[74]: 0x0321
- 0x1F01 # DacReg[75]: 0x1F01
- 0x1f01 # DacReg[76]: 0x1f01
- 0x0100 # DacReg[77]: 0x0100
- 0x0f2f # DacReg[78]: 0x0f2f # Enable scrambler
- 0x1c61 # DacReg[79]: 0x1c61
- 0x0000 # DacReg[80]: 0x0000
- 0x0026 # DacReg[81]: 0x0026 # sync_request_ena_link0
- 0x0026 # DacReg[82]: 0x0026 # error_ena_link0
- 0x0000 # DacReg[83]: 0x0000
- 0x0026 # DacReg[84]: 0x0026 # sync_request_ena_link1
- 0x0026 # DacReg[85]: 0x0026 # error_ena_link1
- 0x0000 # DacReg[86]: 0x0000
- 0x00ff # DacReg[87]: 0x00ff
- 0x00ff # DacReg[88]: 0x00ff
- 0x0000 # DacReg[89]: 0x0000
- 0x00ff # DacReg[90]: 0x00ff
- 0x00ff # DacReg[91]: 0x00ff
- 0x6666 # DacReg[92]: 0x6666 # Skip two SYSREF pulses then use all pulses.
- 0x0000 # DacReg[93]: 0x0000
- 0x0000 # DacReg[94]: 0x0000
- 0x0123 # DacReg[95]: 0x0123
- 0x4567 # DacReg[96]: 0x4567
- 0x0211 # DacReg[97]: 0x0211
- 0x0000 # DacReg[98]: 0x0000
- 0x0000 # DacReg[99]: 0x0000
- 0x0000 # DacReg[100]: 0x0 # write to clear alarms
- 0x0000 # DacReg[101]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[102]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[103]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[104]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[105]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[106]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[107]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[108]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[109]: 0x0 # write to clear alarms0
- 0x0000 # DacReg[110]: 0x0000
- 0x0000 # DacReg[111]: 0x0000
- 0x0000 # DacReg[112]: 0x0000
- 0x0000 # DacReg[113]: 0x0000
- 0x0000 # DacReg[114]: 0x0000
- 0x0000 # DacReg[115]: 0x0000
- 0x0000 # DacReg[116]: 0x0000
- 0x0000 # DacReg[117]: 0x0000
- 0x0000 # DacReg[118]: 0x0000
- 0x0000 # DacReg[119]: 0x0000
- 0x0000 # DacReg[120]: 0x0000
- 0x0000 # DacReg[121]: 0x0000
- 0x0000 # DacReg[122]: 0x0000
- 0x0000 # DacReg[123]: 0x0000
- 0x0000 # DacReg[124]: 0x0000
- 0x0000 # DacReg[125]: 0x0000
############################
I think it will be best if I update default configuration file and add this features to FWS system
And in this case you need to deal with couple settings on software side.
- Waveform:
- MemoryArray: !<value> 0xYYYY # Value you want to use to drive if same on all DACs. If different you need to do differently
- PeriodSize: !<value> 0x00000001 #Also, I am not sure it is 1 or 0 to be, need to experiment
MemoryArray is 2048 entries with 512 entries per DAC (2DACs per 2 AMC:AMC0DAC0,AMC0DAC1, AMC1DAC0,AMC1DAC1)
Since it is array you may need to write 4 groups of 512 data with different DAC values. Also, I am not sure if you can write to specific address of array directly.
And period can stay as 1 and you probably do not need to do anything about it. But may need to check in lab setup.
Shown hierarchy is your dictionary.