Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Discrete FSK modulator/demodulator

Status
Not open for further replies.

neazoi

Advanced Member level 6
Joined
Jan 5, 2008
Messages
4,122
Helped
13
Reputation
26
Reaction score
15
Trophy points
1,318
Location
Greece
Activity points
36,951
I would like to build a simple 1200 baud asynchronous modem out of discrete components (simplest possible) for my project **broken link removed**

I have found this paper and on figure 15, it describes a way which seems easier to me to implement using discrete components. The non-coherent fsk demodulation seems feasible to me for the demodulation, which I think it's the hardest part.


Have you ever seen such projects in magazines or on the net, so I won't start from scratch?

Any other ideas/simulations would greatly appreciated.


Regards
 

Attachments

  • FSK.pdf
    120.7 KB · Views: 338

Independently filtering the two tones will certainly work but bear in mind for radio purposes they are typically 170Hz apart so you need some very narrow band and sharp edged filters to split them. If the tones are within the audio range I would suggest using them to modulate a HF oscillator then using two quartz crystals to filter the resulting output frequencies. You will have difficulty achieving the very high 'Q' needed with discrete component audio filters without them ringing.

1200 Bauds FSK modems can of course use any frequency pair if you are linking point to point with wires but consider the bandwidth needed if you intend to use phone lines or radio links.

Brian.
 

    neazoi

    Points: 2
    Helpful Answer Positive Rating
Independently filtering the two tones will certainly work but bear in mind for radio purposes they are typically 170Hz apart so you need some very narrow band and sharp edged filters to split them. If the tones are within the audio range I would suggest using them to modulate a HF oscillator then using two quartz crystals to filter the resulting output frequencies. You will have difficulty achieving the very high 'Q' needed with discrete component audio filters without them ringing.

1200 Bauds FSK modems can of course use any frequency pair if you are linking point to point with wires but consider the bandwidth needed if you intend to use phone lines or radio links.

Brian.

Thanks! converting to RF is a nice idea, more complex though but one that should work.

I am thinking 2 multiple feedback BPFs, one passing the mark and the other the space frequencies. Then at their outputs simple envelope detectors, then at their outputs, a compactor. The filters must be quite sharp to pass only the space and the mark each.
I have experimented in the past with multiple feedback BPFs using discrete transistors and when cascaded, these were really sharp. I used them on my RXs in in the audio path and they sounded like very narrow CW IF filters (seashell tone) and touchy on tuning (narrow). So I believe I can achieve adequate filtering. I will use 1200Hz/2200Hz tones.

In this forum, I have also discussed a simple discrete comparator, which worked very well.

But I do not know how well the envelope detector will work at that high speed. In a previous topic, you warned me about the response of simple diode/capacitor envelope detectors on fast speeds. Maybe the key point for this to work then, will be to derive a circuit that responds quite fast to audio amplitude variations of a signal, detecting them into DC to drive the comparator. I do not want to use LM567's for this purpose really.

Apart from the above points, one may dismiss one of the two parts of the chain, just detect a tone (eg mark) and assume space is transmitted when mark is not present. I am not sure about this idea, I have to find out.
 
Last edited:

MANY years ago I built an FSK modulator/demodulator to store 'programs' from my COSMAC onto a tape recorder and back again using a 555.
As such it was very similar to your requirement. Basically the demodulator was a PLL that followed the input frequency and you used the error voltage to see if it was 'high' or 'low'.
Try a search for FSK demodulation using a 555 and you will see various circuits.
I'm not sure if you count using a 555 (or 565 or similar) as using 'discrete' components but it could well be a start.
Susan
 

    neazoi

    Points: 2
    Helpful Answer Positive Rating
MANY years ago I built an FSK modulator/demodulator to store 'programs' from my COSMAC onto a tape recorder and back again using a 555.
As such it was very similar to your requirement. Basically the demodulator was a PLL that followed the input frequency and you used the error voltage to see if it was 'high' or 'low'.
Try a search for FSK demodulation using a 555 and you will see various circuits.
I'm not sure if you count using a 555 (or 565 or similar) as using 'discrete' components but it could well be a start.
Susan
A 555 can be made discrete, so if this is a solution I might really try it. I want to send data through the GSM network, not landlines.
 

A pure envelope detector probably wouldn't work, the data rate is too close to the carrier frequency to be able to follow it without significant ripple. If you want to go down that route, use two detectors and a bistable circuit.

