00001 namespace SPUC { 00002 // Copyright(c) 1993-1996 Tony Kirke 00003 /* 00004 * SPUC - Signal processing using C++ - A DSP library 00005 * 00006 * This program is free software; you can redistribute it and/or modify 00007 * it under the terms of the GNU General Public License as published by 00008 * the Free Software Foundation; either version 2, or (at your option) 00009 * any later version. 00010 * 00011 * This program is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU General Public License 00017 * along with this program; if not, write to the Free Software 00018 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00019 */ 00020 #ifndef CNCO 00021 #define CNCO 00022 #include <spuc.h> 00023 #include <complex.h> 00032 00033 class carrier_nco 00034 { 00035 protected: 00036 unsigned long acc; 00037 unsigned long fcw; 00038 unsigned long new_fcw; 00039 unsigned long phase; 00040 public: 00041 inline carrier_nco(void) {acc = fcw = new_fcw = phase = 0;} 00042 inline void set_frequency(unsigned long freq) { fcw = freq; } 00043 inline void reset_frequency(unsigned long freq) { new_fcw = fcw = freq; } 00044 inline long get_phase(void) { return(phase);} 00045 complex<long> clock(long loop_filter_out=0, int load=1); 00046 }; 00047 #endif 00048 } // namespace SPUC