% creates a waveform to test the LLRF history buffer % Checked equivalent with Octave-2.0.14 and Matlab-7.0beta, 2003-Mar-19 envelope=[zeros(20,1); [0:.005:1]'; 1+zeros(3164,1); [1:-.005:0]'; zeros(510,1)]; l=length(envelope); t=[1:l]'*.025; % microseconds f=10.005; % MHz w=2*pi*f; z0=.002+.99i; wave=envelope.*sin(w*t); fa=[1 (z0+conj(z0)) (z0*conj(z0))]; % poles fb=[1 0 -1]; % zeros zi=[1 i -1]'; fs=abs((fa*zi)/(fb*zi)); % Crude pseudo-random number. % Should reproduce across all versions of Matlab and Octave. rn=((rem([17:17:17*l]',29)+rem([39:39:39*l]',53)+rem([53:53:53*l]',71))-75)/27; wave2=fs*filter(fb, fa, wave)+rn*.002; % Output format is suitable for Verilog $readmemh() file=fopen('given.dat','w'); for n=[1:l] fprintf(file,'0x%x\n',floor(wave2(n)*1700+2058)); end fclose(file);