搜档网
当前位置:搜档网 › quartus调用modelsim

quartus调用modelsim

quartus调用modelsim
quartus调用modelsim

简介

Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。

主要特点:

RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;

单内核VHDL和Verilog混合仿真;

源代码模版和助手,项目管理;

集成了性能分析、波形比较、代码覆盖、数据流ChaseX、Signal Spy、虚拟对象Virtual Object、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;

C和Tcl/Tk接口,C调试;

对SystemC的直接支持,和HDL任意混合

支持SystemVerilog的设计功能;

对系统级描述语言的最全面支持,SystemVerilog, SystemC, PSL;

ASIC Sign off。

ModelSim分几种不同的版本:SE、PE、LE和OEM,其中SE是最高级的版本,而集成在 Actel、Atmel、Altera、Xilinx以及Lattice等FPGA厂商设计工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以Xilinx 公司提供的OEM版本ModelSim XE为例,对于代码少于40000行的设计,ModelSim SE 比ModelSim XE要快10倍;对于代码超过40000行的设计,ModelSim SE要比ModelSim XE快近40倍。ModelSim SE 支持PC、UNIX和LINUX混合平台;提供全面完善以及高性能的验证功能;全面支持业界广泛的标准;Mentor Graphics公司提供业界最好的技术支持与服务。

为什么要用MODELSIM?

与写testbench相对应的功能手段还有画波形图,两者相比,画波形图的方法更加直观和易于入门,那为什么我们还要写Testbench 呢?原因有以下五点:

第一,画波形图只能提供极低的功能覆盖。

画波形无法产生复杂的激励,因此它只产生极其有限的输入,从而只能对电路的极少数功能进行测试;而testbench以语言的方式描述激励源,容易进行高层次的抽象,可以产生各种激励源,轻松地实现远高于画波形图所能提供的功能覆盖率。以PCI转以太网电路设计为例,该设计并不复杂,但却已经需要考虑多种情况:PCI的配置读写、存储器读写等操作;以太网的短包、长包等。如果这些激励都用

画波形图完成,其工作量是难以想象的;用testbench则可以轻松完成这些工作。

第二,画波形无法实现验证自动化。

对于规模设计来说,仿真时间很长,如果一个需要仿真一天设计在检错时仅通过画波形图来观测,将几乎不能检查出任何错误;而testbench是以语言的方式进行描述的,能够很方便地实现对仿真结果的自动比较,并以文字的方式报告仿真结果。我们甚至可以在下班时开始仿真,然后第二天早上上班时再查看验证结果。

第三,画波形图难于定位错误。

用画波形图进行仿真是一种原始的墨盒验证法,无法使用新的验证技术;而testbench可以通过在内部设置观测点,或者使用断言等技术,快速地定位问题。

第四,画波形的可重用性和平台移植性极差。

如果将一个PCI转100Mb以太网的设计升级到PCI转1000Mb以太网,这时原来画的波形图将不得不重新设计,耗费大量的人力物力及时间;但若使用testbench,只需要进行一些小的修改就可以完成一个新的测试平台,极大地提高了验证效率。

第五,通过画波形的验证速度极慢。

Testbench的仿真速度比画波形图的方式快几个数量级,在Quartus下画波形需半个小时才能跑出来的仿真结果,在ModelSim 下使用testbench可能只需几秒钟就可以完成。

所以,在设计中除了那些极简单的设计(如调用厂商提供的

MegaCore),推荐通过写testbench的方法来做功能验证。

Quartus II 调用ModelSim 仿真

下面是基于在Altera Quartus II 下如何调用ModelSim 进行仿真的一个实例。

不能否认,Quartus II(我用的7.0)无法像ISE 那样方便的直接调用ModelSim,而是需要额外的做一些工作。这确实给我们的仿真调试带来了一些不便。

仿真条件

1、设计源代码:

可以使用VERELOG语言和VHDL语言,也可以使用QUARTUS产生的网表文件

2、测试激励代码:

根据设计要求输入/输出的激励程序,由于不需要进行综合,书写具有灵活性。

3、仿真模型/库:

根据设计内调用的器件供应商提供的模块而定。在C:\altera\91\quartus\eda\sim_lib中。

这里需要说明一下,如果使用了ALTERA的ip核的话,还需要添加ALTERA_MF.V的文件,如果使用了用户原语的话,还需要加入220model.v文件。有些同学想如果仿真输入是VHDL呢?这里都选择

对应的文件名文件,只不过后缀改成.VHD

1、打开Quartus II,新建一个工程,工程代码如下(只是做一个简单的二分频电路):

module div (

clk,

rst_n,

div

);

input clk; //系统时钟

input rst_n; //复位信号,低有效

output div; //2 分频信号

reg div;

always @ (posedge clk or negedge rst_n)

begin

if(!rst_n)

div <= 1'b0;

else

div <= ~div;

end

endmodule

2、进入菜单栏的Assignments EDA Tool Settings,进入如

下界面:

