- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[VHDL第一讲
贴心建议:初学时,对于简单的程序,先尽自己努力看懂每一句话,从字面上先去理解,通过英文单词的意思,自己先去琢磨该段程序所要实现的功能,然后再去和正确的意思相比对,这样比一开始就去看解释来的记忆深刻,这些是我自己的切身体会。
1.三输入与非门
在数字电路设计中,门电路是最基本的电路单元。在这里我们挑选了比较典型的三输入的与非门,完成我们的第一个设计。
三输入与非门的逻辑表达式:
逻辑符号为:
源代码:
逐行解释:
1:库声明。告诉编译器,我要使用这个库里的内容。语法是:LIBRARY 库名;(结束有个分号的,别丢了,这个分号是每条语句的结束标志,每条语句最后都是要有分号的,这是它们的标配)。
2~4:声明所选择的程序包名称,ALL就是打开整个程序包。一个库里当然有很多的程序包了,给编译器指明一下那个包要用,好缩小它的搜寻范围。别让它满库的找,怪费俺们的CPU的。语法:USE 库名.程序包.程序包的组成部分;。
一句话总结:1和2两句其实相当于C中的“#include”,使被声明的库和库中的元件对当前设计项目可见。
发散:IEEE库是最重要的资源库,我们经常使用其中的一些信号定义和数据的定义。列举一下其中比较重要的几个程序包:
(1)STD_LOGIC_1164:指定了STD_LOGIC和STD_ULOGIC逻辑系统
(2)STD_LOGIC_ARITH:包含SIGNED和UNSIGNED数据类型定义和相应的算术和比较操作还包含了几个数据转换函数,允许数据从一个类型转换为另一个类型。
(3)STD_LOGIC_UNSIGNED:
CONV_INTEGER(A)由INTEGER,UNSDGNED,SIGNED转换成STD_LOGIC_VECTOR由UNSIGNED,SIGNED转换成INTEGER
(4)STD_LOGIC_SIGNED:包含了STD_LOGIC和STD_LOGIC_VECTOR
其中,在一个程序中只要包含(1),(2),(3)就足够能应付绝大多的应用了。所以,我们建议你在程序库上和程序包的声明上可统一写成:
把三个程序包全部打开(在综合时不会耗去太多的资源的),而不必再为使用哪些库,哪些程序包而大费脑子了.
6~12:实体描述部分.
6:实体名。语法:ENTITY 实体名 IS。也不知道是哪门子的法:竟然要求实体名和所在的vhdl文本名是一样的,或者Quaruts会报错的.没办法, Quaruts是人家编的,人家不去改进,咱只能顺着他们了.就像我们要好好学习VHDL,变成高手,到时候就不会任用人单位摆布了.
7~11:端口说明.就相当于一个芯片的引脚了.a,b,c是输入引脚(IN),f是输出引脚(OUT).当然都有类型了,就象一个芯片手册里写的一样,有些是通用IO(即GPIO),有些是时钟输入脚,有些是地址总线.我们这里都是STD_LOGIC类型的.外部调用的话,就可根据要求直接”连接”这些引脚就行了.有点象OOP(面向对象设计)里的封装.呵呵.
语法:
PORT(
端口名A : 信号模式(即端口的数据流向) 类型;
端口名 B : 信号模式(即端口的数据流向) 类型(最后一个没有分号)
);(这儿有分号)
发散:信号的模式包括IN(输入),OUT(输出),inout(双向),buffer(缓冲).注意:out 是不能在程序中读的,inout是双向的,可以反馈内部而被程序可读.假设O是输出端口,S是程序里面的一个信号,你想着程序中看看这个输出对不对,于是这样写S=O,你会得到一个error:
Error (10309): VHDL Interface Declaration error in nand3_gate.vhd(19): interface object O of mode out cannot be read. Change object mode to buffer or inout.
看看其建议是:Change object mode to buffer or inout---改成buffer或inout模式,这样就以在程序中可读了。
Buffer我在以后用到的时候再讲解。
一点小的建议(也是为了程序的美观和规范):在书写端口时,输入端口先在前,再写双向端口,最后写输出端口。
数据类型我们最常用的是STD_LOGIC和STD_LOGIC_VECTOR。STD_LOGIC中文名叫标准逻辑位,有九种可选值,包括(‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’),各种值得代表含义是:‘U’:未初始化的, ‘X’:强未知的, ‘0’:强0, ‘1’:强1, ‘Z’:高阻态,??? ‘W’:弱未知的, ‘L’:弱0,??????? ‘H’:弱
您可能关注的文档
最近下载
- COLMO洗衣机工程师资格认证考试题及答案.doc VIP
- 《合理用药与用药安全》课件.ppt VIP
- 配件部经理岗位职责(24篇).docx VIP
- (人教2024版)英语八年级上册Unit 4 大单元教学设计(新教材).docx
- TCECS 179-2023 健康住宅建设技术规程.pdf VIP
- 数字孪生及车间实践第二篇数字孪生研究体系.pptx VIP
- 2025年四川省绵阳市初中学业水平考试语文真题试卷含参考答案与习作例文精品.pdf VIP
- 2024版行政管理培训课件.pptx VIP
- 《公安机关互联网安全监督检查规定》培训与解读课件.pptx VIP
- 数字孪生及车间实践第一篇数字孪生的内涵及研究应用现状.pptx VIP
文档评论(0)