Files
Zcu111ResmReceiver/utilities/soc_rfsoc_init.m
2026-04-29 17:07:10 -03:00

89 lines
2.1 KiB
Matlab

%% Derived from preload
fs_eff = fs_RF/IntDecFactor; % Effective fs before interpolation / after decimation
Ts_eff = 1/fs_eff;
%% Host Sample Time in Simulation
%TsHost = 5e-5;
FPGAClkRate = fs_eff/SamplesPerCycle;
TsFPGA = 1/FPGAClkRate;
%% Tx signal generator parameters
% NCO accumulator word length
NCOAccumWL = 16;
% NCO phase increment scale factor
NCOIncScale = Ts_eff*2^NCOAccumWL;
% NCO phase increments datatype
NCOIncDT = numerictype(1,NCOAccumWL,0);
% NCO counter increment datatype
NCOCountIncDT = numerictype(1,NCOAccumWL*2,NCOAccumWL);
%% Test signal parameters
% Pulse start/end frequencies
%pulseCentFreq = 0e6;
pulseBw = 40e6; % Pulse bandwidth
% Number of pulses
numPulses = 10;
% Pulse repetition interval
PRF = 7.5e3;
PRI = 1/PRF;
% Pulse time duration
%pulseT = 10; % use very long pulse help emulate CW
pulseT = 20e-6;
% CW mode (bypass pulse generation)
%CwMode = false;
% Counter mode (bypass pulse and CW generation)
%CounterMode = true;
% Output gain
pulseGenGain = 1;
%% Simulation/External Mode parameters (conditional)
bd = bdroot; % Retrive which model is calling this function
switch bd
case 'soc_rfsoc_top'
TsSW = 0.0005; % Signal generator and capture update rate
StopTime = 0.025; % Simulation total time
case 'gm_soc_rfsoc_top_sw'
TsSW = 0.5;
StopTime = 60;
otherwise
error('rfsoc_init: InvalidModel (%s not supported).', bd);
end
%% Channelizer parameters
%Number of channels, maximally decimated channelizer M/D=1
nChan = 512;
%Taps per band
nTapsPerBand = 16;
%Create channelizer object
channelizer = dsp.Channelizer('NumFrequencyBands',nChan,...
'DecimationFactor',nChan,...
'NumTapsPerBand',nTapsPerBand);
%Channelizer coefficients
channelizerCoeffs = channelizer.coeffs.Numerator;
%Channel bandwidth
%chanBW = fs/nChan;
%Starting frequency for each channel
%chanFStart = chanBW/2:chanBW:(fs/2-chanBW/2);
%Number of frames in the DPW
nFrames = 1024;%nChan/SamplesPerCycle;
% Frame size after serializing x2
%frameSize = SamplesPerCycle/2;