示例#1
0
 def __init__(self, host, katcp_port=7147, boffile=None, connect=True, config=None):
     if config:
         if boffile:
             raise ValueError('Cannot specify "boffile" parameter if config is used')
         boffile = config['bitstream']
     self.config = config
     FpgaHost.__init__(
         self, host, katcp_port=katcp_port, boffile=boffile, connect=connect)
     self.boffile = boffile
     self.sine_sources = AttributeContainer()
     self.noise_sources = AttributeContainer()
     self.pulsar_sources = AttributeContainer()
     self.outputs = AttributeContainer()
示例#2
0
 def get_system_information(self, filename=None, fpg_info=None):
     """Get system information and build D-engine sources"""
     FpgaHost.get_system_information(self, filename=filename, fpg_info=fpg_info)
     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' + 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 = 'cwg' + scale_reg_postfix + '_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:
             # 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))