- use Processor::Buffer for AGC
- switched to Farrow interpolator git-svn-id: http://moon:8086/svn/software/trunk/projects/mpsk_rx_gui@1030 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
+11
-16
@@ -103,7 +103,8 @@ void Receiver::setBufSize(uint32 size)
|
|||||||
}
|
}
|
||||||
m_bufsize = size;
|
m_bufsize = size;
|
||||||
init();
|
init();
|
||||||
m_bb_buffer.resize(size);
|
m_buffer_agc.resize(size);
|
||||||
|
m_buffer_bb.resize(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 Receiver::getNumSoftSym()
|
uint32 Receiver::getNumSoftSym()
|
||||||
@@ -209,9 +210,12 @@ void Receiver::init()
|
|||||||
// Gardner Symbol Timing Recovery
|
// Gardner Symbol Timing Recovery
|
||||||
initSTR();
|
initSTR();
|
||||||
|
|
||||||
// Interpolation
|
// Processor buffer wiring
|
||||||
m_polyPhase.buffer_out_add(&m_bb_buffer);
|
m_polyPhase.buffer_in_add(&m_buffer_agc);
|
||||||
m_farrow.buffer_out_add(&m_bb_buffer);
|
m_farrow.buffer_in_add(&m_buffer_agc);
|
||||||
|
|
||||||
|
m_polyPhase.buffer_out_add(&m_buffer_bb);
|
||||||
|
m_farrow.buffer_out_add(&m_buffer_bb);
|
||||||
|
|
||||||
// Symbol demapper
|
// Symbol demapper
|
||||||
initSymbolMapper();
|
initSymbolMapper();
|
||||||
@@ -463,20 +467,11 @@ void Receiver::processBaseband(CVec const &iq, uint32_t len)
|
|||||||
|
|
||||||
// Blind AGC gain adjustment
|
// Blind AGC gain adjustment
|
||||||
// @2 x symbolrate
|
// @2 x symbolrate
|
||||||
Processor::Buffer<ComplexScalar> *next_buf_in = nullptr;
|
|
||||||
if (RCF_TYPE == RCF_TYPE_POLYPHASE_FARROW)
|
|
||||||
{
|
|
||||||
next_buf_in = dynamic_cast<Processor::Buffer<ComplexScalar>*>(m_farrow.buffer_in());
|
|
||||||
}
|
|
||||||
if (RCF_TYPE == RCF_TYPE_POLYPHASE_DISCRETE)
|
|
||||||
{
|
|
||||||
next_buf_in = dynamic_cast<Processor::Buffer<ComplexScalar>*>(m_polyPhase.buffer_in());
|
|
||||||
}
|
|
||||||
for (n = 0; n < len; n++)
|
for (n = 0; n < len; n++)
|
||||||
{
|
{
|
||||||
// AGC Blind gain adjustments
|
// AGC Blind gain adjustments
|
||||||
ComplexScalar iq_agc = toComplexScalar(CpxScaleRealS(toCpx(iq[n]), AGC_GetWeight(&agcBlind)));
|
ComplexScalar iq_agc = toComplexScalar(CpxScaleRealS(toCpx(iq[n]), AGC_GetWeight(&agcBlind)));
|
||||||
next_buf_in->write(&iq_agc, 1);
|
m_buffer_agc.write(&iq_agc, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Matched filtering and symbol timing recovery
|
// Matched filtering and symbol timing recovery
|
||||||
@@ -494,9 +489,9 @@ void Receiver::processBaseband(CVec const &iq, uint32_t len)
|
|||||||
|
|
||||||
// Further BB processing
|
// Further BB processing
|
||||||
// @2 x symbolrate
|
// @2 x symbolrate
|
||||||
while(m_bb_buffer.len())
|
while(m_buffer_bb.len())
|
||||||
{
|
{
|
||||||
ComplexScalar iq_mf = m_bb_buffer.readAt(0);
|
ComplexScalar iq_mf = m_buffer_bb.readAt(0);
|
||||||
|
|
||||||
// -----------------------------------------------------
|
// -----------------------------------------------------
|
||||||
// Carrier Derotator
|
// Carrier Derotator
|
||||||
|
|||||||
+5
-2
@@ -39,7 +39,7 @@ using namespace Radio;
|
|||||||
|
|
||||||
#define EQ_ENABLE 1
|
#define EQ_ENABLE 1
|
||||||
#define MODULATION_TYPE MAP_MODE_QAM
|
#define MODULATION_TYPE MAP_MODE_QAM
|
||||||
#define RCF_TYPE RCF_TYPE_POLYPHASE_DISCRETE
|
#define RCF_TYPE RCF_TYPE_POLYPHASE_FARROW
|
||||||
#define MAX_NUMBITS_PERSYM 16
|
#define MAX_NUMBITS_PERSYM 16
|
||||||
// ---------------------------------------------------
|
// ---------------------------------------------------
|
||||||
enum eq_mode
|
enum eq_mode
|
||||||
@@ -398,7 +398,10 @@ private:
|
|||||||
|
|
||||||
FrameReceiver m_frameReceiver;
|
FrameReceiver m_frameReceiver;
|
||||||
params_t m_params;
|
params_t m_params;
|
||||||
Processor::Buffer<ComplexScalar> m_bb_buffer;
|
|
||||||
|
// Processor Buffers
|
||||||
|
Processor::Buffer<ComplexScalar> m_buffer_agc;
|
||||||
|
Processor::Buffer<ComplexScalar> m_buffer_bb;
|
||||||
|
|
||||||
void timerCallback();
|
void timerCallback();
|
||||||
void processBaseband(CVec const &iq, uint32_t len);
|
void processBaseband(CVec const &iq, uint32_t len);
|
||||||
|
|||||||
Reference in New Issue
Block a user