主要内容

验证高密度脂蛋白模块与MATLAB试验台

教程概述

本教程将指导您完成的基本步骤为建立高密度脂蛋白校验™应用程序,使用MATLAB®来验证一个简单的HDL设计。在本教程中,您将开发、模拟和验证的模型基于斐波那契序列的伪随机数生成器。硬件描述语言(VHDL)的模型编码®

请注意

本教程演示了创建和运行使用ModelSim试验台®6.5 SE。如果你不使用这个版本,ModelSim的消息和屏幕图像可能不会出现你到底在本教程中一样。

本教程需要MATLAB,高密度脂蛋白校验软件,ModelSim HDL模拟器。

在本教程中,您将执行以下步骤:

设置教程文件

帮助别人获得的副本教程文件,设置一个文件夹为自己的教程:

  1. 创建一个文件夹的范围之外MATLAB安装文件夹,你可以复制本教程文件。文件夹必须是可写的。本教程假设您创建一个文件夹命名MyPlayArea

  2. 以下文件复制到刚才创建的文件夹:

    matlabroot\ \工具箱\ edalink \扩展modelsim \ modelsimdemos \ modsimrand_plot.m

    matlabroot\工具箱\ edalink \ \ modelsim \ modelsimdemos \扩展硬件描述语言(VHDL) \ modsimrand \ modsimrand.vhd

启动MATLAB服务器

本节描述MATLAB开始,为完成本教程之后,设置当前文件夹启动MATLAB服务器组件,检查客户端连接,使用共享内存或TCP / IP套接字模式。这些说明假定您熟悉MATLAB的用户界面。

执行以下步骤:

  1. MATLAB开始。

  2. 设置你的MATLAB当前文件夹中创建的文件夹设置教程文件

  3. MATLAB验证服务器运行通过调用函数hdldaemon“状态”选项在MATLAB命令窗口如下所示:

    hdldaemon(的状态)

    如果服务器没有运行,显示的函数

    HDLDaemon没有运行

    如果服务器运行在TCP / IP套接字模式中,读取的消息

    HDLDaemon套接字服务器运行在端口portnum为0的连接

    如果共享内存的服务器运行模式,读取的消息

    HDLDaemon共享内存与0连接服务器正在运行

    如果服务器当前没有运行,跳到步骤5

  4. 关闭服务器通过输入

    hdldaemon(“杀死”)

    您将看到以下消息,确认服务器被关闭。

    HDLDaemon服务器关闭
  5. 启动服务器的TCP / IP套接字模式通过调用hdldaemon属性名称/属性值对“套接字”0。0的值指定操作系统分配服务器的TCP / IP套接字端口系统上可用。例如

    hdldaemon(“套接字”,0)

    服务器告诉你,它已经开始通过显示以下消息。的portnum特定于您的系统:

    HDLDaemon套接字服务器运行在端口portnum为0的连接

    值得注意的portnum当你需要它当你问题matlabtb命令在负载模拟

    您可以另外指定MATLAB服务器使用共享内存通信代替TCP / IP套接字通信;然而,对于本教程中我们将使用套接字通信的手段展示这种类型的连接。如何指定各种选项的详细信息,见的描述hdldaemon

开始ModelSim模拟器和Cosimulation设置

本节描述的基本程序启动ModelSim软件和设置一个ModelSim设计库。这些说明假设您熟悉ModelSim的用户界面。

执行以下步骤:

  1. 从MATLAB环境开始ModelSim通过调用函数vsim在MATLAB命令窗口。

    vsim

    这个函数启动并配置ModelSim HDL校验软件使用。第一个文件夹ModelSim匹配你的MATLAB当前文件夹。

  2. 验证当前ModelSim文件夹。你可以确认当前ModelSim文件夹与MATLAB进入当前文件夹ls命令在ModelSim命令窗口。

    命令应该列出文件modsimrand.vhd,modsimrand_plot.m,成绩单,compile_and_launch.tcl

    如果没有,改变当前MATLAB ModelSim文件夹文件夹。你可以找到当前MATLAB在当前文件夹文件夹通过浏览器或通过查看当前文件夹导航栏。在ModelSim,你可以改变工作目录的命令

    cd目录

    在哪里目录是你想要的文件夹。或者你也可以通过选择改变目录文件>更改目录……

  3. 创建一个设计库来保存你的编译结果。创建图书馆和必需的_info文件,输入vlibvmap命令如下:

    ModelSim > vlib ModelSim > vmap工作工作

    请注意

    你必须使用ModelSim文件菜单或vlib命令创建所需的库文件夹,这样_info创建文件。不要用操作系统命令创建图书馆。

