| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Receivers commonly estimate the frequency offset on a block that is
downstream relative to the frequency correction NCO. In such
architectures, typically the frequency offset estimator feeds the
estimation back to the NCO. Until now, this was not possible if using
the rotator block as the NCO.
This patch adds a message port to the rotator block such that the
referred feedback architecture becomes feasible. A downstream block can
estimate the frequency offset and send a message to the rotator block to
update its rotating frequency (i.e., its phase increment).
The requesting block can schedule the phase increment update to a
specific absolute sample index. This feature is useful for receivers
that rely on a frame structure and pilot-aided frequency offset
estimation. If the true frequency offset is allowed to change at any
random instant throughout the frame, the frame-averaged frequency offset
estimation can become less reliable. Instead, it is often better to
update the frequency correction right at the start of a new frame. With
that, the true frequency offset is preserved in the course of a frame
and only changes around the boundary between consecutive frames.
For flexibility when using this feature, it is the responsibility of the
downstream block to schedule the phase increment update properly. For
example, if there is a decimator in between the rotator block and the
frequency offset estimator, the latter will need to take the sample rate
conversion into account when defining the absolute sample offset when
the update should be applied.
Besides, the rotator block can now place a tag on the sample where it
updates the phase increment. This allows a downstream block to better
calibrate and validate the scheduling of phase increment updates.
Signed-off-by: Igor Freire <igor@blockstream.com>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Mostly done with:
```
find -name "*_impl.h" | xargs sed -i -r '/(void forecast|int work|int general_work|bool check_topology)\(/{:back /\)/b nxt;N;b back;:nxt s/\)$|\)(;)/) override\1/g}'
```
Then I removed an incorrect `work` that this found.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
clang-format: ordering includes in gnuradio-runtime
clang-format: ordering includes in gr-filter
clang-format: ordering includes in gr-fft
clang-format: ordering includes in gr-audio
clang-format: ordering includes in gr-analog
clang-format: ordering includes in gr-fec
clang-format: ordering includes in gr-wavelet
clang-format: ordering includes in gr-zeromq
clang-format: ordering includes in gr-vocoder
clang-format: ordering includes in gr-video-sdl
clang-format: ordering includes in gr-trellis
clang-format: ordering includes in gr-blocks
clang-format: ordering includes in gr-digital
clang-format: ordering includes in gr-uhd
clang-format: ordering includes in gr-dtv
clang-format: ordering includes in gr-channels
clang-format: ordering includes in gr-qtgui
clang_format.py: re-enable include reordering
|
| |
|
|
|
|
| |
We should be more careful about letting these into the code in the future. In emacs, we can use (add-hook 'before-save-hook 'delete-trailing-whitespace).
|
|
It internally uses the rotator.h helper that was already present,
which in turn makes uses of VOLK rotator kernel
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
|