执行菜单命令【File】-【New Project Wizard…】,创建工程向导。

在What is the working directory for this project?下选择项目存储地址工作目录,What is the name of this project?下填写工程名,最后一栏填写顶层文件名。

加已存在文件(可选),在【File name】下选择已经存在的工程项目,利用【Add】或【Add all】命令添加文件到新工程,点击【Next】

3、选择器件,【Device family】-【Family】下选择你要使用的FPGA芯片系列,这里我选择ALtera公司的CycloneV系列(因为个人用的是友晶的DE1-SOC,芯片型号依个人不同而不同),并在【devices】下选择具体芯片型号,点击【Next】

设定第三方工具,【Design Entry/Synthesis】选择逻辑综合工具,这里可以不填,直接使用Quartus默认工具,【Simulation】下选择仿真工具,这里一般需要quartus都配套安装了Modelsim,点击【Next】

显示设置信息,显示了项目路径,项目名,顶层文件,芯片系列型号等设置信息,在检察符合需要后点击【Finish】,完成向导新建工作。

至此,就完成了一个工程的建立,后面的就是为了工程添加文件。

用框图原理图作为文件顶层(此文件可以直接用代码编程完成,此处是借此讲解如何将硬件原理图转化为程序文件)

1、选择文件类型

立刻另存为,给顶层文件起名字(这里的名字要和工程名一样)并为它定位

选择BLOCK TOOL,绘制一个block

右键绘制出来的block,选择属性

给block命名

添加定义端口

用自带的EDA工具生成一段代码的模板

删掉一些注释,顶层文件就生成了

在生成文件的基础上,添加自己的模块代码

将文件转变为符号

完成后可以在symbol tool看到我们的工程符号

点击生成管脚可以将建立的模型扩展出来

通过对文件进行编译。

至此一个工程项目就建立完成了。下面就需要编写它的仿真文件,对输出信号进行分析。

编写testbench

新建verlog文件

保存,用_tb表示testbench

