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
Add new Symbol Synchronizer blocks #1294
Conversation
|
The build-bot's giving my last commit, that fixes an example flowgraph, a bum rap: |
since you didn't touch gr-blocks or runtime at all, my bet would be on some other, unrelated thing, failing. Do we know how to re-run the tests? Pinging @noc0lour on this; I think to issue a rebuild, you have to have buildbot role Admin. Dunno if that is intended per policy? |
|
A hand drawn block diagram of the symbol synchronizer block's design is attached. Hopefully it helps you review the DSP. Let me know if you have questions. |
|
@marcusmueller the |
|
The qa_hier_block2 is a known troublemaker. |
|
@awalls-cx18 👎 for not using an actual napkin for that diagram. |
|
@jmcorgan: LOL! I should also point to this PDF about the clock tracking loop (P-I loop filter) transfer function derivation: |
|
👍 for the tikz usage :) I'll probably tikz down your non-napkin figure Thursday, if you'd like me to, and we can look how we'll get that into the docs.
Am 24. April 2017 00:13:11 MESZ schrieb Andy Walls <notifications@github.com>:
…
@jmcorgan: LOL!
I should also point to this PDF about the clock tracking loop (P-I loop
filter) transfer function derivation:
https://github.com/awalls-cx18/gr-nwr/blob/master/docs/clock_loop.pdf
to demystify some of the math performed when updating the alpha and
beta gains of the loop filter.
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
#1294 (comment)
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.
|
|
@marcusmueller : Feel free to tikz my hand drawn picture, I didn't have time myself (I barely know tikz and LaTex). That picture is also applicable to the existing GNU Radio M&M clock recovery blocks, MSK timing recovery block, and the PFB clock sync blocks. Note that that picture shows all the components whether they exist or not in the current configuration. I.e., not all TEDs need a slicer constellation; not all TEDs need derivative input samples; if using the PFB MF interpolating resampler, one doesn't need the external matched filter. The decimators are always there, but in some configurations they are doing nothing (decimating by a factor of 1). Another subtle point is that the MMSE interpolation filter in GNU Radio is actually implemented as a polyphase filter bank, even though it's not called that explicitly. -Andy |
|
Come 15 May 2017, I will be too busy to address any comments on this PR until 15 June 2017. Please try to get comments to me by, let's say, 8 May 2017, if you would like me to work them sooner rather than later. |
|
@awalls-cx18 I have some structural issues with the code organization and placement of header files, but this is all non-DSP and mechanical. I'll be doing deeper review this week, and of course, anyone else is free to review and critique. |
The QA test currently outputs failure, which is a QA test problem, and not a problem with the new class.
The QA tests pass now. Although setting the tolerance to 0.0103 needs some follow up, to see if that's acceptable. We might have a bad set of taps, or it could just be numerical problems with the QA test functions.
Add interpolating resampler classes for use by the symbol_synchronizer_xx blocks. They allow the symbol_synchronizer_xx blocks to provide a user selectable interpolating resampler implementation. The base class also provides interpolating resampler sample phase tracking and management for the symbol_synchronizer_xx blocks.
f59128d
to
fdf5fcf
Compare
|
Made the following changes at the request of @jmcorgan :
Remaining to be done of @jmcorgan's requested items:
I can have astyle fix up most of it, but I really need good specification on the code style. I don't want to play "bring me a rock" with white-space changes. :P Regards, |
|
@awalls-cx18 Thanks for taking the time to clean up the code organization. As I said, these were the mechanical changes needed to conform to our API principles. I'll review this now for any showstoppers for merging, and since this is a new block, we can merge it in even if we need to make internal changes to the actual DSP functionality after the fact. |
|
@jmcorgan we could try to agree on a astyle configuration and make that a test (: |
|
This is going in as one squashed commit. |
Add new symbol synchronizer blocks to gr-digital and their required supporting classes to gr-digital and gr-filter.
These blocks are a superset of the Clock Recovery M&M blocks, MSK Timing Recovery Block, and PFB Clock Synch blocks.
These blocks address many bugs found in those existing GNU Radio blocks. These blocks also propagate tags correctly and will resync their tracking on time_est and clock_est tags.
The user can select the timing error detector to use. Decision directed TEDs (like M&M) require the user to specify a slicer constellation (usually digital.constellation_bpsk.base() or digital.constellation_qpsk.base()).
The user can select which interpolating resampler to use. The "PFB with MF" interpolating resampler requires the user to provide taps for matched filtering.
The user can also set, within reason, an arbitrary number of output samples per symbol (1, 2, 3, 4, 5,...).
-Andy