开发硬件描述语言(VHDL)代码

建立设计图书馆后,通常可以使用ModelSim编辑器来创建和修改HDL代码。对于本教程,您不需要创建自己的硬件描述语言(VHDL)代码。相反,打开并检查现有的文件modsimrand.vhd。本节重点介绍的代码区域modsimrand.vhd感兴趣的ModelSim和MATLAB试验台。

如果你选择不检查HDL代码在这个时候,跳过编译硬件描述语言(VHDL)的代码

您可以打开modsimrand.vhd在编辑窗口编辑命令,如下所示:

ModelSim >编辑modsimrand.vhd

ModelSim打开它编辑窗口并显示的硬件描述语言(VHDL)代码modsimrand.vhd

当你查看文件时,请注意以下几点:

  • 这条线实体modsimrand包含硬件描述语言(VHDL)实体的定义modsimrand:

    实体modsimrand端口(std_logic clk:;在std_logic clk_en:;重置:std_logic;dout: std_logic_vector(31报纸0);modsimrand结束;

    这是实体,将验证在MATLAB环境教程。请注意以下几点:

    • 默认情况下,MATLAB服务器假定MATLAB函数验证实体的名称在MATLAB环境中实体名称是一样的。您可以选择显式命名的MATLAB函数。然而,如果您不指定一个名称,服务器将函数名实体名称相匹配。在这个例子中,MATLAB函数名modsimrand_plot和不匹配。

    • 必须定义实体的港口条款,包括至少一个端口定义。每个端口定义必须指定一个端口模式(,,或INOUT)和HDL硬件描述语言(VHDL)支持的数据类型校验软件。金宝app

      实体modsimrand在这个例子中有三个输入端口定义clk,clk_en,重置类型的STD_LOGIC和输出端口dout类型的STD_LOGIC_VECTOR。输出端口通过模拟输出数据验证的MATLAB函数。可选的输入端口接收时钟和复位信号的功能。另外,可以从ModelSim接收信号输入端口命令。

      更多信息编码端口实体使用MATLAB,明白了HDL编码模块与MATLAB验证

  • 剩下的代码modsimrand.vhd定义了一个行为体系结构modsimrand写一个斐波那契序列随机生成一个输出寄存器时钟经历一个崛起的优势。

当你检查完文件,关闭ModelSim编辑窗口。

编译硬件描述语言(VHDL)代码

在您创建或编辑你的硬件描述语言(VHDL)源文件,编译它们。作为本教程的一部分,编译modsimrand.vhd。编译文件的一种方法是单击文件名在项目工作区并选择编译>编译所有。另一个是指定modsimrand.vhd威科姆公司命令,如下所示:

ModelSim >威科姆公司modsimrand.vhd

如果编译成功,消息出现在命令窗口和编译器填充工作库和编译的结果。

开发MATLAB函数

高密度脂蛋白验证者在MATLAB软件验证HDL硬件功能。通常,此时您将创建或编辑一个MATLAB函数,满足高密度脂蛋白验证器的要求。对于本教程,您不需要自己开发试验台MATLAB函数。相反,打开并检查现有的文件modsimrand_plot.m

如果你选择不检查HDL代码在这个时候,跳过负载模拟

请注意

modsimrand_plot.m是一个底层组件的MATLAB随机数发生器的例子。绘图代码在modsimrand_plot.m不是在下一节中讨论。本教程只关注的那部分modsimrand_plot.mMATLAB验证所需的硬件描述语言(VHDL)模型。

您可以打开modsimrand_plot.m在MATLAB编辑器。例如:

编辑modsimrand_plot.m

当你查看文件时,请注意以下几点:

  • 1号线,你会发现指定的MATLAB函数名称及其必需的参数:

    函数[iport tnext] = modsimrand_plot (oport、tnow portinfo)

    这个函数定义是意义重大,因为它代表了MATLAB和ModelSim之间的通信通道。注意:

    • 当编码功能,您必须定义函数有两个输出参数,iporttnext和三个输入参数,oport,tnow,portinfo。看到MATLAB函数和函数参数定义的语法

    • 您可以使用iport参数输入信号而不是开车,或除了使用其他信号来源,如ModelSim命令。取决于您的应用程序,您可以使用输入源的任意组合。然而,如果一个多个源驱动信号iport,你将需要一个解析函数来处理信号争用。

  • 在22和23行,你会发现一些参数初始化:

    tnext = [];iport =结构();

    在这种情况下,函数输出iporttnext是空值初始化。

  • 当编码MATLAB函数使用HDL验证器,你需要知道的数据类型试验台功能接收来自并需要返回ModelSim和高密度脂蛋白验证器如何处理这些数据;看到金宝app支持的数据类型。这个函数包含以下端口数据类型定义和转换:

    • 本教程的实体定义包含三个类型的输入端口STD_LOGIC和一个输出端口的类型STD_LOGIC_VECTOR

    • 数据的类型STD_LOGIC_VECTOR包含一个列向量与一位的字符。

    • 的接口转换标量数据类型STD_LOGIC一个相匹配的字符文字对应的枚举类型。

    在第62行,行代码包含oport.dout展示了如何从ModelSim MATLAB函数接收的数据可能需要转换为使用在MATLAB环境中:

    ud.buffer(本体)= mvl2dec (oport.dout)

    在这种情况下,函数接收STD_LOGIC_VECTOR上的数据oport。这个函数mvl2dec将位向量转换为十进制值,可用于算术计算。金宝app支持的数据类型总结了类型的数据转换编码时要考虑自己的MATLAB函数。

  • 随意浏览的其余部分modsimrand_plot.m。当你完成的时候,去负载模拟

负载模拟

在编译硬件描述语言(VHDL)源文件之后,您已经准备好为模拟加载模型。本节解释如何加载实体的实例modsimrand仿真:

  1. 加载的实例modsimrand核查。加载实例,指定vsimmatlab命令如下:

    ModelSim > vsimmatlab modsimrand

    vsimmatlab命令启动ModelSim仿真器,vsim用MATLAB,专门为使用。ModelSim显示一系列的消息在命令窗口加载实体的方案和体系结构。

  2. 初始化模拟器验证modsimrand用MATLAB。你初始化使用HDL ModelSim匹配器matlabtb命令。这个命令定义了MATLAB通信链路和一个回调函数执行在MATLAB ModelSim的代表。此外,matlabtb命令可以指定参数,控制MATLAB函数时执行。

    对于本教程,输入以下matlabtb命令:

    > matlabtb modsimrand -mfunc modsimrand_plot不断/ modsimrand / clk插座portnum

    在命令行参数指定下列条件:

    • modsimrand——指定cosimulate硬件描述语言(VHDL)模块。

    • -mfunc modsimrand_plot——链接实体的实例modsimrandMATLAB函数modsimrand_plot.m。参数是必需的,因为实体名称不一样的试验台函数名。

    • / modsimrand clk不断——指定试验台函数被称为每当信号/ modsimrand clk经历一个崛起的优势。

    • 套接字portnum——指定端口号或者调用返回的hdldaemon启动MATLAB服务器

  3. 初始化时钟和复位输入信号。您可以使用几种机制驱动模拟输入信号,包括ModelSim命令和一个iport参数(见试验台的语法功能)。现在,输入以下命令:

    >力/ modsimrand / clk 0 0 ns, 1 5 ns重复10 ns >力/ modsimrand / clk_en 1 > / modsimrand /重置1 0 0 50 ns

    第一个命令部队clk信号值0 0纳秒和1 5纳秒。10纳秒,循环开始重复每10纳秒。第二个和第三个命令集clk_en1,重置1 0纳秒和0 50纳秒。

ModelSim环境准备运行一个模拟世界中。现在,您需要建立了MATLAB函数。

运行仿真

本节解释如何开始和监视这个仿真,并重新运行它,如果你的愿望。当您完成尽可能多的模拟运行,关闭在下一节中描述的模拟。

首次运行仿真

在首次运行仿真之前,您必须验证客户端连接。你也可以设置断点调试。

执行以下步骤:

  1. 开放ModelSim和MATLAB的窗户。

  2. 在MATLAB中,通过调用验证客户端连接hdldaemon“状态”选择:

    hdldaemon(的状态)

    这个函数返回一条消息说明存在一个连接:

    HDLDaemon套接字服务器运行在端口4795上1连接

    HDLDaemon共享内存与1连接服务器正在运行

    请注意

    如果你试图运行仿真开始前hdldaemon在MATLAB中,您将获得以下警告:

    #毫升警告- MATLAB服务器不可用(然而),实体“modsimrand”将不活跃
  3. 开放modsimrand_plot.m在MATLAB编辑器。

  4. 搜索oport.dout在这行设置一个断点,点击旁边的行号。将出现一个红色的断点标记。

  5. 回到ModelSim,在命令窗口中输入以下命令:

    >跑了80000

    这个命令指示ModelSim推进仿真80000时间步(使用默认的时间步长时期80000纳秒)。因为你之前设置一个断点modsimrand_plot.m然而,在MATLAB仿真运行,直到它到达断点。

    ModelSim现在阻塞,阻塞直到你明确开启它。MATLAB仿真被阻塞时,注意显示ModelSim的数据传递到MATLAB函数工作空间窗口。

    在ModelSim空图窗口打开。您可以使用此窗口绘制数据生成的模拟。

  6. 检查oport,portinfo,tnow将鼠标悬停在上面这些观点在MATLAB编辑器。观察到tnow,设置为当前仿真时间0。也注意到,因为仿真达到了在第一次调用断点modsimrand_plot,portinfo参数在MATLAB工作区中是可见的。

  7. 点击继续在MATLAB编辑器。断点,下次注意portinfo不再出现在MATLAB工作区。的portinfo函数不会显示,因为它只在第一个函数调用中传递。还要注意的价值tnow进步从0到5 e - 009。

  8. 点击红色的断点标记清除断点。

  9. 疏通ModelSim,仿真通过点击继续继续在MATLAB编辑器。

    模拟运行时完成。随着仿真的发展,它的情节生成图中的数据窗口。当仿真完成,图窗口如下所示。

在MATLAB仿真运行,直到它到达你刚才设置的断点。继续仿真/调试会话。

运行仿真

如果你想再次运行仿真,您必须重新启动在ModelSim仿真,重新启动时钟和复位输入信号。这样做:

  1. 关闭图窗口。

  2. 重新启动仿真使用下面的命令:

    >重启

    重新启动对话框出现了。离开所有的选项启用,点击重新启动

    请注意

    重新启动按钮清除设立的仿真环境matlabtb命令。因此,重启ModelSim之后,您必须补发之前的命令或发出一个新的命令。

  3. 补发的matlabtb命令在高密度脂蛋白模拟器。

    > matlabtb modsimrand -mfunc modsimrand_plot不断/ modsimrand / clk插座portnum

  4. 开放modsimrand_plot.m在MATLAB编辑器。

  5. 在同一行设置一个断点在前面跑。

  6. 回到ModelSim和重新输入以下命令重新初始化时钟和输入信号:

    >力/ modsimrand / clk 0 0 1 5 ns重复10 ns >力/ modsimrand / clk_en 1 > / modsimrand /重置1 0 0 50 ns

  7. 输入一个命令来启动模拟,例如:

    >跑了80000

关闭模拟

本节解释如何关闭模拟有条不紊。

在ModelSim,执行以下步骤:

  1. 停止仿真在客户端通过选择模拟>最后仿真或进入辞职命令。

  2. ModelSim辞职。

在MATLAB中,您可以退出应用程序,将MATLAB仿真和关闭关闭。

没有关闭MATLAB关闭服务器,您可以选择调用hdldaemon“杀”选择:

hdldaemon(“杀死”)

出现以下消息,确认服务器被关闭:

HDLDaemon服务器关闭