用VerilogHDL设计一个与门逻辑,并进行前仿和后仿

执行菜单命令【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

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

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

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

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

时间: 2024-11-07 22:15:06

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

如何设计一个基于云计算的大型分布式系统

当今云计算被炒的沸沸扬扬,云计算显然已经是软件行业的大势所趋,如何设计一个基于云计算的大型分布式系统呢,下面基于云计算架构大型分布式系统展开鄙人的一点短浅的理解与见识. 首先,整个系统包含若干个系统模块,也就是子系统,每个子系统都单独的运行于一个计算机集群中,每个计算机集群包含若干台计算机. 其次,要设计一个整个系统的核心调度系统,这个调度系统运行在一个单独的计算机集群中,我们姑且将这个计算机集群叫做集群A,而这个核心调度系统只是负责记录系统的核心日志,存储每个子系统的文件位置块与索引,负责调度

设计一个 iOS 控件

代码的等级:可编译.可运行.可测试.可读.可维护.可复用 前言 一个控件从外在特征来说,主要是封装这几点: 交互方式 显示样式 数据使用 对外在特征的封装,能让我们在多种环境下达到 PM 对产品的要求,并且提到代码复用率,使维护工作保持在一个相对较小的范围内:而一个好的控件除了有对外一致的体验之外,还有其内在特征: 灵活性 低耦合 易拓展 易维护 通常特征之间需要做一些取舍,比如灵活性与耦合度,有时候接口越多越能适应各种环境,但是接口越少对外产生的依赖就越少,维护起来也更容易.通常一些前期看起来

模拟MMU设计一个将IPv4地址索引化的路由表,不同于DxR

我不知道有没有人这么玩过,也许有,也许没有.时间和空间永远都在厚此薄彼,只因为设施不全,在资源匮乏的年代,只能取舍.但是如果资源丰盈,鱼 与熊掌,完全可以兼得!对于路由查找而言,紧凑的数据结构占用了很小的空间,难道它就要为此付出时间的代价吗?如果我们考虑MMU设施,就会发现,紧凑的 数据结构不但节省了空间,还提高了速度.       我们长期受到的教育就是取义一定要舍身这样的教育,如果不舍身,取到的不会是义,也可能会被讹诈,不怪自己被讹,只因自己没死.其实仔细想想,即便在资源 不那么丰盈,甚至资

从研发人的角度评判怎样设计一个好的DCS系统

相信从事自动化或控制系统的同仁,应该了解Distributed Control System(简称DCS)的基本功能及其在工控行业的作用.从工程应用的角度,一个完整的DCS系统主要包括三个部分:HMI人机交互层.控制站层.仪表与执行机构层. HMI主要包括工程师站.监控站.历史站等,主要在具有较高稳定的PC上安装相应的软件构成.控制站层,主要实现相应的控制算法与逻辑,并通过相应的IO卡件采集数据和发送指令.仪表与执行机构,主要由各个厂家的智能变送器.电动机等组成. 由于仪表与执行机构,厂家众多,

设计一个移动应用的本地缓存机制

在手机应用程序开发中,为了降低与服务端的交互次数,加快用户的响应速度,一般都会在iOS设备中加一个缓存的机制,前面一篇文章介绍了iOS设备的内存缓存.这篇文章将设计一个本地缓存的机制. 功能需求 这个缓存机制满足以下这些功能. 1.能够将数据缓存到本地磁盘. 2.能够推断一个资源是否已经被缓存.假设已经被缓存.在请求同样的资源.先到本地磁盘搜索. 3.能够推断文件缓存什么时候过期.这里为了简单起见这里,我们在请求url资源的时候.给每次请求的文件设定一个过期的时间. 4.能够实现:假设文件已经被

如何设计一个RPC系统

版权声明:本文由韩伟原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/162 来源:腾云阁 https://www.qcloud.com/community RPC是一种方便的网络通信编程模型,由于和编程语言的高度结合,大大减少了处理网络数据的复杂度,让代码可读性也有可观的提高.但是RPC本身的构成却比较复杂,由于受到编程语言.网络模型.使用习惯的约束,有大量的妥协和取舍之处.本文就是通过分析几种流行的RPC实现案例,提供

如何设计一个易用的MVC框架

导言 把一件简单的事情做复杂很容易,把一件复杂的事情做简单却不易.在计算机的世界里, 冯.诺依曼把复杂的电脑简化为:存储器,控制器,运算器和I/O设备; 丹尼斯·里奇把晦涩的汇编语言简化为258页的<C程序设计语言>; 詹姆斯高斯林把繁琐的跨平台编码简化为256条字节码指令: 对我们大部分人而言,把简单的事情做简单就足够了. 关于框架 框架是对某一类共通业务的封装,框架设计应该遵循几个基本的原则:1 易用性 2 稳定性3 扩展性,框架从来都是给别人用 的,框架的学习成本与他的复杂度成正比,如果

设计一个JavaScript框架需要编写哪些模块

在这个js框架随处乱跑的时代,你是否考虑过写一个自己的框架?下面的内容也许会有点帮助. 一个框架应该包含哪些内容? 1. 语言扩展 大部分现有的框架都提供了这部分内容,语言扩展应当是以ECMAScript为基础进行的,不应当依赖任何宿主环境,也就是说,作为一个框架的设计者,你应当保证你的语言扩展可以工作在任何宿主环境中,而不是仅仅适合浏览器环境.你必须保证把它放到WScript,SpiderMonkey Shell,Rhino Shell,Adobe ExtendScript Toolkit甚至

如何设计一个优秀的数据库

如何设计一个优秀的数据库 (2014-04-02 12:43:21) 标   一个成功的管理系统,是由:[50% 的业务 + 50% 的软件] 所组成,而 50% 的成功软件又有 [25% 的数据库 + 25% 的程序] 所组成,数据库设计的好坏是一个关键.如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分. 有关数据库设计的材料汗牛充栋,大学学位课程里也有专门的讲述.不过,就如我们反复强调的那样,再好的老师也比不过经验的教诲.所以我归纳历年来所走的弯路及体会,并在网