Design of a direct conversion AM receiver
A direct conversion receiver is proposed because of its simplicity of implementation, and is presented in Figure 1. As this simple design lacks an automatic gain control (AGC) stage, the listening level of stations will depend on the power level received at the antenna. Detailed specifications are given in order to help determine the parameters required at the PIM, and the information that should be present in the mapping file. The designed blocks are plattform specific to the Xilinx Virtex 4 FPGA.
Figure 1. Block diagram of the proposed AM receiver.
Design
The following are the FCC specifications for AM radio stations in the US:
- Carrier frequency: 525 - 1705 KHz
- Channel bandwidth: 10 kHz
- Modulation index (μ): 85 to 95%
- Audio response: 100 Hz - 5 kHz ± 2dB
The system design parameters for a Xilinx Virtex 4 FPGA are the following:
- System clock frequency: 200 MHz
- Sampling frequency: 4 MHz
- Bit precision at the modules: 16 bits. All the modules are designed using Xilinx' Core Generator.
NCO Design
The numerical controlled oscilator (or direct frequency sinthesizer, DSS) is designed in Core Generator using the following parameters:
- Function: Sine and cosine
- DDS Clock Rate: 4 MHz
- Spourious Free Dynamic Range: 42 dB
- Frequency Resolution: 2 Hz
- Number of channels: 1
- Handshaking: RDY and RFD pins on.
- Pipelining: on
The design summary indicates an output width of 8 bits, data width of 21 bits and latency of 2 clock cycles. These values are outputs of the tool.
Multiplier design
Considering the sine and cosine bit width of 7 bits and the ADC width of 14 bits (implying a 20 bit output in signed arithmetic), a paralell multiplier is designed to output the 16 most significant bits (bits 20:5).
Decimating filter design
Band pass filter zero is required due to limitations on the hardware lowpass filters at the laboratory. As the lowest cuttoff frequency filter in the lab is at 5 MHz, a sampling frequency of 12 MHz is chosen at the system input. A Matlab m-file was created to receive the user specifications and generate the coefficients (.coe) file required by Core Generator for an equiripple symetric FIR filter.
Filter 0 has the following specifications:
| Filter specification |
Value |
| Bit width of coefficients |
16 bits |
| Sampling frequency |
12 MHz |
| Stop frequency 1 |
325 kHz |
| Pass frequency 1 |
525 kHz |
| Pass frequency 2 |
1705 kHz |
| Stop frequency 2 |
1905 kHz |
| Gain tolerance at passband |
1 dB |
| Gain tolerance at stopband |
60 dB |
| Downsampling rate |
3 |
Filters 1 and 2 share the same module definition, with the following specifications:
| Filter specification |
Value |
| Bit width of coefficients |
16 bits |
| Sampling frequency |
4 MHz |
| Pass frequency |
20 kHz |
| Stop frequency |
40 kHz |
| Gain tolerance at passband |
1 dB |
| Gain tolerance at stopband |
40 dB |
| Downsampling rate |
20 |
The next filtering stage is then executed at 200 kHz. Specifications for filters 3 and 4 are following:
| Filter specification |
Value |
| Bit width of coefficients |
16 bits |
| Sampling frequency |
200 kHz |
| Pass frequency |
5 kHz |
| Stop frequency |
6 kHz |
| Gain tolerance at passband |
1 dB |
| Gain tolerance at stopband |
40 dB |
| Downsampling rate |
10 |
After the second stage of filtering/decimation we will get a complex representaion of the baseband signal. Calculation of the vector magnitude will provide the baseband modulating signal in the form Ac[1 + μm(t)], where Ac is a constant proportional to the pilot signal, and Acμm(t) corresponds to the message signal. The power of the first term indicates the relative power of the radio station, to be used in the future for the AGC implementation. Care must be taken to keep a sampling frequency of 20 kHz at the magnitude stage. The reason is that squaring doubles the bandwidth of the signal.
Finally, a bandpass filter is applied to the magnitude signal. The purpose of this filter is to take away the low frequency components, and refine the filtering of the high frequency component. The specifications of this filter are:
| Filter specification |
Value |
| Bit width of coefficients |
16 bits |
| Sampling frequency |
20 kHz |
| Stop frequency 1 |
20 Hz |
| Pass frequency 1 |
100 Hz |
| Pass frequency 2 |
5000 Hz |
| Stop frequency 2 |
5080 kHz |
| Gain tolerance at passband |
1 dB |
| Gain tolerance at stopband |
40 dB |
| Downsampling rate |
1 |
In order to implement a constant bit width at the module interfaces, Matlab is used to calculate the number of bits required for full precision. This calculation is required because Core Generator overestimates this quantity by using only the size of the filter to calculate the output bit width. For this particular design, the results imply to keep bits [36:21] of the output.
As an example, the following are the Core generator parameters for the filters 1 and 2:
- Filter type: Polyphase decimator
- Decimation factor: 20
- Channels: 1
- Taps: 285
- Impulse response: Symmetric
- Coefficient width: 16
- Coefficient type: Signed
- Coefficient buffer type: Block memory
- Input data: 16 bits, signed
- Data buffer type: Block RAM.
- System clock rate: 200 MHz.
- Input sample rate: 4 MHZ
- Registered output.
The designed filter will deliver 41 bit wide output (otuput bits are not configurable in MAC FIR Filter tool), so externally, bits [36:21] are selected. According to the results of the Matlab calculation.
Squaring module design
A multiplier works as a squaring block. As the inputs have the same sign, the output can be configured to be unsigned keeping bits [30:16] in case the multiplier does not replicate the sign bit, or bits [29:15] in case it does. Experimentation with the multiplier is pending to clarify this issue.
Square root module design
Square root module in Core Generator uses CORDIC algorithms to perform the calculation. Unsigned fraction format is used to describe input/output of the module.
AM Stations in the Blacksburg area
The following is a useful summary of AM radio stations in a 40 km perimeter of Blacksburg according to the FCC, usable to test the receiver:
| Name of Station |
Frequency |
Time |
City |
Power |
| WVBE |
610 kHz |
Daytime |
ROANOKE |
5.0 kW |
| WVBE |
610 kHz |
Nighttime |
ROANOKE |
1.0 kW |
| WVBE |
610 kHz |
Daytime |
ROANOKE |
10.0 kW |
| WVBE |
610 kHz |
Nighttime |
ROANOKE |
2.5 kW |
| WFNR |
710 kHz |
Daytime |
BLACKSBURG |
10.0 kW |
| WPIN |
810 kHz |
Daytime |
DUBLIN |
4.2 kW |
| WKNV |
890 kHz |
Daytime |
FAIRLAWN |
10.0 kW |
| WFIR |
960 kHz |
Daytime |
ROANOKE |
10.0 kW |
| WFIR |
960 kHz |
Nighttime |
ROANOKE |
4.8 kW |
| WNRV |
990 kHz |
Daytime |
NARROWS-PEARISBURG |
5.0 kW |
| WNRV |
990 kHz |
Nighttime |
NARROWS-PEARISBURG |
0.01 kW |
| WGFC |
1030 kHz |
Daytime |
FLOYD |
1.0 kW |
| WGMN |
1240 kHz |
Unlimited |
ROANOKE |
1.0 kW |
| WWVT |
1260 kHz |
Daytime |
CHRISTIANSBURG |
5.0 kW |
| WWVT |
1260 kHz |
Nighttime |
CHRISTIANSBURG |
0.025 kW |
| WBLB |
1340 kHz |
Daytime |
PULASKI |
1.0 kW |
| WBLB |
1340 kHz |
Nighttime |
PULASKI |
1.0 kW |
| WRIS |
1410 kHz |
Daytime |
ROANOKE |
5.0 kW |
| WRIS |
1410 kHz |
Nighttime |
ROANOKE |
0.072 kW |
| WKEX |
1430 kHz |
Daytime |
BLACKSBURG |
1.0 kW |
| WKEX |
1430 kHz |
Nighttime |
BLACKSBURG |
0.062 kW |
| WRAD |
1460 kHz |
Daytime |
RADFORD |
5.0 kW |
| WRAD |
1460 kHz |
Nighttime |
RADFORD |
0.5 kW |
| WTOY |
1480 kHz |
Daytime |
SALEM |
5.0 kW |
| WTOY |
1480 kHz |
Nighttime |
SALEM |
0.02 kW |
Data obtained from:
www.fcc.gov. AM Query in website:
http://www.fcc.gov/mb/audio/amq.html
Search parameters:
- State: VA
- Search radius: 40.00 km
- Center lat / lon: N 37 13 48.00 W 80 25 4.00
- Lower Frequency 530 kHz
- Upper Frequency 1700 kHz
--
AdolfoRecio - 24 Apr 2008