From 11cd6d2dc3e6b3b40474a5a4495d814a7688fe0a Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Tue, 30 Oct 2012 13:30:01 -0400
Subject: analog: added PLL blocks to gr-analog with QA and GRC.

---
 gr-analog/python/qa_pll_carriertracking.py | 157 +++++++++++++++++++++++++++++
 1 file changed, 157 insertions(+)
 create mode 100755 gr-analog/python/qa_pll_carriertracking.py

(limited to 'gr-analog/python/qa_pll_carriertracking.py')

diff --git a/gr-analog/python/qa_pll_carriertracking.py b/gr-analog/python/qa_pll_carriertracking.py
new file mode 100755
index 0000000000..a292059d1b
--- /dev/null
+++ b/gr-analog/python/qa_pll_carriertracking.py
@@ -0,0 +1,157 @@
+#!/usr/bin/env python
+#
+# Copyright 2004,2007,2010-2012 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.
+#
+
+from gnuradio import gr, gr_unittest
+import analog_swig as analog
+import math
+
+class test_pll_carriertracking(gr_unittest.TestCase):
+
+    def setUp (self):
+        self.tb = gr.top_block()
+
+    def tearDown (self):
+        self.tb = None
+
+    def test_pll_carriertracking(self):
+        expected_result = ((1.00000238419+7.21919457547e-09j),
+                           (0.998025715351+0.062790453434j),
+                           (0.992777824402+0.119947694242j),
+                           (0.985192835331+0.171441286802j),
+                           (0.976061582565+0.217501848936j),
+                           (0.966034710407+0.258409559727j),
+                           (0.95565611124+0.294477283955j),
+                           (0.945357382298+0.326030552387j),
+                           (0.935475051403+0.353395611048j),
+                           (0.926258146763+0.376889169216j),
+                           (0.917895197868+0.39681750536j),
+                           (0.910515546799+0.413470208645j),
+                           (0.904196679592+0.427117019892j),
+                           (0.898972511292+0.438006043434j),
+                           (0.894769787788+0.446523308754j),
+                           (0.891652584076+0.452715367079j),
+                           (0.8895829916+0.456773489714j),
+                           (0.888502895832+0.458873122931j),
+                           (0.888343691826+0.459175437689j),
+                           (0.889035582542+0.457833081484j),
+                           (0.890497922897+0.454985737801j),
+                           (0.892645597458+0.450762689114j),
+                           (0.895388305187+0.445282936096j),
+                           (0.898648142815+0.438664674759j),
+                           (0.902342617512+0.431016951799j),
+                           (0.906392872334+0.422441422939j),
+                           (0.910642921925+0.413191765547j),
+                           (0.915039420128+0.403358519077j),
+                           (0.919594764709+0.392864197493j),
+                           (0.92425006628+0.381792247295j),
+                           (0.928944349289+0.370217680931j),
+                           (0.933634519577+0.358220815659j),
+                           (0.938279032707+0.345874190331j),
+                           (0.942840516567+0.333247303963j),
+                           (0.947280526161+0.32040438056j),
+                           (0.951574921608+0.307409763336j),
+                           (0.955703914165+0.294323593378j),
+                           (0.959648966789+0.281201630831j),
+                           (0.963392794132+0.268095195293j),
+                           (0.966880619526+0.255221515894j),
+                           (0.970162451267+0.242447137833j),
+                           (0.973235487938+0.229809194803j),
+                           (0.97609680891+0.217341512442j),
+                           (0.978744983673+0.20507311821j),
+                           (0.981189727783+0.193033605814j),
+                           (0.983436584473+0.181248426437j),
+                           (0.985490739346+0.169738590717j),
+                           (0.987353682518+0.158523857594j),
+                           (0.989041447639+0.147622272372j),
+                           (0.990563035011+0.137049794197j),
+                           (0.991928339005+0.126818582416j),
+                           (0.993117690086+0.117111675441j),
+                           (0.994156062603+0.107930034399j),
+                           (0.995076179504+0.0990980416536j),
+                           (0.995887458324+0.0906178802252j),
+                           (0.996591091156+0.0824909061193j),
+                           (0.997202515602+0.0747182965279j),
+                           (0.997730851173+0.0672992765903j),
+                           (0.998185396194+0.0602316558361j),
+                           (0.99856698513+0.0535135567188j),
+                           (0.998885989189+0.0471420884132j),
+                           (0.99915266037+0.0411129891872j),
+                           (0.999372899532+0.0354214012623j),
+                           (0.999548316002+0.0300626158714j),
+                           (0.999680638313+0.0252036750317j),
+                           (0.999784469604+0.020652115345j),
+                           (0.999865531921+0.0163950324059j),
+                           (0.999923825264+0.0124222636223j),
+                           (0.999960243702+0.00872156023979j),
+                           (0.999983668327+0.00528120994568j),
+                           (0.999997138977+0.00209015607834j),
+                           (1.00000119209-0.00086285173893j),
+                           (0.999992132187-0.00358882546425j),
+                           (0.999979138374-0.00609711557627j),
+                           (0.999963641167-0.00839691981673j),
+                           (0.999947249889-0.0104993218556j),
+                           (0.999924004078-0.0122378543019j),
+                           (0.999904811382-0.0136305987835j),
+                           (0.999888062477-0.0148707330227j),
+                           (0.9998742342-0.0159679055214j),
+                           (0.999856114388-0.0169314742088j),
+                           (0.999839782715-0.0177700817585j),
+                           (0.999826967716-0.0184917747974j),
+                           (0.999818325043-0.0191045701504j),
+                           (0.999807476997-0.0196143388748j),
+                           (0.999797284603-0.0200265944004j),
+                           (0.999791204929-0.0203481912613j),
+                           (0.99978852272-0.0205836892128j),
+                           (0.99978530407-0.0207380950451j),
+                           (0.999785065651-0.0206423997879j),
+                           (0.999787807465-0.0204866230488j),
+                           (0.999794304371-0.0202808082104j),
+                           (0.999800384045-0.0200312435627j),
+                           (0.999803245068-0.0197458267212j),
+                           (0.9998087883-0.0194311738014j),
+                           (0.999816894531-0.0190933048725j),
+                           (0.999825954437-0.0187371373177j),
+                           (0.999829888344-0.0183679759502j),
+                           (0.999835848808-0.017987690866j),
+                           (0.999844014645-0.0176006518304j))
+
+        sampling_freq = 10e3
+        freq = sampling_freq / 100
+
+        loop_bw = math.pi/100.0
+        maxf = 1
+        minf = -1
+
+        src = gr.sig_source_c(sampling_freq, gr.GR_COS_WAVE, freq, 1.0)
+        pll = analog.pll_carriertracking_cc(loop_bw, maxf, minf)
+        head = gr.head(gr.sizeof_gr_complex, int (freq))
+        dst = gr.vector_sink_c()
+
+        self.tb.connect(src, pll, head)
+        self.tb.connect(head, dst)
+
+        self.tb.run()
+        dst_data = dst.data()
+        self.assertComplexTuplesAlmostEqual(expected_result, dst_data, 5)
+
+if __name__ == '__main__':
+    gr_unittest.run(test_pll_carriertracking, "test_pll_carriertracking.xml")
-- 
cgit v1.2.3