Пример #1
0
 def get_system_information(self, filename=None, fpg_info=None, **kwargs):
     """
     Get system information and build D-engine sources
     :param filename:
     :param fpg_info:
     :return:
     """
     FpgaHost.get_system_information(
         self, filename=filename, fpg_info=fpg_info, **kwargs)
     self.sine_sources.clear()
     self.noise_sources.clear()
     self.pulsar_sources.clear()
     self.outputs.clear()
     for reg in self.registers:
         sin_name = get_prefixed_name('freq_cwg', reg.name)
         noise_name = get_prefixed_name('scale_wng', reg.name)
         pulsar_name = get_prefixed_name('freq_pulsar', reg.name)
         output_scale_name = get_prefixed_name('scale_out', reg.name)
         if sin_name is not None:
             scale_reg_postfix = ('_' + sin_name if reg.name.endswith(
                 '_' + sin_name) else sin_name)
             scale_reg = getattr(self.registers, 'scale_cwg' +
                                 scale_reg_postfix)
             repeat_en_reg_name = 'rpt_en_cwg' + scale_reg_postfix
             repeat_len_reg_name = 'rpt_length_cwg{}'.format(scale_reg_postfix)
             repeat_en_reg = getattr(self.registers,
                                     repeat_en_reg_name, None)
             repeat_len_reg = getattr(self.registers,
                                      repeat_len_reg_name, None)
             repeat_len_field_name = 'repeat_length'
             setattr(self.sine_sources, 'sin_' + sin_name, SineSource(
                 reg, scale_reg, sin_name,
                 repeat_len_register=repeat_len_reg,
                 repeat_en_register=repeat_en_reg,
                 repeat_len_field_name=repeat_len_field_name))
         elif noise_name is not None:
             setattr(self.noise_sources, 'noise_' + noise_name,
                     NoiseSource(reg, noise_name))
         elif pulsar_name is not None:
             scale_reg_postfix = ('_' + pulsar_name if reg.name.endswith(
                 '_' + pulsar_name) else pulsar_name)
             scale_reg = getattr(self.registers, 'scale_pulsar' + scale_reg_postfix)
             setattr(self.pulsar_sources, 'pulsar_' + pulsar_name,
                     PulsarSource(reg, scale_reg, pulsar_name))
         elif output_scale_name is not None:
             # TODO TEMP hack due to misnamed register
             if output_scale_name.startswith('arb'):
                 continue
             setattr(self.outputs, 'out_' + output_scale_name,
                     Output(output_scale_name, reg, self.registers.control))