def __setFreq(self): self.i_ch.attrs['frequency'].value = iiol._M2Str(abs(self._freq)) # read back the actual value self._freq = copysign(self.getFreq(), self._freq) logging.debug('i_ch:< '+iiol._M2Str(abs(self._freq))) self.q_ch.attrs['frequency'].value = iiol._M2Str(abs(self._freq)) logging.debug('q_ch:< '+iiol._M2Str(abs(self._freq)))
def _set_SamplingFreq(self, value): """set internal sampling freq in MHz""" # 2.1<value<30, use interpolation for lower sampling rates try: self.phy_rx.attrs['sampling_frequency'].value = _M2Str(value) except OSError: print('value out of range:', value)
def setFreq(self, f): """set to approximately the frequency given in MHz""" # approx because the actual freq is constrained by the algorithm # read back from the device to determine the actual value set self._freq = f # must be 0 <= f < fs/2 if abs(f)>self.getSamplingFreq()/2: half_fs = '{:2.3f}'.format(self.getSamplingFreq()/2) raise ValueError('frequency not within +/-Fs/2 i.e '+half_fs+'MHz') # for positive frequencies phase(Q) = phase(I) - 90 # for negative frequencies abs(f) and phase(Q) = phase(I) + 90 logging.debug('freq:>' + iiol._M2Str(f)) self.__setFreq() self.__setPhase()
def _set_txBW(self, value): self.phy_tx.attrs['rf_bandwidth'].value = _M2Str(value)
def _set_txLoFreq(self, value): self.phy.find_channel('TX_LO').attrs['frequency'].value = _M2Str(value)
def _set_rxBW(self, value): """set receiver analogue RF bandwidth in MHz""" self.phy_rx.attrs['rf_bandwidth'].value = _M2Str(value)
def _set_rxLoFreq(self, value): """set receiver LO frequency property in MHz""" self.phy.find_channel('RX_LO').attrs['frequency'].value = _M2Str(value)
def _set_SamplingFreq(self, value): self.phy_rx.attrs['sampling_frequency'].value = _M2Str(value)