250 likes | 511 Views
FILTERS. Instructor: Dr.Collins CENG 5931 GNU Radio . CONTENTS. Introduction List of GNU Radio C++ Blocks
E N D
FILTERS Instructor: Dr.Collins CENG 5931 GNU Radio
CONTENTS • Introduction • List of GNU Radio C++ Blocks • GNU Radio C++ Signal Processing Blocks • Filters • Classification of Filters • Classes • Functions • Examples • Conclusion • References
INTRODUCTION • GNU Radio is a free software development toolkit that provides the signal processing runtime and processing blocks to implement software radios using readily-available, low-cost external RF hardware and commodity processors. • It is widely used in hobbyist, academic and commercial environments to support wireless communications research as well as to implement real-world radio systems. • GNU Radio applications are primarily written using the Python programming language.
INTRODUCTION Cont.. • Python is a multi-paradigm programming language. Rather than forcing programmers to adopt a particular style of programming, it permits several styles. They are 1. Object-Oriented Programming 2. Structured Programming. • Python is often used as a scripting language, but is also used in a wide range of non-scripting contexts. • Python interpreters are available for many operating systems, and Python programs can be packaged into stand-alone executable code for many systems using various tools.
Features of GNU Radio • Application : Software Radio • Operating System: Linux • Real time sampling frequency: 64 MS/s, 12-bit AD on USRP • DSP language: C++ • GUI host: Linux • GUI language: Python • Scripting language: Python
List of GNU Radio C++ Blocks • GNU Radio C++ signal Processing Blocks • Digital Filter Design • Miscellaneous • Implementation Details • Applications ATSC Radar Pager • USRP (Universal Software Radio Peripheral) • USRP 2 • Gcell: Cell Broadband Engine SPE Scheduler & RPC Mechanism • Misc Hardware Control
GNU Radio C++ Signal Processing Blocks • Top Block and Hierarchical Block Base Classes • Signal Sources • Signal Sinks • Filters • Mathematics • Signal Modulation • Signal Demodulation • Information Coding and Decoding • Synchronization • Equalization • Type Conversions • Signal Level Control(AGC) • Fourier Transform • Wavelet Transform • OFDM • Pager Blocks • Miscellaneous Blocks • Slicing and Dicing Streams • Voice Encoders and Decoders • Base Classes for GR Blocks
Collaboration diagram for GNU Radio C++ Signal Processing Blocks
Filters • In signal processing, a filter is a device or process that removes unwanted component or feature from a signal. • Filtering is a class of signal processing, the defining feature of filters being the complete or partial suppression of some aspect of the signal. • In general, it removes some frequencies in order to suppress interfering signals and reduce background noise.
Classification of filters Filters are Classified into six categories • Analog or Digital Filter • Continuous or Discrete time sampled Filter • Linear or Non-Linear Filter • Time-Variant or Time-Invariant Filter • Active or Passive Filters • Finite impulse response(FIR) or Infinite impulse response(IIR) Filter
Classes gr_adaptive_fir_ccf : • An adaptive filter is a filter that self-adjusts its transfer function according to an optimization algorithm driven by an error signal. • Because of the complexity of the optimization algorithms, most adaptive filters are digital filters. Inheritance diagram for gr_adaptive_fir_ccf
gr_fft_filter_ccc: • Fast FFT filter with gr_complex input, gr_complex output and gr_complextaps. Inheritance diagram for gr_fft_filter_ccc
gr_filter_delay_fc: • These block takes one or two float stream and outputs is a complex stream. • If only one float stream is input, the real output is a delayed version of this input and the imaginary output is the filtered output. • If two floats are connected to the input, then the real output is the delayed version of the first input, and the imaginary output is the filtered output. Inheritance diagram for gr_filter_delay_fc
gr_fir_filter_ccc: • A finite impulse response (FIR) filter is a type of a signal processing filter whose impulse response is of finite duration, because it settles to zero in finite time. • This is in contrast to infinite impulse response(IIR) filters, which have internal feedback and may continue to respond indefinitely. The impulse response of an Nth-order discrete-time FIR filter lasts for N+1 samples. Inheritance diagram for gr_fir_filter_ccc
gr_freq_xlating_fir_filter_ccc: • This class efficiently combines a frequency translation with a FIR filter and decimation. • It is ideally suited for a "channel selection filter" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. Inheritance diagram for gr_freq_xlating_fir_filter_ccc
gr_hilbert_fc: • real output is delayed input and imaginary output is hilbert filtered (90 degree phase shift) version of input. Inheritance diagram for gr_hilbert_fc
gr_iir_filter_ffd: • An infinite impulse response (IIR) filter is a type of a signal processing filter whose impulse response is of infinite duration. • This is in contrast to finite impulse response(FIR) filters, which have internal feedback and may continue to respond definitely. • The impulse response of an Nth-order discrete-time IIR filter lasts for N+1 samples. Inheritance diagram for gr_iir_filter_ffd
gr_interp_fir_filter_ccc: • An interpolating FIR filter is an optimized class of finite impulse response filter combined with an interpolator. Inheritance diagram for gr_interp_fir_filter_ccc
Functions • intgr_adaptive_fir_ccf::work ( intnoutput_items, gr_vector_const_void_star& input_items, gr_vector_void_star& output_items ) • intgr_fft_filter_ccc::work ( intnoutput_items, gr_vector_const_void_star& input_items, gr_vector_void_star& output_items ) • intgr_filter_delay_fc::work(intnoutput_items, gr_vector_const_void_star& input_items, gr_vector_void_star& output_items )
intgr_fir_filter_ccc::work ( intnoutput_items, gr_vector_const_void_star & input_items, gr_vector_void_star & output_items ) • gr_freq_xlating_fir_filter_ccc::gr_freq_xlating_fir_filter_ccc ( int decimation, const std::vector<gr_complex > & taps, double center_freq, double sampling_freq ) • intgr_iir_filter_ffd::work ( intnoutput_items, gr_vector_const_void_star & input_items, gr_vector_void_star & output_items )
Example of low pass filter: chan_filt_coeffs = optfir.low_pass (1, # gain usrp_rate, # sampling rate 80e3, # passband cutoff 115e3, # stopband cutoff 0.1, # passband ripple 60) # stopband attenuation
Example of frequency translation filter #Decimating Channel filter with frequency translation self.ddc = gr.freq_xlating_fir_filter_ccf(if_decim, # decimation rate chan_coeffs, # taps 0, # frequency translation amount self.if_rate) # input sample rate
Conclusion In this topic i discussed several kinds of blocks that are used in GNU python programming on c++ platform and also discussed different kinds of functions and classes that are used in GNU library to perform different types of filter operations .
References • http://gnuradio.org/redmine/wiki/gnuradio • http://en.wikipedia.org/wiki/Filter_(signal_processing) • http://staff.washington.edu/jon/frameworks.html