##// END OF EJS Templates
Sync
Sync

File last commit:

r8:80993ec2f9f2 default
r8:80993ec2f9f2 default
Show More
test_sm_functions.py
127 lines | 3.8 KiB | text/x-python | PythonLexer
import numpy as np
from test_fft.register_addresses_fft_test import *
from __main__ import RMAPPlugin0
def print_custom( value ):
print value
RMAPPlugin0.ProcessPendingEvents()
def read_SM_Re( nbFrequencyBins, address_MEM_OUT_SM ):
currentComp_re = np.zeros( nbFrequencyBins )
if address_MEM_OUT_SM == address_MEM_OUT_SM_0:
mask_REN = mask_REN_FIFO_0
elif address_MEM_OUT_SM == address_MEM_OUT_SM_1:
mask_REN = mask_REN_FIFO_1
else:
print_custom( "ERR *** read_SM_Re *** unexpected address_MEM_OUT_SM" )
for frequencyBin in range(nbFrequencyBins):
# read Re
RMAPPlugin0.Write( address_CTRL_SM, [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 == address_MEM_OUT_SM_0:
mask_REN = mask_REN_FIFO_0
elif address_MEM_OUT_SM == address_MEM_OUT_SM_1:
mask_REN = mask_REN_FIFO_1
else:
print_custom( "ERR *** read_SM_Re_Im *** unexpected address_MEM_OUT_SM" )
for frequencyBin in range(nbFrequencyBins):
# read Re
RMAPPlugin0.Write( address_CTRL_SM, [mask_REN] )
val = RMAPPlugin0.Read( address_MEM_OUT_SM, 1)
currentComp_re[frequencyBin] = val[0]
# read Im
RMAPPlugin0.Write( address_CTRL_SM, [mask_REN] )
val = RMAPPlugin0.Read( address_MEM_OUT_SM, 1)
currentComp_im[frequencyBin] = val[0]
RMAPPlugin0.ProcessPendingEvents()
return (currentComp_re, currentComp_im)
def is_MEM_OUT_SM_Empty( ):
ret = 0
sm_reg = RMAPPlugin0.Read( address_CTRL_SM, 1)
MEM_OUT_SM_Empty = (sm_reg[0] & 0x00000030) >> 4
if MEM_OUT_SM_Empty == 0x3:
ret = 1
return ret
def is_MEM_OUT_SM_Full( ):
ret = 0
sm_reg = RMAPPlugin0.Read( address_CTRL_SM, 1)
MEM_OUT_SM_Full = (sm_reg[0] & 0x0000000c) >> 2
if MEM_OUT_SM_Full != 0x0:
ret = 1
return ret
def is_MEM_OUT_SM_Full_FIFO_0( ):
ret = 0
sm_reg = RMAPPlugin0.Read( address_CTRL_SM, 1)
MEM_OUT_SM_Full = (sm_reg[0] & 0x00000004) >> 2
if MEM_OUT_SM_Full == 0x01:
ret = 1
return ret
def is_MEM_OUT_SM_Full_FIFO_1( ):
ret = 0
sm_reg = RMAPPlugin0.Read( address_CTRL_SM, 1)
MEM_OUT_SM_Full = (sm_reg[0] & 0x00000008) >> 3
if MEM_OUT_SM_Full == 0x01:
ret = 1
return ret
def wait_for_FIFO_0_Full():
counter = 0
while ( is_MEM_OUT_SM_Full_FIFO_0() == 0 ):
print_custom( "FIFO_0 not full " + str(counter) )
counter = counter + 1
if counter == 10:
break
def wait_for_FIFO_1_Full():
counter = 0
while ( is_MEM_OUT_SM_Full_FIFO_1() == 0 ):
print_custom( "FIFO_1 not full " + str(counter))
counter = counter + 1
if counter == 10:
break
def wait_for_FIFO_Full( fifo ):
if fifo == 0:
wait_for_FIFO_0_Full()
elif fifo == 1:
wait_for_FIFO_1_Full()
else:
print_custom( "ERR *** wait_for_FIFO_Full *** unexpted value for parameter [fifo]" )
def wait_for_FIFO_0_or_1_Full():
counter = 0
sm_reg = RMAPPlugin0.Read( address_CTRL_SM, 1)
MEM_OUT_SM_Full = (sm_reg[0] & 0x0000000c) >> 2
while ( MEM_OUT_SM_Full == 0 ):
print_custom( "FIFO 0 or 1 not full " + str(counter))
counter = counter + 1
if counter == 10:
break
sm_reg = RMAPPlugin0.Read( address_CTRL_SM, 1)
MEM_OUT_SM_Full = (sm_reg[0] & 0x0000000c) >> 2
RMAPPlugin0.ProcessPendingEvents()
def print_reg_sm( ):
sm_reg = RMAPPlugin0.Read( address_CTRL_SM, 1)
out_ren = (sm_reg[0] & 0x00000003)
MEM_OUT_SM_Full = (sm_reg[0] & 0x0000000c) >> 2
MEM_OUT_SM_Empty = (sm_reg[0] & 0x00000030) >> 4
MEM_OUT_SM_Full_s= (sm_reg[0] & 0x00000040) >> 6
print "sm_reg = " + bin( sm_reg[0] & 0x7f ) \
+ ", out_ren = " + bin( out_ren ) \
+ ", MEM_OUT_SM_Full = " + bin( MEM_OUT_SM_Full ) \
+ ", MEM_OUT_SM_Empty = " + bin( MEM_OUT_SM_Empty ) \
+ ", MEM_OUT_SM_Full_s = " + bin( MEM_OUT_SM_Full_s )
RMAPPlugin0.ProcessPendingEvents()