Improved performance of the ML sync (with added computations). It uses the energy calculation to normalize the correlation and the timing sequence and correlation together to determine the timing. This works for frequencies of +-0.6 offset, which is a limiting factor still in the performance but better than the previous checkin.
Improved the pnac ofdm sync block. This is based on a VTC'99 paper by Tufvesson, et al. that does a bit more work than the Schmidl and Cox to produce a more identifiable peak for the timing. This seems to work well in the simulation for low frequency errors. The correlation doesn't seem to track well, though. See the comments for more info. Also, the peak detection requires unity amplitude for the threshold detection. So, who wants to make an OFDM AGC?
to complete what I started, this makes the ofdm_sync_fixed block work again in the OFDM receiver. Its only used for testing in the simulation mode if you want to remove any affects of the synchronization blocks. You have to manually edit the number of symbols and any fractional frequency offset you might want to use.
The ofdm_sync_pnac method now works, though not that well. The frequency estimation is horrible and it still has some problems that may be a fundamental issue with the idea. I need to get the paper this was based off of to review it.
Merged gcell-wip -r8159:8202 into trunk. This includes the following
changes:
* gc_make_job_manager now returns a boost::shared_ptr
* opts.program_handle is now a boost::shared_ptr
* two new functions for getting a program handle
* look_proc and alloc_job_desc now throw on error
* static methods for setting and getting a single job manager
* new exception hierarchy
* mv gcell/src/lib/procs gcell/src/lib/wrapper
* added libfft. Currently inverse xform is broken
* gcell-embedspu-libtool creates libtool complaint .ko's from SPE executables
Merged r8195:8205 from jcorgan/ecc into trunk. Adds convolutional encoder
and decoder corresponding to the R=1/2, K=7 CCSDS standard ("Voyager").
This code is a GNU Radio wrapper around a 1995-era KA9Q portable-C
implementation, and is designed for continuous streaming data, not packets.
The encoder takes MSB packed bytes and outputs channel symbols 0 or 1.
The decoder uses soft-decision Viterbi decoding on a floating point stream of
(possibly noise corrupted) [1.0, 1.0] symbols, and outputs MSB packed
decoded bytes.
Benchmarking on a 2.16 GHz Intel Core 2 Duo shows 4.7 Mbps decoding rate at
100% CPU usage (single core). (There is a newer KA9Q library that implements
SIMD speed ups with correspondingly faster performance.)
The KA9Q library is placed into src/lib/viterbi. It could use some cleanup,
file/function renaming, and refactoring, or even replacement with the newer
libfec code that is available.
Mostly fixed the van de Beek ML synchronization scheme. Instead of using the CP timing signal, it correlates against the known preamble just to send along the timing trigger. This works nicely and keeps the frequency more constant in the receiver since it updates the estimate every received symbol. Read the comments inside to see why it's 'mostly fixed' -- this was mostly proving a point for myself today.
Adjusting structure a bit to redistribute responsibilities. This does not change the behavior or performance at all. The sync. block only calculates the frequency and timing signals and now outputs the fine frequency adjustment signal from output 0 and the timing signal for the start of the packet from output 1.
Adds gru.daemonize() and example application. Simplifies running GNU Radio applications as background daemon processes instead of foreground applications.
trondeau [Mon, 31 Mar 2008 23:30:32 +0000 (23:30 +0000)]
merging branch trondeau/ofdm r7971:8143. Fixing subcarriers and other issues to improve OFDM system operation. Not much more we can do with this than add channel coding and cleaning up.
eb [Mon, 24 Mar 2008 07:46:47 +0000 (07:46 +0000)]
Fix for gcell corrrectness/performance problem. Replaces mfc_sync
with appropriate use of tag and fenced get. We could pick up a bit
of additional performance by double buffering the the local store
job descriptor, but that's left for a rainy day.
eb [Mon, 24 Mar 2008 06:09:29 +0000 (06:09 +0000)]
Merged gcell, the Cell SPE scheduler and RPC mechanism into the trunk.
(eb/trunk-with-gcell r8037:8085). Expect additional tweaks, but
currently works and passes distcheck.
gdt [Mon, 17 Mar 2008 00:48:25 +0000 (00:48 +0000)]
Don't define RANDOM_MAX on systems that have already defined it. (At
present, only NetBSD-current is known to do this.) Improve the
comment explaining the situation.
gdt [Sun, 16 Mar 2008 22:09:12 +0000 (22:09 +0000)]
Use AC_PATH_PROG to avoid which(1).
In addition to testing if $SVN is non-null, require the presence of a
subversion ".svn" directory.
Confirmed working with svn builds.
trondeau [Fri, 7 Mar 2008 19:59:28 +0000 (19:59 +0000)]
Adds callback function so that the user can click on a point in the time sequence and highlight it and the corresponding point in the constellation diagram; can cycle forwards and backwards using < and > keys, respectively.
Merged eb/reverted-7899 -r7928:7930 into trunk. This effectively
reverts changeset 7899 and fixes some distcheck problems. We're now
back to the old behavior, where you must "make" before "make distcheck".
jcorgan [Fri, 29 Feb 2008 19:26:49 +0000 (19:26 +0000)]
Merged r7857:7898 from n4hy/msddLTS into trunk, with modification. Adds gr-msdd6000 component, providing GNU Radio source and sink support for the Softronics Ltd. MSDD 6000 receiver.
gdt [Fri, 29 Feb 2008 15:19:22 +0000 (15:19 +0000)]
Set PREFIX back to /usr/gnuradio, because systems that do not use /opt
and follow traditional UNIX partitioning will then put the build in /
(which does not have adequate space and violates the point of / being
separate). The prefix /usr/gnuradio is also not known to be in use by
any packaging system, and it is important that test builds not
interfere with files controlled by packaging systems. It may be that
OS-specific overrides are needed to choose a reasonable prefix on
systems where /usr/gnuradio is not appropriate.
Add usrp as a dependency for gr-radar-mono. Now only expected
failures occur on NetBSD/i386 4.0ish (gr-audio-{alsa,osx,windows} and
gr-comedi).
jcorgan [Thu, 28 Feb 2008 19:03:55 +0000 (19:03 +0000)]
Added reference scaling to fftsink2. Default behavior is unchanged.
The new parameter 'ref_scale', defaulting to 1.0, represents a 0 dB
y-axis value.
Updated usrp_fft.py to display dBFS by setting ref_scale to 32768.0
and ref_level to 0. This results in the full 100 dB of dynamic range
being displayed.
Updated some gnuradio-examples to use the new parameter.
trondeau [Tue, 26 Feb 2008 23:02:20 +0000 (23:02 +0000)]
merged -r7836:7846 from trondeau/ofdmtiming to trunk. This fixes the big issues in transmitting OFDM over the air with 1 preamble symbol. Still some smaller issues left.
michaelld [Thu, 21 Feb 2008 19:16:45 +0000 (19:16 +0000)]
Merged build_config branch into trunk:
1) Modified top-level run_tests.sh script:
a) to execute code for setting or changing the library search path in
Darwin (DYLD_LIBRARY_PATH) or Windows (PATH) on those host OSs
only, not on other host OSs.
b) Added local (to the component making check) library paths to those
same search paths, since libtool doesn't do it (unlike in Linux).
2) In all AM Makefiles -except those dealing with USRP firmware-,
changes INCLUDES to AM_CPPFLAGS since the former is deprecated.
3) Changed AM_CPPFLAGS to FW_INCLUDES for commands .c.rel in USRP
firmware.
gdt [Tue, 19 Feb 2008 03:46:39 +0000 (03:46 +0000)]
Use directory declarations rather than hand-written install rules, in
order to avoid the use of "install -D", which creates missing
directories on Linux and does something metalog-related on NetBSD.
jcorgan [Fri, 8 Feb 2008 23:48:25 +0000 (23:48 +0000)]
Merged r7611:7614 from jcorgan/gpio into trunk. Adds custom
FPGA build for streaming digital I/O to/from GPIO pins through LSB of I and Q
datastreams, with example programs of use.
jcorgan [Fri, 8 Feb 2008 23:32:10 +0000 (23:32 +0000)]
Merged r7478:7608 from michaelld/t186 into trunk. Adds ability to compile GNU Radio modules individually, using already installed dependent libraries and include files. New functionality is enabled using --with-* on configure command line; existing build options should remain unchanged. Nice work by Michael Dickens, still needs documentation update on wiki.