eb [Mon, 23 Jun 2008 18:26:50 +0000 (18:26 +0000)]
merged refactoring of gr_top_block_impl into abstract base class
gr_top_block_impl and concrete class gr_top_block_impl_sts from
eb/mp-sched r8447:8660. No change in functionality or behavior.
Paves the way for development of multiprocessor aware scheduler.
eb [Thu, 19 Jun 2008 15:04:26 +0000 (15:04 +0000)]
Moved mb_time to omni_time and left mb_time.h with typedef to maintain
backwards compatibility. Removed gcell's dependency on mblocks. Now
gcell only depends on omnithread. Merged eb/wip -r8621:8623 to trunk.
eb [Thu, 19 Jun 2008 00:06:42 +0000 (00:06 +0000)]
Merged eb/gcell-wip -r8559:8571 into trunk. The shared queue
structure is slightly modified, and the spu dequeue has been
streamlined. In addition, the spu Lost-Lock Line Reservation event is
now work correctly, though it is still disabled because it's slower
than the expontial backoff alternative.
eb [Mon, 26 May 2008 13:33:34 +0000 (13:33 +0000)]
Added rewind() and clear() to vector sources and sinks. This is useful
when doing automatic testing of a block (e.g. BER vs SNR).
Patch from Andreas Müller.
eb [Mon, 26 May 2008 13:30:41 +0000 (13:30 +0000)]
channel_model.py now allows to set the random seed for the noise
source via __init__ and adds a function to set the timing
offset. (Patch from Andreas Müller.)
(1) Close out_f before removing it in
gnuradio-core/src/python/gnuradio/gr/qa_wavefile.py (to prevent make check
failure).
(2) Don't permanently change PATH in config/sdl.m4 (to prevent real
problems in MinGW and potential problems for any code that runs after
sdl.m4 and depends on PATH).
Merged eb/gcell-wip -r8302:8307 into trunk. This changeset includes
an example of SPE assembler (memset.S), a new file of macros for use
with SPE assembler (gc_spu_macs.h), and an extended QA framework. The
easy to use QA framework adds support for SPE utility code that's
usually not called from the PPE, such as memset. See
qa_gcell_general.{h,cc} and qa_memset.c for example usage.
memset achieves 44GB/s on the SPE. That's within 3% of ideal.
Fixed completely buggy memcopy that overwrote potentially lots of memory in
atsc_depad.cc. The problem has to do with confusion between input and output
sizes, as well as some very wrong pointer math (Dan Halperin).
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.