集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1441|回复: 3

ISE与MATLAB的联合使用

[复制链接]
小舍YZ 发表于 2017-7-3 12:46:56 | 显示全部楼层 |阅读模式
ISE与MATLAB的联合使用

本节主要介绍MATLAB设计、ISE实现以及二者联合测试的FPGA开发流程,这是全书的核心思想之一,也是目前最流行的设计方法。
        
MATLAB软件是MathWorks公司的核心产品,具有用法简单、扩展性好、资源库丰富以及与其他软件接口方便的特点,已成为从事电子信息和信号处理领域人员必备的工具软件之一。MATLAB和ISE的联合使用主要通过以下两个途径来实现:即MATLAB辅助ISE的方法,以及利用接口软件System Generator的方法。本书主要围绕着第一种方法展开讨论,但System Generator作为一种新兴的设计模式,具有强大的发展势头,这里对其也作了简单介绍,关于System Generator的详细讨论将在后面展开。

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

图4-106 MATLAB辅助ISE完成设计的流程图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 小舍YZ 发表于 2017-7-3 12:48:36 | 显示全部楼层
关于怎样完成定点仿真以及模块输出结果截取的原理和方法将在下章中展开详细关系讨论。此外,利用MATLAB对FPGA设计进行功能仿真是比较关键的,下面介绍如何将MATLAB和ModelSim结合起来使用。

首先,在MATLAB中产生仿真所需的输入信号,以十六进制的形式存放在数据文件中,通常放在后缀为.txt的文本文件中;其次在ModelSim中用Verilog编写仿真测试文件,并通过系统函数$readmemh将上述仿真数据文件中的测试向量读入,在ModelSim中做功能仿真和时序仿真,并调用$fopen函数打开另外一个数据文件,用$fdisplay函数将仿真结果写入;再次,在MATLAB中将ModelSim仿真输出数据文件中的数据读入一个数组中,可以作图分析或者利用统计手段来分析。此外,还可以将ModelSim的仿真输出与MATLAB的浮点性能作对比,来验证设计的性能。这样比利用其他方式要方便、直观,并且具有更高的正确性。

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

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

其语法格式为:

integer <file_desc>;
<file_desc> = $fopen("<file_name>", "<file_mode>");
$fwrite(<file_desc>, "<string>", variables);
$fclose(<file_desc>);
例如: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来完成,分别对应的数据文件为16进制和二进制。其语法格式为:

        reg [<memory_width>] <reg_name> [<memory_depth>];
        $readmemh ("<file_name>", <reg_name>);

例如:reg [15:0] c [0:15];
            $readmemh (“R_file.txt”, c);

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

        @2c
        45

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

2. System Generator工具简介

System Generator工具由MathWorks 与 Xilinx 合作开发而成,DSP 设计人员可使用 MATLAB 和 Simulink 工具在 FPGA 内进行开发和仿真来完善 DSP 设计。新型8.2版本System Generator使DSP系统和算法开发商不用写VHDL或Verilog编程,只需要利用MATLAB 及 Simulink 来开发他们的设计。一旦浮点建模完成,设计工程师采用Xilinx的比特及周期精确工具箱对其进行量化并自动生成HDL/RTL、用于Xilinx FPGA的网表或完整的比特流,包括新的Virtex-5 LX 和 LXT器件。最后,设计工程师在Simulink环境内采用高带宽硬件环境来验证并调试实际FPGA上的设计。

System Generator的关键特性主要包括:
&#8226;        DSP建模。利用包含信号处理(如FIR滤波器、FFT)、纠错(如Viterbi解码器、Reed-Solomon编码器/解码器)、算法、存储器(如FIFO、RAM、ROM)及数字逻辑功能的Xilinx模块集,在Simulink内构建和调试高性能DSP系统。 Xilinx模块集提供的模块可以使您导入MATLAB功能模块(如创建控制电路)及HDL模块(System Generator为Mentor Graphics的ModelSim和Xilinx ISE仿真器提供了HDL协仿真接口)。
&#8226;        Simulink 的 VHDL 或 Verilog 的自动代码生成。从 Xilinx 模块集实现行为(RTL)生成与对象明确的 Xilinx IP 核。
&#8226;        硬件协同仿真。创建“FPGA 在环路(FPGA-in-the-loop)”仿真对象是代码生成选项,允许您验证工作硬件并加速 Simulink 与 MATLAB 中的仿真。System Generator 支持以太网(10/100/千兆位)、PCI、Cardbus 及硬件平台与 Simulink 之间的 JTAG 通信。
&#8226;        嵌入式系统的硬件/软件协设计。为 Xilinx MicroBlaze&#8482; 32 位 RISC 处理器构建和调试 DSP 协处理器。System Generator 提供了 HW/SW 接口的共享存储器提取功能,自动生成 DSP 协处理器、总线接口逻辑、软件驱动器及协处理器使用方面的软件技术文档。
一个典型的System Generator开发实例如图4-107所示,图中形如Xilinx公司标志的图标就是System Generator,只需要双击图标,就可以将浮点算法自动转化成FPGA实现。Xilinx公司网站上提供了System Generator完整的使用手册和丰富的实例,读者如有兴趣,可自行阅读。

图4-107 一个典型的System Generator开发实例

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
zxopenljx 发表于 2019-11-3 10:37:58 | 显示全部楼层
ISE与MATLAB的联合使用
zxopenljx 发表于 2023-6-5 09:48:04 | 显示全部楼层
ISE与MATLAB的联合使用
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-28 03:42 , Processed in 0.057496 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表