PDEV FPGA code

08jun08

FPGA overview
directory structure

FGPA CODE (top level and main sections):
Jfft with pfb
DLPF: Digital low pass filter
making SP.

TERMINOLOGY:

FPGA OVERVIEW: (top)

    The fpga code has been modularized so that different signal processors can reuse the verilog code of the different modules. Modules are created using a two step process:
  1. perl scripts generate the verilog source code.
  2. The xlinix code then compiles the verilog.
    Module constants are normally defined in module/src/Makefiles.def

Module directories contain:

Directory structure: (top)



FPGA code  (top)


Funtion
Verilog file
functionality
TOP of fpga code (plinth code)
gx/plinth/src/gx.v
gx/plinth/src/gx.vh some defines
top of fpga
SP FPGA CODE (signal Processor)
Main SP driver routine
gx/sp/src/sp.v
gx/sp/src/sp.vh Some defines
main sp routine:
  • adcinp
  • complex mixer
  • pfb/fft
  • compute stokes
  • accum power
  • pack for output
adc input
gx/sp/src/adcin.v Multplex a/d input
  • map a/d -> polA,B real,Img
  • 0 input, or select test
Negate inputs if requested
Count overflows
complex mixer


lowPassDigital filter
gx/sp/dlpf/rtl/xlfp.v Just the main routine.

jfft with pfb
xfft.v just the main program.
align pols for stokes computation
gx/sp/src/polalign.v
Compute Stokes
gx/sp/src/stokes.v

Accum power
gx/sp/src/acc.v
gx/sp/src/acc_s.v signed accum with saturation
gx/sp/src/acc_us.v unsigned accum with saturation

pack accumulator outputs
gx/sp/src/pack.v



DLPF:  (top)

    Noise tests with the DLPF showed that the rms increases with sqrt(decimation) as expected for noise input. But there was a factor of 3.75 difference in the measured rms (expected 30., got 8 see hr_shift test) . Looking at the fgpa code for dlpf  in pdev/gx/sp/dlpf/rtl/xlpf.v:

Files:



JFFT with pfb:  (top)

   
function
verilog file (in gx/jfft/pdev/rtl)
Main program
xfft.v
polyphase filter front end fir filter
xfft_pfb.v
Butterfly stages with downshift
stages
sync
delays
xfft_stage_0.v
xfft.stage_1.v
xfft_stage_2.v
xfft.stage_3.v
xfft_stage_4.v
xfft.stage_5.v
xfft_stage_6.v
xfft.stage_7.v
xfft_stage_8.v
xfft.stage_9.v
xfft_stage_10.v
xfft_stage_11.v
xfft_stage_12.v
xfft_sync_3.v
xfft_sync_5.v
xfft_sync_9.v
xfft_sync_13.v
xfft_sync_21.v
xfft_sync_37.v
xfft_sync_69.v
xfft_sync_133.v
xfft_sync_261.v
xfft_sync_517.v
xfft_sync_1029.v
xfft_sync_2053.v
xfft_sync_4101.v
xfft.delay_3.v
xfft.delay_4.v
xfft.delay_8.v
xfft.delay_16.v
xfft.delay_32.v
xfft.delay_64.v
xfft.delay_128.v
xfft.delay_256.v
xfft.delay_512.v
xfft.delay_1024.v
xfft.delay_2048.v
xfft.delay_4096.v
xfft_mult.v
xfft.bf.v
xfft_cm.v




<- page up
home_~phil