Send USRP-users mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of USRP-users digest..."
Today's Topics:
1. 8-bit over the wire format and noise floor (Knee, Peter A)
2. Re: 8-bit over the wire format and noise floor ([email protected])
3. Re: FW: Config N210 with Microblaze (Ian Buckley)
4. Re: 8-bit over the wire format and noise floor ([email protected])
----------------------------------------------------------------------
Message: 1
Date: Tue, 12 Jun 2012 17:08:39 +0000
From: "Knee, Peter A" <[email protected]>
To: "[email protected]" <[email protected]>
Subject: [USRP-users] 8-bit over the wire format and noise floor
Message-ID:
<[email protected]>
Content-Type: text/plain; charset="us-ascii"
All,
I am currently developing a spectrum analyzer using my USRP N210. I want to be
able to display larger bandwidths so I have been experimenting with the 8-bit
over the wire mode. I'm having some issues with the ADC counts that the device
is returning. To test I am using a signal generator outputting a constant tone.
When the tone is not present, at startup, I get fairly large ADC values that
quickly go to zero. As I'm computing the FFT of these values, an all-zero
sequence is causing issues with the values returned by the FFT. There are
obvious ways around this but I have a feeling it is part of a larger issue.
When the tone is present, being generated anywhere from -50 to -20 dBm, I begin
seeing larger values over the wire, but they are not scaling with the increase
in power output. After the initial startup sequence, the values I'm seeing for
both the I and Q channels are no larger than +/- 20 on average.
I'm attaching the basics of the C++ code I'm using to acquire the signal in
8-bit mode. My guess is that this issue is a lack of understanding about the
basics of the receiver and the ADC conversion process. I should not that
everything seems to scale accordingly when using 16-bit over the wire mode.
Any help that can be provided would be greatly appreciated.
Thanks,
Peter Knee
Code:
//Variables
uhd::rx_metadata_t md;
uhd::rx_streamer::sptr rx_stream;
//Setup device
uhd::stream_args_t stream_args("sc16","sc8");
rx_stream = usrp->get_rx_stream(stream_args);
uhd::stream_cmd_t stream_cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS);
usrp->issue_stream_cmd(stream_cmd);
//Set up buffer
std::vector< std::complex<short> > buff(10000);
//Read in short data
nSampsRead = rx_stream->recv(&buff.front(),buff.size(),md);
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/attachments/20120612/13bf7504/attachment-0001.html>
------------------------------
Message: 2
Date: Tue, 12 Jun 2012 13:15:45 -0400
From: [email protected]
To: <[email protected]>
Subject: Re: [USRP-users] 8-bit over the wire format and noise floor
Message-ID: <[email protected]>
Content-Type: text/plain; charset="utf-8"
On 12 Jun 2012 13:08, Knee, Peter A wrote:
> All,
>
> I am
currently developing a spectrum analyzer using my USRP N210. I want to
be able to display larger bandwidths so I have been experimenting with
the 8-bit over the wire mode. I'm having some issues with the ADC counts
that the device is returning. To test I am using a signal generator
outputting a constant tone.
>
> When the tone is not present, at
startup, I get fairly large ADC values that quickly go to zero. As I'm
computing the FFT of these values, an all-zero sequence is causing
issues with the values returned by the FFT. There are obvious ways
around this but I have a feeling it is part of a larger issue.
>
>
When the tone is present, being generated anywhere from -50 to -20 dBm,
I begin seeing larger values over the wire, but they are not scaling
with the increase in power output. After the initial startup sequence,
the values I'm seeing for both the I and Q channels are no larger than
+/- 20 on average.
>
> I'm attaching the basics of the C++ code I'm
using to acquire the signal in 8-bit mode. My guess is that this issue
is a lack of understanding about the basics of the receiver and the ADC
conversion process. I should not that everything seems to scale
accordingly when using 16-bit over the wire mode.
>
> Any help that
can be provided would be greatly appreciated.
>
> Thanks,
>
> Peter
Knee
>
> CODE:
>
> //Variables
>
> uhd::rx_metadata_t md;
>
>
uhd::rx_streamer::sptr rx_stream;
>
> //Setup device
>
>
uhd::stream_args_t stream_args("sc16","sc8");
>
> rx_stream =
usrp->get_rx_stream(stream_args);
>
> uhd::stream_cmd_t
stream_cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS);
>
>
usrp->issue_stream_cmd(stream_cmd);
>
> //Set up buffer
>
>
std::vector< std::complex > buff(10000);
>
> //Read in short data
>
> nSampsRead = rx_stream->recv(&buff.front(),buff.size(),md);
They're
proportional to the instantaneous voltage seen by the ADC. Power is
proportional to the square-root of the voltage. Does that make more
sense now?
-Marcus
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/attachments/20120612/8ecc4531/attachment-0001.html>
------------------------------
Message: 3
Date: Tue, 12 Jun 2012 10:16:15 -0700
From: Ian Buckley <[email protected]>
To: Huldi Michael <[email protected]>
Cc: "'[email protected]'" <[email protected]>
Subject: Re: [USRP-users] FW: Config N210 with Microblaze
Message-ID: <[email protected]>
Content-Type: text/plain; charset="windows-1252"
Sorry, I answered without thinking yesterday and led you astray, too much talk
about promgen.....usrp_n2xx_net_burner.py indeed expects a raw bitstream format
file, 0xAA99 is what Xilinx call the synchronization word, and it's used by the
configuration logic to align the incoming data for correct FPGA configuration.
usrp_n2xx_net_burner.py looks for this in a file as a sanity check that it's
the correct format file.
Normally bitgen directly produces both .bit and .bin files (and many others)
and these are directly used by usrp_n2xx_net_burner.py in the normal USRP flow.
If you need help with post-processing blockRAM initializations into a
pre-compiled bitstream try this document:
http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/data2mem.pdf
-Ian
On Jun 12, 2012, at 2:16 AM, Huldi Michael wrote:
> Isn?t the file in MCS format for loading directly to the Flash via Jtag? If I
> convert the BIT file with the command ?promgen -w -spi -p mcs -o $(MCS_FILE)
> -s 4096 -u 0 $(BIT_FILE)? the generated MCS file is around 3.9MB, that means
> four times bigger than the BIT or BIN file.
>
> I figured out that the net burner scan the BIN file for 0hAA99 to accept the
> BIN file. If I combine the BIT file with the ELF file I overwrite this part.
> Could you say me the meaning of this check? Is there perhaps a conflict
> between the bootloader part and the program code from the microblaze?
>
> Michael
>
>
>
> _______________________________________________
> USRP-users mailing list
> [email protected]
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
> usrp_n2xx_net_burner.py expects FPGA configuration images to be in MCS
> format. Look in Makefile.common to understand the > correct invocation of
> promgen
> -Ian
On Jun 11, 2012, at 7:38 AM, Huldi Michael wrote:
> Hi,
> I give you right that the problems with the tools of Xilinx not your issue
> is. But fact is if I add a elf-file from microblaze to a ise-project and
> generate the .bit file for an other hardware than USRP N210 so I can download
> the generated download.bit file via Jtag and it works.
> But if I generate the download.bit file on the same way and convert the
> generated download.bit file with the command "promgen -u 0x0 download.bit -p
> bin -w " to a .bin file, the net-burner doesn?t accept the file.
> Do you have an idea how I can solve this problem on a simple way. Because to
> write some extra zpu-firmware is too complex.
> Thanks Michael
>
>
> From: Ian Buckley [mailto:[email protected]]
> Sent: Donnerstag, 7. Juni 2012 18:54
> To: Huldi Michael
> Cc: '[email protected]'
> Subject: Re: [USRP-users] Config N210 with Microblaze
>
> Michael, I'm a little confused by what your actual question is? It seems your
> having fundamental tactical problems loading a new FPGA image onto the N210,
> but the question you pose is architectural: "Is it possible to program the
> fpga with impact via JTAG? How could I insert the zpu firmware file in this
> case?"
>
> I'm not going to address your problems with using the Xilinx Microblaze SDK,
> that's a Xilinx proprietary flow and not something I, nor anyone at Ettus
> uses. But I'll try to give you some architectural guidelines how to add a new
> microprocessor to the N210:
>
> First, yes it's entirely possible to use impact to program the FPGA, this is
> how all new H/W is initially brought up. However note that unless you design
> the H/W to have an attached FLASH RAM in a way supported by impact for JTAG
> programming then you are only to directly configure the FPGA and that
> configuration will be lost every power cycle/reset. The USRP SPI flash is not
> programable via impact, so all non-volatile FPGA images and firmware images
> have to be burned under firmware & FPGA control.
>
> Now to boot an embedded microprocessor there are generally 2 different
> approaches:
> 1) The boot vector (PC after reset) directly addresses a discrete FLASH RAM
> that you can program externally (normally via JTAG)...this option doesn't
> exist for unmodified N210 H/W.
> 2) The boot vector addresses an internal stable boot ROM (a pre-initialized
> BRAM in a Xilinx) and the microcode in there performs a second stage boot,
> getting more firmware from elsewhere (FLASH RAM, network etc). This is how
> the stock N210 works with the ZPU and the attached SPI flash, which contains
> multiple FPGA and firmware images. In this case the ZPU boot's with the
> bootrom code in one BRAM, and uses this code to load the production firmware
> ware image from SPI FLASH to the other at which point it does a quick FPGA
> logic trick, swaps the MSB of the 2 BRAM's so that the boot vector now points
> to the other BRAM and toggles the ZPU reset line to cause a new (ZPU not
> FPGA) boot.
>
> Since you already have a working bootable and upgradable system in the stock
> N210, I strongly suggest the following approach:
> 1) Add your second microprocessor (I suggest reusing the ZPU, firmware
> libraries and tools..but you may have a compelling reason to learn and use
> Xilinx microblaze SDK) to the existing FPGA build methodology and continue to
> use the Ettus Makefile driven scripts to build and upload a new FPGA image
> via the network.
>
> 2) Make the BRAM(s) that contain the firmware for your new microprocessor
> exist also in the existing ZPU memory map. You can do this either by
> multiplexing them or making use of the dual port nature of BRAM.
>
> 3) Write some extra firmware for the existing ZPU so that it handles the
> download of your new microprocessors firmware from network to SPI flash and
> from SPI flash to BRAM exploiting all the TCP/IP based updater code that
> already exists. Boot your second microprocessor after and under the control
> of the original ZPU.
>
> This will be less work than you imagine since you will essentially be able to
> re-use all Josh's existing firmware code and the H/W design idea's behind the
> N210. You'll have a system quickly where you will not have to rebuild the
> FPGA every time you change firmware.
>
> Hope this helps,
> -Ian
>
>
>
>
>
>
> On Jun 7, 2012, at 5:53 AM, Huldi Michael wrote:
>
>
> Hello,
>
> I need help to get a simple microblaze configuration with bram-memory working
> with the USRP N210 release_003_004_001.
>
> I removed the tx chain and insert the microblaze in the top and connect 2 of
> the leds from the front to the microblaze gpio. Run a software with a
> blinking led function.
>
> I tried different ways to program the fpga without success:
>
> 1. add the elf-file from the microblaze to the ise-project and generate a
> .bin File with double click to "generate programming file" in ise, then
> download with net burner.
>
> 2. combine the bitstream with the elf file, which resides in the bram in SDK
> with "Programm FPGA" to a .bit file, then convert the generated file
> download.bit to a .bin file with "promgen -u 0x0 download.bit -p bin -w " and
> try to download with net burner. But the net burner says "Invalid FPGA image
> file".
>
> 3. Download with Platform Cable and with SDK, JTAG connected to the FPGA. But
> here it doesn't load the new configuration, since the leds I disconnect still
> light up in startup.
>
> I also changed the StartUpClk in the bitgen.ut from JTAGCLK to CCLK.
>
> Someone have an idea, how to make my configuration working? Is it possible to
> program the fpga with impact via JTAG? How could I insert the zpu firmware
> file in this case?
>
> Thanks for your help!
> Huldi
>
> _______________________________________________
> USRP-users mailing list
> [email protected]
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>
> _______________________________________________
> USRP-users mailing list
> [email protected]
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/attachments/20120612/5a4b5bf0/attachment-0001.html>
------------------------------
Message: 4
Date: Tue, 12 Jun 2012 13:16:54 -0400
From: [email protected]
To: <[email protected]>
Subject: Re: [USRP-users] 8-bit over the wire format and noise floor
Message-ID: <[email protected]>
Content-Type: text/plain; charset="utf-8"
On 12 Jun 2012 13:15, [email protected] wrote:
> On 12 Jun 2012
13:08, Knee, Peter A wrote:
>
>> All,
>>
>> I am currently
developing a spectrum analyzer using my USRP N210. I want to be able to
display larger bandwidths so I have been experimenting with the 8-bit
over the wire mode. I'm having some issues with the ADC counts that the
device is returning. To test I am using a signal generator outputting a
constant tone.
>>
>> When the tone is not present, at startup, I get
fairly large ADC values that quickly go to zero. As I'm computing the
FFT of these values, an all-zero sequence is causing issues with the
values returned by the FFT. There are obvious ways around this but I
have a feeling it is part of a larger issue.
>>
>> When the tone is
present, being generated anywhere from -50 to -20 dBm, I begin seeing
larger values over the wire, but they are not scaling with the increase
in power output. After the initial startup sequence, the values I'm
seeing for both the I and Q channels are no larger than +/- 20 on
average.
>>
>> I'm attaching the basics of the C++ code I'm using to
acquire the signal in 8-bit mode. My guess is that this issue is a lack
of understanding about the basics of the receiver and the ADC conversion
process. I should not that everything seems to scale accordingly when
using 16-bit over the wire mode.
>>
>> Any help that can be provided
would be greatly appreciated.
>>
>> Thanks,
>>
>> Peter Knee
>>
>>
CODE:
>>
>> //Variables
>>
>> uhd::rx_metadata_t md;
>>
>>
uhd::rx_streamer::sptr rx_stream;
>>
>> //Setup device
>>
>>
uhd::stream_args_t stream_args("sc16","sc8");
>>
>> rx_stream =
usrp->get_rx_stream(stream_args);
>>
>> uhd::stream_cmd_t
stream_cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS);
>>
>>
usrp->issue_stream_cmd(stream_cmd);
>>
>> //Set up buffer
>>
>>
std::vector< std::complex > buff(10000);
>>
>> //Read in short data
>>
>> nSampsRead = rx_stream->recv(&buff.front(),buff.size(),md);
>
>
They're proportional to the instantaneous voltage seen by the ADC. Power
is proportional to the square-root of the voltage. Does that make more
sense now?
>
> -Marcus
Damnit! Proportional to the *SQUARE* of the
voltage.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/attachments/20120612/951e58d5/attachment-0001.html>
------------------------------
_______________________________________________
USRP-users mailing list
[email protected]
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
End of USRP-users Digest, Vol 22, Issue 13
******************************************