0、背景
本篇文章是作者的一些经验,方便快速的查询,如果转载请务必备注,否则本作者将关闭CSDN的自己的所有文章!
1、代码注释快捷键
注释代码:选中代码,ctrl+R
取消注释:选中代码,ctrl+T
2、拼接[ ]
采用中括号,可以将两组数据进行拼接,
a=ones(1,9);
b=zeros(1,8);
c=[a,b]
3、以二进制写入文件
由于采用dec2bin是不能转换负数的,这一点要注意了,那么就需要表示负数的补码形式,补码形式很简单,就是判断某个数是否小于0,小于0的数就加上2的N次方,这样既可转换为无符号的十进制,再将其十进制用dec2bin转换为二进制,就是负数的补码。
以下给出常用的代码:
fid=fopen('D:\quartus_Project\Liruifeng_tem\DO_Pro\CP2\CP_2_4_matlab_alt_mixNCO\sin.txt','w');
%注意在打开文件之前首先要建立好目录路径
for k=1:length(Q_s)
B_s=dec2bin(Q_s(k)+(Q_s(k)<0)*2^N,N); %Q_s小于0就为1,大于0就为0
%k;
for j=1:N
if B_s(j)=='1'
tb=1;
else
tb=0;
end
fprintf(fid,'%d',tb);
end
fprintf(fid,'\r\n');
end
fprintf(fid,';');
fclose(fid);
4、verilog的文件写入操作
//将混频滤波后的的1.25MHz单频信号dout写入外部TXT文件中(out.txt)
integer file_out;
initial
begin
file_out=$fopen("out.txt");
//文件必须放到simulation\modelsim的文件夹中
if(!file_out)
begin
$display("could not open file!");
$finish;
end
end
wire clk_write;
wire signed[19:0] dout_s; //将混频后的数据,转换为有符号数
assign dout_s=dout;
assign clk_write=clk&(rst); //产生写入的时钟信号,复位状态时候不写入数据
always @ (posedge clk_write)
$fdisplay(file_out,"%d",dout_s); //将混频后输出的有符号的数据,写入file_out代表的out.txt文件中
5、verilog的文件读取操作
//从外部TXT文件中读入数据作为测试激励
reg [9:0] stimulus[1:data_num]; //用于存储从文本中读取的数据,全部存放于数组stimulus中
integer address=0;
initial
begin
$readmemb("sin.txt",stimulus);//文件必须放到simulation\modelsim的文件夹中
repeat(data_num)
begin
address=address+1;
din=stimulus[address];
#clk_period;
end
end