双击“EDA tools”下的“Simulation”选项,弹出如下界面:

点击Tool name 最右侧的下拉条,选择“ModelSim”,在弹出的界面做如下设置:

3、以上设置完成,重新编译工程。

打开工程目录,看到多了一个“simulation”文件夹,再打开该文件夹下的“modelsim”文件夹。看到有三个文件,其中.vo 文件就是我们的代码布局布线信息。它将代替原始的设计文件,仿真还需要几个文件,我们把它们都拷贝到该目录下。

4、打开“C:\altera\91\quartus\eda\sim_lib”(具体quartus 软件安装文件的根目录视您的实际情况而定,大体路径都一样),因为我们用的是MAX II器件,所以把“cyclone_atoms.v”拷贝到3 中提到的目录下,这个文件是仿真元件库。

5、编写一个工程RTL 源码的Testbench 文件,用于作为仿真激

励(具体如何编写清参考相关数据文档资料)。这个实例的testbench 如下:

module div_test;

// Inputs

reg clk;

reg rst_n;

// Output

wire div;

div div(

.clk(clk),

.rst_n(rst_n),

.div(div)

);

initial begin

clk = 0;

forever

#10 clk = ~clk; //产生50MHz 的时钟

End

initial begin

rst_n = 0;

#1000 rst_n = 1; //上电后1us 复位信号

#1000;

$stop;

End

Endmodule

将该文件命名为tb_test.v,保存到3 提到的文件夹下。

6、在wokspace 的library 面板的空白处单击右键,选择“new”→“library”

在新弹出界面中做如下设置,然后点击“OK”。

7、启动ModelSim 软件,点击菜单栏的Compile compile 命令,弹出如下界面:

Library 选择刚才新建的“work_test”,查找范围定位到我们3 提到的文件夹下。全选在该目录下可以看到的文件,点击Compile(注意该文件夹必须在全英文/数字路径下,否则会出错无法编译)。

8、我们回到wokspace 的library 面板,work_test 多处了下拉框,点击后如下:

我们右键单击vtf_test 文件,在弹出的菜单中选择Simulation

9、执行上面的操作后,软件自动弹出wokspace 的sim 面板如下:

在vtf_test 栏单击右键,在弹出菜单中选择Add Add to Wave。然后软件将弹出波形窗口。

10、波形窗口如下:

这时我们点击全速编译(一次不行,多点一次,工具栏倒数第三个按钮),然后点击观看全部波形(放大缩小按钮后面一个蓝色按钮)。

11、仿真结果如下:

可以看到div 信号确实是clk 的二分频。

任务:

1、设计一个8分频器,前仿真后仿真;

2、设计一个占空比为50%的8(偶数)分频器,前仿真后仿真;

3、设计一个占空比为50%的N(偶数)分频器,前仿真后仿真;提示:用到P21页参数型内容

4、设计一个占空比为M/N的N(偶数)分频器;

课后任务:

设计一个占空比为50%的9分频器;前仿真后仿真;

设计一个占空比为50%的N(奇数)分频器,前仿真;

modelsim使用 + 前仿真 + 后仿真 + verilog

Modelsim 6.0 使用教程 1. Modelsim简介 Modelsim仿真工具是Model公司开发的。它支持Verilog、VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等,比quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。 对于初学者,modelsim自带的教程是一个很好的选择,在Help->SE PDF Documentation->Tutorial里面.它从简单到复杂、从低级到高级详细地讲述了modelsim的各项功能的使用,简单易懂。但是它也有缺点,就是它里面所有事例的初期准备工作都已经放在example文件夹里,直接将它们添加到modelsim就可以用,它假设使用者对当前操作的前期准备工作都已经很熟悉,所以初学者往往不知道如何做当前操作的前期准备。 2.安装 同许多其他软件一样,Modelsim SE同样需要合法的License,通常我们用Kengen产生license.dat。 ⑴.解压安装工具包开始安装,安装时选择Full product安装。当出现Install Hardware Security Key Driver时选择否。当出现Add Modelsim To Path选 择是。出现Modelsim License Wizard时选择Close。 ⑵.在C盘根目录新建一个文件夹flexlm,用Keygen产生一个License.dat,然后 复制到该文件夹下。 ⑶.修改系统的环境变量。右键点击桌面我的电脑图标,属性->高级->环境变量-> (系统变量)新建。按下图所示内容填写,变量值内如果已经有别的路径了, 请用“;”将其与要填的路径分开。LM_LICENSE_FILE = c:\flexlm\license.dat

Quartus常见错误

Quartus常见错误 为什么还提示“Error: Top-level design entity "and2" is undefined” library ieee; use ieee.std_logic_1164.all; entity and2 is port(a,b:in std_logic; y ut std_logic); end and2; architecture and2_1 of and2 is begin y<=a nand b; end and2_1; 在设置里已经设定top-level entity为and2了 怎么还是报错啊! 标题:关于quartus中模块的引用 2009-05-27 17:10:35 quartus中一个工程中可包含一个顶层模块,多个子模块,通过顶层模块引用子模块。 1:顶层模块的实体名必须与建立工程时的实体名一致,否则编译时会出错,如下 Error: Top-level design entity "AND" is undefined 2,多个实体文件建立后在quartus界面左边的工程文件夹中找到要作为顶层文件的文件点击右键设置为顶层文件 3.所有文件设置好后再进行编译,单独编译某个文件的话肯定错误很多。

