1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-12-10 02:28:06 +00:00

Experimental 8 channels antenna array source (GNURadio and GRC compliant) using a Gigabit Ethernet bus

git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@479 64b25241-fba3-4117-9849-534c7e92360d
This commit is contained in:
Javier Arribas
2014-02-17 16:54:41 +00:00
parent ad01074657
commit 19daab3677
187 changed files with 25434 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
# Copyright 2011 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
# GNU Radio is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GNU Radio is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Radio; see the file COPYING. If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
install(FILES
dbfcttc_raw_array.xml DESTINATION share/gnuradio/grc/blocks
)

View File

@@ -0,0 +1,86 @@
<?xml version="1.0"?>
<block>
<name>raw_array</name>
<key>dbfcttc_raw_array</key>
<category>dbfcttc</category>
<import>import dbfcttc</import>
<make>dbfcttc.raw_array($*src_device, $number_of_channels, $snapshots_per_frame, $inter_frame_delay, $sampling_freq)</make>
<!-- Make one 'param' node for every Parameter you want settable from the GUI.
Sub-nodes:
* name
* key (makes the value accessible as $keyname, e.g. in the make node)
* type -->
<param>
<name>Ethernet Device</name>
<key>src_device</key>
<value>en4</value>
<type>string</type>
</param>
<param>
<name>Number of Array channels</name>
<key>number_of_channels</key>
<value>8</value>
<type>int</type>
</param>
<param>
<name>Number of Snapshots per Ethernet frame</name>
<key>snapshots_per_frame</key>
<value>70</value>
<type>int</type>
</param>
<param>
<name>Delay between frames [bytes]</name>
<key>inter_frame_delay</key>
<value>10</value>
<type>int</type>
</param>
<param>
<name>Sampling frequency [Hz]</name>
<key>sampling_freq</key>
<value>5000000</value>
<type>int</type>
</param>
<!-- Make one 'sink' node per input. Sub-nodes:
* name (an identifier for the GUI)
* type
* vlen
* optional (set to 1 for optional inputs) -->
<!-- Make one 'source' node per output. Sub-nodes:
* name (an identifier for the GUI)
* type
* vlen
* optional (set to 1 for optional inputs) -->
<source>
<name>CH1</name>
<type>complex</type>
</source>
<source>
<name>CH2</name>
<type>complex</type>
</source>
<source>
<name>CH3</name>
<type>complex</type>
</source>
<source>
<name>CH4</name>
<type>complex</type>
</source>
<source>
<name>CH5</name>
<type>complex</type>
</source>
<source>
<name>CH6</name>
<type>complex</type>
</source>
<source>
<name>CH7</name>
<type>complex</type>
</source>
<source>
<name>CH8</name>
<type>complex</type>
</source>
</block>

View File

@@ -0,0 +1,497 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
<timestamp>Tue Feb 11 16:00:31 2014</timestamp>
<block>
<key>options</key>
<param>
<key>id</key>
<value>top_block</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>title</key>
<value></value>
</param>
<param>
<key>author</key>
<value></value>
</param>
<param>
<key>description</key>
<value></value>
</param>
<param>
<key>window_size</key>
<value>1280, 1024</value>
</param>
<param>
<key>generate_options</key>
<value>wx_gui</value>
</param>
<param>
<key>category</key>
<value>Custom</value>
</param>
<param>
<key>run_options</key>
<value>prompt</value>
</param>
<param>
<key>run</key>
<value>True</value>
</param>
<param>
<key>max_nouts</key>
<value>0</value>
</param>
<param>
<key>realtime_scheduling</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(10, 10)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>samp_rate</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>32000</value>
</param>
<param>
<key>_coordinate</key>
<value>(10, 170)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_null_sink</key>
<param>
<key>id</key>
<value>blocks_null_sink_1_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(705, 195)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_null_sink</key>
<param>
<key>id</key>
<value>blocks_null_sink_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(724, 150)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_null_sink</key>
<param>
<key>id</key>
<value>blocks_null_sink_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(723, 247)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_null_sink</key>
<param>
<key>id</key>
<value>blocks_null_sink_1_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(738, 304)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_null_sink</key>
<param>
<key>id</key>
<value>blocks_null_sink_1_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(723, 376)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_null_sink</key>
<param>
<key>id</key>
<value>blocks_null_sink_1_4</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(731, 444)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_null_sink</key>
<param>
<key>id</key>
<value>blocks_null_sink_1_5</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(612, 479)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>dbfcttc_raw_array</key>
<param>
<key>id</key>
<value>dbfcttc_raw_array_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>src_device</key>
<value>en4</value>
</param>
<param>
<key>number_of_channels</key>
<value>8</value>
</param>
<param>
<key>snapshots_per_frame</key>
<value>70</value>
</param>
<param>
<key>inter_frame_delay</key>
<value>10</value>
</param>
<param>
<key>sampling_freq</key>
<value>5000000</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(212, 113)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_fftsink2</key>
<param>
<key>id</key>
<value>wxgui_fftsink2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>FFT Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>y_per_div</key>
<value>10</value>
</param>
<param>
<key>y_divs</key>
<value>10</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>1024</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>peak_hold</key>
<value>False</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>None</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value></value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(897, 63)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<connection>
<source_block_id>dbfcttc_raw_array_0</source_block_id>
<sink_block_id>blocks_null_sink_0</sink_block_id>
<source_key>1</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>dbfcttc_raw_array_0</source_block_id>
<sink_block_id>blocks_null_sink_1_0</sink_block_id>
<source_key>2</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>dbfcttc_raw_array_0</source_block_id>
<sink_block_id>blocks_null_sink_1</sink_block_id>
<source_key>3</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>dbfcttc_raw_array_0</source_block_id>
<sink_block_id>blocks_null_sink_1_1</sink_block_id>
<source_key>4</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>dbfcttc_raw_array_0</source_block_id>
<sink_block_id>blocks_null_sink_1_2</sink_block_id>
<source_key>5</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>dbfcttc_raw_array_0</source_block_id>
<sink_block_id>blocks_null_sink_1_4</sink_block_id>
<source_key>6</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>dbfcttc_raw_array_0</source_block_id>
<sink_block_id>blocks_null_sink_1_5</sink_block_id>
<source_key>7</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>dbfcttc_raw_array_0</source_block_id>
<sink_block_id>wxgui_fftsink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
</flow_graph>