GSM might pose other difficulties, some frequencies are deliberately filtered out and the time multiplexing will shift the bits to some degree, making the data more difficult to recover. I suppose you know that you can use GSM as a data modem without using FSK already. Plug a phone into a USB port, using a 'full' USB cable (ie not one that only has the power wires in it) and the computer should enumerate it as a serial port. You can then use 'AT' commands to control the phone, including making calls and sending data.

Brian.
 

    neazoi

    Points: 2
    Helpful Answer Positive Rating
GSM might pose other difficulties, some frequencies are deliberately filtered out and the time multiplexing will shift the bits to some degree, making the data more difficult to recover. I suppose you know that you can use GSM as a data modem without using FSK already. Plug a phone into a USB port, using a 'full' USB cable (ie not one that only has the power wires in it) and the computer should enumerate it as a serial port. You can then use 'AT' commands to control the phone, including making calls and sending data.

Brian.

It is for my CB2 microcomputer project posted at the beginning, so it has to communicate with it not with a PC. So more than one CB2 micros can communicate between them at any part of the world through GSM. This is old style modem communication but using the GSM which is more convenient in many ways. A mixture of old tech and "newer" networks if you like.

But I was also thinking of ham radio usage, although 1200 baud is feasible only on VHF not HF. Landlines is also another option, but I will let the phone cope with the interface, I won't build one in this modem. So you know, manual calling, old style. Through GSM and modern phones, auto answering can be handled by the phone if one wants to use it as a kind of dialup service.

Anyway, I think I have solved the GSM limitations problem by transmitting dtmf tones along with the data **broken link removed** so that FSK data is not suppressed.
 

A pure envelope detector probably wouldn't work, the data rate is too close to the carrier frequency to be able to follow it without significant ripple. If you want to go down that route, use two detectors and a bistable circuit.

Brian please explain the operation of such a circuit?
 

circuit that responds quite fast to audio amplitude variations of a signal, detecting them into DC to drive the comparator. I do not want to use LM567's for this purpose really.

This ordinary bandpass filter may have sufficiently narrow bandwidth that you only need to add a diode detector and smoothing capacitor.

Then feed it to a Schmitt trigger. Peak amplitudes at center frequency should cause it to change state same as a 567 IC.

The 567 requires a certain number of cycles to pass before it locks onto its center frequency, and switches its output. By running comparisons you'll discover whether the bandpass filter responds in more or fewer cycles.

Sine sweep covers 30% to each side of the center frequency.

bandpass filter 2 caps 1 opamp 1k ctr freq sine sweep 700-1300.png
 

Brian please explain the operation of such a circuit?
Consider that if you use say 1200/2400Hz and 1200 Bauds, there will only be ONE cycle of audio at 1200Hz and HALF a cycle at 2400Hz, if you try to rectify and store the result in a 'smoothing' capacitor it won't have time to charge up and discharge. This is why other modulation/demodulation systems are used as the speed increases in a limited bandwidth.

Brian.
 

Consider that if you use say 1200/2400Hz and 1200 Bauds, there will only be ONE cycle of audio at 1200Hz and HALF a cycle at 2400Hz, if you try to rectify and store the result in a 'smoothing' capacitor it won't have time to charge up and discharge. This is why other modulation/demodulation systems are used as the speed increases in a limited bandwidth.

Brian.
So there is absolutely no way of doing it at these speeds using this filter/detector method?
How about the previous post method BradtheRad had shown?
Also, how about this discrete comparator dana has posted https://www.edaboard.com/threads/rf-detector-with-my-comparator.396013/#post-1701310 instead of the envelope detector? This has no capacitor to charge.
--- Updated ---

This ordinary bandpass filter may have sufficiently narrow bandwidth that you only need to add a diode detector and smoothing capacitor.

Then feed it to a Schmitt trigger. Peak amplitudes at center frequency should cause it to change state same as a 567 IC.

The 567 requires a certain number of cycles to pass before it locks onto its center frequency, and switches its output. By running comparisons you'll discover whether the bandpass filter responds in more or fewer cycles.

Sine sweep covers 30% to each side of the center frequency.

View attachment 167547


Thanks!
I was also thinking of the multiple feedback bandpass filter here. See this calculator tool **broken link removed**
I have used it to create 2 filters of high Q for 1200 and 2200Hz by just altering the input resistor. Please insert my values of the resistors and capacitors and tell me if the parameters look fine to you. There are some figures that I do not understand (damping etc). But the Q seems high.
 