https://www.sodocs.net/doc/4d8877966.html,/Detail/DefaultView.aspx?BookId=ISBN7-115-13204-6 里面有一个调用模块的例子,书中间的子模块命名为NAND编译时不能通过,后来改个名字NAND11就通过了,难道NAND是关键词不可用来命名? 错误为: Top-level design entity "rojectName" is undefined 我已经把项目名称和顶层设计的名称设为一样的 而且有时候出现这样的情况,有时候又不出现这样的情况 例如下面这个例子 //与非门行为描述 module NAND(in1,in2,out); input in1,in2; output out; //连续赋值语句 assign out=~(in1&in2); endmodule 我建工程后就会提示Top-level design entity "NAND" is undefined 这个例子是从电子书上直接拷贝过来的,我很好奇的是有的例子可以运行,有的例子不可以。我先创建一个Verilog文件,然后保存成工程,工程名字和顶层文件名字一样的。 问题解决了。 原来定义实体的名称必须与项目顶层文件名称相同。 难怪有时候出现有时候又不出现这个问题咧。 2009-10-17 17:16 1.Found clock-sensitive change during active clock edge at time

Quartus提供的宏模块

Quartus II开发软件中的宏模块 一、RAM电路宏模块 RAM宏模块 宏模块名称功能描述 csdpram 参数化循环共享双端口RAM lpm_ram_dp 参数化双端口RAM lpm_ram_dq 参数化RAM,输入/输出端分离 lpm_ram_io 参数化RAM,输入/输出端公用一个端口 FIFO宏模块 宏模块名称功能描述 csfifo 参数化循环共享FIFO dcfifo 参数化双时钟FIFO scfifo 参数化单时钟FIFO lpm_fifo 参数化单时钟FIFO lpm_fifo_dc 参数化双时钟FIFO ROM的设计 lpm_rom 二、时序电路宏模块 触发器 宏模块名称功能描述 lpm_ff 参数化D或T触发器 lpm_dff 参数化D触发器和移位寄存器 lpm_tff 参数化T触发器 enadff 带使能端的D触发器 expdff 用扩展电路实现的D触发器 7470 带预置和清零端的与门JK触发器 7471 带预置端的JK触发器 7472 带预置和清零端的与门JK触发器 7473 带清零端的双JK触发器 7474 带异步预置和异步清零端的双D触发器 7476 带异步预置和异步清零端的双JK触发器 7478 带异步预置、公共清零和公共时钟端的双JK触发器 74107 带清零端的双JK触发器 74109 带预置和清零端的双JK触发器 74112 带预置和清零端的双JK时钟下降沿触发器 74113 带预置端的双JK时钟下降沿触发器 74114 带异步预置、公共清零和公共时钟端的双JK时钟下降沿触发器74171 带清零端的4D触发器 74172 带三态输出的多端口寄存器 74173 4位D型寄存器

Quartus ii 10.0教程(包含modelsim仿真)

Quartus ii 10.0教程 说明 本文的部分章节,来源于本人翻译的Terasic DE2-115的英文入门文档。 平台 硬件:艾米电子EP2C8-2010增强版套件 软件:Quartus II 10.0 + ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 内容 ?典型的CAD流程 ?开始 ?新建工程 ?录入Verilog设计 ?编译设计 ?引脚分配 ?仿真设计电路 ?编程及配置到FPGA器件 ?测试设计电路 典型的CAD流程 计算机辅助设计(CAD)软件,使得运用可编程逻辑器件实现所需逻辑电路,变得容易。比如现场可编程门阵列(FPGA)。典型的FPGA CAD设计流程如图1所示。

