Hello, I have been working on getting Siggen working under E310. I built RFNOC image with siggen for E310. I have been able to use that image to generate a signal from RFNOC_SIGGEN -> HOST, but when I try to rung RFNOC_SIGGEN -> RFNOC_DUC -> RFNOC_RADIO I received an error. The error I received goes away if I start with siggen enable = FALSE.
See below, the script was modified to enable siggen after 2 seconds, and again it does not complain, but I get absolutely no output. Following are script and original error that I receive. Please advise, John #!/usr/bin/env python2 # -*- coding: utf-8 -*- ################################################## # GNU Radio Python Flow Graph # Title: Rfnoc Sin Radio E310 # Generated: Thu Sep 21 14:12:08 2017 ################################################## 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 ettus class RFNoc_Sin_Radio_e310(gr.top_block): def __init__(self): gr.top_block.__init__(self, "Rfnoc Sin Radio E310") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 2e6 self.device3 = variable_uhd_device3_0 = ettus.device3(uhd.device_addr_t( ",".join(('type=e3x0', "fpga=/home/root/rfnoc/usr/share /uhd/images/usrp_e310_fpga_RFNOC_sg3.bit")) )) self.up_rate = up_rate = 12e6 self.gain = gain = 0.5 self.freq = freq = samp_rate/10 self.enable = enable = False self.ampl_q = ampl_q = 1 self.ampl_i = ampl_i = 1 ################################################## # Blocks ################################################## self.uhd_rfnoc_streamer_siggen_0 = ettus.rfnoc_generic( self.device3, uhd.stream_args( # TX Stream Args cpu_format="fc32", # TODO: This must be made an option otw_format="sc16", args="", ), uhd.stream_args( # RX Stream Args cpu_format="fc32", # TODO: This must be made an option otw_format="sc16", args="", ), "SigGen", -1, -1, ) self.uhd_rfnoc_streamer_siggen_0.set_arg("spp", 364) self.uhd_rfnoc_streamer_siggen_0.set_arg("frequency", ((2*freq)/samp_rate)) self.uhd_rfnoc_streamer_siggen_0.set_arg("waveform", "SINE_WAVE") self.uhd_rfnoc_streamer_siggen_0.set_arg("gain", gain) self.uhd_rfnoc_streamer_siggen_0.set_arg("enable", enable) self.uhd_rfnoc_streamer_siggen_0.set_arg("amplitude_i", complex(ampl_i , ampl_q).real) self.uhd_rfnoc_streamer_siggen_0.set_arg("amplitude_q", complex(ampl_i , ampl_q).imag) self.uhd_rfnoc_streamer_radio_0 = ettus.rfnoc_radio( self.device3, uhd.stream_args( # Tx Stream Args cpu_format="fc32", otw_format="sc16", args='', ), uhd.stream_args( # Rx Stream Args cpu_format="fc32", otw_format="sc16", args="", # empty ), 0, -1 ) self.uhd_rfnoc_streamer_radio_0.set_rate(up_rate) for i in xrange(1): self.uhd_rfnoc_streamer_radio_0.set_tx_freq(1.0e9, i) self.uhd_rfnoc_streamer_radio_0.set_tx_gain(20, i) self.uhd_rfnoc_streamer_radio_0.set_tx_dc_offset(True, i) self.uhd_rfnoc_streamer_radio_0.set_tx_antenna("TX/RX", 0) self.uhd_rfnoc_streamer_fifo_0 = ettus.rfnoc_generic( self.device3, uhd.stream_args( # TX Stream Args cpu_format="fc32", otw_format="sc16", args="gr_vlen={0},{1}".format(1, "" if 1 == 1 else "spp={0}".format(1)), ), uhd.stream_args( # RX Stream Args cpu_format="fc32", otw_format="sc16", args="gr_vlen={0},{1}".format(1, "" if 1 == 1 else "spp={0}".format(1)), ), "FIFO", -1, -1, ) self.uhd_rfnoc_streamer_duc_0 = ettus.rfnoc_generic( self.device3, uhd.stream_args( # TX Stream Args cpu_format="fc32", # TODO: This must be made an option otw_format="sc16", args="input_rate={},output_rate={},fullscale={},freq={}".format(samp_rate, up_rate, 1.0, 0.0), ), uhd.stream_args( # RX Stream Args cpu_format="fc32", # TODO: This must be made an option otw_format="sc16", args="", ), "DUC", -1, -1, ) ################################################## # Connections ################################################## self.device3.connect(self.uhd_rfnoc_streamer_duc_0.get_block_id(), 0, self.uhd_rfnoc_streamer_fifo_0.get_block_id(), 0) self.device3.connect(self.uhd_rfnoc_streamer_fifo_0.get_block_id(), 0, self.uhd_rfnoc_streamer_radio_0.get_block_id(), 0) self.device3.connect(self.uhd_rfnoc_streamer_siggen_0.get_block_id(), 0, self.uhd_rfnoc_streamer_duc_0.get_block_id(), 0) def get_samp_rate(self): return self.samp_rate def set_samp_rate(self, samp_rate): self.samp_rate = samp_rate self.set_freq(self.samp_rate/10) self.uhd_rfnoc_streamer_siggen_0.set_arg("frequency", ((2*self.freq)/self.samp_rate)) self.uhd_rfnoc_streamer_duc_0.set_arg("input_rate", float(self.samp_rate)) def get_variable_uhd_device3_0(self): return self.variable_uhd_device3_0 def set_variable_uhd_device3_0(self, variable_uhd_device3_0): self.variable_uhd_device3_0 = variable_uhd_device3_0 def get_up_rate(self): return self.up_rate def set_up_rate(self, up_rate): self.up_rate = up_rate self.uhd_rfnoc_streamer_radio_0.set_rate(self.up_rate) self.uhd_rfnoc_streamer_duc_0.set_arg("output_rate", float(self.up_rate)) def get_gain(self): return self.gain def set_gain(self, gain): self.gain = gain self.uhd_rfnoc_streamer_siggen_0.set_arg("gain", self.gain) def get_freq(self): return self.freq def set_freq(self, freq): self.freq = freq self.uhd_rfnoc_streamer_siggen_0.set_arg("frequency", ((2*self.freq)/self.samp_rate)) def get_enable(self): return self.enable def set_enable(self, enable): self.enable = enable self.uhd_rfnoc_streamer_siggen_0.set_arg("enable", self.enable) def get_ampl_q(self): return self.ampl_q def set_ampl_q(self, ampl_q): self.ampl_q = ampl_q self.uhd_rfnoc_streamer_siggen_0.set_arg("amplitude_i", complex(self.ampl_i , self.ampl_q).real) self.uhd_rfnoc_streamer_siggen_0.set_arg("amplitude_q", complex(self.ampl_i , self.ampl_q).imag) def get_ampl_i(self): return self.ampl_i def set_ampl_i(self, ampl_i): self.ampl_i = ampl_i self.uhd_rfnoc_streamer_siggen_0.set_arg("amplitude_i", complex(self.ampl_i , self.ampl_q).real) self.uhd_rfnoc_streamer_siggen_0.set_arg("amplitude_q", complex(self.ampl_i , self.ampl_q).imag) def main(top_block_cls=RFNoc_Sin_Radio_e310, options=None): tb = top_block_cls() tb.start() try: raw_input('Press Enter to quit: ') except EOFError: pass tb.stop() tb.wait() if __name__ == '__main__': main() ERROR IF START UP WITH SIGGEN ENABLED [INFO] [UHDlinux; GNU C++ version 4.9.2; Boost_105700; UHD_4.0.0.rfnoc-devel-369-g1908672f] [INFO] [E300] Loading FPGA image: /home/root/rfnoc/usr/share/ uhd/images/usrp_e310_fpga_RFNOC_sg3.bit... [INFO] [E300] FPGA image loaded [INFO] [E300] Initializing core control (global registers)... [INFO] [E300] Performing register loopback test... [INFO] [E300] Register loopback test passed [INFO] [RFNOC RADIO] Register loopback test passed [INFO] [RFNOC RADIO] Register loopback test passed [INFO] [AD936X] Performing CODEC loopback test... [INFO] [AD936X] CODEC loopback test passed [INFO] [AD936X] Performing CODEC loopback test... [INFO] [AD936X] CODEC loopback test passed [INFO] [CORES] Performing timer loopback test... [INFO] [CORES] Timer loopback test passed DEBUG: output item size: 8 DEBUG: output item size: 8 [INFO] [CORES] Performing timer loopback test... [ERROR] [RFNOC] [CE_00_Port_10] Block ctrl bad VITA packet: ValueError: Bad CHDR or packet fragment [INFO] [RFNOC] 00000174 [INFO] [RFNOC] 02200000 [INFO] [RFNOC] 70D1C4E8 [INFO] [RFNOC] 7E02127D Traceback (most recent call last): File "./test_rfnoc_radio_tx.py", line 189, in <module> main() File "./test_rfnoc_radio_tx.py", line 176, in main tb = top_block_cls() File "./test_rfnoc_radio_tx.py", line 76, in __init__ self.uhd_rfnoc_streamer_radio_0.set_rate(up_rate) File "/home/root/rfnoc/usr/lib/python2.7/site-packages/ettus/ettus_swig.py", line 2548, in set_rate return _ettus_swig.rfnoc_radio_sptr_set_rate(self, *args, **kwargs) RuntimeError: EnvironmentError: IOError: 0/Radio_0 user_reg_read64() failed: EnvironmentError: IOError: [0/Radio_0] sr_read64() failed: EnvironmentError: IOError: Block ctrl (CE_00_Port_10) packet parse error - EnvironmentError: IOError: Expected SID: 02:10>00:00 Received SID: 00:00>00:00
_______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com