-
Notifications
You must be signed in to change notification settings - Fork 91
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for Real Time ADC Sample Rate Change #318
base: main
Are you sure you want to change the base?
Support for Real Time ADC Sample Rate Change #318
Conversation
… rate change. Seperate overlay download and clock config.
Answers to Dave's Questions from Notion: 1. What freqs can be safely changed, and to what values - the software needs to be able to check this before doing the update. 2. What happens if the clock that gets changed drives the tproc? (probably this is fine, we just need to update the tproc freq in the QickConfig?) 3. What happens if the clock that gets changed is used as fabric clock for other tiles, or if the tile that gets changed uses another tile’s fabric clock? (this might be OK if you change the sampling rates of both tiles?) 4. What happens if the clock that gets changed drives a clocking wizard? 5. Understand if there’s anything else that needs to be updated/reset after a change after an update, the affected freqs in the QickConfig need to be changed: gen/RO DDS and fabric freqs, tproc freqs?, anything else? What’s the right interface for this? Easiest if sampling rates can only be set at the beginning, at QickSoc initialization. If they can be changed later, you need to make sure that pyro users get the updated QickConfig document this so users understand when to use this, how to use this, what can go wrong. |
This software change allows the ADC sample rate of each tile to be updated at SoC initialization
This functionality requires the ADC tile PLL to be enabled and used as the clock source. (As far as I can tell, this is already the case in most (all?) QICK designs.
There should be no change required to existing firmwares, however it would be best practice to implement firmwares with the maximum supported sample rate to ensure users don't run into timing issues because requesting a faster sample rate will require a faster
adc_axis_m
. The fs check code currently caps the maximum allowable sample rate at the maximum supportedadc_axis_m
speed * the number of samples per axi transaction requested in the bitstream. It might also be better to use a simple PLL in the adc clock wizard configured to double the sample rate as opposed to the current MMCM config which is very optimized to the default speed and may not perform as well at other rates. I can provide thetcl
code for this change if desired.Summary of Key Changes:
I had to make some updates to
config_clocks
, mainly removing theoverlay.download()
call, and re-work the clock config, download sequence to support real-time ADC sample rate change in a way that will populate the metadata nicely. The ADC tile information is now pulled dynamically from the RFDC driver as opposed to from the static.hwh
file. In the future, similar changes may need to be made to the DAC configuration creation.Example Usage
See notebook.