12-10-2012 03:40 PM - edited 12-10-2012 03:41 PM
Hello Sambeiro,
What do you exactly mean with "my program demodulates although there aren't fsk signals".
Do you get any meaningful data or not?
Can you log the (raw IQ) data you read in and upload it?
Can you share the specs or the type of the antenna as well as the exact frequencies/range you are interested in?
12-11-2012 05:13 AM
Hi ThiCop,
I mean that when my devices are not working I'm sure that there aren't other fsk signals at this frequency (nobody can transmit over that frequencies, is a protected band) and my program demodulates something (it gives me a sequence of output bits)
I don't know how has to be the structure of the messages that I have to demodulate so that I don't know if it's meaningful data or not. Solely know that I should't be able to demodulate anything when the devices that I'm using (that use FSK modulation) aren't working.
I thought that the problem could be the antenna. For this reason I tried several antennas in order to see if I would obtain differents results but still demodulates something. I guess that the antenna is not the problem. What do you think it could be? I uploaded the program, can you check it?
Thank you very much in advance
12-12-2012 05:09 AM
Hello Sambeiro,
I don't really understand what you are trying to explain to me.
Are you able to demodulate FSK-modulated signals if you send them out yourself?
Is your issue/problem that your VI still continues the demodulation even if you don't have any FSK-modulated signal available?
Are you using the same synchronization bits at the sender side?
01-30-2013 04:38 AM - edited 01-30-2013 04:55 AM
Hi ThiCop,
Forget about what I told you before because I was going too fast. Firstly I have just tried to make a transceiver (without using the USRP), just connecting the output of the modulator to the input of the demodulator. I'm not able to recover the message that i'm sending. Please, can you check which could be the problem?
Let me know as soon as possible which is the answer to my problem, please.
thank you a lot
01-30-2013 11:50 AM
Hi ThiCop,
I´m going to upload the last version of my program due that today I´ve been working to solve that issue and I´ve modified some details.
If you open the program, you will be able to see that:
1. The message that I want to send is composed by three fields ("state of the frame", "message" and "end of the frame").
-The start of frame sequence is 101010100000001
-The message covers 10 bits, all "0"
-The end of frame sequence is 1111111
The appended array is the result of appending the three arrays (start of frame + message + end of frame). This is the sequence that enter to the modulator.
The array is : 10101010000000100000000001111111 (Until this point is correct)
The problem is:
The sequence at the output of the demodulator should the same than in the appended array, and it is not. The output of the demodulator is NOT the same 101010100000001000.
01-31-2013 09:06 AM
Hello Sambeiro,
The problem is that you did not wire the correct data-types to your modulation VI's.
If your VI expects a long integer to be wired to it, then please wire a long integer to it.
This can be easily done through the usage of a conversion function "to long integer".
Here's a snippet/capture of the part you'll have to adjust:
01-31-2013 02:03 PM
Hello ThiCop,
Thanks a lot for your help. I didn´t think about that!. I have just done this changes in my program but the program don´t work yet. I´m not able to recover the same message that I sent before. In some part of the program some bits are being dropped, maybe it´s due to the filter?
I upload again the program.
Thanks again for your help
02-02-2013 11:24 AM
Hi again ThiCop,
I've been investigating and I found something that could be the problem (black part)
MT Modulate FSK VI
pulse shaping filter coefficients specifies an ordered array containing the desired pulse-shaping coefficients. Wire the pulse shaping filter coefficients parameter of the MT Generate Filter Coefficients VI to this parameter. When generating the filter coefficients, ensure that the value of the pulse shaping samples per symbol parameter of the MT Generate Filter Coefficients VI is equal to the value of the samples per symbol element of the FSK system parameters cluster passed to this VI.
Note When reset? is set to TRUE, there is a transient response of half the filter length at the start of the modulated signal, and the returned output data is shortened by approximately half the filter length. When reset? is set to FALSE, the VI uses data from the previous iteration to eliminate the transient.
MT DEMODULATE FSK
matched filter coefficients specifies an ordered array containing the desired matched filter coefficients. Wire the matched filter coefficients parameter of the MT Generate Filter Coefficients VI to this parameter. When generating the filter coefficients, ensure that the value of the matched samples per symbol parameter of the MT Generate Filter Coefficients VI is equal to the value of the samples per symbol element of the FSK system parameters cluster passed to this VI.
Note When reset? is set to TRUE, there is a transient response of half the filter length at the start of the demodulated signal, and the returned data is shortened by approximately half the filter length. When reset? is set to FALSE, the VI uses data from the previous iteration to eliminate the transient.
Tip When reset? is set to TRUE, the number of trailing symbols that are carried over to the next iteration during demodulation is upper bounded by [L/2 + P/2 + 4(13 + K)]/K, where L is the matched filter length in taps, P is the pulse-shaping filter length in taps, and K is the number of samples per symbol. For typical values of L = 57, P = 25, and K = 4, this value equals 27.25 symbols. Therefore, when reset? is set to TRUE, a total of 1,028 FSK symbols must be specified to the demodulator to obtain at least 1,000 symbols at the output. This formula does not account for truncation caused by any specified synchronization parameters.
I think that this is the reason because the returned data is shortened. Which could be the solution?
Thank you very much in advance
02-04-2013 08:08 AM - edited 02-04-2013 08:09 AM
Hello Sambeiro,
I'll try to explain to you what is going wrong.
This expects you to have some filtering background.
Do you possess this?
The fact that there are filters being used has as an effect that you might have a filter delay in your code.
With a normal filter this is also the case:
- Your output sample will be an integer factor delayed compared to you input samples.
Or in other words: It takes a certain amount of time for each sample to be filtered.
In this case it's a bit more complex.
Seeing that you're always resending the same set of data without any trailing data is to be expected that your last data has not yet gone through the filter.
Especially since you're always resetting the filter.
To test this, just add a post-stream sequence and you'll see that in that case the missing data is always the same amount of samples.
This so called "missing data" is actually just data that hasn't yet gone through the filter.
Is it your goal to have a continuous stream in the final application or a stream with a finite length?
Do you have an overall design of how the sending of the data will be done?
02-04-2013 10:52 AM
Hello ThiCop,
Thanks for your answer. Yes, I have some knowledge about filters. I don´t know yet if the final application will continuosly send messages or if it will have a finite length. Could you explain me how to solve the problem in both cases? I´m really interested in know how to do it in both cases.
Thank you in advance