View File

@@ -0,0 +1,95 @@
#!/usr/bin/env python
##################################################
# Gnuradio Python Flow Graph
# Title: Top Block
# Generated: Tue Feb 11 16:02:41 2014
##################################################
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import gr
from gnuradio import wxgui
from gnuradio.eng_option import eng_option
from gnuradio.fft import window
from gnuradio.filter import firdes
from gnuradio.wxgui import fftsink2
from grc_gnuradio import wxgui as grc_wxgui
from optparse import OptionParser
import dbfcttc
import wx
class top_block(grc_wxgui.top_block_gui):
def __init__(self):
grc_wxgui.top_block_gui.__init__(self, title="Top Block")
##################################################
# Variables
##################################################
self.samp_rate = samp_rate = 32000
##################################################
# Blocks
##################################################
self.wxgui_fftsink2_0 = fftsink2.fft_sink_c(
self.GetWin(),
baseband_freq=0,
y_per_div=10,
y_divs=10,
ref_level=0,
ref_scale=2.0,
sample_rate=samp_rate,
fft_size=1024,
fft_rate=15,
average=False,
avg_alpha=None,
title="FFT Plot",
peak_hold=False,
)
self.Add(self.wxgui_fftsink2_0.win)
self.dbfcttc_raw_array_0 = dbfcttc.raw_array("en4", 8, 70, 10, 5000000)
self.blocks_null_sink_1_5 = blocks.null_sink(gr.sizeof_gr_complex*1)
self.blocks_null_sink_1_4 = blocks.null_sink(gr.sizeof_gr_complex*1)
self.blocks_null_sink_1_2 = blocks.null_sink(gr.sizeof_gr_complex*1)
self.blocks_null_sink_1_1 = blocks.null_sink(gr.sizeof_gr_complex*1)
self.blocks_null_sink_1_0 = blocks.null_sink(gr.sizeof_gr_complex*1)
self.blocks_null_sink_1 = blocks.null_sink(gr.sizeof_gr_complex*1)
self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_gr_complex*1)
##################################################
# Connections
##################################################
self.connect((self.dbfcttc_raw_array_0, 1), (self.blocks_null_sink_0, 0))
self.connect((self.dbfcttc_raw_array_0, 2), (self.blocks_null_sink_1_0, 0))
self.connect((self.dbfcttc_raw_array_0, 3), (self.blocks_null_sink_1, 0))
self.connect((self.dbfcttc_raw_array_0, 4), (self.blocks_null_sink_1_1, 0))
self.connect((self.dbfcttc_raw_array_0, 5), (self.blocks_null_sink_1_2, 0))
self.connect((self.dbfcttc_raw_array_0, 6), (self.blocks_null_sink_1_4, 0))
self.connect((self.dbfcttc_raw_array_0, 7), (self.blocks_null_sink_1_5, 0))
self.connect((self.dbfcttc_raw_array_0, 0), (self.wxgui_fftsink2_0, 0))
# QT sink close method reimplementation
def get_samp_rate(self):
return self.samp_rate
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.wxgui_fftsink2_0.set_sample_rate(self.samp_rate)
if __name__ == '__main__':
import ctypes
import os
if os.name == 'posix':
try:
x11 = ctypes.cdll.LoadLibrary('libX11.so')
x11.XInitThreads()
except:
print "Warning: failed to XInitThreads()"
parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
(options, args) = parser.parse_args()
tb = top_block()
tb.Start(True)
tb.Wait()