Home |
Search |
Today's Posts |
#2
![]() |
|||
|
|||
![]()
wrote in message
oups.com... I'm interested in building a FSK modem around a PIC microcontroller, and am wondering how most FSK receivers convert the frequency to bits. The cheap and sleazy route is what you see many people doing on PICs (and similar) for DTMF detection: To detect a frequency F1, using your ADC's digital output, multiply the digital word by sin(F1*t) and cos(F1*t). Square and add the result, so that you have (ADC_Out*sin(F1*t))^2+(ADC_Out*cos(F1*t))^2. Take the running average of what you get, and use a threshold detector to decide whether or not that frequency is prsent. The 'cheap and sleazy' part of this comes in as follows: 1) Arrange the frequencies to be, e.g., F1 and F2=2*F1. Sample at 8*F1. Now, all the sine and cosines become +/-1 -- no multiplier needed. 2) Use 'abs' rather than squaring the results -- no multiplier needed. This isn't particularly robust (it fails rapidly if the input frequencies are off -- the DTMF guys typically don't have to worry about this because DTMF generation is very well controlled), but it gets the job done when you have a relatively high SNR signal and it's very simple and fast to implement since you've gotten rid of the multiplications. For more narrowly spaced FSK detection, this still works, although you start having to build up tables of sin/cosine values -- and perform the multiplication. If you do have a hardware multiplier around in your particular PIC, this is perhaps still the way to go. If not, you start looking at what resources you do have... you can design more 'proper' digital filters with coefficients of only +/-1 and zero, although sometimes the implementation ends up being more CPU intensive than just doing software multiplies. Using a tool such as Matlab is very handy for trying our various filtering/detectoin techniques prior to having to sit down and code up the result in C or assembly for a system running in real time! ---Joel Kolstad |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
PIC operated FSK modem | Homebrew | |||
PIC operated FSK modem | Homebrew | |||
computer modem problem | Digital | |||
computer modem problem | Digital | |||
Hammarlund SP-600 how vernier tuning dials operated ? | Boatanchors |