| Directory | DOS Name | Type |
|---|---|---|
| Modem | dpll | mex-file |
[y, state] = DPLL(x, para, state) or [y, state, theta, loop_error, freq_est] = DPLL(x, para, state, err_func)
INPUTS|
|
|
|
|---|---|---|
|
|
x |
complex rotating data (a vector) |
|
|
para |
parameters: para(1) - alpha, the proportional loop constant para(2) - beta, the integral loop constant (optional, default: 0 which means first order loop) para(3) - err_para (optional, default: 0, see PLLerr...) para(4) - phase_register_length in bits (optional, default: 0, which means floating point) para(5) - table_prec, number of bits in phase table representation; used to build PhaseTable if required (optional, default: 0, which means floating point, uses: Qrotate to build PhaseTable) para(6) - freq_register_length in bits (optional, default: 0, which means floating point) para(7) - freq_register_shift in bits; the number of bits to the right of the "decimal" bit (optional, default: 0, which means no scale) para(8) - delay; an inserted delay before the loop_error signal in the loop (optional, default: 0) |
|
|
state |
current state: [last_phase, last_freq, pipe]; pipe is loop_error delay register values (can initialize with [] or last_phase or [last_phase, last_freq]) err_func (optional, default: 'PLLerr_sign_linear') |
OUTPUTS|
|
|
|
|---|---|---|
|
|
y |
complex de-rotated data (a vector) |
|
|
next_state |
next state vector theta - loop phase estimate (optional) |
|
|
loop_error |
loop error (optional) |
NotesThe phase/frequency estimate is updated by the rule: (1) Rotate and Compute loop_error: loop_error = err_func(x*exp(-i*theta), err_para) (2) Update loop next_theta = theta + alpha*loop_error + freq next_freq = freq + beta*loop_error Note: the phase and the frequency can be floating point or fixed precision.
|
|
|
|
DigComT Licensee: Chris Heegard
Native Intelligence
Last modified: Tuesday, January 11, 2000 Date created: Tuesday, January 11, 2000
Copyright © 1997-2000, Native Intelligence, All rights reserved.