图1 典型的FPGA CAD设计流程 CAD流程包含以下步骤: ?设计输入——所需电路可通过原理图方式或硬件描述语言方式(如Verilog或VHDL)进行设计。 ?综合——输入的设计被综合进入由逻辑元素(LEs,FPGA芯片提供)组成的电路中。 ?功能仿真——综合电路被测试以验证其功能是否正确,次仿真不考虑时序因素。 ?布局布线——CAD Fitter工具决定网表中定义的LEs如何布置成FPGA芯片中的实际LEs。 ?时序分析——分析已布局布线电路中的不同路径的传播延迟,用以指示所需电路的性能。 ?时序仿真——测试已布局布线电路,验证其是否在功能和时序上都正确。 ?编程及配置——设计的电路,通过编程配置开关,被实现到一个物理的FPGA芯片。 配置开关用于配置LEs和建立所需线路连接。 本指南介绍Quartus II软件的基本特征。展示如何使用Verilog硬件描述语言来设计和实现电路。使用GUI来实现Quartus II指令。通过本份指南,读者将学习到: ?新建工程 ?使用Verilog代码录入设计 ?将综合的电路布局到Altera FPGA ?分配电路的输入输出到FPGA上的指定引脚 ?仿真设计电路 ?编程配置艾米电子EP2C8核心板上的FPGA芯片 1. 开始 在Quartus II中设计的每个逻辑电路或子电路,叫做一个工程。软件每次运行一个工程,并将所有信息保存在单一文件夹中。欲开始一个新的逻辑电路设计,第一步就是新建一个文件夹来保存文件。为了保存本指南的设计文件,在D盘新建introtutorial文件夹。指南者运行的范例为一个简单的双路灯控电路。 打开Quartus II软件,将看到类似于图2的画面。该显示画面包括若干窗口,用户可使用鼠标选择,以访问Quartus II软件的相关功能。Quartus II提供的大多数命令都可用菜单形式来访问。例如,在图2中,在File标签下点击左键,可打开如图3所示的菜单。用左键单击Exit可退出Quartus II软件。

ModelSim的前后仿真(Quartus)

利用Quartus5.0实现功能仿真 1)打开一个工程文件。 2)打开Settings设置栏,选择Fitting Settings下的Simulator栏。在右边出现的设置栏中将 “Simulation Mode”的下拉菜单选择“Functional”,即可以实现软件下的功能仿真。(下拉菜单中有“Functional”、“Timing”和“Timing using Fast Timing Model”,分别代表可以在Quartus软件下实现功能仿真,时序仿真和快速时序仿真。最后一项一般不选,如果在Settings->Timing Requirement->More Settings下“Report Combined Fast/Slow Timing” 选项设为“On”,就可以选择最后一项。编译的报告里也会分别列出最快和最慢的时序报告。) 3)选择“Processing”菜单下的“Generate Functional Simulation Netlist”命令,否则将无法 启动仿真。 4)新建一个波形仿真文件,文件后缀名为.vwf。选择File菜单下的New->Other Files->Vector Waveform File。如下图所示,左边空白栏处是节点名的列表区,右边空白栏处是仿真波形的显示区。波形编辑窗口默认时间为1us,如果想改变仿真时间,可以选择Edit菜单下End Time,在弹出的对话框中选择需要的时间。将新建的波形仿真文件保存下来。

5)将需要仿真的信号加入波形编辑窗口。在列表区任一位置双击或者点击右键选择“Insert Node or Bus…”,弹出的对话框点击“Node Finder”按钮。在“Node Finder”界面中点击“List”按钮,有关信号的列表会出现在界面的左边,双击需要观察的信号加入至界面右边。如果工程中用到了很多信号,在左边列表中也会显示很多(Named编辑框默认的是*通配符),可以在Named编辑框中添加需要的信号名称实现模糊查找。界面中“Filter”下拉框中默认的是“Pins: all”,也就是说将要列出的信号都是IO管脚。如果需要观察一些内部信号,可以改变下拉框的参数,比如“Registers: Pre-Synthesis”。下图显示了仿真信号加入波形编辑窗口的情况。对于有些总线信号可以改变其显示的进制格式,比如二进制、八进制、十进制和十六进制。在列表中对应信号点击右键选择 “Properties”,弹出的对话框中选择“Radix”下拉框实现进制的转换。

quartus ii 常见的19个错误、28个警告

(一) Q uartus警告解析 1.Found clock-sensitive change during active clock edge at time

modelsim完美教程

准备事项 1.ModelSim试用版下载 2.范例程序下载(史丹佛大学一门课的期末专题Implememtation of Viterbi Decoder:constrain length K=3, code rate R=1/2, register-exchange) 整个project共含7个Verilog程序:system.v (top-level) |-- clkgen.v |-- chip_core.v |-- controller.v |-- spu.v |-- acs4.v |-- acs1.v (或是另外一个Verilog的简单例子,可以从C:\ SynaptiCAD\ Examples\ TutorialFiles\ VeriLoggerBasicVerilo gSimulation\ add4.v and add4test.v) (或是另外一个VHDL的简单例子,可以从C:\ Modeltech_5.7e\ examples\ adder.vhd and testadder.vhd) ModelSim PE /LE /SE 差别在哪? 本篇文章内容主要在教导软件使用,以Verilog程序为范例。假设各位读者已经熟悉Verilog,废话不多说,让我们马上来见识一下ModelSim ... 快速上手四部曲:建立Project、引进HDL Files、Compile、模拟(Simulate/Loading and Run) 1.建立一个新的Project 1-1 第一次执行程序时,可以从[开始] \ [程序集] \ ModelSim SE \ ModelSim;或是执行ModelSim在桌面的快捷方式

ModelSim入门指导答辩

