• 0

# Amplitude shift-keying

## Question

Hi im new to this and im learning and working on a project "amplitude shift-keying" or on-off keying with bandbass filter
Many thanks

## Recommended Posts

• 0

I suppose you could try my dissertation.  The background section should hit the topic fairly well.

In sum, modulation (converting bits to waveform) works as:

• These are typically mapped to +/- 1 for binary phase shift keying.  For on-off keying, you can map them to the set of { 0, 1 }.  For amplitude shift keying, you might choose to map two bits at a time to create the symbols { -3, -1, 1, 3 }, or 3 bits at a time to create { -7, -5, -3, -1, 1, 3, 5, 7 }.  (I call these symbols d_n in my dissertation--they're the data bearing sequence).  Note that these symbols are discrete in time.
• To make them continuous, apply a filter.  This is typically some type of low pass filter.  The bandwidth typically needs to be greater than half your symbol rate.  The result is your "baseband" signal.
• To broadcast this, you'll need to move it from baseband to a frequency that an antenna can use.  For this, you'd multiply by a high frequency sine wave of some type.

But how to recover your bits from an incoming waveform?

• Multiply the incoming waveform by a second sinewave, one at approximately the frequency of interest.  This second sine wave is often called a "local oscillator."  Ideally, it would be identical to the one you used to transmit with.  In practice, there will be both frequency and phase offsets.  The product of this multiplication will be a signal at baseband, perhaps slowly rotating, and one at twice the incoming frequency.
• Apply a lowpass filter to remove the signal at twice the incoming frequency.  Typically, this will be the same lowpass filter you used in transmit.  In a white noise environment, such a filter would also be a "matched" filter.  (The dissertation will discuss how to choose the "best" filter here.  Many implementations use adaptive filters as well to handle intersymbol interference.)
• Next, you'll need symbol lock.  My favorite approach is to square the signal (keep your original--you'll still need that), and then use a tight band pass filter centered around your symbol rate.  Where this bandpass filter result is at its peak is where you'll want to sample the un-squared signal.  (The dissertation uses "tau" to represent this sampling offset.  Solving for tau should be apparent from the discussion within.)
• The result of the last step should lie on a (rough) circle plus noise.  If you started with +/- 1, it will be a single circle.  If you started with { 0, 1 }, you'll be looking at a circle and a point in the center.  (It'll look more like a blob if there was any noise in the channel.)  If you started with { -3, -1, 1, 3 } you'll be looking at two circles, etc.  These circles (and points) will be blurred by any noise on your channel.  If you knew your incoming frequency exactly, then you'll have points on a line at this spot--if not, you'll still have circles.
• The next step is to achieve carrier lock.  This may require a PLL and a tracking loop.  Look at the phase of an incoming signal.  Multiply the signal by the negative of that phase.  On the next step, look at the phase again.  It should be close to the previous one.  Average the two phases, and multiply that incoming symbol by the conjugate.  Keep repeating.  This should put all of your symbols back on a real line.  (They'll still have noise and a scale factor applied to them.  You'll need to remove these.)
• The next step is to track amplitude.  Multiply the incoming signal by (pick a value), and then adjust that value as necessary to make the average incoming (absolute) value an appropriate constant.  For +/- 1, this step is unnecessary--just map straight to +/- 1.  For a symbol set of { 0, 1 }, this average incoming value will become your decision threshold.  (i.e., if the incoming data > your threshold, declare it to be a '1', and a '0' otherwise).  For a symbol set of { -3, -1, 1, 3 }, this average value should be a (rough) equivalent to '2', and thus your decision threshold to know when something is a |1| or |3|.  (Sign will give you whether it's positive or negative.)
• Use the decision threshold to map your data back to bits.  (i.e., if the value is greater than 2 map to 3, if less than two but greater than 0 then map to 1, etc.  Then map back from the { -3, -1, 1, 3 } set to the original bits that generated that set.)

This will leave you with two issues still to deal with: 1) your data may be inverted from what you want.  That is, a "+1" may have mapped to a "-1".  2) You won't necessarily know which is the "first" bit in any message.  Typically some type of channel encoding above the modulation layer is used to resolve these ambiguities.

Voila!  ASK modulation and demodulation in a nutshell.

Beware, the devil's in the details.

Dan

##### Share on other sites

• 0
22 hours ago, D@n said:

I suppose you could try my dissertation.  The background section should hit the topic fairly well.

In sum, modulation (converting bits to waveform) works as:

• These are typically mapped to +/- 1 for binary phase shift keying.  For on-off keying, you can map them to the set of { 0, 1 }.  For amplitude shift keying, you might choose to map two bits at a time to create the symbols { -3, -1, 1, 3 }, or 3 bits at a time to create { -7, -5, -3, -1, 1, 3, 5, 7 }.  (I call these symbols d_n in my dissertation--they're the data bearing sequence).  Note that these symbols are discrete in time.
• To make them continuous, apply a filter.  This is typically some type of low pass filter.  The bandwidth typically needs to be greater than half your symbol rate.  The result is your "baseband" signal.
• To broadcast this, you'll need to move it from baseband to a frequency that an antenna can use.  For this, you'd multiply by a high frequency sine wave of some type.

But how to recover your bits from an incoming waveform?

• Multiply the incoming waveform by a second sinewave, one at approximately the frequency of interest.  This second sine wave is often called a "local oscillator."  Ideally, it would be identical to the one you used to transmit with.  In practice, there will be both frequency and phase offsets.  The product of this multiplication will be a signal at baseband, perhaps slowly rotating, and one at twice the incoming frequency.
• Apply a lowpass filter to remove the signal at twice the incoming frequency.  Typically, this will be the same lowpass filter you used in transmit.  In a white noise environment, such a filter would also be a "matched" filter.  (The dissertation will discuss how to choose the "best" filter here.  Many implementations use adaptive filters as well to handle intersymbol interference.)
• Next, you'll need symbol lock.  My favorite approach is to square the signal (keep your original--you'll still need that), and then use a tight band pass filter centered around your symbol rate.  Where this bandpass filter result is at its peak is where you'll want to sample the un-squared signal.  (The dissertation uses "tau" to represent this sampling offset.  Solving for tau should be apparent from the discussion within.)
• The result of the last step should lie on a (rough) circle plus noise.  If you started with +/- 1, it will be a single circle.  If you started with { 0, 1 }, you'll be looking at a circle and a point in the center.  (It'll look more like a blob if there was any noise in the channel.)  If you started with { -3, -1, 1, 3 } you'll be looking at two circles, etc.  These circles (and points) will be blurred by any noise on your channel.  If you knew your incoming frequency exactly, then you'll have points on a line at this spot--if not, you'll still have circles.
• The next step is to achieve carrier lock.  This may require a PLL and a tracking loop.  Look at the phase of an incoming signal.  Multiply the signal by the negative of that phase.  On the next step, look at the phase again.  It should be close to the previous one.  Average the two phases, and multiply that incoming symbol by the conjugate.  Keep repeating.  This should put all of your symbols back on a real line.  (They'll still have noise and a scale factor applied to them.  You'll need to remove these.)
• The next step is to track amplitude.  Multiply the incoming signal by (pick a value), and then adjust that value as necessary to make the average incoming (absolute) value an appropriate constant.  For +/- 1, this step is unnecessary--just map straight to +/- 1.  For a symbol set of { 0, 1 }, this average incoming value will become your decision threshold.  (i.e., if the incoming data > your threshold, declare it to be a '1', and a '0' otherwise).  For a symbol set of { -3, -1, 1, 3 }, this average value should be a (rough) equivalent to '2', and thus your decision threshold to know when something is a |1| or |3|.  (Sign will give you whether it's positive or negative.)
• Use the decision threshold to map your data back to bits.  (i.e., if the value is greater than 2 map to 3, if less than two but greater than 0 then map to 1, etc.  Then map back from the { -3, -1, 1, 3 } set to the original bits that generated that set.)

This will leave you with two issues still to deal with: 1) your data may be inverted from what you want.  That is, a "+1" may have mapped to a "-1".  2) You won't necessarily know which is the "first" bit in any message.  Typically some type of channel encoding above the modulation layer is used to resolve these ambiguities.

Voila!  ASK modulation and demodulation in a nutshell.

Beware, the devil's in the details.

Dan

Thanks for your information but i dont know how to run or create it on "waveform" using AD2, can you teach me how to create ASK on it, im appreciate
Many thanks

##### Share on other sites

• 0

Sorry, not much of an AD2 user myself.  Instead, I do most of my DSP work either in C++ on my computer via sampled data, or on an FPGA--my tool of choice these days.  Your original question wasn't specific to the AD2--hence my answer.  Perhaps someone else will offer some insights.

##### Share on other sites

• 0
17 minutes ago, D@n said:

Sorry, not much of an AD2 user myself.  Instead, I do most of my DSP work either in C++ on my computer via sampled data, or on an FPGA--my tool of choice these days.  Your original question wasn't specific to the AD2--hence my answer.  Perhaps someone else will offer some insights.

Its ok and thanks for your helping, im apperciate it

## Create an account

Register a new account

×

• #### Activity

• Idea Space
×
• Create New...