0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Verilog/VHDL语法学习是掌握基本代码设计的技能以及经验总结

NJ90_gh_bee81f8 2017-12-19 13:09 次阅读

FPGA/CPLD器件的设计输入有很多种方式,如绘制原理图、编写代码或是调用IP核。早期的工程师对原理图的设计方式情有独钟,这种输入方式应付简单的逻辑电路还凑合,应该算得上简单实用,但随着逻辑规模的不断攀升,这种落后的设计方式已显得力不从心。取而代之的是代码输入的方式,当今绝大多数的设计都采用代码来完成。
Verilog/VHDL语法学习是掌握基本代码设计的技能

FPGA/CPLD开发所使用的代码,我们通常称之为硬件描述语言(Hardware Description Language),目前最主流的是VHDL和Verilog。VHDL发展较早,语法严谨;Verilog类似C语言,语法风格比较自由。IP核调用通常也是基于代码设计输入的基础之上,今天很多EDA工具的供应商都在打FPGA/CPLD的如意算盘,FPGA/CPLD的设计也在朝着软件化、平台化的方向发展,也许在不久的将来,越来越多的工程只需要设计者从一个类似苹果商店的IP核库中索取组件进行配置,最后像搭积木一样完成一个项目,或者整个设计都不需要见到一句代码。当然了,未来什么情况都有可能发生,但是底层的代码逻辑编写方式无论如何还是有其生存空间的,毕竟一个个IP核组件都是从代码开始的,所以对于初入这个行当的新手而言,掌握基本代码设计的技能是必须的。

我们不过多谈论VHDL和Verilog语言孰优孰劣,总之这两种语言是当前业内绝大多数开发设计所使用的语言,从二者对电路的描述和实现上看,有许多相通之处。无论是VHDL还是Verilog,建议初学者先掌握其中一门,至于到底先下手哪一门,则需要读者根据自身的情况做考量。对于没有什么外部情况限制的朋友,若之前有一定的C语言基础,不妨先学Verilog,这有助于加快对语法本身的理解。在将其中一门语言学精、用熟之后,最好也能够着手掌握另一门语言。虽然在单个项目中,很少需要大家“双语齐下”,但在实际工作中,还是很有可能需要去接触另一门语法所写的工程。网络上有很多很好的开源实例,若你只会Verilog,而参考实例却是VHDL的,那么就让你很尴尬了;忽然有一天A同事离职,老板把他写个半半的Verilog工程扔给只会VHDL的你维护,那你可就被动难堪了……所以嘛,对于VHDL和Verilog的取舍问题,建议先学精一门,也别忘了兼故另一门,无论哪一种语言,至少咱也要能看懂别人的设计。

HDL语言虽然和软件语言有许多相似之处,但由于其实现对象是硬件电路,所以他们之间的设计思想存在较大差异。尤其是那些做过软件编程的朋友,很喜欢用软件的顺序思想来驾驱HDL语言,岂不知HDL实现的硬件电路大都是并行处理的。也许就是这么个大弯转不过来,所以很多朋友在研究HDL语言所实现的功能时常常百思不得其解。对于初学者,尤其是软件转行过来的初学者,笔者的建议是不要抛开实际电路而研究语法,在一段代码过后,多花些精力比对实际逻辑电路,必要时做做仿真,最好能再找些直观的外设在实验板上看看结果。长此以往,若能达到代码和电路都心中有数,那才证明真真正正掌握HDL语言的精髓了。

HDL语言的语法条目虽多,但并非所有的HDL语法都能够实现到最终的硬件电路,由此进行划分,可实现为硬件电路的语法我们常称为可综合的语法,而不能够实现到硬件电路中,却常常可作为仿真验证的高层次语法我们则称之为行为级语法。很多朋友在初学语法时,抱着一本语法书晕头转向的看,最后实战的时候却常常碰到这语法不能用那语法不支持的报错信息,从而更加抱怨HDL不是好东西,学起来真困难。其实不然,可综合的语法是一个很小的子集,对于初学者,建议先重点掌握好这个子集,实际设计中或许靠着10来条基本语法就可以打天下了,怎么样?HDL语言一下变简单了吧。这么说一点不夸张,本书的重点就是要通过各种可实现到板级的例程让大家快速的掌握如何使用可综合的语法子集完成一个设计。后面一节我们会将常用的可综合语法子集逐一罗列并简单介绍。