QUESTA-SIM(QuestaSim)10.2入门指南平台 软件:Questa-Sim 10.2 版本Starter Edition,也适用于高版本的ModelSim软件。内容 一. 设计流程 典型设计流程包括如下所示: (1)设计输入 设计的行为或结构描述 (2)RTL仿真(ModelSim) 功能仿真 验证逻辑模型(没有使用时间延迟) 可能要求编辑设计 (3)综合 把设计翻译成原始的目标工艺 最优化——合适的面积要求和性能要求 (4)布局和布线 映射设计到目标工艺里指定位置 指定的布线资源应被使用 (5)门级仿真(ModelSim) 时序仿真 验证设计一旦编程或配置将能在目标工艺里工作 可能要求编辑设计 (6)时序分析 (7)验证合乎性能规范 可能要求编辑设计 (8)版图设计 (9)仿真版图设计 (10)在板编程和测试器件 使用QuestaSi/ModelSim仿真的基本流程为: 图1.1 使用QuestaSim仿真的基本流程 2 开始 1.1 新建工程 打开QuestaSim后,其画面如图2.1所示。

图2.1 QuestaSim画面 1. 创建工作目录E:/QuestaSim/, 在其路径下创建子文件夹/ip、/prj、/rtl、/tb, prj是QuestaSim工程主文件夹,ip是仿真模型目录,rtl 是代码目录,tb是testbench目录。 2. 选择File>New>Preject创建一个新工程。打开的Create Project对话框窗口,可以指定工程的名称、路径和缺省库名称。一般情况下,设定Default Library Name为work。指定的名称用于创建一个位于工程文件夹内的工作库子文件夹。该对话框如图2.2所示,此外还 允许通过修改初始化文件QuestaSim.ini文件来映射库设置。 图2.2 创建工程的对话框 2. 设置Project Name为BG0806,Project Location为E:/QuestaSim/prj, 勾选Copy Library Mappings ,点击OK。 3. 出现Add Items to the Project的对话框,如图2.3所示,

Quartus_II常见问题集锦

Quartus II常见问题集锦 1、 【问题】Pin Planner 的使用问题:在QuartusII 7.2 ,时序仿真都通过,但是,一旦使用Pin Planner设定引脚后,时序仿真就发生变化,与功能仿真结果不一致,不是理想的结果。使用Pin Planner时要注意些什么问题呢? 【解答】如果在没有设定引脚时就进行时序仿真,那么在后仿真就会不准确。因为当设定引脚以后,需要重新进行布局布线,这和没有设定引脚是不同的,因此,布线的改变自然会影响到时序的改变。通常的做法是:先做好所有的设定,生成网表文件和延时文件,再加上激励文件进行仿真,这个时候的仿真结果是最接近实际情况的。通常的pin设定没有特定要求,差分信号是成对的。所以请不要搞错。时钟信号尽量使用专用的时钟引脚;普通I/O没有什么限制,做好时序约束就可以了。 2、 【问题】怎样配置cyclone FPGA的管脚功能? 【解答】FPGA芯片的引脚分为好多类,有通用IO,有时钟网络,有复位网络,这些引脚的具体功能是在布线时由用户选择的。你可以自由的配置这些引脚的功能,但最好根据芯片的数据手册进行选择,如将时钟配置到专用时钟引脚上,将复位配置到专用复位引脚上,否则会影响最终的布线结果。 3、 【问题】分配fpga管脚时该怎么选择,引脚有什么属性需要考虑,quartus2中引脚有几个属性:Reserved,Group,I/O Bank,Vref Group,I/O standard( 3.3-V LVTTL(default) )分别是什么意思,要怎么设置? 【解答】首先说IO standard:这个是用于支持对应不同的电平标准。FPGA IO 口的电压由IO bank上的VCC引入。一个bank上引入3.3V TTL电平,那么此时整个bank上输出3.3V的TTL电平。设置这个第一是为了和current strength 一起计算功率。第二个是用于在IO口上加载正确的上拉/下拉电阻。只要你设置完成,Quartus会按照你的电平标准自动布线。 第二是IO Bank:你在quartus pin planner 的top view下右键然后点击 show IO banks,这个时候就会看到FPGA的管脚被几种颜色划分开了。一种颜色下的IO口代表一组bank。你在吧管脚的location约束完成以后。IO Bank会自动填

Quartus II开发软件中的宏模块

