[re] DSP 알고리즘 coding관련 C 언어 lesson

  • #390120
    dsp 192.***.94.105 6139

    Voltera series에 관심이 있어서 좀 찾아 보았읍니다,
    페이퍼 하나 대충읽어보았는데요,
    http://www.sdrforum.org/pages/sdr04/2.5%20Hardware%20Jondral/2.5-5%20DickC.pdf

    혹시 이게 원글님이 하시려는게 아닌지.
    (저는 digital baseband receiver만 해와서 tx는 SRRC filter 이후에는 잘 알지는 못했는데 이번에 덕분에 좀알게 되네요.)
    Power Amplifier (PA)의 nonlinearity를 줄이기 위해서 (궁극적으로는 PA의 특성을 linear AMP로 나타나게 하려고), 일종의 adaptive nonlinearity model을 PA전단계에 달고, 이를 feedback control함으로 해서 전체 PA의 특성을 linear하게 나타나게 하려는것. 그런데 그 polynomial model은 truncated Voltera Series를 쓰는데, 이게 계산량이 상당히 많아서 HW로 구현이 되고 (제가본 페이퍼에서는), 또 그 coefficient는 Adaptive feedback control에
    따라 update되어야 하는데, 이것은 DSP processor를 사용하여, LMS, RLS, LMMS등의 알고리즘을 써서 계산하게 만드는것.

    일단 전체 simulation을 Matlab으로 간단하게 구현을 해보시고 (Full floating-pt), 얼마만큼의 series truncation이 적당한지를 보셔하 할것 같구요. Polynomial구현시에는 bit-length를 잘 결정하셔야 할것 같읍니다, 그리고 implementation방식도 몇가지 structure(direct, canonic forms)등을 검토하시고 충분한 headroom calculation을 통하여, saturation이 일어나지 않게 해야 겠읍니다.

    coefficient computation에서는 DSP SW programming시에 더욱이 finite bit-length effect에 주의 하셔야 할것 같읍니다. 단순히 A/D시에는 1bit당 대개 6dB quantization SNR을 더 가지게 되고, 더욱이, 복잡한 signal processing chain, i.e. filter chain이나 feedback loop에서는 적합한 bit-length는 simulation을 통해서 design됩니다. bit-length에 따라사 알고리즘의 performance 차이가 많이 나지 않게, 최소한 통신 시스템에서의 minimal SNR의 resolution을 유지해야 합니다. 특히 bad conditioned Matrix inversion이 요구된다면 좀 많은 bit를 할당하셔야 하구요.
    많은 DSP processor compiler들이 floating point emulation을 해주는데요, 저는 개인적으로 fixed-point (q-format)나, float-point emulation format(mantissa,exp)을 직접 코딩합니다, 그래야만, 알고리즘 implementation 시에 정확한 bit-length flow design하기가 편합니다. 또 그래야 나중에
    ASIC으로 가져갈때도 일이 편하게 진행됩니다.
    polynomial coefficient 계산관련 DSP FW 구현시에 경우에 따라, assembly programming에 능숙하시다면 윗글분 말씀대로 assembly를 쓰셔도 됩니다, 그러면 보다 많은 MIPs 를 절약할 수 도 있읍니다.

    >제목과 같이 DSP관련하여 C언어를 기초부터 레슨해 주실 분을 찾습니다. 원래 RF system 분야 엔지니어인데 관심이 있어서 공부하려 하지만 쉽지가 않네요. 하루에 약 두 시간, 일주일에 두 번정도면 좋을 듯 싶군요. 레슨비는 상의후 결정하도록 하지요.
    >장소는 산호세입니다.