-
Notifications
You must be signed in to change notification settings - Fork 202
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
ad9912: mention lower f_ref, loop filter phase noise performance #2500
base: master
Are you sure you want to change the base?
Conversation
artiq/coredevice/ad9912.py
Outdated
:param pll_en: PLL enable bit, set to 0 to bypass PLL (default: 1). | ||
Note that when bypassing the PLL the red front panel LED may remain on. | ||
|
||
.. note:: For lower than default f_ref, onboard loop filter is not optimal | ||
and may require hardware changes for better phase noise performance. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it "for better phase noise performance" or "for staying within specs at all"?
7177204
to
2104f8c
Compare
artiq/coredevice/ad9912.py
Outdated
:param pll_en: PLL enable bit, set to 0 to bypass PLL (default: 1). | ||
Note that when bypassing the PLL the red front panel LED may remain on. | ||
|
||
.. note:: For lower than default f_ref, onboard loop filter is not optimal |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it the case for all frequencies lower than the default? What is the tolerance?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And now that's something I couldn't get a straightforward answer to after much deliberation with @MorganTL, thus slightly vague wording.
The loop filter parameters on the 9912 Urukul board were chosen for a multiplier of 10, so 100MHz sysclk. Technically, for any different frequency it should be considered; and technically then it's not really designed for 125MHz we provide to the DDS either, but we consider it okay. From what I learned, using different sysclk than designed changes the phase margin and bandwidth. While phase margin is defined that it must be bigger than 45-50 degrees to keep the PLL stable (and for that extreme example of 10MHz mentioned earlier it is), but and there seems to be no exact guidelines on determining bandwidth, which determines output noise. Whole system performance depends on the quality of the provided clock, and whether adjusting the loop filter is necessary also depends on the use cases.
In such case maybe it would be better to just refer the user to the datasheet of AD9912.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is basically the same thing as solving the merge conflict, but for the record, I was putting f_ref
and clk_div
into double backticks.
ARTIQ Pull Request
Description of Changes
As discussed in #2489, documenting the consequences of using low
f_ref
and needing to make hardware changes to the loop filter for better performance.Type of Changes
Steps (Choose relevant, delete irrelevant before submitting)
All Pull Requests
Code Changes
Documentation Changes
cd doc/manual/; make html
) to ensure no errors.Git Logistics
git rebase --interactive
). Merge/squash/fixup commits that just fix or amend previous commits. Remove unintended changes & cleanup. See tutorial.git show
). Format:Licensing
See copyright & licensing for more info.
ARTIQ files that do not contain a license header are copyrighted by M-Labs Limited and are licensed under LGPLv3+.