Matlab与Modelsim联调
- 格式:doc
- 大小:244.00 KB
- 文档页数:7
关于modelsim和matlab的联合仿真一,如何将matlab里面进行算法时所用的数据源放到modelsim里面进行调用。
1,将数据用matlab程序转化为二进制并存储到一个data.dat文件里面,这一步中,二进制的位数与verilog 程序里面的输入端口的位数相同;data.dat文件名任意定,后缀名不变就行。
下面几句fp = fopen('data.dat','w');for i1 = 1:100bin_I = int8_to_bin(Routdata(i1));fprintf(fpi,'%d',bin_I);fprintf(fpi,' ');endfclose(fp);就是将100个数据源中的数据Routdata转化为二进制并存储起来,其中的int8_to_bin是自己定义的8位的整型数据转化为二进制的函数。
2,在verilog里面打开数据文件data.dat并读取里面的数据。
reg [7:0] mem [99:0];//声明一个数组寄存器,位宽为8位,数组长度为100;initial$readmemb("data.dat",mem);//将数据读到数组寄存器中;reg [6:0] cnt;always@(posedge clk or negedge rst)if(!rst)cnt <= 7'b0;elsebegincnt <= cnt 1'b1;inI <= mem[cnt];end这样,inI就作为所设计模块的输入,可以进行modelsim仿真了。
二,如何将modelsim里面的仿真结果输出到matlab进行分析。
1,将modelsim仿真结果写入.txt文件,integer fid;initialfid = $fopen("dataout.txt","w");reg [6:0] cnt;always@(posedge clk or negedge rst)if(!rst)cnt <= 7'b0;elseif(cnt==7'd100)$fclose(fid);elsebegincnt <= cnt 1'b1;$fwrite(fid,"%b",out);end其中,out为所设计模块处理后的输出,以二进制的形式存储到txt文件中。
amesim、MatlaB联合仿真(最全⾯)接⼝设置1、我们先要确定所使⽤的电脑上已经安装版本匹配的软件,必要的软件是visualstdio也就是vc++,我使⽤的vs版本是2010;MatlaB,我使⽤的是2011b;amesim,我使⽤的是amesim 12.0版本。
PS:这⼏个版本的匹配情况请参阅LMS那边提供的帮助⽂档。
2、在默认版本安装成功的情况下,我们来设置⼀下环境变量:(1)我们要是设置⽤户变量:1)变量名:MatlaB,值为:D:\Program Files\MATLAB\R2011b,如图所⽰2)设置第⼆个⽤户变量,变量名:Path,值为:D:\Program Files\MATLAB\R2011b\bin\win64,如图所⽰那么,我们默认以上两个⽤户变量已经设置完毕。
(2)我们设置系统变量,我们找到系统变量的Path变量,点击编辑这⾥我建议把系统变量的Path复制出来检查⼀下⼏个变量是否已经添加C:\Program Files\Microsoft HPC Pack 2008 R2\Bin\;%AME%;%AME%\win32;%AME%\win64;%AME%\sys\mingw32\bin;%AME%\sys\mpich\mpd\bin;%AME%\sys\cgns;%AME%\sys\python\win32;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL; C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;d:\Program Files\MATLAB\R2011b\runtime\win64;d:\Program Files\MATLAB\R2011b\bin;D:\abaqus6134\Commands;D:\Program Files\MATLAB\R2011b\bin\win64;D:\Program Files (x86)\Microsoft Visual Studio 10.0这个可能需要动⼿⾃⼰添加我这⾥的%AME%表⽰amesim的安装⽬录注意:⼀定要检查系统变量添加的完全,我们看⼀下帮助⽂档提供的⼏个需要设置的变量,注意区分win64和win32的MatlaB 变量设置,还有visual stdio的设置。
Value Engineering 0引言高校专业课程的教学内容应紧密跟踪专业领域的新技术新方法。
目前,3G 技术已投入商用,作为电子信息工程专业的大学生,应建立起3G 技术的基本概念,掌握3G 中关键技术的基本原理,毕业后才能迅速投入电子通信领域的工作。
软件无线电(SDR ,Software Defined Radio )技术是解决3G 标准不统一等问题的关键技术,因而高校开设软件无线电课程,普及软件无线电基本理论显得十分必要。
然而,软件无线电理论较抽象,有大量的公式,学生不知道这些公式在实际工程中如何使用,因而不能保持足够的学习兴趣,也不利于学生的理解吸收。
为此,有必要精心设计实验课程,通过实验现象帮助学生理解有关理论。
由于高校的软件无线电教学主要目的是普及基本理论,因此,实验过程以软件仿真为主。
笔者对软件无线电课程的仿真实验内容进行了研究,基于MATLAB 和ModelSim 软件,训练学生用易懂的编程语言实现理论公式,并观察以图形为主的仿真结果。
实践表明,实验内容大大提高了学生的学习兴趣,加强了理论教学的效果。
1实验内容软件无线电的架构如图1所示。
图中的可编程处理器部分是软件无线电课程讨论的重点。
目前,软件无线电平台中的可编程处理器通常包括两种:FPGA 芯片与DSP 芯片。
其中DSP 芯片主要负责完成各类通信算法,FPGA 芯片主要承担数字混频器与数控振荡器的功能。
本文所研究的实验内容针对软件无线电理论基础知识,大部分功能可以由FPGA 实现。
归纳起来,主要有[1]:①A/D/A 技术;②CIC 滤波器;③HB 滤波器;④FIR 滤波器分布式结构;⑤FIR 滤波器的多相结构;⑥数控振荡器等。
可以通过MATLAB 语言与VHDL 语言对以上各个知识点进行编程进行仿真实验。
限于篇幅,本文对其中的CIC 抽取滤波器的仿真实验进行了详尽的描述。
软件无线电接收机中,经过高速ADC 得到的数据速率很高。
AMESim-Matlab 的联合仿真设置1. 联合仿真的前期准备1.1. AMESim 与Matlab 的版本匹配问题AMESim 与Matlab 的联合仿真有两类接口:接口(将AMESim 模型导入到Simulink 中)接口(将Simulink 模型导入到AMESim 中)两种不同的接口,对应的AMESim-Matlab 联合仿真的软件兼容列表,分别如图 1 和 2 所示。
图中,"Probable"表示未经AMESim 官方测试,但仍然可以正常使用。
"Yes"表示经AMESim 官方测试,确定可以正常使用。
"No"表示该组合不能实现联合仿真。
如图 1 所示,"AMESim to Simulink" 接口对软件的版本要求较低,基本上AMESim Rev7(或者更高的版本)与Mablab R2007b (或者更高的版本)可以自由组合进行联合仿真。
如果想使用"Simulink to AMESim" 接口,建议安装AMESim Rev11 以上的版本,Malab 只要求R2007b 以上即可。
图 1 "AMESim to Simulink" 接口图 2 "Simulink to AMESim" 接口1.2. Microsoft Visual C++编译器(VC++)的版本选择?AMESim 支持的VC++版本分别如图1(32 位编译器),图2(64 位编译器)所示。
图 1 和图 2 中,"Probable","Yes","No"表示的意思同上。
经测试,AMESim Rev9 可以正常调用VS2010 版的VC++(32 位)。
另外,从图 1 中,可以看到,VC++ 6.0 不能支持AMESim Rev11 以上的版本。
MATLAB和ModelSim联合仿真在FPGA开发中的应用
李寿强
【期刊名称】《电子制作》
【年(卷),期】2013(000)012
【摘要】在带有图像输入、图像输出的FPGA仿真过程中,针对使用单个工具进
行仿真存在的问题,以子图像提取器的FPGA设计仿真过程为例,说明MATLAB
和ModelSim联合仿真在FPGA开发中的应用,有效解决输入图像信号繁琐低效、输出图像不直观等问题。
【总页数】1页(P77-77)
【作者】李寿强
【作者单位】成都工业学院四川成都 610081
【正文语种】中文
【中图分类】TP391
【相关文献】
1.基于Modelsim与Matlab/Simulink联合仿真技术的接口与应用研究 [J], 范静;陈文艺
2.PSCAD/EMTDC-MATLAB联合仿真技术在SVC控制系统仿真建模中的应用 [J], 邹宁;方存洋;刘育鑫;王小红;朱振飞
3.Modelsim与MATLAB/Simulink联合仿真技术研究及应用 [J], 郭云飞;孙福海
4.浅谈三维软件与MATLAB联合仿真在教学中的应用 [J], 马杰
5.MATLAB与ADAMS联合仿真在平缝机中的应用 [J], 陆武慧
因版权原因,仅展示原文概要,查看原文内容请购买。
基于VerilogHDL语言的FPGA设计课程作业学院:电子工程学院专业班级:集电11级3班姓名:朱潮勇学号:05116079作业题目:Matlab和modelsim联合仿真(一)完成日期:2013年11月20日一、设计要求 (2)二、规范说明 (2)三、顶层设计结构图 (2)四、模块详细设计 (3)1 功能说明 (3)2 端口定义 (3)3 设计激励代码 (3)4 matlab代码 (5)5 仿真结果 (6)五、结论和问题: (8)六、补充:..................................................................................................... 错误!未定义书签。
一、设计要求虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足。
而进行数字信号处理是Matlab 的强项,不但有大量的关于数字信号处理的函数,而且图形显示功能也很强大,所以在做数字信号处理算法的FPGA验证的时候借助Matlab会大大加快算法验证的速度。
关于matlab与modelsim联合仿真有两种,一是以matlab或者modelsim分别产生数据,保存为文本的形式在给modelsim或matlab来调用。
这是一种间接的联合仿真的方式。
二是用matlab的link for modelsim的功能,将两者联合。
后者的联合仿真功能更加强大。
此次实验将进行第一种联合仿真。
分为两个例子。
第一个例子说明如何用Matlab产生的数据用作Modelsim仿真。
第二个例子说明如何用modelsim产生数据用作matlab进行分析。
二、规范说明1. Matlab产生数据用作Modelsim仿真首先利用matlab产生一个周期256点8bit的正弦波数据,然后以16进制形式写入sin.txt文件,然后将产生的sin.txt文件复制到Modelsim的工程下,在Verilog文件中先定义一个8bit X 256数组,然后通过$readmemh命令,将文件中的数据读入2. Matlab对Modelsim仿真生成的数据进行分析Matlab对Modelsim仿真生成数据的处理也是通过文件读写实现的。
MATLAB设计FPGA实现联合ISE和Modelsim仿真的FIR滤波器设计M A T L A B设计F P G A实现联合I S E和M o d e l s i m 仿真的F I R滤波器设计Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998MATLAB 设计,FPGA 实现,联合ISE 和Modelsim 仿真的FIR 滤波器设计摘要:本文首先利用MATLAB 产生两个频率不一样的正弦信号,并将这两个正弦信号相加,得到一个混叠的波形;然后利用MATLAB 设计一个FIR 低通滤波器,并由Verilog 实现,联合ISE和Modelsim 仿真,实现滤除频率较高的信号,并将滤波后的数据送到MATLAB 中分析。
本文首先介绍FIR 滤波器的基本原理,然后从目前最流行的的设计方式入手,逐步介绍FIR 滤波器的设计,其流程图如图1所示:图1一、 FIR 滤波器的基本原理:数字滤波器是从分析信号中提取用户需要的信息,滤去不需要的信号成分或者干扰成分。
数字滤波器的数学模型:线性时不变数字滤波器的数学模型在时域中可以用线性常系数差分方程给出:其等效的Z 变换为:01()1M q q q Nkk k pz H z d z -=-==+∑∑ 当k d 全为0时,Z 域系统函数只有零点,数字滤波器的单位脉冲响应有限,通常这用滤波器被称为有限冲激响应(FIR )滤波器。
它的输出只与当前的输入和过去的输入有关,跟过去的输出无关。
FIR 滤波器的一个重要特性是具有线性相位,即系统的相异和频率成正比,可达到无失真传输。
更加详细的介绍FIR 滤波器的理论算法知识,请参考别的先关书籍资料、二、 FIR 滤波器的设计及验证:1) 由MATLAB 产生FIR 滤波器的输入数据,并存放到.txt 文件中用MATLAB产生两个频率分别为:和2MHz的正弦信号,并将这两个正弦信号叠加,得到一个混叠的信号,并将这个混叠信号的波形数据存放到C盘根目录下面的文件中。
Amesim 与 matlab 联合仿真参数设置实验软件平台Matlab2009a , amesimR8a , VC6.0 企业版 (英文版步骤:1 将 VC++中的 "vcvar32.bat" 文件从 Microsoft Visual C++目录(通常是 .\Microsoft Visual Studio\VC98\Bin 中拷贝至 AMESim 目录下。
2 设置环境变量:我的电脑 - 〉属性 -〉高级 - 〉环境变量。
设置 AMESim 环境变量:变量名 AME ,值为其安装路径如安装在 C 盘中则值为 C:\+amesim 安装路径。
设置 Matlab 环境变量:变量名 MATLAB 值为 D:\MATLAB,此处我安装的matlab 在 D 盘根目录下。
确认在系统环境变量 PATH 中包含系统安装目录C:\WINDOWS\system323 在 Matlab 的目录列表里加上 AMESim 与 Matlab 接口文件所在的目录%AME%\matlab\amesim。
File- 〉 Set Path- 〉 Add Folder 加上需要联合仿真的amesim 文件目录和 C:\AMEsim\matlab\amesim(注意 R8A 版本是将%AME%\scripting\matlab\amesim 设置到 MATLAB 路径中加入 matlab 默认路径中4 将联合仿真的许可证文件 licnese.dat 拷贝到 AMESim 安装目录下的 licnesing 文件夹中5 确认是否在 AMESim 中选择 VC 作为编译器。
具体操作在 AMESim-〉 Opions-> AMESimPreferences->Compilation/Parameters中。
.在 MATLAB 命令窗口中输入命令 Mex -setup ,选择 VC 作为编译器注意点:1, Vc 建议安装企业版而且是英文的,其第一次打开安装文件安装并不完全,重启动以后再次点安装文件,会出现于第一次安装文件不同的界面,就说明没有安装完全2, Matlab 的安装目录和 amesim 的安装目录都不能在中文路径下,而去文件夹的名称不能有空格3, 联合仿真设置成功的标志 : 可以运行 amesim- 〉 HELP- 〉 GET AMESIM DEMO-〉 interface- 〉 amesimsimulink 下的范例4, 如果运行的现实找不到 matlab bin 则说明系统环境变量中没有设置 matlab 路径,设置方法见上面,再重启电脑, 再次用 amesim 打开范例并到参数模式下, 运行TOOLS-〉 Start matlab ,系统会调用 matlab 程序,再在打开的 matlab 中找到与amesim 中打开的文件同目录且同名的 .mdl 文件,在 matlab 中运行仿真, 如果没有错误则在 amesim 中进入仿真模式打开相应的元件就可以看到曲线(注意在 amesim 中不用运行仿真如果上面设置成功下面不用看下面给出 amesim4.0 版本设置方法为了实现二者的联合仿真,需要在 Windows2000 或更高级操作系统下安装Visual C++ 6.0,AMESim4.2以上版本与 MATLAB6.1上版本 (含 Simulink1. 将 VC++中的 "vcvar32.bat" 文件从 Microsoft Visual C++目录(通常是 .\Microsoft Visual Studio\VC98\Bin 中拷贝至 AMESim 目录下。
Link for ModelSim介绍Link for ModelSim®是一个把MATLAB/Simulink和针对FPGA 和ASIC的硬件设计流程无缝连结起来的联合仿真的接口扩展模块。
它提供一个快速的双向连接将MATLAB/Simulink和硬件描述语言仿真器Modelsim连接起来。
使二者之间直接的联合仿真成为可能,并且让你更高效的在MATLAB/Simulink中验证ModelSim中的寄存器传输级(RTL)模型。
传统的Simulink系统级设计和其仿真环境支持M语言,C/C++,以及Simulink 模块。
而通过添加硬件描述语言(HDL)到MATLAB/Simulink中,扩展了MATLAB/Simulink的并行运行能力,直接性,以及混合语言编程的能力。
这使得Link for ModelSim模块缩小了算法和系统设计同硬件实现之间的巨大鸿沟。
MATLAB 和 ModelSim 经过一个快速的双向的联合仿真接口联系起来,完成二者之间的数据交互特点连接ModelSim到MATLAB和Simulink上是双向的,可进行联合仿真,验证,可视化。
支持ModelSim的PE和SE版本。
支持MATLAB/Simulink和ModelSim之间的用户可选通信模式。
提供共享存储器获得更快的系统性能,同时提供TCP/IP套接字加强多样性。
提供联合仿真的Simulink模块的库文件。
可以把输出测试结果转成VCD(value change dump)文件格式。
支持多个并行的ModelSim实例以及支持在Simulink和MATLAB函数中的多个硬件描述实体。
提供在MATLAB环境下与硬件描述语言交互式或批处理模式来进行联合仿真、调试、测试、以及验证工作。
使用Link for ModelSimLink for ModelSim使用客户端/服务器结构来提供MATLAB/Simulink和ModelSim 之间的接口。
可以在一个单独的MATLAB环境或Simulink模型下提供与多个HDL 实体和ModelSim的接口。
典型应用使用 Link for ModelSim ,你可以建立一个有效的环境来进行联合仿真、器件建模、以及分析和可视化。
进行如下的实例的开发。
1 :可以在 MATLAB 或 Simulink 中针对 HDL 实体开发软件测试基准 (test bench) 。
2 :可以在 Simulink 中对包含在大规模系统模型的 HDL 模型进行开发和仿真。
3 :可以生成测试向量进行测试、调试,以及同 MATLAB/Simulink 下的规范原形进行 HDL 代码的验证。
4 :提供在 MATLAB/Simulink 下的对 HDL 行为级的建模能力。
5 :可以在 MATLAB/Simulink 下对 HDL 的实现进行验证、分析、可视化。
Link for ModelSim 中 MATLAB 与 ModelSim 接口和 Simulink 与 ModelSim 接口是独立的。
这使得你可以单独使用一个接口或同时使用两个。
使用ModelSim和MATLAB的接口使用 Link for ModelSim 后,你可以使用 MATLAB 和它提供的工具箱,比如设计和仿真信号处理,或者其他的数值计算算法。
你还可以用 HDL 来取代算法和系统设计中的器件模型,并直接完成 HDL 器件和 MATLAB 中剩余算法的联合仿真。
使用ModelSim和Simulink的接口你可以通过 Simulink 和相关的 Blockset 创建一个关于信号处理方面或者通信系统方面的系统级设计。
你也可以把 HDL 器件合并到设计中或者用 HDL 模块来取代相应的子系统,并借此来创建软件测试基准来验证你的 HDL 实现。
ModelSim 中联合仿真模块的参数对话框可以让你很容易的设置输入输出端口,二者连接的属性,时钟,以及 TCL 命令。
本图显示了在 MATLAB 和 ModelSim 的接口关系。
把在 MATLAB 中获得的测试基准代码输出作为输入输入到 VHDL 实体中,并把经过 ModelSim 的输出输入到 MATLAB 函数中Link for ModelSim 还提供一个模块来生成 VCD 的文件格式,可以用来:1 :观察在 HDL 仿真环境下的 Simulink 仿真波形2 :使用相同或不同的仿真环境来比较多个不同仿真运行的结果。
3 :提供到后仿真分析工具的输入端口。
关于滤波器在部分设计实现应用的联合仿真和软件测试基准的实例。
相当于VHDL 代码在 ModelSim 中的执行过程支持Verilog语言Link for ModelSim 本身就提供对 VHDL 语言的联合仿真的支持。
同时你还可以通过在 VHDL wrapper 中自动封装 Verilog 代码,使得其可以支持 Verilog 语言的联合仿真。
于是 Verilog 代码相当于直接在 ModelSim 前端就执行完毕,而忽略其性能影响。
Verilog 代码和 MATLAB 的连接可以通过 VHDL wrapper 和 Link for ModelSim 来实现,这使得你可以使用 Verilog 硬件描述设计来完成和 MATLAB 之间联合仿真、软件测试基准、验证以及可视化。
关于一个 Manchester 接收器的联合仿真和软件测试基准的实例。
通过使用Simulink , DSP Blockset 以及 Communicstions B lockset 来创建的一个系统。
该接收机在 VHDL 中实现并在 ModelSim 中仿真。
Matlab与Modelsim设计流程:2. 在MATLAB中配置ModelSim:在命令窗中敲入configuremodelsim,根据提示一步一步进行即可。
3. 创建一个目录用来准备存放ModelSim工程文件(路径最好遵循上面的经验),可以在MATLAB的命令窗中用如下命令完成:cd、mkdir4. 拷贝如下文件到3准备的文件夹中:MATLABROOT\toolbox\modelsim\modelsimdemos\modsimrand_plot.m MATLABROOT\toolbox\modelsim\modelsimdemos\VHDL\modsimrand\modsimrand. vhd可如下完成:在MATLAB中采用cd将当前路径转到目标文件夹,用pwd命令查看确保;然后用copyfile([matlabroot,‘\toolbox\modelsim\modelsimdemos\modsimrand_plo t.m’])和copyfile([matlabroot,‘\toolbox\modelsim\modelsimdemos\VHDL\modsimran d\modsimrand.vhd’])实现。
5. 在MATLAB命令窗中采用如下语句打开MATLAB的ModelSim服务器,为建立链接做好准备:hdldaemon (采用的是share memory的方式,也可以采用socket方式,参见help hdldaemon)可以用hdldaemon(‘status’) 查看服务器状态;用h dldaemon(‘kill’) 关闭服务器6. 在MATLAB的cmd中采用 vsim打开ModelSim,可见ModelSim自动转到MATLAB当前目录。
在ModelSim的命令窗口中采用vlib work创建work库永远接受工作工程编译结果;在ModelSim的cmd中用 vmap work work进行设计库和当前工作库映射7. 在ModelSim的cmd中用edit modsimrand.vhd在editor中打开vhdl文件,进行vhdl文件编写设计修改8. 在ModelSim的cmd中用vcom modsimrand.vhd编译modsimrand.vhd在ModelSim的cmd中用 vsimmatlab work.modsimrand 将modsimrand导入仿真器在ModelSim的cmd中用 matlabtb modsimrand -mfunc modsimrand_plot -rising /modsimrand/clk -socket portnum初始化真器(这里的各个参数的意义可以查阅matlabtb这个函数的帮助信息)用 force sim:/modsimrand/clk 0 0,1 5 ns -repeat 10 nsforce sim:/modsimrand/clk_en 1force sim:/modsimrand/reset 1 0,0 50 ns进行仿真输入信号设置,具体含义请查阅modelSim的用户手册,当然这些信号(实际就是实体的in pin,可以从MATLAB的中获取,这是以后慢慢再学)9. 在ModelSim的cmd中用 run 80000于是乎便得到了如下的根据ModelSim中仿真返回的结果绘制的图像如下:Simulink与Modelsim设计流程1.建立HDL模型。
2.ModelSim> vlib work;ModelSim> vmap work work。
3.ModelSim> vcom XXXXXX.vhd。
4.对Simulik的工程进行配置。
5.vsim('socketsimulink', 4449)。
6. ModelSim> vsimulink work.XXXXXX。
7.开始仿真。
在Matlab与Modelsim联调用到的命令:Malab的命令:configuremodelsim:对Modelsim的安装路径进行配置。
hdldaemon:hdldaemon (默认采用的是share memory的方式,也可以采用socket方式,参见help hdldaemon)可以用hdldaemon(‘status’) 查看服务器状态;用hdldaemon(‘kill’) 关闭服务器。
mvl2dec:将比特逻辑值转化成为十进制数。
vsim:从matlab调用Modelsim。
Modelsim的命令:matlabcp:将Matlab函数与Modelsim中的VHDL的entity或者Verilog的module建立联系。
例如:vsim> matlabcp u_osc_filter -mfunc oscfilter将Modelsim中的entity:u_osc_filter与Matlab中的函数oscfilter建立关系。
其中-mfunc的作用是将不同名的实体或者函数建立关系,若是没有-mfunc则函数与实体的名要一样。