Digital Receivers [CNW:Counter]

Digital receiver RX2A2D (rev.B)

This work was supported by the grant of the Grant Agency of the Czech Republic No.102/02/0553.

Digital receiver RX2A2D is two-channel acquisition unit intended for nuclear magnetic resonance applications. The device is also ready to be used as a universal measurement system. Unit was designed to test properties of fast high-dynamic-range ADC. Due to low jitter, receiver can be used for digitising signals up to 200 MHz with bandwidth up to 3 MHz.


-Receiver architecture-

receiver architecture

-Receiver parameters-

Signal Input: 2x Single-ended, 1.2 V p-p into 50 Ohm (+5.5 dBm), -3dB BW 0.11 MHz to 130 MHz
Sample Clock: 15 to 66 MHz
Dynamic range: 148 dBFS/sqrt(Hz)
Harmonic distortion (2nd; 3rd; 4th to 7th): 63; 71; 80 dBc (61.5 MHz, -13 to -3 dBFS)
Jitter: 0.4 ps (internal 66 MHz clock)
Crosstalk channel to channel: > 100 dB (up to 20 MHz)
Digital Down Converter: Decimation 2 to 16384, max. pass band 1.3 MHz limited by DDC (FIR 50 taps, fs 65 MHz),min. usable pass band about 8 kHz limited by DDC (FIR decimation 16, fs 65 MHz)
FIFO: 64K (max. data block size with bypassed DDC)
DSP: 40 MIPS; Max. pass band 1 x 3.1 MHz or 2 x 1.6 MHz limited by I/O and memory operation; Int. memory 16K x 16b DM, 16K x 24b PM; Ext. memory 1M x 16b
Control and Output Data: USB 1.0 port 900 Kbytes/s
Analog Output: stereo S-D (2x 16 bits), 3 V p-p, sample rate 23.5 kHz to 46.8 kHz
Power: typ. 6.0 W

-Other features of new version-


-Detail of receiver-

receiver photo

-Software-

The receiver is completely controled from the Matlab enviroment (filter coefficients calculation, receiver parameters setting, acquiring and processing of data from receiver).
Optional software is ready for receiver cotrol from C++ through dll.

measurement in matlab


Example of Matlab output figure:
Input signal 30 MHz, sampling 66 MHz, data block 32K, output bandwidth 0.5 MHz

matlab figure

Example of Matlab script file:

% basic test script for RX2A2D

nn=8		% multiple of 4k complex samples (max. 64  <> 256 ksa complex)
N=4096*nn;	% 					per channel !!!

trx('init');
trx('ovrledrdclr');
trx('ddcreset');

trx('setddc',3);					% ddc1,2 will be active

trx('wr_mode', 1);					% soft reset

trx('wr_sync_mask',2^32-1);				% puls sets all bits

fclk=40e6;
trx('setddc',1);					% ddc1 for freq setting
flo1=210e6;
f32=round(2^32*mod(flo1,fclk)/fclk);
trx('wr_nco_freq', f32 );				% frequency

trx('setddc',2);					% ddc2 for freq setting
flo2=210e6;
f32=round(2^32*mod(flo2,fclk)/fclk);
trx('wr_nco_freq', f32 );				% frequency

trx('setddc',3);					% ddc1,2 will be active

mcic2=2;
mcic5=32;
mrcf=2;
trx('wr_mcic2-1', mcic2-1);				% decimation (128 total)
trx('wr_mcic5-1', mcic5-1);
trx('wr_mrcf-1', mrcf-1);

trx('wr_ntaps-1', 50-1);                     		% programmable FIR
trx('wr_rcf_coef', round(2^20*fir1(50-1,2*0.125))); 
trx('wr_rcfoff', 0);

trx('wr_nco_control', 0);               		% control and scales
trx('wr_nco_phase', 0);   				% phase offset =0
trx('wr_reserved', 0);
trx('wr_cic2_scale', ceil(2*log2(mcic2))-2); 		% offset=0, inv=0 
trx('wr_cic5_scale', ceil(5*log2(mcic5))-5);      
trx('wr_sout', 4);

trx('wr_mode', 0);					% go

pause(1);					
[E,d]=trx('measpdualnk',nn+1*128);		% start measurement, transfer
						% +128 -> transient is skipped


% data plot in time and frequency domain

decim=mcic2*mcic5*mrcf;
subplot(2,1,1);
x=1:300;
pwr1=10*log10(sum(abs(d(1,:)).^2))
plot(x,real(d(1,x)),x,imag(d(1,x)));
title(['DDC output -time d. (fclk=' mat2str(fclk,5) ',flo=' mat2str(flo1,3) ',decimation=' mat2str(decim) ')']);
xlabel('-> N [Ts]'); ylabel('-> LSB');
subplot(2,1,2);
x=(-N/2:(N/2-1))/N;
plot(x,20*log10(abs(fftshift(fft(d(1,:).*hanning(N)')/2/(nn/2)))));
axis([-0.5 0.5 0 160]);
title(['DDC output - frequency d. (fs=' mat2str(fclk/decim) ')']);
xlabel('-> f/fs [-]'); ylabel('-> [dB]');
grid;


More complex measurement can be made in Matlab enviroment. In this example, signal generator is controled through GPIB port using GPORT minitoolbox and digital receiver is controled through USB port using UPORT minitoolbox:

test bench


The receiver can be used in undersampling mode to acquire high-frequency and high-dynamic-range signals. In this example, signal 100 MHz (-30 dBFS) from a reference generator is acquired. Narrow-band spurious-free-dynamic-range (SFDR) is close to 100 dBc:
100 dB SFDR Home