编写一个时标,时标是有一个分数组成的,分子是当前文件所用的时间单位,分母是分辨率。(最开始的符号是  `,就是esc键下面那个符号)

将待测试的模型装载到testbench,将模型的例化头贴到testbench,并为他起一个实例的名称,用.操作符做接口的装配,

申明要用到的信号,并与电路模型连接

编写测试信号

整体代码如下

`timescale 1ns/1ns
module apt_get_tb;

reg a,b;
wire c;
apt_get u1(
.a(a),
.b(b),
.c(c)

);

initial
begin
a=0;b=0;
#20 a=0;b=1;
#20 a=1;b=0;
#20 a=1;b=1;
end
endmodule

至此,测试平台就完成了。

将testbench用modelsim仿真

在assignment—setting中对设置进行更改

设置中的simulation进行如下设置后点击testbench

添加testbench及仿真结束时间,(filename里添加的是.v文件不是.bak文件)

最后在quartus中设置modelsim的路径,quartus->tools->option->EDA tool options ,在右边选择modelsim_altera的安装路径

这里要确保自己的quartus和modelsim都是已经取得了lincense的,否则是调用不了modelsim的

前仿

软件自动跳转modelsim生成仿真图形,通过按键盘上的F键可以看他的全局图

修改过的testbench文件保存后,可以按方向键上键,调用用过的.do 文件,即可重新仿真。

至此,前仿的验证完成。

后仿

由于框图原理图不能作为一个国际标志在平台中互相传递,所以需要用系统工具将图形改为代码

完成后,将生成的文件加入到file中

为顶层的代码编写一个testbench

之后的步骤与前仿相同,但应理解的是此时做的是顶层的仿真,是后仿

综合编译后,就可以做顶层的前仿和后仿了,前仿按照之前的来,这里演示后仿

可以看到后仿与前仿存在着时序上的延迟,这是器件的延迟,这便是一个更真实的仿真结果。

(需要注意的是cyclone V系列的芯片已经不再支持时序仿真了,只能跑功能仿真,如果芯片类型选的是Cyclone V系列的话,它就会一致弹出

Rerun the EDA Netlist Writer的对话框,这点需要注意,网上搜索说这里需要改setting或者说start EDA Netlist Writer都是坑爹的,博主就被这
些坑货误导了一天来找问题,希望能够给大家个借鉴,修改芯片型号进行后仿,虽然也没意义了,但还是把图给贴一下,让大家了解下前仿与
后仿的区别

前仿看到的是逻辑功能间的关系,后仿不仅可以看到逻辑功能间的关系,还能看到他们时序间的关系。

用VerilogHDL设计一个与门逻辑,并进行前仿和后仿的更多相关文章

  1. 设计一个 硬件 实现的 Dictionary(字典)

    Dictionary 就是 字典, 是一种可以根据 Key 来 快速 查找 Value 的 数据结构 . 比如 我们在 C# 里用到的 Dictionary<T>, 在 程序设计 里, 字 ...

  2. 如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文

    阅读目录 前言 明确业务细节 建模 实现 结语 一.前言 上一篇我们已经确立的购买上下文和销售上下文的交互方式,传送门在此:http://www.cnblogs.com/Zachary-Fan/p/D ...

  3. 如何设计一个RPC系统

    版权声明:本文由韩伟原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/162 来源:腾云阁 https://www.qclou ...

  4. 设计一个 iOS 控件

    转载自:http://blog.csdn.net/zhangao0086/article/details/45622875 代码的等级:可编译.可运行.可测试.可读.可维护.可复用 前言 一个控件从外 ...

  5. 如何一步一步用DDD设计一个电商网站(十三)—— 领域事件扩展

    阅读目录 前言 回顾 本地的一致性 领域事件发布出现异常 订阅者处理出现异常 结语 一.前言 上篇中我们初步运用了领域事件,其中还有一些问题我们没有解决,所以实现是不健壮的,下面先来回顾一下. 二.回 ...

  6. java开发中的链式思维 —— 设计一个链式过滤器

    概述 最近在弄阿里云的sls日志服务,该服务提供了一个搜索接口,可根据各种运算.逻辑等表达式搜出想要的内容.具体语法可见https://help.aliyun.com/document_detail/ ...

  7. Android实训案例(九)——答题系统的思绪,自己设计一个题库的体验,一个思路清晰的答题软件制作过程

    Android实训案例(九)--答题系统的思绪,自己设计一个题库的体验,一个思路清晰的答题软件制作过程 项目也是偷师的,决心研究一下数据库.所以写的还是很详细的,各位看官,耐着性子看完,实现结果不重要 ...

  8. 如何设计一个web容器

    开发一个web容器涉及很多不同方面不同层面的技术,例如通信层的知识,程序语言层面的知识等等,且一个可用的web容器是一个比较庞大的系统,要说清楚需要很长的篇幅,本文旨在介绍如何设计一个web容器,只探 ...

  9. 如何设计一个可用的web容器

    之前在另外一个平台(http://www.jointforce.com/jfperiodical/article/1035)发表的一篇文章,现在发布到自己的博客上. 开发一个web容器涉及很多不同方面 ...

随机推荐

  1. 如何正确实现 Java 中的 HashCode

    相等 和 Hash Code 从一般角度来看,Equality 是不错的,但是 hash code 更则具技巧性.如果我们在 hash code上多下点功夫,我们就能了解到 hash code 就是用 ...

  2. 机器学习算法中的准确率(Precision)、召回率(Recall)、F值(F-Measure)

    摘要: 数据挖掘.机器学习和推荐系统中的评测指标—准确率(Precision).召回率(Recall).F值(F-Measure)简介. 引言: 在机器学习.数据挖掘.推荐系统完成建模之后,需要对模型 ...

  3. echarts属性的设置(完整大全)

    // 全图默认背景  // backgroundColor: ‘rgba(0,0,0,0)’, // 默认色板 color: ['#ff7f50','#87cefa','#da70d6','#32cd ...

  4. java中异常处理

    看到一篇异常处理的好文章: Java异常处理机制主要依赖于try,catch,finally,throw,throws五个关键字. try 关键字后紧跟一个花括号括起来的代码块,简称try块.同理:下 ...

  5. Maven项目中遇到的问题及其解决方案

    Maven中pom报红 1.jdk版本是否符合要求? 2.maven的本地confg中的setting.xml中是否和要求的jdk版本一致? 3.maven本地仓库路径是否正确,即为自己的确定的仓库位 ...

  6. 高并发高负载系统架构-php篇

    首先呢,我罗列一下文章的目录,让大家有个整体轮廓的了解! 1.为什么要进行高并发和高负载的研究 2.高并发和高负载的约束条件 3.解决之道——硬件篇 4.解决之道——部署篇 5.解决之道——环境篇 6 ...

  7. route命令详解

    1.   使用背景:需要接入两个网络,一个是部署环境所在内网环境,这个环境是上不了外网, 外网环境很可能是一个无线网络.如果两者都连接上,很可能导致有一方不能起作用,即外网或内网上不了,常常需要使用繁 ...

  8. oracle 连接字符串的问题

    未指定的错误,发生了一个 Oracle 错误,但无法从 Oracle 中检索错误信息.数据类型不被支持. 原因是你用的ADO   for   ORACLE的驱动是微软的Microsoft OLE DB ...

  9. Netty4.0源码解析 NioServerSocketChannel

    一.引言Netty的Channel在JDK NIO的Channel基础上做了一层封装,提供了更多的功能.Netty的中的Channel实现类主要有:NioServerSocketChannel(用于服 ...

  10. python import hashllb

    http://www.cnblogs.com/alex3714/articles/5161349.html 用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224 ...