📄 vec_gen.m
字号:
%---------------------------------------------------------------------------------%
%--- 程序名称:产生仿真向量rader_hilbert.vec ---%
%--- 带奇偶抽样。 ---%
%--- 作者:王旭东 ---%
%--- 时间:2003年6月24日 ---%
%--- 版本:v0000.00.00 ---%
%--- 版权所有违者必究! ---%
%--------------------------------------------------------------------------------%
%--------------------------- 打开文件 ----------------------------------------%
fid = fopen('E:\HILBERT\rader_hilbert3\quartus\rader_hilbert.vec','w');
fid_indata = fopen('E:\HILBERT\rader_hilbert3\matlab\rader_hilbert.vec','w');
if (fid==-1 | fid_indata==-1)
disp('Couldn''t open file correlat.vec for writing');
end;
%---------------------------------------------------------------------------------%
%-------------------------- 定义常数 ------------------------------------------%
f=28;%20e6;
fs=100;%100e6;
PI=3.1415926;
dets=1/fs;
signal_start=10;
signal_end=180;
total_dot=200;
clk_interval=4;
ad_end_interval=clk_interval*9*2;
data_in_interval=ad_end_interval*2;
sim_end_time=total_dot*data_in_interval+100;
Am=2;%-- 3db
datamax=32767;
InWidth=16;
%---------------------------------------------------------------------------------%
%-------------------------- 产生噪声 ------------------------------------------%
%noise=randn(1,total_dot); %产生高斯随机噪声。
noise=zeros(1,total_dot); %不加噪声。
MAXNOISE=max(abs(noise));
%---------------------------------------------------------------------------------%
%-------------------- 频率范围:B/2<--->3*B/2 其中 B=fs/4 -------------%
B=fs/4;
if (f>=B/2)&(f<=3*B/2)
disp('%--- Start Simulation of Radar_Hilbert ---%');
else
disp('%- ERROR !: f exceed the required scope! -%');
end;
%--------------------------------------------------------------------------------%
%-------------------------- 产生信号 -----------------------------------------%
for i=1:signal_start-1
data_in(i)=0;
end;
for i=signal_start:signal_end
data_in(i)=Am*sin(2*PI*f*(i-signal_start)*dets);
end;
for i=signal_end+1:total_dot
data_in(i)=0;
end;
data_in=data_in+noise;
data_in_int=fix(data_in/(Am+MAXNOISE)*datamax);
for i=1:total_dot
if (data_in_int(i) < 0)%-- 用十进制表示的补码。
a=dec2bin(abs(data_in_int(i)),InWidth);
for k=1:InWidth
if a(k)==dec2bin(1)
a(k)=dec2bin(0);
else
a(k)=dec2bin(1);
end;
end;
data_in_int(i)=bin2dec(a)+1;
end;
fprintf(fid_indata,'%d \n',data_in_int(i));%-- 备用文件。
end;
%-----------------------------------------------------------------------------------%
%----------------------- 仿真起始和终止时间 --------------------------------%
fprintf(fid,'START 0;\n');
fprintf(fid,'STOP %d;\n',sim_end_time );
fprintf(fid,'RADIX DEC;\n');
%-----------------------------------------------------------------------------------%
%----------------------- 生成 clk 信号 -----------------------------------------%
fprintf(fid,'INTERVAL %d;\n', clk_interval);
fprintf(fid,'INPUTS clk ;\n');
fprintf(fid,'pattern \n');
fprintf(fid,'0 1;\n');
%-----------------------------------------------------------------------------------%
%----------------------- 生成ad_end信号 ------------------------------------%
fprintf(fid,'INTERVAL %d;\n', ad_end_interval);
fprintf(fid,'inputs ad_end;\n');
fprintf(fid,'pattern \n');
fprintf(fid,'>0 1;\n');
%----------------------------------------------------------------------------------%
%---------------------- 生成仿真数据 -----------------------------------------%
fprintf(fid,'INPUTS xn[15..0];\n');
fprintf(fid,'pattern \n');
fprintf(fid,'0> 0 \n');
for i=1:total_dot-1
fprintf(fid,'%d> %d \n',i*data_in_interval,data_in_int(i));
end
fprintf(fid,'%d> %d; \n',total_dot*data_in_interval,data_in_int(total_dot)); %add ;%
%-----------------------------------------------------------------------------------%
%------------------------ 输出信号 ---------------------------------------------%
fprintf(fid,'OUTPUTS In[15..0];\n');
fprintf(fid,'OUTPUTS Qn[15..0];\n');
%fprintf(fid,'OUTPUTS oddout[15..0];\n');
%fprintf(fid,'OUTPUTS evenout[15..0];\n');
%fprintf(fid,'OUTPUTS subdiv2in[15..0];\n');
%fprintf(fid,'OUTPUTS subdiv2out[15..0];\n');
%fprintf(fid,'OUTPUTS mulout[31..0];\n');
%fprintf(fid,'OUTPUTS expout[31..0];\n');
%fprintf(fid,'OUTPUTS addoutI[31..0];\n');
%fprintf(fid,'OUTPUTS addoutQ[31..0];\n');
%fprintf(fid,'OUTPUTS frontIn[15..0];\n');
%fprintf(fid,'OUTPUTS frontQn[15..0];\n');
%-----------------------------------------------------------------------------------%
fclose(fid);
fclose(fid_indata);
%---------------------- 输入数据的图形 --------------------------------------%
figure(1);
plot(data_in);
title '原始输入数据';
figure(2);
plot(data_in_int);
title '取整后补码表示的原始输入数据';
%-----------------------------------------------------------------------------------%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -