##// END OF EJS Templates
Sync
Sync

File last commit:

r7:565b8186dcb8 default
r7:565b8186dcb8 default
Show More
fft_test_functions.py
138 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 getWaveFromRecord( cwf, bufferSize, offset, column ):
yVector = cwf[(0+offset):(bufferSize+offset), column]
return yVector
def sineWave( bufferSize, nbPeriod, amplitude):
deltaX = nbPeriod * 2 * np.pi / bufferSize
xVector = np.arange( bufferSize ) * deltaX
yVector = np.int16( amplitude * np.sin( xVector ) )
return yVector
def continuous( bufferSize, value ):
tmpVector = np.empty( bufferSize )
tmpVector.fill( value )
yVector = np.int16( tmpVector )
return yVector
def step( bufferSize, value ):
tmpVector = np.zeros( bufferSize )
for k in range( bufferSize / 2 ):
tmpVector[ bufferSize / 2 + k ] = value
yVector = np.int16( tmpVector )
return yVector
def dirac( bufferSize, value ):
tmpVector = np.zeros( bufferSize )
tmpVector[0] = value
yVector = np.int16( tmpVector )
return yVector
def generateDataToWrite( bufferSize, wfrm0, wfrm1 ):
dataVector = []
for k in range(bufferSize):
dataVector.append(
( (np.int16(wfrm1[k]) & 0xffff ) << 16)
| (np.int16(wfrm0[k]) & 0xffff )
)
return dataVector
def print_reg_fft( ):
fft_reg = RMAPPlugin0.Read( address_CTRL, 1)
out_ren = (fft_reg[0] & 0x0000001f)
out_reuse = (fft_reg[0] & 0x000003e0) >> 5
out_locked = (fft_reg[0] & 0x00007c00) >> 10
MEM_IN_SM_Full = (fft_reg[0] & 0x000f8000) >> 15
MEM_IN_SM_Empty = (fft_reg[0] & 0x01f00000) >> 20
print "out_ren = " + bin( out_ren ) \
+ ", out_reuse = " + bin( out_reuse ) \
+ ", out_locked = " + bin( out_locked ) \
+ ", MEM_IN_SM_Full = " + bin( MEM_IN_SM_Full ) \
+ ", MEM_IN_SM_Empty = " + bin( MEM_IN_SM_Empty )
RMAPPlugin0.ProcessPendingEvents()
def print_custom( value ):
print value
RMAPPlugin0.ProcessPendingEvents()
def is_MEM_IN_SM_Emty( ):
ret = 0
fft_reg = RMAPPlugin0.Read( address_CTRL, 1)
MEM_IN_SM_Empty = (fft_reg[0] & 0x01f00000) >> 20
if MEM_IN_SM_Empty == 0x1f:
ret = 1
return ret
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
print "sm_reg = " + bin( sm_reg[0] & 0x3f ) \
+ ", out_ren = " + bin( out_ren ) \
+ ", MEM_OUT_SM_Full = " + bin( MEM_OUT_SM_Full ) \
+ ", MEM_OUT_SM_Empty = " + bin( MEM_OUT_SM_Empty )
RMAPPlugin0.ProcessPendingEvents()
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) >> 3
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 out_locked_AND_out_reuse_AND_out_ren( ):
# reuse => 0111 1111 1111 1111
RMAPPlugin0.Write( address_CTRL, [0x00007fff] )
def convertToSigned16Bits( dataToConvert ):
dataInInt16 = np.int16( dataToConvert )
if dataInInt16 < 32768:
val = dataInInt16
else:
val = dataInInt16 - 65536
return val
def convertVectorToSigned16Bits( bufferSize, dataBuffer ):
dataBufferConverted = np.zeros( bufferSize )
for k in range( bufferSize ):
dataBufferConverted[k] = convertToSigned16Bits( dataBuffer[k] )
return dataBufferConverted
def convertToSigned8Bits( dataToConvert ):
dataInInt16 = np.int8( dataToConvert )
if dataInInt16 < 8:
val = dataInInt16
else:
val = dataInInt16 - 16
return val