Quartus II开发软件中的宏模块 RAM宏模块 宏模块名称功能描述 csdpram 参数化循环共享双端口RAM lpm_ram_dp 参数化双端口RAM lpm_ram_dq 参数化RAM,输入/输出端分离 lpm_ram_io 参数化RAM,输入/输出端公用一个端口 FIFO宏模块 宏模块名称功能描述 csfifo 参数化循环共享FIFO dcfifo 参数化双时钟FIFO scfifo 参数化单时钟FIFO lpm_fifo 参数化单时钟FIFO lpm_fifo_dc 参数化双时钟FIFO ROM的设计 lpm_rom Quartus II开发软件中的宏模块--时序电路宏模块 Quartus II开发软件中的宏模块--时序电路宏模块 触发器 宏模块名称功能描述 lpm_ff 参数化D或T触发器 lpm_dff 参数化D触发器和移位寄存器 lpm_tff 参数化T触发器 enadff 带使能端的D触发器 expdff 用扩展电路实现的D触发器 7470 带预置和清零端的与门JK触发器 7471 带预置端的JK触发器 7472 带预置和清零端的与门JK触发器 7473 带清零端的双JK触发器 7474 带异步预置和异步清零端的双D触发器 7476 带异步预置和异步清零端的双JK触发器 7478 带异步预置、公共清零和公共时钟端的双JK触发器 74107 带清零端的双JK触发器 74109 带预置和清零端的双JK触发器 74112 带预置和清零端的双JK时钟下降沿触发器 74113 带预置端的双JK时钟下降沿触发器 74114 带异步预置、公共清零和公共时钟端的双JK时钟下降沿触发器74171 带清零端的4D触发器 74172 带三态输出的多端口寄存器 74173 4位D型寄存器 74174 带公共清零端的16进制D触发器 74174b 带公共清零端的16进制D触发器

ModelSim-Altera_6.5仿真入门教程

平台 软件:ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 内容 1 设计流程 使用ModelSim仿真的基本流程为: 图1.1 使用ModelSim仿真的基本流程 2 开始 2.1 新建工程 打开ModelSim后,其画面如图2.1所示。

图2.1 ModelSim画面 1. 选择File>New>Preject创建一个新工程。打开的Create Project对话框窗口,可以指定工程的名称、路径和缺省库名称。一般情况下,设定Default Library Name为work。指定的名称用于创建一个位于工程文件夹内的工作库子文件夹。该对话框如图 2.2所示,此外还允许通过选择.ini文件来映射库设置,或者将其直接拷贝至工程中。

图2.2 创建工程的对话框 2. 按照图2.3所示,设置Project Name为LED_FLOW,Project Location为D:/led_flow。 图2.3 输入工程信息 当单击OK按钮后,在主体窗口的下方将出现Project标签,如图2.4所示。 图2.4 Project标签

3. 之后,将出现Add Items to the Project的对话框,如图2.5所示。 图2.5 在工程中,添加新项目 2.2 在工程中,添加新项目 在Add Items to the Project对话框中,包括以下选项: ?Create New File——使用源文件编辑器创建一个新的Verilog、VHDL、TCL或文本文件?Add Existing File——添加一个已存在的文件 ?Create Simulation——创建指定源文件和仿真选项的仿真配置 ?Create New Folder——创建一个新的组织文件夹 1. 单击Create New File。打开图 2.6所示窗口。 图2.6 创建工程文件夹 2. 输入文件名称:LED_FLOW,然后选择文件类型为Verilog。

ModelSim软件仿真步骤教程

使用ModelSim模擬驗證HDL code 1.在模擬前先準備好我們要模擬的電路檔案(Verilog HDL,TestBench,…) 2. 打開ModelSim,新建一個Project,鍵入Project name 按OK。此處我們的library name 為default library name “work”不必更改。 3.然後再加入我們所要模擬的電路檔案(若尚未準備,可開啟新檔案再將code 鍵入)選Add Existing File,將我們已編輯好的檔案加入。 將我們所需要的檔案加入,按Browse選擇我們所需檔案count.v,

count_test.vt),按下OK。 再將先前所開啟的增加檔案的視窗關閉,按close。 4.按下compile all。

Compile成功沒有顯示出錯誤訊息, 則開始模擬波形 5.按下Simulation, 選擇檔案所在的Library (work), 點選TestBench的Module Name t_Gap_finder 按OK 6.承接上步驟將會跳出以下視窗,若要將所有訊號加入波型中觀察則選擇在 testbench的module name: count_tst按滑鼠右鍵選擇→ Add → Add to Wave。

7.在波型畫面按下Run All開始模擬 跑完後會跳出下面視窗選擇否則可觀察模擬波形,若按下是則會將ModelSim關閉。

