[page_break] 本文适合初学者,源代码:mux4_to_1.v 
 
工作内容: 
1、设计一个多路选择器,利用ModelSimSE做功能仿真; 
2、利用Synplify Pro进行综合,生成xxx.vqm文件; 
3、利用Quartus II导入xxx.vqm进行自动布局布线,并生成xxx.vo(Verilog 
4、利用ModelSimSE做后仿真,看是否满足要求。 
 
注: 
1. 仿真器(Simulator)是用来仿真电路的波形。 
2. 综合工具(Synthesizer)的功能是将HDL转换成由电路所组成的Netlist。 
3. 一般而言,在电路设计的仿真上可分为Pre-Sim 和Post-Sim。Pre-Sim 是针而Post-Sim则是针对综合过且做完成了Auto Place and Route(APR)的电路进行仿真,以确保所设计的电路实现在FPGA上时,与Pre-Sim 的功能一样。 
 
1、前仿真(Pre-Sim) 
步骤一:打开ModelSimSE,然后建立一个Project; 
※建立Project的方式为点选File → New → Project…; 
※设定Project Name 与Project location,按OK 即可建立Project。 
 
步骤二:新增设计文档或加入文档。 
※新增文档的方式为点选File → New → Source → Verilog,然后对文档进行编辑并储存为xxx.v; 
※ 加入文档的方式为点选File → Add to Project → File...,然后点选xxx.v; 
 
步骤三:编译(Compile)。 
※编译文档的方式为点选Compile → Compile All,即可编译所有的文档。 
※如果编译时发生错误,在显示错误的地方(红字)点两下,即可跳到错误。 
 
步骤四:新增或加入测试平台(Testbench)。 
※当设计完电路后,为了确定所设计的电路是否符合要求,我们会写一个测 试平台(Testbench); 
※ 新增或加入测试平台,然后编译它。 
 
步骤五:仿真(Simulate)。 
※仿真的方式为点选Simulate → Simulate…; 
※打开Design里面的work,然后点选mux_4_to_1_tb 并Add 它,最后按Load 即可跳到仿真窗口。 
  
步骤六:加入信号线。 
※ 在窗口上按右键,然后点选Add → Add to Wave; 
  
步骤七:看波形。 
※在工具列上按Run,然后就会显示波形; 
※慢慢看波形吧,没有波形就没有真相! 
  
以上就是使用ModelSim做Pre-Sim的基本流程,在此要特别强调的是,ModelSim所有的功能并不仅仅于此,如果你想要了解更多的话,一切都要靠自己花时间去问去试,只有努力的人才能有丰富的收获,加油!

2、综合(Synthesis) 
步骤一:打开Synplify Pro,然后建立一个Project。 
※先点选File,再点选New; 
※选择Project File,并设定File Name与File Location; 
  
步骤二:加入设计文件。 
※ 点选欲加入的xxx.v,然后按Add,再按OK后就可以将档案加入。 
 
步骤三:选择FPGA的Device 与其它相关设定。 
※先点选Project,再点选Implementation Options。 
※在Device 的设定如下:Technology为Altera Stratix,Part为EP1S10,Speed 为-6,Package 为FC780。 
※在Options 的设定是将FSM Compiler与Resource Sharing打勾。 
※在Constraints的设定是将Frequency设定至100Mhz。 
※在Implementation Results的设定是将Result File Name填入与电路模块相同的名称,而xxx.vgm这个文件会在QuartusII做APR时被使用。然后将下列两个选项打勾(Write Vendor Constraint File与Write Mapped Verilog Netlist)。 
※在Timing Report的设定是将Number of Critical Paths与Number of Start/End Points都设为11。 
※在Verilog里是将TOP Level Module填入与电路模块相同的名称,然后将 Use Verilog 2001打勾。 
  
步骤四:综合(Synthesis)。 
※点选RUN → Synthesize,最后出现Done!就是已经综合完毕。 
 
步骤五:检查综合后的电路。 
※先点选HDL Analyst,再点选RTL,最后点选Hierarchal View,画面会出现综合后的电路Netlist。 
  
以上就是使用Synplify将HDL程序合成为电路Netlist的基本流程,值得注意的是,当你针对不同要求而设定的Constraints不同时,你就会得到不同的电路Netlist,所要付出的硬件代价也不同,这就需要大家多花点心思来了解其中的奥妙之处。

3、自动布局布线(APR) 
步骤一:开启Quartus II,然后建立一个Project。 
※先点选File,再点选New Project Wizard…。 
※设定Work Directory,Project Name与Top-Level Entity Name,再按Next。 
  
步骤二:加入设计文件。 
※ 点选Add…,将Synplify合成出来的xxx.vqm加入,再按Next。 
  
步骤三:设定相关的EDA Tools。 
※在Tool Type点选Simulation,Tool Name点选ModelSim。 

※ 点选Settings,将Time Scale设定为1 ns。 
 
  
步骤四:设定Family。 
※ 设定Family为Stratix,再按Next。 
  
步骤五:设定Device。 
※ 设定Device 为EP1S10F780C6,再按Finish,即可完成Project的设定。
  
步骤六:编译。 
※ 点选Processing → Start Compilation,即可开始编译。  
  
步骤七:完成编译。 
※ 弹出下面窗口即代表编译完毕。 
  
以上就是使用Quartus II对电路Netlist做APR的基本流程,并且利用设定仿真工具所产生的xxx.vo(Verilog Output File)与xxx.sdo(Standard Delay Output File)做后仿真。

4、后仿真(Post-Sim) 
步骤一:启动ModelSim,然后建立一个Project。 
※建立Project的方式为点选File → New → Project…。 
※设定Project Name与Project location,按OK即可建立Project。 
 
步骤二:加入设计文档。 
※将xxx.vo更改为xxx.v,然后加入。 
 
步骤三:加入组件库文件。 
※由于我们是采用Altera的Cell Library来合成电路,所以合成后的电Netlist里所包括的那些Logic Gates与Flip-Flop 都是出自于Cell Library,所以模拟时要将此Cell Library加入。 
※我们所选用的Family是Stratix,所以到QuartusIIedasim_lib 里将Stratix的Cell Library(stratix_atoms.v)加入。 
 
步骤四:加入测试平台。 
※加入Pre-Sim的测试平台,并在测试平台里加上`timescale 1ns/100ps。 
 
步骤五:编译。 
※编译档案的方式为点选Compile → Compile All,即可编译所有的档案。 
※如果编译时发生错误,在显示错误的地方(红字)点两下,即可跳到错误。 
 
步骤六:仿真。 
※仿真文件的方式为点选Simulate → Simulate…。 
 
步骤七:加入要观察的信号。 
※在窗口上按右键,然后点选Add → Add to Wave。 
 
步骤八:观察波形。 
  
※慢慢看波形吧,没有波形就没有真相! 
 
步骤九:比对Pre-Sim 与Post-Sim。 
※ 很明显地,Post-Sim 的输出有不稳定的信号,并且受到延迟时间的影响。
  

转载自:http://www.elecfans.com/article/87/98/2010/20100607219006.html

ModelSim+Synplify+Quartus的Alte的更多相关文章

  1. 浅谈用ModelSim+Synplify+Quartus来实现Altera FPGA的仿真

    浅谈用ModelSim+Synplify+Quartus来实现Altera FPGA的仿真 工作内容: Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业 ...

  2. 14.quartus联合modelsim仿真

    在quartus调用modelsim仿真过程中,出现了一个错误,如下所示: Check the NativeLink log file I:/Quartus11.0/Myproject/testi_n ...

  3. Modelsim初级使用教程

    来源 http://blog.sina.com.cn/s/blog_6c7b6f030101ctlh.html 一. Modelsim简介 Modelsim仿真工具是Model公司开发的.它支持Ver ...

  4. 关于使用ModelSim中编写testbench模板问题

    对于初学者来说写Testbench测试文件还是比较困难的,但Modelsim和quartus ii都提供了模板,下面就如何使用Modelsim提供的模板进行操作. Modelsim提供了很多Testb ...

  5. 如何使用SignalTap II觀察reg與wire值? (SOC) (Verilog) (Quartus II) (SignalTap II)

    Abstract撰寫Verilog時,雖然每個module都會先用ModelSim或Quartus II自帶的simulator仿真過,但真的將每個module合併時,一些不可預期的『run-time ...

  6. 数字IC设计工程师的知识结构

    刚毕业的时候,我年少轻狂,以为自己已经可以独当一面,庙堂之上所学已经足以应付业界需要.然而在后来的工作过程中,我认识了很多牛人,也从他们身上学到了很多,从中总结了一个IC设计工程师需要具备的知识架构, ...

  7. 个人学习FPGA的初步过程

    对于FPGA,完全是从零开始学习,简单讲述一下我个人学习FPGA的经历吧: 没有开发板的日子.说真的要我掏腰包买开发板觉得是一件非常奢侈的事情.理由1:现成的东西,背后影藏诸多诡异的事情我们是无法体会 ...

  8. 基于dsp_builder的算法在FPGA上的实现(转自https://www.cnblogs.com/sunev/archive/2012/11/17/2774836.html)

    一.摘要 结合dsp_builder.matlab.modelsim和quartus ii等软件完成算法的FPGA实现. 二.实验平台 硬件平台:DIY_DE2 软件平台:quartus ii9.0 ...

  9. 《FPGA全程进阶---实战演练》第四章之实验平台软硬件使用简介

    本章主要是讲解读者在进行FPGA逻辑设计之前的准备工作,需要下载Quartus II软件和 Modelsim 软件,一个是用来进行FPGA逻辑设计,一个是用来对逻辑进行理论分析与验证. 1.1 qua ...

随机推荐

  1. STL - 容器 - Forward List

    forward list是一个行为受限的list, 不能走回头路. 它只提供前向迭代器, 而不提供双向迭代器. eg: rbegin(), rend(), crbegin(), crend()这些都不 ...

  2. leetcode Wildcard Matching greedy algrithm

    The recursive program will result in TLE like this: class Solution { public: bool isMatch(const char ...

  3. C10K——千万级并发实现的秘密:内核不是解决方案,而是问题所在!(转)

    既然我们已经解决了 C10K并发连接问题,应该如何提高水平支持千万级并发连接?你可能会说不可能.不,现在系统已经在用你可能不熟悉甚至激进的方式支持千万级别的并发连接. 要知道它是如何做到的,我们首先要 ...

  4. 配置的好的Apache和PHP语言的环境下,如何在Apache目录下htdocs/html目录下 同时部署两个项目呢

    建虚拟目录打开Apache->conf->httpd.conf在最下面粘贴NameVirtualHost 127.0.0.1 <VirtualHost 127.0.0.1> S ...

  5. Linear Algebra Courses

    Lecture 1:Demonstrate the columns of a matrix (imagine the vectors) in N-dimension space.How to mult ...

  6. IntelliJ Idea解决Could not autowire. No beans of 'xxxx' type found的错误提示

    本文转自:http://blog.csdn.net/u012453843/article/details/54906905 1.问题描述 在Idea的spring工程里,经常会遇到Could not ...

  7. java获取某个范围内的一个随机数

    一.取模操作 public static void main(String[] args){ for (int i = 1; i <= 20; i++){ int j = i % 11; Sys ...

  8. HDUOJ---1233还是畅通工程

    还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  9. 有效Log4j按指定级别定向输出日志到指定的输出文件地址配置Threshold,log4j中如何屏蔽父logger输出源rootlogger的additivity配置,log4j向多个文件记录日志

    log4j向多个文件记录日志 关键配置,指定想要的日志级别信息输出到指定的日志文件中: log4j.appender.errorLogger.Threshold=ERROR #扩展,可指定只在子类自己 ...

  10. js重要函数

    window.setTimeout(code,millisec)   方法用于在指定的毫秒数后调用函数或计算表达式.只执行 code 一次(比如某个界面是上左右的三个frame界面,右边这个界面要调用 ...