Skip to content
Snippets Groups Projects
Commit 9e46b545 authored by Pieter Donker's avatar Pieter Donker
Browse files

add functions

parent 6e9d54e6
No related branches found
No related tags found
No related merge requests found
test/py/Client.py 100644 → 100755
...@@ -32,6 +32,7 @@ import time ...@@ -32,6 +32,7 @@ import time
import logging import logging
import traceback import traceback
import argparse import argparse
import pprint as pp
from functools import wraps from functools import wraps
from tools import * from tools import *
...@@ -183,6 +184,24 @@ def check_get_all_R_time(obj): ...@@ -183,6 +184,24 @@ def check_get_all_R_time(obj):
print(f"checked {len(info)} FPGA_*_R points") print(f"checked {len(info)} FPGA_*_R points")
# print('\n'.join(info)) # print('\n'.join(info))
def write_fpga_mask(obj, nodes=None, mask=None):
enable_mask = [False] * N_NODES
if mask is not None:
enable_mask = mask
elif nodes is not None:
for node in list(nodes):
enable_mask[node] = True
#print(enable_mask)
var = obj.get_child("2:TR_fpga_mask_RW")
var.set_value(ua.Variant(value=list(enable_mask), varianttype=ua.VariantType.Boolean))
def get_fpga_mask(obj):
var = obj.get_child("2:TR_fpga_mask_R")
enable_mask = var.get_value()
#print(enable_mask)
return enable_mask
def plot_histogram(obj, nodes, inputs): def plot_histogram(obj, nodes, inputs):
import numpy as np import numpy as np
...@@ -190,30 +209,33 @@ def plot_histogram(obj, nodes, inputs): ...@@ -190,30 +209,33 @@ def plot_histogram(obj, nodes, inputs):
# matplotlib.use('Agg') # matplotlib.use('Agg')
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
signed_data = True
var = obj.get_child("2:FPGA_signal_input_histogram_R") var = obj.get_child("2:FPGA_signal_input_histogram_R")
data = var.get_value() data = var.get_value()
np_data = np.array(data) np_data = np.array(data)
N_HISTO = 512 N_HISTO = 512
# for i in range(N_NODES):
for i in list(nodes): for i in list(nodes):
for j in list(inputs): for j in list(inputs):
s1 = (i * S_PN * N_HISTO) + (j * N_HISTO) s1 = (i * S_PN * N_HISTO) + (j * N_HISTO)
s2 = s1 + N_HISTO s2 = s1 + N_HISTO
print("i={}, j={}, start={}, stop={}".format(i, j, s1, s2)) print("i={}, j={}, start={}, stop={}".format(i, j, s1, s2))
_data = np_data[s1:s2] _data = np_data[s1:s2]
# _data = np.ma.masked_where(_data < 1, _data) if signed_data:
# _data = np.ma.masked_where(_data > 2**28-1, _data) _lo, _hi = np.split(_data, 2)
_data = np.concatenate((_hi, _lo))
print("used data : {}".format(_data)) print("used data : {}".format(_data))
print("min value : {}".format(_data.min())) print("min value : {}".format(_data.min()))
print("max value : {}".format(_data.max())) print("max value : {}".format(_data.max()))
print("sum values: {}".format(_data.sum())) print("sum values: {}".format(_data.sum()))
print("skip first and last value from array") # print("skip first and last value from array")
bin_range = range(-255, 255) bin_range = range(-256, 256)
plt.bar(bin_range, height=_data[1:-1], width=1.0) plt.bar(bin_range, height=_data, width=0.90)
plt.xlim([-256, 255]) plt.xlim([-259, 257])
# plt.ylim([0, 200e6]) # plt.ylim([0, 200e6])
plt.tight_layout() plt.tight_layout()
plt.grid()
plt.show() plt.show()
return True return True
...@@ -244,35 +266,14 @@ def plot_input_data(obj, nodes, inputs): ...@@ -244,35 +266,14 @@ def plot_input_data(obj, nodes, inputs):
return True return True
def write_fpga_mask(obj, nodes=None, mask=None):
enable_mask = [False] * N_NODES
if mask is not None:
enable_mask = mask
elif nodes is not None:
for node in list(nodes):
enable_mask[node] = True
#print(enable_mask)
var = obj.get_child("2:TR_fpga_mask_RW")
var.set_value(ua.Variant(value=list(enable_mask), varianttype=ua.VariantType.Boolean))
def get_fpga_mask(obj):
var = obj.get_child("2:TR_fpga_mask_R")
enable_mask = var.get_value()
#print(enable_mask)
return enable_mask
def read_subband_weights(obj): def read_subband_weights(obj):
var = obj.get_child("2:FPGA_subband_weights_R") var = obj.get_child("2:FPGA_subband_weights_R")
vals = var.get_value() vals = var.get_value()
pp.pprint(vals, compact=True)
def write_subband_weights(obj): def write_subband_weights(obj, weight):
weights = [8192] * N_SUB * N_NODES * S_PN # set weights for subbands to default weights = [weight] * N_SUB * N_NODES * S_PN # set weights for subbands to default
var = obj.get_child("2:FPGA_subband_weights_RW") var = obj.get_child("2:FPGA_subband_weights_RW")
var.set_value(ua.Variant(value=list(weights), varianttype=ua.VariantType.UInt32)) var.set_value(ua.Variant(value=list(weights), varianttype=ua.VariantType.UInt32))
...@@ -312,18 +313,23 @@ def setup_wg_xst_mode(obj): ...@@ -312,18 +313,23 @@ def setup_wg_xst_mode(obj):
''' '''
setup wg for xst stream setup wg for xst stream
''' '''
print("wg off")
enable = [False for i in range(S_PN)] * N_NODES # enable wg
var = obj.get_child("2:FPGA_wg_enable_RW")
var.set_value(ua.Variant(value=list(enable), varianttype=ua.VariantType.Boolean))
# Write WG configuration with phases from 0 - 360 and 1 to 1/12 amplitudes # Write WG configuration with phases from 0 - 360 and 1 to 1/12 amplitudes
wg_ampl = [0.01 * (1 - (i / S_PN)) for i in range(S_PN)] * N_NODES _ampl = [wg_ampl * (1 - (i / S_PN)) for i in range(S_PN)] * N_NODES
var = obj.get_child("2:FPGA_wg_amplitude_RW") var = obj.get_child("2:FPGA_wg_amplitude_RW")
var.set_value(ua.Variant(value=list(wg_ampl), varianttype=ua.VariantType.Double)) var.set_value(ua.Variant(value=list(_ampl), varianttype=ua.VariantType.Double))
wg_phase = [i * (360 / S_PN) for i in range(S_PN)] * N_NODES _phase = [i * (360 / S_PN) for i in range(S_PN)] * N_NODES
var = obj.get_child("2:FPGA_wg_phase_RW") var = obj.get_child("2:FPGA_wg_phase_RW")
var.set_value(ua.Variant(value=list(wg_phase), varianttype=ua.VariantType.Double)) var.set_value(ua.Variant(value=list(_phase), varianttype=ua.VariantType.Double))
wg_freq = [(102 / 1024) * 200e6 for i in range(S_PN)] * N_NODES _freq = [(102 / 1024) * wg_freq for i in range(S_PN)] * N_NODES
var = obj.get_child("2:FPGA_wg_frequency_RW") var = obj.get_child("2:FPGA_wg_frequency_RW")
var.set_value(ua.Variant(value=list(wg_freq), varianttype=ua.VariantType.Double)) var.set_value(ua.Variant(value=list(_freq), varianttype=ua.VariantType.Double))
print("wg on") print("wg on")
enable = [True for i in range(S_PN)] * N_NODES # enable wg enable = [True for i in range(S_PN)] * N_NODES # enable wg
...@@ -458,6 +464,8 @@ if __name__ == "__main__": ...@@ -458,6 +464,8 @@ if __name__ == "__main__":
parser.add_argument('--info', dest='info', action='store_true', help="print point infor from server") parser.add_argument('--info', dest='info', action='store_true', help="print point infor from server")
parser.add_argument('--all', dest='all_r', action='store_true', help="recv all*_R points and show time") parser.add_argument('--all', dest='all_r', action='store_true', help="recv all*_R points and show time")
parser.add_argument('--wg', dest='wg_mode', type=str, choices=['OFF', 'XST', 'SIN'], help="turn wg off/on for xst") parser.add_argument('--wg', dest='wg_mode', type=str, choices=['OFF', 'XST', 'SIN'], help="turn wg off/on for xst")
parser.add_argument('--set-sb-weights', dest='set_sb_weights', type=int, help="set subband weights")
parser.add_argument('--get-sb-weights', dest='get_sb_weights', action='store_true', help="get subband weights")
parser.add_argument('--freq', dest='wg_freq', type=float, default=1e6, help="set wg freq") parser.add_argument('--freq', dest='wg_freq', type=float, default=1e6, help="set wg freq")
parser.add_argument('--ampl', dest='wg_ampl', type=float, default=1.0, help="set wg ampl") parser.add_argument('--ampl', dest='wg_ampl', type=float, default=1.0, help="set wg ampl")
parser.add_argument('--phase', dest='wg_phase', type=float, default=0.0, help="set wg phase") parser.add_argument('--phase', dest='wg_phase', type=float, default=0.0, help="set wg phase")
...@@ -466,7 +474,7 @@ if __name__ == "__main__": ...@@ -466,7 +474,7 @@ if __name__ == "__main__":
parser.add_argument('--plot', dest='plot', type=str, choices=['INP', 'HIST'], help="plot selected type") parser.add_argument('--plot', dest='plot', type=str, choices=['INP', 'HIST'], help="plot selected type")
parser.add_argument('--verbosity', default='INFO', help="stdout log level can be [ERROR | WARNING | INFO | DEBUG]") parser.add_argument('--verbosity', default='INFO', help="stdout log level can be [ERROR | WARNING | INFO | DEBUG]")
args = parser.parse_args() args = parser.parse_args()
# print(args) print(args)
node_list = arg_str_to_list(args.nodes) if args.nodes else range(16) node_list = arg_str_to_list(args.nodes) if args.nodes else range(16)
input_list = arg_str_to_list(args.inputs) if args.inputs else range(12) input_list = arg_str_to_list(args.inputs) if args.inputs else range(12)
...@@ -529,6 +537,11 @@ if __name__ == "__main__": ...@@ -529,6 +537,11 @@ if __name__ == "__main__":
print("\t\tchild", i, ": ", children[i].get_data_type_as_variant_type()) print("\t\tchild", i, ": ", children[i].get_data_type_as_variant_type())
print("\t\tchild", i, ": ", children[i].get_node_class()) print("\t\tchild", i, ": ", children[i].get_node_class())
if args.set_sb_weights is not None:
write_subband_weights(Object, args.set_sb_weights)
if args.get_sb_weights is True:
read_subband_weights(Object)
if args.wg_mode is not None: if args.wg_mode is not None:
if args.wg_mode == 'OFF': if args.wg_mode == 'OFF':
turn_wg_off(Object) turn_wg_off(Object)
...@@ -581,6 +594,7 @@ if __name__ == "__main__": ...@@ -581,6 +594,7 @@ if __name__ == "__main__":
# END TEST AREA # END TEST AREA
# ############################## # ##############################
write_fpga_mask(Object, mask=fpga_mask) # write back start mask write_fpga_mask(Object, mask=fpga_mask) # write back start mask
clientRunning = False clientRunning = False
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment