|
|
import numpy as np
|
|
|
|
|
|
from __main__ import RMAPPlugin0
|
|
|
|
|
|
from test_fft.register_addresses import *
|
|
|
import test_fft.print_custom as prnt
|
|
|
|
|
|
def read_SM_Re( nbFrequencyBins, address_MEM_OUT_SM ):
|
|
|
currentComp_re = np.zeros( nbFrequencyBins )
|
|
|
if address_MEM_OUT_SM == FFT_SM_MEM_OUT_SM_0:
|
|
|
mask_REN = mask_REN_FIFO_0
|
|
|
elif address_MEM_OUT_SM == FFT_SM_MEM_OUT_SM_1:
|
|
|
mask_REN = mask_REN_FIFO_1
|
|
|
else:
|
|
|
prnt.print_custom( "ERR *** read_SM_Re *** unexpected address_MEM_OUT_SM" )
|
|
|
for frequencyBin in range(nbFrequencyBins):
|
|
|
# read Re
|
|
|
RMAPPlugin0.Write( FFT_SM_MEM_OUT_SM_CTRL, [mask_REN] )
|
|
|
val = RMAPPlugin0.Read( address_MEM_OUT_SM, 1)
|
|
|
currentComp_re[frequencyBin] = val[0]
|
|
|
RMAPPlugin0.ProcessPendingEvents()
|
|
|
return currentComp_re
|
|
|
|
|
|
def read_SM_Re_Im( nbFrequencyBins, address_MEM_OUT_SM ):
|
|
|
currentComp_re = np.zeros( nbFrequencyBins )
|
|
|
currentComp_im = np.zeros( nbFrequencyBins )
|
|
|
if address_MEM_OUT_SM == FFT_SM_MEM_OUT_SM_0:
|
|
|
mask_REN = mask_REN_FIFO_0
|
|
|
elif address_MEM_OUT_SM == FFT_SM_MEM_OUT_SM_1:
|
|
|
mask_REN = mask_REN_FIFO_1
|
|
|
else:
|
|
|
prnt.print_custom( "ERR *** read_SM_Re_Im *** unexpected address_MEM_OUT_SM" )
|
|
|
for frequencyBin in range(nbFrequencyBins):
|
|
|
# read Re
|
|
|
RMAPPlugin0.Write( FFT_SM_MEM_OUT_SM_CTRL, [mask_REN] )
|
|
|
val = RMAPPlugin0.Read( address_MEM_OUT_SM, 1)
|
|
|
currentComp_re[frequencyBin] = val[0]
|
|
|
# read Im
|
|
|
RMAPPlugin0.Write( FFT_SM_MEM_OUT_SM_CTRL, [mask_REN] )
|
|
|
val = RMAPPlugin0.Read( address_MEM_OUT_SM, 1)
|
|
|
currentComp_im[frequencyBin] = val[0]
|
|
|
RMAPPlugin0.ProcessPendingEvents()
|
|
|
return (currentComp_re, currentComp_im)
|
|
|
|
|
|
def read_SM_ONLY_Re( nbFrequencyBins, address_MEM_OUT_SM ):
|
|
|
currentComp_re = np.zeros( nbFrequencyBins )
|
|
|
if address_MEM_OUT_SM == SM_ONLY_MEM_OUT_SM_0:
|
|
|
mask_REN = mask_REN_FIFO_0
|
|
|
elif address_MEM_OUT_SM == SM_ONLY_MEM_OUT_SM_1:
|
|
|
mask_REN = mask_REN_FIFO_1
|
|
|
else:
|
|
|
prnt.print_custom( "ERR *** read_SM_ONLY_Re *** unexpected address_MEM_OUT_SM" )
|
|
|
for frequencyBin in range(nbFrequencyBins):
|
|
|
# read Re
|
|
|
RMAPPlugin0.Write( SM_ONLY_MEM_OUT_CTRL, [mask_REN] )
|
|
|
val = RMAPPlugin0.Read( address_MEM_OUT_SM, 1)
|
|
|
currentComp_re[frequencyBin] = val[0]
|
|
|
RMAPPlugin0.ProcessPendingEvents()
|
|
|
return currentComp_re
|
|
|
|
|
|
def read_SM_ONLY_Re_Im( nbFrequencyBins, address_MEM_OUT_SM ):
|
|
|
currentComp_re = np.zeros( nbFrequencyBins )
|
|
|
currentComp_im = np.zeros( nbFrequencyBins )
|
|
|
if address_MEM_OUT_SM == SM_ONLY_MEM_OUT_SM_0:
|
|
|
mask_REN = mask_REN_FIFO_0
|
|
|
elif address_MEM_OUT_SM == SM_ONLY_MEM_OUT_SM_1:
|
|
|
mask_REN = mask_REN_FIFO_1
|
|
|
else:
|
|
|
prnt.print_custom( "ERR *** read_SM_ONLY_Re_Im *** unexpected address_MEM_OUT_SM" )
|
|
|
for frequencyBin in range(nbFrequencyBins):
|
|
|
# read Re
|
|
|
RMAPPlugin0.Write( SM_ONLY_MEM_OUT_CTRL, [mask_REN] )
|
|
|
val = RMAPPlugin0.Read( address_MEM_OUT_SM, 1)
|
|
|
currentComp_re[frequencyBin] = val[0]
|
|
|
# read Im
|
|
|
RMAPPlugin0.Write( SM_ONLY_MEM_OUT_CTRL, [mask_REN] )
|
|
|
val = RMAPPlugin0.Read( address_MEM_OUT_SM, 1)
|
|
|
currentComp_im[frequencyBin] = val[0]
|
|
|
RMAPPlugin0.ProcessPendingEvents()
|
|
|
return (currentComp_re, currentComp_im)
|
|
|
|