- AuthorSearch Results
Found in Topics
stevecrm posted on September 11, 2018 at 9:34 am View this postI’m using the API to pull raw IQ samples and I couldn’t find the A/D output range in the manual.
I’m trying to troubleshoot some things and one thing I notice is that my IQ samples have suspiciously low values.
I’m putting in a ~2MHz wide QPSK signal at ~-30dBm, Spike gives me a nice beautiful constellation so I know my signal level must be good. My IQ samples range from -0.00662 to +0.006358. Is this correct? I was expecting something more like -1 to 1.
Found in Replies
Andrew posted on August 21, 2018 at 12:29 pm View this postIn reply to: Pull IQ Samples To Make Constellation Plot (API)
AndrewModeratorHi stevecrm,
So you may indeed be pulling the I/Q data and plotting it correctly, but unfortunately it will still not produce the constellation plot you see in Spike. The reason for this is that Spike is doing additional processing between acquiring I/Q data from the API and plotting it in the constellation plot.
The main steps the Spike software is performing is resampling, symbol timing recovery, carrier recovery, and filtering. This can be quite a complex subject and not one I can cover in a forum post. You can find more information in a digital communications textbook, by searching online for search terms like “PSK demodulation”, or exploring software packages like GNURadio which has software blocks for the major components of a PSK receiver.
Keysight has an excellent block diagram of the various components in a spectrum analyzer when making PSK modulation measurements. See the following link on page 282.
http://literature.cdn.keysight.com/litweb/pdf/E4440-90620.pdf
I hope this helps, let me know if you have follow up questions.
RegardsFound in Topics
stevecrm posted on August 21, 2018 at 11:45 am View this postI’m trying to pull out raw IQ samples to create a constellation plot using the API. When I use spike I get a nice QPSK signal constellation, but I’m having trouble getting anything similar with the API.
I’m using the example that comes with the SDK, all I’ve done is change some frequency/bandwidth values.
My carrier is 1.84MHz wide at 70MHz. The documentation says that IQ samples are interleaved and range from +/-1. I’m assuming this means that the resulting array is structured like:
I1, Q1, I2, Q2, I3, Q3…etcMy problem is that I’m getting IQ values that range from +/- 0.01, so I think I’m just seeing noise. If I plot I and Q separately they seem like roughly ok sine waves. Also if I plot IQ in 2D to make a constellation, I just get a big circular donut, nothing that looks like there are 4 converging points.
I use the reference level of -40 because that worked in Spike.
Anyone know what I’m missing? Any helps is appreciated
I’ve adjusted the demo code to take the samples and dump them to a file:
int id = -1; bbStatus status = bbStatus.bbNoError; txtResults.Text += "Opening Device, Please Wait\n"; status = bb_api.bbOpenDevice(ref id); if (status != bbStatus.bbNoError) { txtResults.Text += "Error: Unable to open BB60\n"; txtResults.Text += bb_api.bbGetStatusString(status) + "\n"; return; } else { txtResults.Text += "Device Found\n\n"; } Console.Write("Configuring the device to stream I/Q data\n"); bb_api.bbConfigureCenterSpan(id, 70000000, 4.0e6); //center hz, span hz bb_api.bbConfigureLevel(id, -40.0, bb_api.BB_AUTO_ATTEN); bb_api.bbConfigureGain(id, bb_api.BB_AUTO_GAIN); bb_api.bbConfigureIQ(id, bb_api.BB_MIN_DECIMATION, 4.0e6); //bandwidth hz status = bb_api.bbInitiate(id, bb_api.BB_STREAMING, bb_api.BB_STREAM_IQ); if (status != bbStatus.bbNoError) { txtResults.Text += "Error: Unable to initialize BB60 for streaming\n"; txtResults.Text += bb_api.bbGetStatusString(status) + "\n"; return; } int return_len = 0; int samples_per_sec = 0; double bandwidth = 0.0; bb_api.bbQueryStreamInfo(id, ref return_len, ref bandwidth, ref samples_per_sec); txtResults.Text += "Initialized Stream for \n"; txtResults.Text += "Samples per second: " + (samples_per_sec / 1.0e6).ToString() + " MS/s\n"; txtResults.Text += "Bandwidth: " + (bandwidth / 1.0e6).ToString() + " MHz\n"; txtResults.Text += "Samples per function call: " + return_len.ToString() + "\n"; // Alternating I/Q samples // return_len is the number of I/Q pairs, so.. allocate twice as many floats float[] iq_samples = new float[return_len * 2]; int[] triggers = new int[80]; bb_api.bbFetchRaw(id, iq_samples, triggers); txtResults.Text += "Retrieved one I/Q packet\n\n"; StringBuilder sb = new StringBuilder(); foreach(float sample in iq_samples) { sb.Append(sample.ToString() + Environment.NewLine); } File.WriteAllText("output.csv", sb.ToString()); txtResults.Text += "Closing Device\n"; bb_api.bbCloseDevice(id);
Found in Replies
Andrew posted on August 21, 2018 at 9:09 am View this postIn reply to: Compressed IQ stream
AndrewModeratorNoeldi,
Good question, and it’s a bit tricky to answer. Our waterfall plot currently is only available in the sweep mode. Each sweep is plotted on the waterfall and generally each sweep is going to take 1ms+ depending on the analyzer and settings. So that would be your minimum resolution.
To get 10us resolution in a waterfall plot, we would need to introduce the waterfall plot into the zero-span mode (or some other I/Q mode) and perform overlapping FFT’s on the IQ data. We don’t have anything like this in Spike right now.
As Justin mentioned, our max bandwidth IQ device is 40MHz right now with the SM200A, or 27 MHz with the BB60C. Both are programmable and this type of resolution is possible if you were willing to program and work with the I/Q data yourself using our API.
We are working to increase the I/Q bandwidth of the SM200A to 160MHz for up to 1 second captures. This is still in development.
Regards,
AndrewFound in Replies
Andrew posted on August 21, 2018 at 8:55 am View this postIn reply to: shr file size restrictions
AndrewModeratorYou can change the max file size allowed in the preference menu. It is limited to 1GB when running the 32-bit version of Spike.
There are several ways you could reduce file size depending on your needs, you can increase RBW, add a sweep interval, or take advantage of the decimation in time/freq on the recording toolbar.
If you need even more flexibility than what Spike provides, you could consider programming to the API directly, then you full control over the acquisition and recording process.
Regards
Found in Replies
Andrew posted on August 21, 2018 at 8:53 am View this postIn reply to: .shr file format specification
AndrewModeratorYou can change the max file size allowed in the preference menu. It is limited to 1GB when running the 32-bit version of Spike.
If you need even more flexibility than what Spike provides, you could consider programming to the API directly, then you full control over the acquisition and recording process.
Regards
Found in Topics
Anonymous
Anonymous posted on August 16, 2018 at 6:12 pm View this postis there any people ever using the i9 CPU to run BB60C by API?
Found in Topics
catalin_ro posted on July 14, 2018 at 12:45 pm View this postTopic: Linux API version
in forum BB Series DiscussionsIn the past the latest Linux API version for BB60C was 3.0.16. I see that the new “all included” release has Linux API version 3.0.5 for BB60C!!!
Found in Topics
abaker posted on July 12, 2018 at 7:22 am View this postTopic: Calling bb_api.dll from VBA
in forum BB Series DiscussionsHi All,
Has anyone tried calling the bb_api.dll from Excel VBA? We have some existing test code that communicates with several IEEE Analysers and I wanted to add the bb60C.
Currently I keep getting the error “Bad calling convention”
Regards
AndrewFound in Replies
Nazar posted on June 8, 2018 at 5:02 am View this postIn reply to: Error When Opening a Device (TG124A).
NazarParticipantHello Andrew
With your information, i was able to fix the problem. I used the bb_api as a guide, so assumed the device id had to be a reference, which was the problem.
Bad:
[DllImport(“tg_api.dll”, CallingConvention = CallingConvention.Cdecl)]
public static extern tgStatus tgOpenDevice(ref int device);Good:
[DllImport(“tg_api.dll”, CallingConvention = CallingConvention.Cdecl)]
public static extern tgStatus tgOpenDevice(int device);Thank you very much
NazarFound in Topics
Nazar posted on June 7, 2018 at 12:59 pm View this postTopic: Error When Opening a Device (TG124A).
in forum TG Series DiscussionsI wrote a short program(In c#) that uses the tg_api.dll to control the signal generator. I used the simple example provided by the SDK as a reference, but when invoking
tgOpenDevice(device)
I get a ‘-3’ error, which corresponds to tgDeviceInvalidErr
I am using ‘0’ as the device value. Is this correct? All the drivers are installed and i can run the signal generator from the Spike GUI.
Is there any more information about what can cause the error?
Found in Replies
Justin Crooks posted on May 14, 2018 at 10:57 am View this post
Justin CrooksModeratorJulian,
The BB60A will need firmware version 5 to be compatible. You can download it here: https://signalhound.com/support/product-downloads/bb60c-bb60a-downloads/The TG124A being used as a standalone generator, and amplified/modulated appropriately, should probably work for immunity testing. Depending on your needs, you may wish to low pass filter the TG output as it tends to have higher harmonics than a dedicated signal generator. You would probably want to automate it using our TG standalone API, which you can get from https://signalhound.com/products/usb-tg124a/
Found in Topics
julian posted on May 14, 2018 at 1:04 am View this posthi Signal Hound people,
1) I see the TG124A recommended for use with a mini-circuits coupler and a BB60C as a scalar network analyser.. well, I happen to have the older BB60A, and I was wondering if this setup can work with my BB60A, too?
2) Ideally if I buy a TG to use with my spectrum analyser for antenna analysis, it’d be nice to be able to use it to do immunity stuff, at least till I get around to spending the $$ on a proper signal generator.
In that case, I’d be interested in using the TG with a tekbox TBMDA1 (modulated driving amp)
https://www.tekbox.com/product/TBMDA1_Manual.pdf
From what I can see – The TG at max output is -12dBm, so if I run the TG through a 10dB attenuator, then into this, I’ll be able to get myself a signal from 40M to 3G, at 0dBm down to -18dBm (with 1k AM applied or not, via switch control on the amp) which I can then run into another bigger power amp that likes 0dBm input, to punch the signal out much bigger.Do you expect any issues that I’d have here if I was using a standard frequency scan from the Spike software (or my own software, using the API) as a basic immunity scan source? the result doesn’t have to be perfect, but it’d be nice if it was at least a bit useful for pre-compliance purposes.
Found in Replies
Andrew posted on May 1, 2018 at 1:34 pm View this postIn reply to: .shr file format specification
AndrewModeratorHi Andy,
I am attaching a folder with the example project we will be shipping for SHR parsing. The format is very similar to the BBR file except it changed the header format (still a single struct) to include all the new settings that were introduced with the SHR file format. Also, the sweeps are prefixed with a bit more information than just the timestamp. The general parsing process should be very familiar and similar.
In the future, this will be available in the standard API/SDK download, sorry I hadn’t got around to uploading it yet.
Regards,
AndrewAttachments:
You must be logged in to view attached files.Found in Replies
Maksym posted on April 24, 2018 at 1:35 am View this postIn reply to: Flirting IQ stream
MaksymParticipantHello Justin
Thank you for answer.
With “douwsampleFactor” I understood. It is clear from API Manual.
For me interested third parameter from bbConfigureIQ. It is “bandwidth”bbConfigureIQ(int device, int downsampleFactor, double bandwidth)
I tested receiving IQ stream for GSM. So I think that in BB60C exist digital filter.
Examples:
I can synchronization with GSM signal if I use:
bbConfigureIQ(int device, int downsampleFactor, 200000)
and I cannot do it if I use
bbConfigureIQ(int device, int downsampleFactor, 2000000)
Because I have mixed with others GSM channel.
But if use “bandwidth” = 2000 I can synchronization with GSM signal. So I don’t fill difference between 2000 and 200000.
Probably parameter “bandwidth” has some limit for low value.
Can you give me some description?
Because I cannot find it in API Manual.Found in Replies
hendorog posted on April 22, 2018 at 2:58 pm View this postIn reply to: SA124B Minimum phase noise
hendorogParticipantThanks for the insights, much appreciated.
I grabbed the old API, and will have a play with it – minor issue was the Legacy API manual is linked to the Headless API manual on the SH.com website. The SH.eu website had a copy though.
SM200A – one day 🙂
Found in Replies
Justin Crooks posted on April 20, 2018 at 10:15 am View this postIn reply to: SA124B Minimum phase noise
Justin CrooksModeratorUsing our legacy API, the device can be configured to use the 2.9 MHz IF (hung mixer mode). You would have to use a higher frequency than 5 MHz (something like 15 MHz at least). I’m not sure it would get you significantly better numbers, but it might give you a few more dB.
There is probably enough RF-to-IF leakage in the mixer that you could use this mode (SHAPI_Configure, use 2.9 MHz IF set to true) and inject your signal directly at 2.92 MHz (at a higher amplitude). This is the closest to direct ADC access the SA series offers.
These are just my thoughts, and may not work, but if you give it a try let me know what you find. The BB60C has more direct ADC access, but realistically, the SM200A would be the ideal choice.
Found in Replies
Justin Crooks posted on March 23, 2018 at 3:08 pm View this postIn reply to: CPU Specifications to use multiple SA44B
Justin CrooksModeratorPritam,
Our API supports a maximum of 8 per computer. Keep in mind that the USB high speed bus is a shared bus, so you probably can’t even have 8 SA44B devices all streaming at the same time, unless you were decimating the data heavily.A possible setup, if you need 24 USB-SA44B’s simultaneously streaming to one PC, would be to have 7 PCs in a network. Use 6 PCs to connect to 4 SA44B’s each, and each stream their data to the 7th PC. It would be a bit of a project, but any project that requires 24 spectrum analyzers is going to be a bit of work anyway.
Found in Topics
Anonymous
Anonymous posted on March 19, 2018 at 2:24 am View this postTopic: set SwpTime using API
in forum SA Series DiscussionsHow to set SwpTime to capture for SA_IQ mode using SA44B C#.NET API?
Found in Topics
vanderbasaran posted on March 9, 2018 at 12:23 am View this postTopic: Compressed IQ stream
in forum SM Series DiscussionsIn the API document it is mentioned that Compressed IQ streaming is not implemented yet. What is the plan here?
- AuthorSearch Results