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

  工作内容:

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

  Synplify、Synplify Pro和Synplify Premier是Synplicity(Synopsys公司于2008年收购了Synplicity公司)公司提供的专门针对FPGA和CPLD实现的逻辑综合工具,Synplicity的工具涵盖了可编程逻辑器件(FPGAs、PLDs和CPLDs)的综合,验证,调试,物理综合及原型验证等领域。Quartus® II design 是最高级和复杂的,用于system-on-a-programmable-chip (SOPC)的设计环境。 QuartusII design 提供完善的 timing closure 和 LogicLock? 基于块的设计流程。QuartusII design是唯一一个包括以timing closure 和 基于块的设计流为基本特征的programmable logic device (PLD)的软件。 Quartus II 设计软件改进了性能、提升了功能性、解决了潜在的设计延迟等,在工业领域率先提供FPGA与mask-programmed devices开发的统一工作流程。

  1、设计一个多路选择器,利用ModelSimSE做功能仿真;多路选择器是数据选择器的别称。在多路数据传送过程中,能够根据需要将其中任意一路选出来的电路,叫做数据选择器,也称多路选择器或多路开关。

  2、利用Synplify Pro进行综合,生成xxx.vqm文件;

  3、利用Quartus II导入xxx.vqm进行自动布局布线,并生成xxx.vo(Verilog

  4、利用ModelSimSE做后仿真,看是否满足要求。

  注:

  1. 仿真器(Simulator)是用来仿真电路的波形。仿真器(emulator)以某一系统复现另一系统的功能。与计算机模拟(Computer Simulation)的区别在于,仿真器致力于模仿系统的外在表现、行为,而不是模拟系统的抽象模型。请参阅仿真和模拟词条。

  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://bbs.dzsc.com/space/viewspacepost.aspx?postid=102904

转载于:https://www.cnblogs.com/BruceLone/p/4266083.html

浅谈用ModelSim+Synplify+Quartus来实现Altera FPGA的仿真相关推荐

  1. ModelSim+Synplify+Quartus的Alte

    [page_break] 本文适合初学者,源代码:mux4_to_1.v    工作内容:  1.设计一个多路选择器,利用ModelSimSE做功能仿真:  2.利用Synplify Pro进行综合, ...

  2. 浅谈MySQL存储引擎-InnoDBMyISAM

    浅谈MySQL存储引擎-InnoDB&MyISAM 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式 ...

  3. 【大话设计模式】——浅谈设计模式基础

    初学设计模式给我最大的感受是:人类真是伟大啊!单单是设计模式的基础课程就让我感受到了强烈的生活气息. 个人感觉<大话设计模式>这本书写的真好.让貌似非常晦涩难懂的设计模式变的生活化.趣味化 ...

  4. 学校计算机机房好处,浅谈学校计算机机房维护

    浅谈学校计算机机房维护    现在的学校机房都配置了数量较多的计算机,而且机房的使用非常频繁.对于怎样维护好计算机,特别是计算机软件系统,对广大计算机教师来说是一个很重要且非常现实的问题.下面就本人在 ...

  5. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  6. mybatis与php,浅谈mybatis中的#和$的区别

    浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...

  7. 浅谈GCC预编译头技术

    浅谈GCC预编译头技术 文/jorge --谨以此文,悼念我等待MinGW编译时逝去的那些时间. 其 实刚开始编程的时候,我是丝毫不重视编译速度之类的问题的,原因很简单,因为那时我用BASICA.后来 ...

  8. 【笔记】震惊!世上最接地气的字符串浅谈(HASH+KMP)

    震惊!世上最接地气的字符串浅谈(HASH+KMP) 笔者过于垃圾,肯定会有些错的地方,欢迎各位巨佬指正,感激不尽! 引用:LYD的蓝书,一本通,DFC的讲稿,网上各路巨佬 Luguo id: 章鱼那个 ...

  9. 浅谈几种区块链网络攻击以及防御方案之其它网络攻击

    旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/16/network_attack_of_blockchain_other_attack/ 写在前面的话 自比特 ...

最新文章

  1. Docker最全教程——从理论到实战(六)
  2. 程序员写代码崩溃,路过的暖心美团骑手:我帮你看看!
  3. 120.数据缓存cache的基本概念
  4. jsp网上商城jsp课程设计
  5. java.lang.NoClassDefFoundError: org.ksoap2.serialization.SoapObject
  6. math:线性代数之行列式
  7. [vue-element] ElementUI怎么修改组件的默认样式?
  8. C语言ODBC连接MySQL数据库制作简易用户登录系统
  9. Ubuntu安装Curl的方法
  10. 如何在win10搜索计算机,如何在win10电脑的任务栏搜索框中添加地址?
  11. 亚马逊AI惹众怒:一个没有意识的程序,竟然自己学会了“重男轻女”
  12. Android 悬浮按钮 两种实现方法
  13. 将字符串转换为数组_LeetCode108-将有序数组转换为二叉搜索树
  14. Android系统生成jks签名
  15. Tomcat之—— linux/centos 解决Tomcat内存溢出
  16. 这些年的项目管理心得
  17. VS Code插件离线安装教程
  18. linux编译gdal geos,使用nmake编译GDAL+GEOS(傻瓜教程)
  19. java技术面试一定要跳出来的坑,可曾听闻!
  20. 国产ChatGPT:科大讯飞、网易有道的新“斗兽场”

热门文章

  1. 深入剖析ERP实施失败率高成功率低的原因
  2. 一个 iPod touch 用户的魅族 M8 使用体验
  3. 和Sun一起开源(武林外传游戏外挂Java源代码)
  4. 一元线性回归分析的R语言实现(RStudio)
  5. 宿华和程一笑,说一说快手背后的两个男人!
  6. MPEG LA推出一站式Qi无线充电许可
  7. quest3d通道英汉对照部分
  8. 第一个Android 程序的源代码: TxtReader文本阅读器
  9. 当我阳了之后是如何用Python来自动买药的
  10. pyqt任务栏图标问题