在quartus使用VHDL语言完成逻辑功能设计 新人友好!!!

该教程大约需要30分钟去仔细阅读,从小白的角度解释了quartus的使用,过程中会引导你去创建一个可行的项目,掌握后续的学习VHDL的方法,完成一个基本的功能和思考一些更高层次的问题。我相信学习的最佳方式就是去实践,实践过程中依靠对解决问题的渴望去掌握知识才是最高效的。千万不要拿一篇上万字的教程去硬啃,除非你有大毅力大智慧,认为自己能看完并且记住并且能拿去用。
请勤动手,勤思考!!!你会收获颇丰

序言

首先,在接触一个完全不知道是干嘛的软件,使用一个完全没了解过的语言去完成一个自己也不怎么熟悉的项目,我们心里一定会有许多疑问。这些疑问带来的不确定性都可能成为我们完成该项目过程中的阻碍。
消除这些疑问能增强我们完成使用一个陌生工具完成一个陌生项目的信心。
所以接下来我打算先说明一些我在第一次接触中产生的疑问,来消除学习者内心的障碍。我将用非官方且更通俗,更能消除疑虑的角度说明这些问题
挑选对自己有帮助的部分看,自己也有的疑问最好仔细看。

疑问一:

如果需要使用该软件模拟一些的电路设计,最终输出波形图来验证成果。在网络上搜索了教程后发现有不同的方法,使用的文件也有所不同,这个软件是不是太过复杂,我应该选择哪种方法?

解答:实现该功能要分两步走:

  • 第一步是实现逻辑函数的功能
  • 第二步是使用特定工具输出该逻辑函数的波形图。

第二步方法较固定,记住几步操作后没有什么难的。关键在于第一步。第一步常见的实现方式有两种:

  • 一是在项目中创建一个空图,在图中通过可视化连线的方式,将不同的逻辑器件连接起来实现逻辑功能。
  • 二是通过编写VHDL文件实现逻辑功能。
    第一种方法几乎不需要学习,只要连线规范一般不会有问题,可以先尝试使用第一种方法熟悉项目流程。
    第二种方法建立在能使用VHDL语言的基础上。也是我们之后需要掌握的主要方法。

疑问二:

这个工具会特别难以掌握吗?我们需要哪些基础来使用这个工具?

想要完全掌握一款软件所有功能总是很困难的,但我们并不需要做到对于这一点,只要按需学习需要的部分就好,有针对性的学习才可以做到事半功倍。
我们使用quartus完成特定电路的波形模拟只需要记住一些固定的操作流程即可。当然,这篇教程采用VHDL完成电路逻辑的实现,这也是基础之一,只要认真看完教程就可以掌握VHDL的基本使用和学习技巧。

疑问三:

如何从更高角度来看我们要实现的最终目的?我们使用这个工具是为了什么?

数字逻辑是从哪里开始学习的,你们还记得吗?(没学过也可以直接看)

最基础的概念是开关量:二进制状态系统。二进制系统就是两种状态,可以用0和1表示。
逻辑函数:反应数字电路输入变量和输出变量之间的逻辑关系的函数。
数字逻辑可以理解为就是在研究这样一个群<开关量串,布尔运算符>
逻辑图、布尔代数、真值表等不过是逻辑函数不同的表达方式罢了。

由此我们在构建一个逻辑电路只需要关注三个问题:输入有哪些,内部逻辑关系如何,输出有哪些?

对应到疑问一中的可视化连线和VHDL方法:

  • 可视化:逻辑器件和连线(内部逻辑)、输入输出端口(输入输出)
  • VHDL:实体entity(输出输出端口)、框架(内部逻辑)

使用VHDL实现第一个功能

学习建议

快速掌握一个技术的方法是从直接阅读一个能运行的完整入门项目开始,遇到不会的就去查,甚至通常第一行就要查,但坚持这样做你查询的频率会很快降下来,你会快速掌握这门技术的核心知识点。
这里先给出注释完整的第一份VHDL代码

实操

编写VHDL源码和创建项目

新建VHDL file

--定义库和使用的数据类型
library ieee ;                             --库的调用
use ieee.std_logic_1164.all ;              --程序包的调用,类似C的include

--实体描述,用于说明系统的外部接口信息
entity entity_name is 
	port (
		x: in std_logic;                   --定义x为输入端口
		y: out std_logic                   --定义y为输出端口
	);
end VHDL;

--框架描述,描述实体的行为、功能和框架结构
architecture dataflow of entity_name is
begin
	y <= not x;                            --使用非门实现功能
end dataflow;

编写完成后点击上方紫色小三角编译
在这里插入图片描述
保存的文件一定要与实体同名。
同时会让创建项目,有多页设置,刚开始只有一页的内容需要手动设置
在这里插入图片描述
第三行默认与第二行相同,具体意思自己看,一定要认真看,一些问题我不会直接说明,需要自己发现并解决。(注意第三行的解释!!!)
之后等待编译完成即可。

模拟波形

新建VWF,edit–>insert–>Insert Node or Bus–>Node Finder–>Lilst–> ">>"键 -->OK–>OK
接下来设置输入端口的波形图,点击上方按钮(Run a function simulation)即可看到模拟的波形图。

该部分操作较固定,记住即可

回顾历程

除项目创建工作外,我们主要做了两部分工作。
一:使用VHDL完成电路设计并完成编译工作
二:VWF模拟电路输出波形

这个过程并不复杂,而且在了解VHDL的基本构成以后,可以发现,VHDL也可以很直接地与我们熟悉地逻辑函数对应起来,原则上,现在告诉你“ not 代表非 and 代表与”,你已经可以使用VHDL实现大多数的逻辑电路了。
当然,这些知识是远远不够的,实际的项目实现还有很多需要注意的细节,VHDL也绝不是如此简单,但现在你对quartus和VHDL的基本使用和使用目的都有了较为清晰的认识,脑海中应该已经有了大体的框架,之后的学习也会简单许多,不会再被大量无法理解的知识点搞得晕头转向,学了半天都不知道自己在干什么。

后续学习的建议

还是实践带动知识点的学习和理解消化,通过阅读已有项目代码来提高自己VHDL编程的能力,网上有许多单个器件功能实现的源码,用到哪个就可以去读哪个,然后自己实现一些复杂的功能。

最后:效能>效率>无脑学。明确方向,学会学习,多动手,多思考!!!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值