Attachments

  • 1200Hz-a.JPG
    1200Hz-a.JPG
    113.9 KB · Views: 162
  • 2200Hz-a.JPG
    2200Hz-a.JPG
    112.4 KB · Views: 167

Try it and see but you will find you can make almost any theoretical 'Q' and frequency in a simulation but making it work in real life is a different matter. Very low value input resistors followed by very high gain is a recipe for instability and loading problems.

If I was forced to design an FSK demodulator in discrete components I think I would go down the PLL and lock detector route or a PLL and coincidence detector.

Brian.
 

Just a thought, but PLLs are popular for fm work. But they suffer from
lasrge latency, eg. number of cycles to achieve lock. But if you use
reciprocal counting techniques to measure PW, thereby frequency,
you easily achieve 1 cycle latency. Of course this requires a freq/T
counter, and a properly extracted and conditioned input to the counter.
BPF takes care of most of that.

There is always Foster Seeley detector, or the ratio detector approach.


Another very interesting approach -




Regards, Dana.
 

Try it and see but you will find you can make almost any theoretical 'Q' and frequency in a simulation but making it work in real life is a different matter. Very low value input resistors followed by very high gain is a recipe for instability and loading problems.

If I was forced to design an FSK demodulator in discrete components I think I would go down the PLL and lock detector route or a PLL and coincidence detector.

Brian.

I can imagine there is much difference from theory to pragtice, but I did so in order to aboid having to cascade more such filters. I do not know how well will it work in a single stage or if it turns out to be an oscillator. But I have to test it to know for sure.
I have chosen to vary the input resistor, to not reduce gain much, but the shunt resistor can be altered instead, with the same effect in the frequency and Q, if one wants to preserve stability. But I have to do real life tests.

I think that the PLL idea requires so many components that wouldn't worth it...
--- Updated ---

Just a thought, but PLLs are popular for fm work. But they suffer from
lasrge latency, eg. number of cycles to achieve lock. But if you use
reciprocal counting techniques to measure PW, thereby frequency,
you easily achieve 1 cycle latency. Of course this requires a freq/T
counter, and a properly extracted and conditioned input to the counter.
BPF takes care of most of that.

There is always Foster Seeley detector, or the ratio detector approach.


Another very interesting approach -




Regards, Dana.


Thanks so much for this video! Now I know how to build a transformerless FM detector.
I am trying to think of how this could apply to the fsk demodulator.

Perhaps input audio filters are not needed in this technique, cause the pulse counter will respond to both input frequencies, with different output pulse widths at once. How does this sound?
In fact, what you describe, is the FM detector type FSK demodulator the paper in post 1 mentions, with a simple FM detector implementation.
Since it's primary usage is through GSM, I think that this should be enough (no interference). So I am trying to think of how the decision slicer https://www.edaboard.com/threads/rf-detector-with-my-comparator.396013/#post-1701310 would be connected to it?
 
Last edited:

I can imagine there is much difference from theory to pragtice, but I did so in order to aboid having to cascade more such filters. I do not know how well will it work in a single stage or if it turns out to be an oscillator. But I have to test it to know for sure.
I have chosen to vary the input resistor, to not reduce gain much, but the shunt resistor can be altered instead, with the same effect in the frequency and Q, if one wants to preserve stability. But I have to do real life tests.

I think that the PLL idea requires so many components that wouldn't worth it...
--- Updated ---




Thanks so much for this video! Now I know how to build a transformerless FM detector.
I am trying to think of how this could apply to the fsk demodulator. Well, we do not have the IF now, we do it directly in audio so we should expect a larger deviation, but I am considering the first limitation out of the 3 that he mentions.
How about using this average voltage produced by this detector on a comparator?
But where would the input of this pulse demodulator will be connected, to both filter outputs?

The input to the discriminator takes the modulated FM right out of the mixer, so only filter
was a simple LPF to extract the down mixed fm from its mixer harmonics. Thats then fed to the
two transistor pulse to audio circuit. In other words deviation to DC value, in his example music.

1613400367905.png



Regards, Dana.
 

Thats then fed to the
two transistor pulse to audio circuit. In other words deviation to DC value, in his example music.
Regards, Dana.