对于入了门的同学们,也不是说掌握了可综合的语法子集就万事大吉了,话说“革命尚未成功,同志还需努力”。行为级语法也非一无是处,都说“存在即是合理”,行为级语法也大有用处。一个稍微复杂的设计,若是在板级调试前不经过几次三番的仿真测试,一次性成功的概率几乎为零。而仿真验证也有自己的一套高效便捷的语法,如果再像底层硬件电路一样搭仿真平台,恐怕就太浪费时间了。行为级语法最终的实现对象不是FPGA/CPLD器件,而是咱手中的电脑,动辄上G甚至双核、四核的CPU可不愿做老牛拉破车的活,所以行为级语法帮助我们在仿真过程中利用好手中的资源,能够快速、高效的完成设计的初期验证平台搭建。因此,掌握行为级的语法,可以服务于我们在设计的仿真验证阶段的工作。说多了,大家不要晕,本书重点在可综合语法,也是初学者重点突击方向,行为级语法是更高层次设计的追求,作为初学者,咱可以缓一缓,话说“先会走路再学飞”嘛。

对于HDL语言的学习,笔者根据自身的经验,提几点建议。

首先,手中需要准备一本比较完整的语法书籍,这类书市场上已经是满天飞了,内容相差无几,初学者最好能在在开始FPGA/CPLD的学习前花些时间认真的看过一遍语法,尽可能的理解每条语法的基本功能和用法。当然了,只需要大家认真看过、理解过,做到相关语法心中有数就行,咱也不是为了应付考试,也没必要去死记硬背任何东西。语法的理论学习是必须的,能够为后面的实践打下坚实的基础。有些实在不好理解的语法,也不要强求,今后在遇到类似语法在实例中的参考用法时再掌握不迟。

其次,参考一些简单的例程,并且自己动手写写代码实现相同或相近的电路功能。这个过程中可能需要结合实际的FPGA/CPLD开发工具和入门级学习套件。FPGA/CPLD的开发工具前面章节已经有所介绍,主要是掌握Quartus II(Altera公司的器件使用)或ISE(Xilinx公司的器件使用)的使用,学会使用这些工具新建一个工程、编写代码、分配管脚、进行编译、下载配置文件到目标电路板中。入门级的学习套件,简单的说,就是一块板载FPGA/CPLD器件的电路板,这块电路板不需要有很多高级的外设,一些简单的常见外设即可(如蜂鸣器、流水灯、数码管UART、IIC等);一条下载线和相关的连接线。通过开发工具我们可以进行工程的建立和管理;而通过学习套件,我们就可以直观的验证工程是否实现了既定的功能。在实践的过程中,大家一定要注意自己的代码风格,当然了,这很大程度上取决于参考例程的代码风格。至于什么样的学习套件配套的参考例程是规范的,倒也没有一个界定之说,在建议大家选择口碑较好的学习套件的同时,也非常推荐大家多去读读FPGA/CPLD原厂Altare(qts_qii5v1.pdf)或Xilinx(xst.pdf)的官方文档,在他们的一些文档手册中有各种常见电路的实现代码风格和参考实例。在练习的过程中,大家也要学会使用开发工具生产的各种视图,尤其是RTL视图。RTL视图是用户输入代码进行综合后的逻辑功能视图,这个视图很好的将用户的代码用逻辑门的方式诠释出来,初学者可以通过查看RTL视图的方式来看看自己写的代码所能实现的逻辑电路,以加深对语法的理解;反之,也可以通过RTL视图来检验当前所写的代码是否实现了期望的功能。

总之,HDL语言的学习,简单的归纳,就是需要初学者多看、多写、多思考、多比对。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1600

    文章

    21284

    浏览量

    592883
  • Verilog
    +关注

    关注

    28

    文章

    1324

    浏览量

    109285
  • vhdl
    +关注

    关注

    30

    文章

    814

    浏览量

    127666

原文标题:FPGA入门:Verilog/VHDL语法学习的经验之谈

