500 likes | 700 Views
FPGA 系统设计与实践. 第四章 功能仿真. 第四章 功能仿真. 内容提要 功能仿真( Function Simulation) 的作用是对源代码进行编译。 本章介绍了 Model Technology 公司的 Modelsim XE II v5.6e 的主要结构、属性设置、 Modelsim XE II v5.6e 与 ISE5.2 的软件接口,测试激励文件的建立以及 Modelsim 仿真分析方法。 Altera 公司 QuartusII3.0 仿真器( Simulator) 的主要结构、属性设置以及仿真分析方法。. 第四章 功能仿真. 知识要点 :
E N D
FPGA系统设计与实践 第四章 功能仿真
第四章 功能仿真 • 内容提要 • 功能仿真(Function Simulation)的作用是对源代码进行编译。本章介绍了Model Technology 公司的Modelsim XE II v5.6e的主要结构、属性设置、Modelsim XE II v5.6e与ISE5.2的软件接口,测试激励文件的建立以及Modelsim仿真分析方法。Altera公司QuartusII3.0仿真器(Simulator) 的主要结构、属性设置以及仿真分析方法。
第四章 功能仿真 • 知识要点: • 功能仿真,Modelsim,测试激励文件,QuartusII3.0仿真器 • 教学建议: • 本章的重点是掌握Model Technology 公司的Modelsim XE II v5.6e和Altera公司QuartusII3.0仿真器(Simulator)的结构和使用方法。建议学时数为4学时。注意区分Modelsim和QuartusII3.0仿真器(Simulator)的不同点。
第四章 功能仿真 • 在学习过程中,应结合第8章中的应用实例设计,去掌握仿真分析的步骤、属性设置及技巧。注意仿真分析中属性参数的设置,可以通过调整参数的设置,改变仿真输出波形。必须牢记功能仿真和时序仿真的区别。
FPGA系统设计与实践 基于Modelsim的功能仿真
4.1 基于Modelsim的功能仿真 • 功能仿真(Function Simulation)是对源代码进行编译,检测在语法上是否正确,发现错误,并且提供出错的原因,设计者可以根据提示进行修改。编译通过后,仿真器再根据输入信号产生输出,根据输出可以判断功能是否正确。如果不正确,需要反复修改代码,直到语法和功能都达到要求。
4.1 基于Modelsim的功能仿真 • 功能仿真只验证在功能上是否正确,在时序上不做验证。在做功能仿真时还需要注意,信号通过某个网络时是存在延迟的,而在功能仿真时不会体现出来,输入信号的改变会立即在输出端反映出来。所以必须牢记功能仿真和时序仿真的是有区别的,这一点十分重要。
4.1.1 介绍Modelsim XE II v5.6e • Modelsim XE II v5.6e是Model Technology 公司直接为Xilinx公司设计。Xilinx公司的ISE 5.2为Modelsim XE留有接口,并且向Modelsim XE II v5.6e提供器件的仿真数据库。
主窗口 源程序窗口 结构体窗口 信号窗口 波形窗口 变量窗口 数据流窗口 列表窗口 进程窗口
主窗口 主窗口是Modelsim的核心窗口,在缺省(默认)状态下,在启动Modelsim时会自动打开。主窗口分为工作区和脚本区两部分。在工作区,可以很方便地对当前工程的工作库以及所有数据集合进行控制。在脚本区,可以输入Modelsim的各种命令,命令执行后会反馈执行后的信息,使用户了解执行的实际情况。
选择Veiw Active命令后,窗口中显示的是当前工程中的所有进程。 进程窗口 Ready表示此进程将在当前的很短的一个时间内被执行;Wait表示进程正等待信号的变化。Done表示进程正在执行等待语句。 选择In Regin 命令后,在窗口中显示的是当前层次结构中包含的进程。
结构窗口 结构窗口用来显示仿真中的层次信息,选择不同的结构层次,其他窗口中的信息都会发生相应的变化。
信号窗口 当前层次结构中的所有信号名称 信号的值 用户必须在结构窗口中选择确定的层次结构,来获得想要仿真的信号。
变量窗口 进程中的变量
波形窗口 光标工具 波形查看工具 仿真控制工具 信号波形 指针所在位置的值 信号名称和路径
信号属性对话框 • 双击波形窗口中的信号名 信号属性对话框 显示的信号名称 信号数据的显示方式 波形的颜色 名称的颜色
信号属性对话框 波形显示的格式
Logic显示 Analog显示 Literal显示
Modelsim XE II v5.6e与ISE5.2的软件接口 • Modelsim XE系列是Model Technology公司为Xilinx公司的FPGA/CPLD提供的OEM版本Modelsim工具,同时,ISE5.2为ModelsimXE提供了软件的接口。ISE5.2和ModelsimXE的结合使设计更高效,方便。在ISE5.2中启动ModelsimXE,ModelsimXE会调用缺省的批处理方式使仿真更高效。
属性设置 设置Modelsim可执行文件的路径
4.1.2 建立测试激励文件 • 要对模块进行仿真必须首先建立仿真测试激励文件,Modelsim根据测试激励对设计进行仿真。而ISE5.2提供了一个相当实用的工具HDL Bencher(HDL 测试台)。HDL Bencher可以方便地定义想要的输入波形和输出波形,仿真后Modelsim还可以将实际仿真的结果与测试者提供的波形进行比较,并且提示错误。
1.D触发器测试激励文件的建立 • 下面以一个例子进行说明仿真测试激励文件的建立:在3.1.2节中,使用VHDL输入设计了一个异步复位的D触发器,现在可以通过功能仿真来验证它的正确性。
新建测试激励文件 下一步
选择与测试激励文件相关联的源文件 下一步
单时钟 多时钟 组合逻辑 设置异步时序 下一步
时钟选择对话框 下一步
异步信号 设置异步信号
同步信号 设置同步信号 NEXT=>
时钟设置 时钟高电平时间 波形触发类型 时钟低电平时间 输入建立时间 偏移量 输出有效时间 时钟单位
输入期望的测试波形 信号列表 端口属性 备注 测试台波形编辑窗口 源代码显示窗口
测试激励文件加入工程 功能仿真 生成期望的仿真结果 翻译后仿真 布局后仿真 双击其中一种仿真 布局布线后仿真(时序仿真)
4.1.3 启动Modelsim仿真 仿真后的波形
4.1.4 功能仿真例:10进制计数器 • 1 .10进制计数器测试激励文件的建立 • (1)打开在3.1.4节中建立的工程pIP.
1 .10进制计数器测试激励文件的建立 • (2)为了方便仿真,有必要将div30模块进行修改。因为div30是30,000,000分频,这么大的分频系数, 难于仿真,所以将div30模块中的分频系数做如下改动。 process(clkin,reset) variable cnt : integer range 0 to 3 :=0; --将分频系数改为3,即6分频; begin if reset = '0' then cnt :=0 ; Reg_clk <= '0'; elsif rising_edge(clkin) then cnt := cnt + 1; if cnt = 3 then cnt := 0; Reg_clk <= not Reg_clk ; end if; end if; end process;
新建测试激励文件 NEXT=>
关联原文件 下一步
时钟初始化 下一步
时钟选择 下一步
信号属性设置 下一步
时钟设置 完成
设置波形 注意仿真界限的位置
启动仿真 单击全屏按钮 Modelsim仿真缺省窗口
仿真波形图 经过译码后的7段LED显示用代码
在structure窗口选择my_cou后signal窗口中发生的变化 将signals中的q移入wave窗口中
单击restart按钮 Restart 在Restart对话框中进行设置
修改显示类型后的信号 观察q信号,发现仿真的时间不够长,以至于不能肯定q的值在到达9时是否回0,所以有必要修改仿真时间。
设置时间界限 重新打开测试激励文件 将测试时间界限向后拖动,从而增加仿真时间
最终的仿真波形 重新进行仿真得到最终的仿真波形