8.觀察波形圖是否與功能符合,若與設計不符則修改設計並重複執行Step 4到 Step 8 Testbench語法 `timescale 1 ps/ 1 ps 前面的1ps代表程式中最小的時間單位 後面的1ps代表運算的精準度

quartus中调用宏模块中文介绍

quartus -->tool -->MegaWizard Plug-In Manager 就可以进入了置于参数设置要看是什么模块了,你根据自己的需求选择就是了quarts 最后会自动生成一个你命名的这个模块文件verilog语言就是"你为这个模块起的名字.v" 你可以在工程里面找到它打开看看你只需在你的工程里面例化它就可以了就像你例化自定义模块一样。 Gate Function LPM_and : 可编程的按位做与运算的与门 LPM_bustri :可编程的三态门(可单向,也可双向) enabletr(高电平有效)使能tridata => result enabledt(高电平有效)使能data => tridata LPM_clshift : 可编程的组合逻辑移位器。方向和距离是可以编程的。 LPM_constant: 可编程常数生成器 LPM_decode : 可编程译码器 LPM_inv : 可编程反向器(位数可控) LPM_mux : 可编程多路选择器(sel选择哪路输出) busmus : 可编程2路选择器(LPM_mux的特殊情况) mux : 可编程多路选择器,只有一位输出结果(LPM_mux的宽度为1) LPM_or : 可编程的按位做或运算的或门 LPM_xor : 可编程的按位做异或运算的异或门 Arithmetic Funtions LMP_abs : 求绝对值(如果data = 1000000,overflow=1) LPM_add_sub : 可编程加减法器(可以由管脚决定) LPM_compare : 可编程的比较器(可以设定各种输出) LPM_counter : 可编程计数器 LPM_mult : 可编程乘法器 LPM_divide : 可编程除法器 divide : 可编程除法器(与LPM_divide没有什么区别) Parallel_add : 可编程多路并行加法器 altmult_accum : 可编程乘加器 altaccumulate : 可编程累加器 altmemmult : Storage Functions LPM_ff : 可编程的触发器(D触发器或T触发器) LPM_latch : 可编程的锁存器(gate=0锁存) LPM_ram_dq : 可编程的同步或异步单端口RAM(两套地址线). LPM_ram_dp : 可编程的简单双端口和真正双端口RAM(). LPM_ram_io : 可编程的RAM(地址线一套,数据线为双向的IO) LPM_rom : 可编程的ROM

Modelsim 仿真步骤总结

Modelsim 仿真步骤总结 Modelsim 仿真主要有以下三个方面:各版本的方法大体一致。(1)建立库并映射库到物理目录; (2)编译源代码(包括testbench); (3)执行仿真; 下面具体演示每一步的操作方法及流程,为力求简洁,其中有多种操方法的只介绍一种。 一)建立库的演示: 步骤为——启动modelsim>点击file菜单>(Change Directory)>new>(project)>library.注括号内的步骤非必须。 1.1)启动modelsim; (1.2)点击file菜单,此时若需更改路径,可以点击其中的Change Directory.(注modelsim会自动默认路径。我们也可以在1.1步骤之前建立一个文件夹用于modelsim的工程,再将路径更改到我们新建的文件夹路径。)

(1.3)点击file子菜单中的new,选择project用于新建立一个modelsim工程。(虽然此步非必须,但是建立一个新工程有益 于接下来整个仿真文件的管理。)

1.4)点击file子菜单new,再点击new下的library,用于建立 一个库。(仔细观察1.3步,新建工程的同时亦可建立库)。 至此,modelsim仿真第一大步建立库的工作完毕。

二)编译源代码(包括testbench): 大家都已知道在quartus中编译源代码的方法,这里说明一下在modelsim中编译源代码及testbench的方法。 步骤为——建立一个新工程(同时建立库)后,会自动提示你四个选项。如图: 选create new file后提示对话框,(也可以在有源文件的情况下选择add existing file到工程中。例如我们用quartus写好文件后,可以用此方法将quartus中的文件添加到modelsim工程中来)让你命名你即将创建的新文件,完毕后,会自动出现一个空白的编辑窗口,在那里输入源代码和testbench。(提示:这样编写完后点保存,便可以直接保存到上面设臵好的work库中。比起另一种方法,不建工程直接建库,再通过菜单栏source添加源

QUARTUS 7常见错误剖析

QUARTUS II常见错误剖析 made by lingfeng 1,Error (10053): Verilog HDL error at ADDBCD.v(13): can't index object "out" with zero packed or unpacked array dimensions 这个错误是由于OUT是个寄存器变量,在程序的开始忘记定义reg out 或者out寄存器变量的宽度定义错误。 2,编写好程序并进行编译后,把文件作为顶层文件然后进行波形仿真,出现对应引脚与程序中的引脚不符。 这个错误是因为把文件作为顶层文件后还要再编译一次,顶层文件才能够进行波形仿真。否则仿真对应的文件永远是上一个顶层文件。3,在给寄存器赋初值时,应该通过在进程中设置一个复位的单元来给寄存器变量赋初值。 4,项目导航窗口被关闭了,怎样重新打开? 点击主菜单的VIEW->utility windows->project navigator(工程文件) and status(编译状态) 5,Error: Can't elaborate top-level user hierarchy 解决办法:看看Always中的敏感表达式是否与之后的程序相矛盾。6,Error: Can't compile duplicate declarations of entity "class_design" into library "work" 解决办法:把文件名修改成和别的文件不重复的名字。 7,Error (10219): Verilog HDL Continuous Assignment error at adder.v(9): object "cout" on left-hand side of assignment must have a net type

QUARTUSⅡ10波形仿真(ModelSim)入门教程

QUARTUSⅡ10仿真(ModelSim)入门教程平台 软件:ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 内容 1 设计流程 使用ModelSim仿真的基本流程为: 图1.1 使用ModelSim仿真的基本流程 2 开始 2.1 新建工程 打开ModelSim后,其画面如图2.1所示。 图2.1 ModelSim画面

1. 选择File>New>Preject创建一个新工程。打开的Create Project对话框窗口,可以指定工程的名称、路径和缺省库名称。一般情况下,设定Default Library Name为work。指定的名称用于创建一个位于工程文件夹内的工作库子文件夹。该对话框如图 2. 2所示,此外还允许通过选择.ini文件来映射库设置,或者将其直接拷贝至工程中。 图2.2 创建工程的对话框 2. 按照图2.3所示,设置Project Name为LED_FLOW,Project Location为D:/led_flow。 图2.3 输入工程信息 当单击OK按钮后,在主体窗口的下方将出现Create Project标签,如图2.4所示。 图2.4 Project标签 3. 之后,将出现Add Items to the Project的对话框,如图2.5所示。 图2.5 在工程中,添加新项目 2.2 在工程中,添加新项目 在Add Items to the Project对话框中,包括以下选项:

?Create New File——使用源文件编辑器创建一个新的Verilog、VHDL、TCL或文本文件 ?Add Existing File——添加一个已存在的文件 ?Create Simulation——创建指定源文件和仿真选项的仿真配置 ?Create New Folder——创建一个新的组织文件夹 1. 单击Create New File。打开图 2.6所示窗口。 图2.6 创建工程文件夹 2. 输入文件名称:LED_FLOW,然后选择文件类型为Verilog。 图2.7 输入工程文件信息 3. 单击OK,关闭本对话框。新的工程文件将会在工程窗口显示。单击Close,以关闭Add Items to the Project。 图2.8 新的设计文件LED_FLOW.v 4. 双击打开LED_FLOW.v文件(注意:若是Verilog文件已经关联了其他的文本编辑器,则双击后在关联的文本编辑器中打开)。 图2.9 LED_FLOW代码输入窗口 在LED_FLOW.v输入下面的测试平台代码:

Quartus使用问题及解决方法总结

Quartus使用问题及解决方法总结(转载) 在QuartusII下进行编译和仿真的时候,会出现一堆warning,有的可以忽略,有的却需要注意,虽然按F1可以了解关于该警告的帮助,但有时候帮助解释的仍然不清楚,大家群策群力,把自己知道和了解的一些关于警告的问题都说出来讨论一下,免得后来的人走弯路. 下面是我收集整理的一些,有些是自己的经验,有些是网友的,希望能给大家一点帮助,如有不对的地方,请指正,如果觉得好,请版主给点威望吧,谢谢 1.Found clock-sensitive change during active clock edge at time

Modelsim使用常见问题及解决办法

Modelsim使用常见问题及解决办法 在ISE启动modelsim时遇到问题 1。我在ISE中启动modelsim时出现了下面的错误 Loading work.tb_ic1_func # ** Error: (vsim-19) Failed to access library 'xilinxcorelib_ver' at "xilinxcorelib_ver". # No such file or directory. (errno = ENOENT) # ** Error: (vsim-19) Failed to access library 'unisims_ver' at "unisims_ver". # No such file or directory. (errno = ENOENT) # Loading work.fifoctlr_ic_v2 # ** Error: (vsim-19) Failed to access library 'xilinxcorelib_ver' at "xilinxcorelib_ver". # No such file or directory. (errno = ENOENT) # ** Error: (vsim-19) Failed to access library 'unisims_ver' at "unisims_ver". # No such file or directory. (errno = ENOENT) # ** Error: (vsim-3033) fifoctlr_ic_v2.v(126): Instantiation of 'BUFGP' failed. The design unit was not found. 是什么原因? “点到仿真模式,在source里面选中你建立工程选择的芯片,然后看Processes,点开,有个compile HDL simulation library,运行一下就OK了” 2.ISE用modelsim仿真提示:# ** Error: (vish-4014) No objects found matching '*'.结果仿真时老是报错: # ** Error: (vish-4014) No objects found matching '*'. # Error in macro ./test_top_tb.fdo line 10 # (vish-4014) No objects found matching '*'. # while executing # "add wave *" 解决办法,改modelsim.ini文件中的一个参数:VoptFlow = 0 # ** Error: (vish-4014) No objects found matching 'XXXX'. 在之前的设计里有一个信号XX, 并且保持在wave.do文件里 现在这个信号在你的设计你被去掉了,modelsim仍然调用旧的wave.do,找不到对应的信号XX, 就报错误这个错误可以忽略 3.当对IP核修改后,用Modelsim仿真显示:No entity is bound for inst 或CE is not in the entity。(CE是改动后添加的一个管脚),从而仿真无结果。 解决办法:首先选中该IP核的.xco文件点击右键->属性将属性改为"Synthesis/Imp + Simulation." 然后将其对应的.v或.vhd文件的属性也改为"Synthesis/Imp + Simulation." 4.启动modelsim后,没有出错,但是有warning:(vsim-3009) [TSCALE] - Module 'ODDR' does not have a `timescale directive in effect, but previous modules do.输入信号均正确,调用的IP core或原语的输出为高阻态。

相关主题