I need to implement an ASK (ampliltude shift keying) demodulation using a DSP ( a dsPIC ) and programming in C. Especifically talking, I need to demodulate a signal from a car's key transponder. I already have a circuit of antenna that receive the signal and I already can sample it, but I still have a doubt of how could be the best way, faster and reliable, to filter the signal. I was using a FIR filter using Kaiser windowing and 13 taps, but it demanded a lot of processing time and I still have some errors. Is there a better way to do it ?

With my best regards, Daniel.

  • $\begingroup$ Could you start with analog down conversion? What A/D are you using? How you implement the multiplication for the FIR? What is your sampling rate? Could you implement digital down conversion? $\endgroup$
    – Moti
    Mar 15, 2016 at 5:27

1 Answer 1


In general, a receiver would consist of these blocks:

  1. An analog band-pass filter centered around the carrier frequency.
  2. A low-noise amplifier to bring the signal above the receiver's sensitivity.
  3. Optionally, an analog intermediate frequency stage.
  4. A sampler. You can do bandpass sampling if the carrier frequency is too large for the ADC.
  5. In a DSP, implement:
    • Final downconversion if needed.
    • Downsampling to reduce the sampling rate
    • Carrier, frame and symbol synchronization
    • Matched filtering to recover the bits with optimum BER (in the case of ASK with rectangular pulse shaping, the matched filter is just an integrate & dump filter)

I highly recommend that you get and read Telecommunications Breakdown, by Johnson and Sethares, which is available for free (as a draft) from the authors' website: C. R. Johnson, W. A. Sethares - Telecommunication Breakdown - Concepts of Communication Transmitted via Software-Defined Radio.

  • $\begingroup$ Thnak you very much!! Sorry for the delayed answer. I needed to stop the project and now I'm starting again in my free time only. $\endgroup$
    – Daniel
    Jul 20, 2016 at 14:51
  • $\begingroup$ I liked your recomendations and the book reference, I noticed that I was not performing downconversion. I'm performing the sampling at 900Khz and the signal of interest has a 30kHz base band and has a carrier frequency of 125kHz. The carrier is generated in the own base station that I'm implementing and the transponder modulates it by load modulation. So I was wondering how to do a digital multiplication of the samples by a cosine wave to perform downconversion. $\endgroup$
    – Daniel
    Jul 20, 2016 at 15:11
  • $\begingroup$ @Daniel The trick is to generate a sine wave of the same frequency and phase as the transmitter's. You need to perform carrier synchronization to find the frequency and phase, and then use those to downcovert. $\endgroup$
    – MBaz
    Jul 20, 2016 at 16:55
  • $\begingroup$ I'm performing downconversion via sampling. The received signal has a carrier frequency of 125 kHz modulated with a 30kHz that is the signal of interest, so, I sampled the received signal with a tax rate of 62,5kHz that is the half of the frequency of the carrier. $\endgroup$
    – Daniel
    Oct 21, 2016 at 13:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.