- Follow the steps in
README.mdand practice trying to take data - Try changing some of the parameters by doing in the minicomA window
poke cf000048 c8while stream is off and then turn it back on and take new data. This will set the raw waveform window from 200ns to 400ns. See if it still takes data. - There is some kind of maximum amount of time allowed for the raw waveform window. If you set the setting too high, then all data stops coming, and even if you turn the setting back down, the data won't come until you completely reload the firmware from the original bit file. We need to investigate this.
You can try any of these above things. Even just step one is a good starting point without worrying about any of the other things.
Other to-do:
- (I started this, see this GitHub branch) Simplify GitHub project by expanding the .gitignore file. This will require Google searches + repeatedly cloning the GitHub repo and trying to build the .bit file from what just what the repo gives and see what files are necessary and what can be rebuilt. Obviously for example, not including the project file would break it, as would not including the .vhd source files, but I'm sure there are many files that are being included that aren't necessary.
- Edit the settings in
/code/adc_trigger_settings.py, reference this page and this section on the main page for information on the trigger options. - Run with
python3 adc_trigger_settings.py - Collect data the normal way
- Plot the data file with
/socket/hex_check.py
Things to investigate:
- The "trigger offset" variable 0x7fcad80, what happens if you increase or decrease it. (If it's too low you encounter an error in the code with infinite counting?)
- The mysterious events where it triggers off something but nothing shows. Maybe it's related to the external trigger? If you set trigger setting to 7f, it'll only trigger on external trigger. FE = only trigger on self triggers, and "00" = trigger on anything.
Testing the scopes
- Set oscilloscope to 50 ohm setting, keep signal generator in "HighZ" setting.
- Plug signal generator output into oscilloscope. We expect 50mV or 1V depending on our choice, but it's important to see what the signal generator shows. Maybe we'll be outputting 1V for example but the signal generator shows something very small, like 10mV or something.
- Try changing the signal generator setting from "HighZ" to "50 Ohm" or something like that, see then if the oscilloscope reading matches the voltage you're giving it.
- Once you've figured that out, put the signal back into the uTCA crate. Most likely, 50 ohm is what you want. Start out with small voltages (don't put anything above 1V into the uTCA crate to start). Plot the data that the uTCA crate receives, and see if it matches what you expect. If my suspicion is correct, the scaling will now be off and it'll read higher than what we're expecting. That's just an error in my Python code. Matthew seems to imply that the uTCA crate in reality only accepts signals within 1V.
Further Ideas for Progress
- Feeding a known wave into the FPGA and verify the efficiency of the peak detection algorithm.
- Plot a spectrogram of the Fourier frequency over a spill to see if there's any observable and real dependence on event time in the frequency.
- Plot a 2D histogram of Fourier frequencies per event to verify the cross-event stability of the signal and trigger.
- After a delta comb of three-fold coincidence events alone has been generated, re-run the entire Fourier transform and data analysis chain on that three-coincidence-only list and see what kind of result is obtained.