文章出处:【微信号:gh_bee81f890fc1,微信公众号:面包板社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    verilog语法学习心得

    verilog语法学习心得1.数字电路基础知识: 布尔代数、门级电路的内部晶体管结构、组合逻辑电路分析与设计、触发器、时序逻辑电路分析与设计2.数字系统的构成: 传感器AD数字处理器DA执行部件3.
    发表于 01-12 15:15

    FPGA入门学习经验总结(转)

    ,个人偏好verilog,当然不是说vhdl不好,反正写出来的都是电路,那当然就不要在语言的语法 上面花太多的功夫了,verilog 言简意赅assign always case if
    发表于 04-09 08:01

    FPGA入门:Verilog/VHDL语法学习经验之谈

    FPGA入门:Verilog/VHDL语法学习经验之谈 本文节选自特权同学的图书《FPGA/CPLD边练边学——快速入门Verilog/
    发表于 01-29 09:20

    FPGA实战演练逻辑篇35:语法学习经验之谈

    语法学习经验之谈本文节选自特权同学的图书《FPGA设计实战演练(逻辑篇)》配套例程下载链接:http://pan.baidu.com/s/1pJ5bCtt FPGA器件的设计输入有很多种方式,如
    发表于 06-10 12:39

    勇敢的芯伴你玩转Altera FPGA连载29:语法学习经验之谈

    `勇敢的芯伴你玩转Altera FPGA连载29:语法学习经验之谈特权同学,版权所有配套例程和更多资料下载链接:http://pan.baidu.com/s/1i5LMUUD FPGA器件
    发表于 12-04 21:11

    verilog开发经验总结

    本部分不细分代码书写以及前仿工作,主要说明一些代码应该保持的风格,方便后续综合实现。虽然Verilog HDL以其近似C语言的语法、风格占据
    发表于 07-19 07:39

    【特权同学推荐】Verilog HDL语法学习教程及135个设计实例

    本资料主要介绍了Verilog HDL 语言的基本知识、设计指导以及相关案例,目的是使初学者能够迅速掌握HDL 设计方法,了解并掌握Verilog
    发表于 11-26 11:27

    掌握VHDL语法VHDL语法学习笔记

    进行了修订,从更高的抽象层次和系统描述能力上扩展 VHDL 的内容,并公布了新版本的 VHDL,即 IEEE 标准的 1076-1993版本(简称 93 版)。现在,VHDLVeril
    发表于 09-02 19:32

    Verilog代码的基本程序框架

    了解一下Verilog代码的基本程序框架,这样可以让我们先对Verilog程序设计有一个整体的概念把握,进而在后续的Verilog语法学习
    发表于 07-27 07:51

    SOPC Builder/Nios 学习经验总结

    SOPC Builder/Nios 学习经验总结
    发表于 07-22 15:32 0次下载
    SOPC Builder/Nios <b class='flag-5'>学习</b><b class='flag-5'>经验总结</b>

    线圈天线设计经验总结

    线圈天线设计经验总结
    发表于 09-12 17:21 224次下载

    做四轴飞行器的经验总结

    做四轴飞行器的经验总结,请各位大神共同学习,里面是一位大神做四轴飞行器的经验总结
    发表于 11-11 16:52 0次下载

    指针经验总结

    指针经验总结
    发表于 10-27 15:44 19次下载
    指针<b class='flag-5'>经验总结</b>

    根据学习经验以及教学经验总结学习单片机的4个步骤

    如何学习单片机的问题,我设计的这四个步骤,并不是拍拍脑袋想出来的,而是根据很多的学习经验以及教学经验总结出来的一套非常科学的
    的头像 发表于 01-18 15:10 3663次阅读
    根据<b class='flag-5'>学习</b><b class='flag-5'>经验</b><b class='flag-5'>以及</b>教学<b class='flag-5'>经验总结</b>出<b class='flag-5'>学习</b>单片机的4个步骤

    VHDL语法学习笔记

    VHDL 的 英 文 全 名 是 Very-High-Speed Integrated Circuit Hardware DescriptionLanguage,诞生于 1982 年。 1987
    发表于 02-10 17:42 0次下载