''' Created on Feb 8, 2016 @author: Miguel Urco ''' import string def read_dds_file(fp): """ Function to extract the parameters from a text file with the next format: Input: File with the next content: Phase Adjust Register 1 ----------------------- 00000000 00000000 ..... ----------------------- Frequency Tuning Word 1 ----------------------- 00110101 01111111 11111111 11111111 10100000 00000000 Output: Return configuration parameters for DDS: multiplier, frequency, phase, amplitude, etc. """ kwargs = {} dds_registers = [] for this_line in fp: this_line = str.strip(this_line) if not str.isdigit(this_line): continue if len(this_line) != 8: continue dds_registers.append(string.atoi(this_line,2)) if len(dds_registers) != 40: return kwargs kwargs['clock'] = 60.0 kwargs['phase_bin'] = dds_registers[0]*(2**8) + dds_registers[1] kwargs['phase_mod_bin'] = dds_registers[2]*(2**8) + dds_registers[3] kwargs['frequency_bin'] = dds_registers[4]*(2**40) + dds_registers[5]*(2**32) + dds_registers[6]*(2**24) + dds_registers[7]*(2**16) + dds_registers[8]*(2**8) + dds_registers[9] kwargs['frequency_mod_bin'] = dds_registers[10]*(2**40) + dds_registers[11]*(2**32) + dds_registers[12]*(2**24) + dds_registers[13]*(2**16) + dds_registers[14]*(2**8) + dds_registers[15] kwargs['delta_frequency'] = dds_registers[16]*(2**40) + dds_registers[17]*(2**32) + dds_registers[18]*(2**24) + dds_registers[19]*(2**16) + dds_registers[20]*(2**8) + dds_registers[21] kwargs['update_clock'] = dds_registers[22]*(2**24) + dds_registers[23]*(2**16) + dds_registers[24]*(2**8) + dds_registers[25] kwargs['ramp_rate_clock'] = dds_registers[26]*(2**16) + dds_registers[27]*(2**8) + dds_registers[28] kwargs['control_register'] = dds_registers[29]*(2**24) + dds_registers[30]*(2**16) + dds_registers[31]*(2**8) + dds_registers[32] kwargs['multiplier'] = dds_registers[30] & 0x1F kwargs['modulation'] = (dds_registers[31] & 0x0E) >> 1 kwargs['amplitude_enabled'] = (dds_registers[32] & 0x20) >> 5 kwargs['amplitude_ch_A'] = (dds_registers[33]*(2**8) + dds_registers[34]) & 0x0FFF kwargs['amplitude_ch_B'] = (dds_registers[35]*(2**8) + dds_registers[36]) & 0x0FFF kwargs['amplitude_ramp_rate'] = dds_registers[37] return kwargs def read_json_file(fp): kwargs = {} return kwargs def write_dds_file(filename): pass def write_json_file(filename): pass