Added option for pulse matched filtering

Pulse matched filtering places a boxcar filter upstream of the
averager and preamble detector.  The filter length is equivalent
to the number of samples in one Mode S chip (0.5us).  This
technique enhances operation when using sample rates > 4Msps.

When using --pmf, the threshold may need to be reduced a dB or
two from what would have been optimal without --pmf.

* rx_path.py now takes 'use_pmf', defaults to False

* modes_rx has new CLI option '-p' or '--pmf' to turn on PMF

* modes_gui has new checkbox on Setup tab
This commit is contained in:
Johnathan Corgan
2012-10-29 09:37:18 -07:00
parent 90c8ba5a10
commit 7ad09f5b14
4 changed files with 35 additions and 9 deletions
+2 -1
View File
@@ -242,6 +242,7 @@ class mainwindow(QtGui.QMainWindow):
options["gain"] = float(self.ui.line_gain.text())
options["threshold"] = float(self.ui.line_threshold.text())
options["filename"] = str(self.ui.line_inputfile.text())
options["pmf"] = self.ui.check_pmf.checkState()
self.fg = adsb_rx_block(options, self.queue) #create top RX block
self.runner = top_block_runner(self.fg) #spawn new thread to do RX
@@ -423,7 +424,7 @@ class adsb_rx_block (gr.top_block):
else:
raise NotImplementedError
self.rx_path = air_modes.rx_path(rate, options["threshold"], queue)
self.rx_path = air_modes.rx_path(rate, options["threshold"], queue, options["pmf"])
if use_resampler:
self.lpfiltcoeffs = gr.firdes.low_pass(1, 5*3.2e6, 1.6e6, 300e3)
+3 -1
View File
@@ -110,7 +110,7 @@ class adsb_rx_block (gr.top_block):
if options.output_all :
pass_all = 1
self.rx_path = air_modes.rx_path(rate, options.threshold, queue)
self.rx_path = air_modes.rx_path(rate, options.threshold, queue, options.pmf)
if use_resampler:
self.lpfiltcoeffs = gr.firdes.low_pass(1, 5*3.2e6, 1.6e6, 300e3)
@@ -163,6 +163,8 @@ if __name__ == '__main__':
help="FlightGear server to send aircraft data, in format host:port")
parser.add_option("-d","--rtlsdr", action="store_true", default=False,
help="Use RTLSDR dongle instead of UHD source")
parser.add_option("-p","--pmf", action="store_true", default=False,
help="Use pulse matched filtering")
(options, args) = parser.parse_args()