Hi Derek,
thank you for your answer. My answers are below.
Il 15/06/18 13:08, Derek Kozel ha scritto:
Hello Alice,
I think you have two different issues. You should not be encountering
Late errors. How do you schedule your timed commands? What connection
to the host computer are you using? 10 GigE should be able to handle
100 MS/s, are you using 1 GigE?
I attached the python file that I created. I use 10GigE, but the channel
bandwidth for each channel is 100MHz.. should't it be a problem?
Separately, there will always be a phase offset between channels, even
when using timed commands. Which daughterboards are you using? The
requirements to achieve a repeatable phase offsets are different
between boards.
I'm using SBX 120...
Regards,
Alice
Regards,
Derek
On Fri, Jun 15, 2018 at 11:13 AM, Alice Lo Valvo via USRP-users
mailto:usrp-users@lists.ettus.com>> wrote:
Hi all,
I have to transmit two flows with the same "start trigger".
I used one USRP X300 with two channels, but because of the large
bandwidth (100MHz), there is the L error.
So, I tried to use two USRPs X300 with the OctoClock, but when I
record the transmitted signal they are not synchronize.. One
signal starts before the other one.. there is a costant offset
phase, I think.
Any suggestion?
Thank you in advance,
Alice
___
USRP-users mailing list
USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com>
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
<http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com>
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
##
# GNU Radio Python Flow Graph
# Title: Top Block
# Generated: Wed May 16 10:07:59 2018
##
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import gr
from gnuradio import uhd
from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes
from optparse import OptionParser
import optparse
import time
import sys
class top_block(gr.top_block):
def __init__(self,set_gain,input_file):
gr.top_block.__init__(self, "Top Block")
##
# Variables
##
self.samp_rate = samp_rate = 1
self.addr = addr = "addr=192.168.40.2"
self.gain = gain = set_gain
##
# Blocks
##
self.uhd_usrp_sink_0_0 = uhd.usrp_sink(
",".join((addr, '')),
uhd.stream_args(
cpu_format="fc32",
channels=range(2),
),
)
self.uhd_usrp_sink_0_0.set_samp_rate(samp_rate)
self.uhd_usrp_sink_0_0.set_center_freq(500e6, 0)
self.uhd_usrp_sink_0_0.set_gain(gain, 0)
self.uhd_usrp_sink_0_0.set_antenna('TX/RX', 0)
self.uhd_usrp_sink_0_0.set_bandwidth(samp_rate, 0)
self.uhd_usrp_sink_0_0.set_center_freq(500e6, 1)
self.uhd_usrp_sink_0_0.set_gain(gain, 1)
self.uhd_usrp_sink_0_0.set_antenna('TX/RX', 1)
self.uhd_usrp_sink_0_0.set_bandwidth(samp_rate, 1)
#self.blocks_file_source_0 = blocks.file_source(gr.sizeof_gr_complex*1, '/home/lab/jammer/signal_08', True)
self.blocks_file_source_0 = blocks.file_source(gr.sizeof_gr_complex*1, input_file, True)
self.blocks_file_source_0_0 = blocks.file_source(gr.sizeof_gr_complex*1, input_file, True)
##
# Connections
##
self.connect((self.blocks_file_source_0, 0), (self.uhd_usrp_sink_0_0, 0))
self.connect((self.blocks_file_source_0_0, 0), (self.uhd_usrp_sink_0_0, 1))
def get_samp_rate(self):
return self.samp_rate
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.uhd_usrp_sink_0_0.set_samp_rate(self.samp_rate)
self.uhd_usrp_sink_0_0.set_bandwidth(self.samp_rate, 0)
self.uhd_usrp_sink_0_0.set_bandwidth(self.samp_rate, 1)
def get_addr(self):
return self.addr
def set_addr(self, addr):
self.addr = addr
def main(top_block_cls=top_block, options=None):
parser = optparse.OptionParser()
parser.add_option('-g',dest="gain",type="int")
parser.add_option('-i',dest="input")
option,remainder=parser.parse_args()
if option.gain is None:
sys.stderr.write('You must specify the gain with -g GAIN\n')
exit(1)
if option.input is None:
sys.stderr.write('You must specify the path with -i /\n')
exit(1)
tb = top_block_cls(option.gain,option.input)
tb.start()
# try:
# raw