ISE与MATLAB的联合使用

来源:互联网 发布:淘宝订单交易风险违规 编辑:程序博客网 时间:2024/06/01 18:51

本文参考《Xilinx FPGA开发实用教程》

1.MATLAB辅助ISE完成FPGA

所谓辅助,就是利用matlab来加速浮点算法的实现和功能测试。在进行FPGA设计之前,先用MATLAB实现浮点算法,分析出算法的瓶颈所在,将程序的串行结构改成并行结构,接着利用MATLAB完成定点仿真,得到满足性能需求的最小定点位宽以及中间步骤计算结果的截取范围,然后再ISE中完成设计。最后再利用MATLAB的定点仿真结果对设计进行功能验证。

首先,在matlab中产生仿真所需的输入信号,以16进制的形式存放在数据文件中,通常为.txt文本文件。其次,在modelsim中用verilog编写仿真测试文件,并通过系统函数$readmemh将上述仿真数据文件中的测试向量读入,在modelsim中做功能仿真和时序仿真,并调用$fopen函数打开另外一个数据文件,用$fdisplay函数将modelsim的仿真结果写入,再次,在matlab中将modelsim仿真输出数据文件中的数据读入一个数组中,可以作图分析或者利用统计手段分析。

举例介绍Verilog语言中文件输入输出函数的使用方法。

(1)系统函数$fopen用于打开一个文件,并返回一个证书的文件指针,然后,$fdisplay就可以使用这个文件指针在文件中写入信息。写完后,用$fclose关闭文件。例如:

integer W_file;//定义文件指针

W_file=$fopen("W_file.txt");

$fdisplay(W_file,"@%h\n%h",a,b);

$fclose(W_file);

以上语句将“a”和“b”分别显示在“@%h\n%h”中的亮哥%h位置,并写入Write_out_file指针所指的文件“W_file.txt”中。

(2)读文件操作通过$readmemh和$readmemb来完成,分别对应的数据文件为十六进制和二进制。其语法格式如下:

reg[<memory_width>]<reg_name>[<memory_depth>];

$readmemh("<file_name>",<reg_name>);

例如:

reg[15:0]c[0:15;

$readmemh("R_filr.txt",c);

上例就是将R_file文件中的数据读入数组c中,然后就可以直接使用这些数据了。其中数据文件格式如下:

@2c

45

其中,@2c表示地址,为十六进制数,45表示该地址的数据。

0 0
原创粉丝点击