So could I just simply fed the output of this two transistor fm demodulator to your comparator input https://www.edaboard.com/threads/rf-detector-with-my-comparator.396013/#post-1701310 to convert it to digital data stream?

Remember, my input is two tones audio, not radio, so the pulse counter will work in the audio frequency spectrum directly, generating the relevant pulse widths as the audio frequency changes.
 

So could I just simply fed the output of this two transistor fm demodulator to your comparator input https://www.edaboard.com/threads/rf-detector-with-my-comparator.396013/#post-1701310 to convert it to digital data stream?

Remember, my input is two tones audio, not radio, so the pulse counter will work in the audio frequency spectrum directly, generating the relevant pulse widths as the audio frequency changes.

Yes, you have two deviations (tones), and out of this circuit will be two dc values you can feed
to a comparator to discriminate between tones (which have been mapped to distinct
DC values). There is of course a design consideration of what the DC values are, they are
derived from duty cycle, and fact you will be using CMOS, probably at 5 V, out of comparator.
Note comparator has to look at duty cycle integrated to get DC to compare against to determine
which tone, so latency is involved. Or you use a reciprocal counter implementation to measure the
duty cycle to determine which tone. Personally i would go that route, use a micro, to do that. That
latency is 1 cycle of the tone being sent.

Also keep in mind a carrier freq is needed for the mixer, so you have error considerations deviation
of Tx carrier from recovery carrier used in mixer.


Regards, Dana.
--- Updated ---

I can imagine there is much difference from theory to pragtice, but I did so in order to aboid having to cascade more such filters. I do not know how well will it work in a single stage or if it turns out to be an oscillator. But I have to test it to know for sure.
I have chosen to vary the input resistor, to not reduce gain much, but the shunt resistor can be altered instead, with the same effect in the frequency and Q, if one wants to preserve stability. But I have to do real life tests.

I think that the PLL idea requires so many components that wouldn't worth it...
--- Updated ---




Thanks so much for this video! Now I know how to build a transformerless FM detector.
I am trying to think of how this could apply to the fsk demodulator. Well, we do not have the IF now, we do it directly in audio so we should expect a larger deviation, but I am considering the first limitation out of the 3 that he mentions.
How about using this average voltage produced by this detector on a comparator?
But where would the input of this pulse demodulator will be connected, to both filter outputs?

The input to the discriminator takes the modulated FM
 
Last edited:

    neazoi

    Points: 2
    Helpful Answer Positive Rating
Yes, you have two deviations (tones), and out of this circuit will be two dc values you can feed
to a comparator to discriminate between tones (which have been mapped to distinct
DC values). There is of course a design consideration of what the DC values are, they are
derived from duty cycle, and fact you will be using CMOS, probably at 5 V, out of comparator.
Note comparator has to look at duty cycle integrated to get DC to compare against to determine
which tone, so latency is involved. Or you use a reciprocal counter implementation to measure the
duty cycle to determine which tone. Personally i would go that route, use a micro, to do that. That
latency is 1 cycle of the tone being sent.

Also keep in mind a carrier freq is needed for the mixer, so you have error considerations deviation
of Tx carrier from recovery carrier used in mixer.


Regards, Dana.
--- Updated ---



The input to the discriminator takes the modulated FM

Dana, I understand what you said. But note that my circuit does not work on RF, so there is nothing to downconvert. There are audio tones directly (AFSK) which I convert into DC for the comparator to reconstruct the data stream. I will do some experiments, to see how it works, but I like this idea because of the abscence of input filters wich make the circuit unnecessary more complex.
 

There is a danger here of thinking of the FSK as being one continuous frequency or the other continuous frequency. A 'pulse counting' discriminator will indeed generate a voltage proportional to the frequency but in this instance the frequency may be switching between high and low at a rate of less than one cycle. The resulting pulse stream will just be the edges of the audio cycles and it would be impossible to average them, in fact the average would be the the center frequency of the FSK, not the two component frequencies.

I think a PLL is feasible but it would be complicated. It would need a VCO running somewhere between the FSK frequencies, a phase detector and a filter loop. The idea would be that the VCO tracks the center frequency between the FSK tones and the instantaneous error voltage fed to the loop would be either a high or low voltage representing the individual frequency it sees. There is a 'lock up' time but that isn't the same as the detection time which would be almost instant. Even the lock up time should only be a few hundred mS.

Brian.
 

    neazoi

    Points: 2
    Helpful Answer Positive Rating
Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top