dsp.DigitalDownConverter
Translate digital signal from intermediate frequency (IF) band to baseband and decimate it
Description
The dsp.DigitalDownConverter
object translates digital signal from
intermediate frequency (IF) band to baseband and decimates it.
To digitally downconvert the input signal:
Create the
dsp.DigitalDownConverter
object and set its properties.Call the object with arguments, as if it were a function.
To learn more about how System objects work, see What Are System Objects?
Creation
Description
returns a
digital downconverter (DDC) System object™, dwnConv
= dsp.DigitalDownConverterdwnConv
.
returns a DDC object, dwnConv
= dsp.DigitalDownConverter(Name,Value
)dwnConv
, with the specified property
Name
set to the specified Value
. You can
specify additional name-value pair arguments in any order as
(Name1
,Value1
,...,NameN
,ValueN
).
Properties
Unless otherwise indicated, properties are nontunable, which means you cannot change their
values after calling the object. Objects lock when you call them, and the
release
function unlocks them.
If a property is tunable, you can change its value at any time.
For more information on changing property values, see System Design in MATLAB Using System Objects.
SampleRate
— Sample rate of input signal
30000000
(default) | positive scalar
Set this property to a positive scalar value, greater than or equal to twice the
value of the CenterFrequency
property.
Data Types: single
| double
DecimationFactor
— Decimation factor
100
(default) | positive integer scalar | vector of positive integers
Set this property to a positive integer scalar, or to a 1-by-2 or 1-by-3 vector of positive integers.
When you set this property to a scalar, the object automatically chooses the decimation factors for each of the three filtering stages.
When you set this property to a 1-by-2 vector, the object bypasses the third filter
stage and sets the decimation factor of the first and second filtering stages to the
values in the first and second vector elements respectively. Both elements of the
DecimationFactor
vector must be greater than one.
When you set this property to a 1-by-3 vector, the i th element
of the vector specifies the decimation factor for the ith filtering
stage. The first and second elements of the DecimationFactor
vector
must be greater than one, and the third element must be 1 or 2.
Data Types: double
MinimumOrderDesign
— Minimum order filter design
true
(default) | false
When you set this property to true
, the object designs filters
with the minimum order that meets the passband ripple, stopband attenuation, passband
frequency, and stopband frequency specifications that you set using the
PassbandRipple
, StopbandAttenuation
,
Bandwidth
, StopbandFrequencySource
, and
StopbandFrequency
properties.
When you set this property to false
, the object designs filters
with orders that you specify in the NumCICSections
,
SecondFilterOrder
, and ThirdFilterOrder
properties. The filter designs meet the passband and stopband frequency specifications
that you set using the Bandwidth
,
StopbandFrequencySource
, and
StopbandFrequency
properties.
Data Types: logical
NumCICSections
— Number of sections of CIC decimator
3
(default) | positive integer scalar
Number of sections of CIC decimator, specified as a positive integer scalar.
Dependencies
This property applies when you set the MinimumOrderDesign
property to false
.
Data Types: double
SecondFilterOrder
— Order of CIC compensation filter stage
12
(default) | positive integer scalar
Order of CIC compensation filter stage, specified as a positive integer scalar.
Dependencies
This property applies when you set the MinimumOrderDesign
property to false
.
Data Types: double
ThirdFilterOrder
— Order of third filter stage
10
(default) | even positive integer
Order of third filter stage, specified as an even positive integer scalar. When you
set the DecimationFactor
property to a 1-by-2 vector, the object
ignores the ThirdFilterOrder
property because the third filter
stage is bypassed.
Dependencies
This property applies when you set the MinimumOrderDesign
property to false
.
Data Types: double
Bandwidth
— Two-sided bandwidth of input signal in Hz
200000
(default) | positive integer scalar
Two-sided bandwidth of input signal in Hz, specified as a positive integer scalar.
The object sets the passband frequency of the cascade of filters to one-half of the
value that you specify in the Bandwidth
property. Set the value of
this property to less than
SampleRate
/DecimationFactor
.
Data Types: double
StopbandFrequencySource
— Source of stopband frequency
Auto
(default) | Property
Specify the source of the stopband frequency as one of Auto
|
Property
. When you set this property to Auto
,
the object places the cutoff frequency of the cascade filter response at
approximately Fc =
Hz, where
M is the total decimation factor that you specify in the
SampleRate
/M/2DecimationFactor
property. The object computes the stopband
frequency as Fstop =
Fc + TW/2
. TW is the
transition bandwidth of the cascade response computed as
2×(Fc–Fp)
,
and the passband frequency, Fp, equals
. Bandwidth
/2
StopbandFrequency
— Stopband frequency in Hz
150000
(default) | positive scalar
Stopband frequency in Hz, specified as a positive scalar.
Dependencies
This property applies when you set the
StopbandFrequencySource
property to
Property
.
Data Types: double
PassbandRipple
— Passband ripple of cascade response in dB
0.1
(default) | positive scalar
Passband ripple of cascade response in dB, specified as a positive scalar. When you
set the MinimumOrderDesign
property to true
, the
object designs the filters so that the cascade response meets the passband ripple that
you specify in the PassbandRipple
property.
Dependencies
This property applies when you set the MinimumOrderDesign
property to true
.
Data Types: double
StopbandAttenuation
— Stopband attenuation of cascade response in dB
60
(default) | positive scalar
Stopband attenuation of cascade response in dB, specified as a positive scalar. When
you set the MinimumOrderDesign
property to true
,
the object designs the filters so that the cascade response meets the stopband
attenuation that you specify in the StopbandAttenuation
property.
Dependencies
This property applies when you set the MinimumOrderDesign
property to true
.
Data Types: double
Oscillator
— Type of oscillator
Sine wave
(default) | NCO
| Input port
| None
Specify the oscillator as one of Sine wave
|
NCO
| Input port
| None
. When
you set this property to Sine wave
, the object frequency down
converts the input signal using a complex exponential obtained from samples of a
sinusoidal trigonometric function. When you set this property to NCO
,
the object performs frequency down conversion with a complex exponential obtained using
a numerically controlled oscillator (NCO). When you set this property to Input
port
, the object performs frequency down conversion using the complex
oscillator signal, z
, that you pass as an input to the object. When
you set this property to None
, the mixer stage in the object is not
present and the object acts as three stage cascaded decimator.
CenterFrequency
— Center frequency of input signal in Hz
14000000
(default) | positive scalar
Center frequency of input signal in Hz, specified as a positive scalar that is less
than or equal to half the value of the SampleRate
property. The
object down converts the input signal from the passband center frequency you specify in
the CenterFrequency
property, to 0
Hz.
Dependencies
This property applies when you set the Oscillator
property to
Sine wave
or NCO
.
Data Types: double
NumAccumulatorBits
— Number of NCO accumulator bits
16
(default) | positive integer
Number of NCO accumulator bits, specified as a positive integer in the range
[1 128]
.
Dependencies
This property applies when you set the Oscillator
property to
NCO
.
Data Types: double
NumQuantizedAccumulatorBits
— Number of NCO quantized accumulator bits
12
(default) | positive integer
Number of NCO quantized accumulator bits, specified as an integer scalar in the
range [1 128]
. The value you specify in this property must be less
than the value you specify in the NumAccumulatorBits
property.
Dependencies
This property applies when you set the Oscillator
property to
NCO
.
Data Types: double
Dither
— Dither control for NCO
true
(default) | false
When you set this property to true
, a number of dither bits
specified in the NumDitherBits
property will be used to apply
dither to the NCO signal.
Dependencies
This property applies when you set the Oscillator
property to
NCO
.
NumDitherBits
— Number of NCO dither bits
4
(default) | positive integer
Specify this property as an integer scalar smaller than the number of accumulator
bits that you specify in the NumAccumulatorBits
property.
Dependencies
This property applies when you set the Oscillator
property
to NCO
and the Dither property to true
.
Data Types: double
Fixed-Point Properties
FiltersInputDataType
— Data type of input of each filter stage
Same as input
(default) | Custom
Specify the data type at the input of the first, second, and third (if it has not
been bypassed) filter stages as one of Same as input
|
Custom
. The object casts the data at the input of each filter
stage according to the value you set in this property.
CustomFiltersInputDataType
— Fixed-point data type of input of each filter stage
numerictype([],16,15)
(default) | numeric type
Specify the filters input fixed-point type as a scaled numerictype
(Fixed-Point Designer) object with a Signedness of Auto
.
Dependencies
This property applies when you set the FiltersInputDataType
property to Custom
.
OutputDataType
— Data type of output
Same as input
(default) | Custom
Specify the data type of output as Same as input
|
Custom
.
CustomOutputDataType
— Fixed-point data type of output
numerictype([],16,15)
(default) | numeric type
Specify the output fixed-point type as a scaled numerictype
(Fixed-Point Designer) object with a Signedness of Auto
.
Dependencies
This property applies when you set the OutputDataType
property to Custom
.
Usage
Description
Input Arguments
x
— Data input
column vector | matrix
Data input, specified as a column vector or a matrix. The length of input
x
must be a multiple of the decimation factor. When the data
type of x
is double
or
single
precision, the data type of y
is the
same as that of x
. When the data type of x
is of a fixed-point type, the data type of y
is defined by the
OutputDataType
property.
The input can have multiple channels only if its data type is
double
or single
. The input can be of data
type double
, single
, signed integer, or signed
fixed-point (fi
objects).
Data Types: single
| double
| int8
| int16
| int32
| int64
| fi
Complex Number Support: Yes
z
— Oscillator signal
column vector | matrix
Oscillator signal used to frequency down convert the input signal, specified as a
column vector or a matrix. This input must be complex. The length of
z
must be equal to the length of x
.
z
can be double
, single
,
signed integer, or signed fixed-point (fi
objects).
Dependencies
This input applies when you set the Oscillator
property to
Input port
.
Data Types: single
| double
| int8
| int16
| int32
| int64
| fi
Complex Number Support: Yes
Output Arguments
y
— Down converted and down sampled signal
column vector | matrix
Down converted and down sampled signal, returned as a column vector or a matrix.
The length of y
is equal to the length of x
divided by the DecimationFactor
. When the data type of
x
is double
or single
precision, the data type of y
is the same as that of
x
. When the data type of x
is of a fixed
point type, the data type of y
is defined by the
OutputDataType
property.
Data Types: single
| double
| int8
| int16
| int32
| int64
| fi
Complex Number Support: Yes
Object Functions
To use an object function, specify the
System object as the first input argument. For
example, to release system resources of a System object named obj
, use
this syntax:
release(obj)
Specific to dsp.DigitalDownConverter
getDecimationFactors | Get decimation factors of each filter stage of a digital down converter |
getFilterOrders | Get orders of digital down converter or digital up converter filter cascade |
getFilters | Get handles to digital down converter or digital up converter filter cascade objects |
fvtool | Visualize frequency response of digital down converter or digital up converter filter cascade |
groupDelay | Group delay of digital down converter or digital up converter filter cascade |
visualizeFilterStages | Display response of digital down converter or digital up converter filter cascade |
generatehdl | Generate HDL code for quantized DSP filter (requires Filter Design HDL Coder) |
Examples
Upconvert and Downconvert a Sine Wave Signal
Create a digital up converter object that up samples a 1 KHz sinusoidal signal by a factor of 20 and up converts it to 50 KHz. Create a digital down converter object that down converts the signal to 0 Hz and down samples it by a factor of 20.
Create a sine wave generator to obtain the 1 KHz sinusoidal signal with a sample rate of 6 KHz.
Fs = 6e3; % Sample rate sine = dsp.SineWave('Frequency',1000,'SampleRate',... Fs,'SamplesPerFrame',1024); x = sine(); % generate signal
Create a DigitalUpConverter
object. Use minimum order filter designs and set passband ripple to 0.2 dB and the stopband attenuation to 55 dB. Set the double sided signal bandwidth to 2 KHz.
upConv = dsp.DigitalUpConverter(... 'InterpolationFactor', 20,... 'SampleRate', Fs,... 'Bandwidth', 2e3,... 'StopbandAttenuation', 55,... 'PassbandRipple',0.2,... 'CenterFrequency',50e3);
Create a DigitalDownConverter
object. Use minimum order filter designs and set the passband ripple to 0.2 dB and the stopband attenuation to 55 dB.
dwnConv = dsp.DigitalDownConverter(... 'DecimationFactor',20,... 'SampleRate', Fs*20,... 'Bandwidth', 3e3,... 'StopbandAttenuation', 55,... 'PassbandRipple',0.2,... 'CenterFrequency',50e3);
Create a spectrum estimator to visualize the signal spectrum before up converting, after up converting, and after down converting.
window = hamming(floor(length(x)/10)); figure; pwelch(x,window,[],[],Fs,'centered') title('Spectrum of baseband signal x')
Up convert the signal and visualize the spectrum
xUp = upConv(x); % up convert window = hamming(floor(length(xUp)/10)); figure; pwelch(xUp,window,[],[],20*Fs,'centered'); title('Spectrum of up converted signal xUp')
Down convert the signal and visualize the spectrum
xDown = dwnConv(xUp); % down convert window = hamming(floor(length(xDown)/10)); figure; pwelch(xDown,window,[],[],Fs,'centered') title('Spectrum of down converted signal xDown')
Visualize the response of the decimation filters
visualizeFilterStages(dwnConv)
Get Decimation Factors
Get decimation factors of each filter stage of the dsp.DigitalDownConverter
System object™.
Create a dsp.DigitalDownConverter
System object with the default settings. Using the getDecimationFactors
function, obtain the decimation factors of each stage of the object.
dwnConv = dsp.DigitalDownConverter
dwnConv = dsp.DigitalDownConverter with properties: DecimationFactor: 100 MinimumOrderDesign: true Bandwidth: 200000 StopbandFrequencySource: 'Auto' PassbandRipple: 0.1000 StopbandAttenuation: 60 Oscillator: 'Sine wave' CenterFrequency: 14000000 SampleRate: 30000000 Show all properties
M = getDecimationFactors(dwnConv) %#ok
M = 1×3
25 2 2
The DecimationFactor
property of the object is set to 100. The output M
is by default a 1-by-3 vector, where each element in the vector is a factor of the overall decimation factor.
When you set the DecimationFactor
to a 1-by-2 vector, the object bypasses the third filter stage and sets the decimation factor of the first and second filtering stages to the values in the first and second vector elements respectively.
dwnConv.DecimationFactor = [10 10]
dwnConv = dsp.DigitalDownConverter with properties: DecimationFactor: [10 10] MinimumOrderDesign: true Bandwidth: 200000 StopbandFrequencySource: 'Auto' PassbandRipple: 0.1000 StopbandAttenuation: 60 Oscillator: 'Sine wave' CenterFrequency: 14000000 SampleRate: 30000000 Show all properties
M = getDecimationFactors(dwnConv)
M = 1×2
10 10
The output of the getDecimationFactors
function is now a 1-by-2 vector.
More About
Fixed Point
The following block diagram represents the DDC arithmetic with signed fixed-point inputs.
WL
is the word length of the input, andFL
is the fraction length of the input.The input of each filter is cast to the filter input data type. In the
dsp.DigitalDownConverter
object, you can specify the filter input data type through theFiltersInputDataType
andCustomFiltersInputDataType
properties. In the Digital Down-Converter block, you can specify the filter input data type through the Stage input parameter.The oscillator output is cast to a word length equal to the input word length plus one. The fraction length is equal to the input word length minus one.
The scaling at the output of the CIC decimator consists of coarse- and fine-gain adjustments. The coarse gain is achieved using the
reinterpretcast
(Fixed-Point Designer) function on the CIC decimator output. The fine gain is achieved using full-precision multiplication.
The following figure depicts the coarse-gain and fine-gain operations.
If the normalization gain is G (where 0<G≦1), then:
WLcic
is the word length of the CIC decimator output andFLcic
is the fraction length of the CIC decimator output.F1 = abs(nextpow2(G))
, indicating the part of G achieved using bit shifts (coarse gain).F2
= fraction length specified by the filter input data type.fg = fi((2^F1)*G, true, 16)
, which indicates that the remaining gain cannot be achieved with a bit shift (fine gain).
Algorithms
The digital down converter downconverts the input signal by multiplying it with a complex exponential that has the specified center frequency. The algorithm downsamples the frequency downconverted signal using a cascade of three decimation filters. In this case, the filter cascade consists of a CIC decimator, a CIC compensator, and a third FIR decimation stage. The following block diagram shows the architecture of the digital down converter.
The scaling section normalizes the CIC gain and the oscillator power. It can also contain a correction factor to achieve the desired ripple specification. When you specify an oscillator signal through the input port, the normalization factor does not include the oscillator power factor. Depending on how you set the decimation factor, the block bypasses the third filter stage. When the input data type is double or single, the algorithm implements an N-section CIC decimation filter as an FIR filter with a response that corresponds to a cascade of N boxcar filters. The algorithm emulates a CIC filter with an FIR filter so that you can run simulations with floating-point data. When the input data type is fixed-point, the algorithm implements a true CIC filter with actual comb and integrator sections.
This block diagram represents the DDC arithmetic with single or double-precision, floating-point inputs.
For details about fixed-point operation, see Fixed Point.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
See System Objects in MATLAB Code Generation (MATLAB Coder).
This object also supports SIMD code generation using Intel AVX2 technology when the
input signal has a data type of single
or
double
.
The SIMD technology significantly improves the performance of the generated code.
HDL Code Generation
Generate Verilog and VHDL code for FPGA and ASIC designs using HDL Coder™.
This object supports HDL code generation with the Filter Design HDL Coder™ product. For workflows and limitations, see Generate HDL Code for Filter System Objects (Filter Design HDL Coder).
Version History
Introduced in R2012a
See Also
Functions
getDecimationFactors
|getFilterOrders
|getFilters
|fvtool
|groupDelay
|visualizeFilterStages
|generatehdl
Objects
Blocks
Ouvrir l'exemple
Vous possédez une version modifiée de cet exemple. Souhaitez-vous ouvrir cet exemple avec vos modifications ?
Commande MATLAB
Vous avez cliqué sur un lien qui correspond à cette commande MATLAB :
Pour exécuter la commande, saisissez-la dans la fenêtre de commande de MATLAB. Les navigateurs web ne supportent pas les commandes MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)