原创 关于Verilog HDL的学习,我随便说两句

2009-7-16 23:42 2574 7 10 分类: FPGA/CPLD
原创作品,转载请注明出处,否则保留法律手段维权!
http://www.5ifpga.com/viewthread.php?tid=106
1. 首先讲一下为什么需要学习硬件描述语言(Hardware Description Language,HDL)

    硬件描述语言是一种形式化方法描述数字电路和系统的语言。数字电路,应该是在大二上学期左右学习的课程,是一门非常重要的课程。现在大学的可能主要集中在逻辑门和小规模集成电路的讲解上,很少涉及到HDL。当然,我们是可以通过一些列的74系列芯片构成我们想设计数字系统,但是当系统门数增多,设计就会变得非常复杂和困难——但是照样有老外用这个方法实现了8位处理器,不过说实话,其成本和消耗的精力只能用来赚点眼球效应,而没太多的实际意义。
    随着EDA技术发展,现在更多的是采用CPLD、FPGA、ASIC等来实现。首先采用HDL由抽象到具体、逐层描述设计思想,最后利用EDA工具进行仿真、综合,转换成门级电路网表,接下来再用CPLD/FPGA/ASIC自动布局布线工具把网表转换成具体电路布线结构的实现(这个概念可能对新手有一定难度,打个比方就好像是选了一堆适用的74芯片,然后再进行了连线)。
    现在的数字系统和数字信号处理发展相当快,掌握一门HDL,是理工科大学生的一个基本技能,现在的趋势是甚至比掌握单片机更加重要。因为我们使用HDL,甚至可以自己编写一个自己的单片机出来,然后在FPGA/ASIC上实现。

2. 选Verilog还是VHDL?
    硬件描述语言的发展至今已经有20多年的历史。现在主要的语言VHDL(Very High Speed Integerated Hardware Description Language)和Verilog HDL(Verilog Hardware Description Language)适应了历史发展的趋势和要求,先后成为IEEE标准。
    由我看来,语言的出现就是用语言描述替代图形化(元件拼凑)设计,把我们要实现的功能和思想用语言的形式写出来,转换成实际电路的工作就交给EDA工具去做,从而简化了我们设计的工作,节约了开发的时间。也可以这么说,对于硬件不是特别明白的人也不必要去了解过多的关于电路的东西就可以开始做开发,对于科研人员可能更为有用。
    选Verilog还是VHDL学习,这个问题有很多的争论。
    这个东西好像蛮重要的,因为刚开始就要选定用什么语言,要比较两种语言的优劣,使用的情况等等,以后才能更好的学习。我只会Verilog,所以不敢乱弹两者之间的优劣,想从另外一个角度来说一下。
    这两种语言都是用于数字电子系统设计的硬件描述语言,而且都已经是IEEE的标准。VHDL 1987年成为标准,而Verilog是1995年才成为标准的。这个是因为VHDL是美国军方组织开发的,而Verilog是一个公司的私有财产转化而来的。为什么Verilog能成为IEEE标准呢?它一定有其优越性才行,所以说Verilog有更强的生命力。
    这两者有其共同的特点:
    1.能形式化地抽象表示电路的行为和结构;
    2.支持逻辑设计中层次与范围地描述;
    3.可借用高级语言地精巧结构来简化电路行为和结构;具有电路仿真与验证机制以保证设计的正确性;
    4.支持电路描述由高层到低层的综合转换;
    5.硬件描述和实现工艺无关;
    6.便于文档管理;
    7.易于理解和设计重用——这点很重要啊!
    但是两者也各有特点。Verilog HDL推出已经有20年了,拥有广泛的设计群体,成熟的资源也比VHDL丰富(但是好像我在找资料的时候都是VHDL的资料多一些,这个和现在的氛围有关)。Verilog更大的一个优势是:它非常容易掌握,只要有C语言的编程基础,通过比较短的时间,经过一些实际的操作,可以在2~3个月内掌握这种设计技术。而VHDL设计相对要难一点,这个是因为VHDL不是很直观,需要有Ada编程基础(我都不知道是什么,晕了),一般认为至少要半年以上的专业培训才能掌握。
    目前版本的Verilog HDL和VHDL在行为级抽象建模的覆盖面范围方面有所不同。一般认为Verilog在系统级抽象方面要比VHDL略差一些,而在门级开关电路描述方面要强的多。
    近10年来,EDA界一直在对数字逻辑设计中究竟用哪一种硬件描述语言争论不休,目前在美国,高层次数字系统设计领域中,应用Verilog和VHDL的比率是80%和20%;日本和台湾和美国差不多;而在欧洲VHDL发展的比较好。在中国很多集成电路设计公司都采用Verilog,但VHDL也有一定的市场。
    夏宇闻老师推荐应该先学Verilog,然后再学习VHDL。我觉得也是,只会一门语言是不够的,否则在交流上会出现问题,而且用原理图的方法设计数字电路也是一个必备的能力,否则不能软硬通吃,达到大牛的水平啊。
    大学里面有的学校会讲述VHDL,但是并不妨碍学习Verilog。

3. 需要一些什么书?
    这个问题,可能不同的人回答有不同的答案,每个人推荐的书也不一样。不过关于Verilog,夏宇闻老师绝对是中国的泰斗级人物,我推荐的几本书都和他有一定的关系。这个不是因为我个人和他关系好,而是确实这几本书不错。我建议大家最好有纸版的书,一个方面是支持夏老师的辛勤工作,另外一个方面也是便于阅读和学习。
    (1)没有学过数字电路的同学,建议首先购买一本STEPHEN BROWN编写、夏老师翻译的《数字逻辑基础与VERILOG设计(原书第2版)》。这本书在【Altera FPGA/CPLD资料专版】有电子书可以下载。本书可以作为数字电路的课本,也讲了Verilog的,是一本不可多得的好书。本来我这个学期准备在学校以这本书为教材开全校选修课的,结果领导不知道什么原因把这个课给卡擦了……
    (2)有没有学过数字电路的同学,都应该有一本《Verilog HDL数字设计与综合(第二版) 》,该书由Samir Palnitkar 编著,夏老师翻译。该书的英文原版被视为Verilog的经典著作,美国很多大学的研究生课程的课本,中文版我也看了一部分,觉得还是不错的书,【Altera FPGA/CPLD资料专版】有中英文两个版本的电子书。网上有很人攻击这本书翻译的不好,不过看了那些评论和书之后,自然有定论,流言自然会不攻自破。
    (3)第三本是夏老师编著的《VERILOG数字系统设计教程(第2版)》。这本书在Altera FPGA/CPLD资料专版】有下载,我看过第一版我没看过,现在这本书还经常翻翻,都已经被我弄得非常破旧了。这本书刚出来的时候国内还没有很好的Verilog方面的书,我是托人在北京帮我买的(那会儿好像网上书店还没有呢)。书中对于语法和实际应用都讲的非常非常好,强烈建议大家好好阅读和学习。
    书就推荐这么多,可能还需要一些资料,否则光是语言,没有实战,不容易有实际的感受。后面我还会推荐一些资料和某些书的一些章节,到了具体的地方再说。

4. 硬件工具
    在学习语言的同时,我觉得应该要学习硬件的使用,毕竟我们是为了设计硬件电路才学习语言的。在本站的教程专版有相应的硬件工具,可以从本站购得PCB自己焊接,也可以自己制作相应的电路模块进行学习。
    从我写的那篇《根据学习的目的和自身的条件选用适合的硬件》的文章中找到适合自己的硬件,不过我推荐大学生朋友最好选择下面一种组合,花的钱最少,还能得到最好的学习效果。
 点击看大图
    [PN09-03]MAX II CPLD 启蒙板+  [PN09-04]EDA/MCU扩展实验板+  [PN09-02]Altera USB Blaster。制作的成本可能在200块钱多一些吧。
    硬件上必须要花一些钱,不能总是觉得有些东西好像很贵,舍不得。其实现在更多的人宁愿把钱花在玩游戏、吃吃喝喝,也不肯把钱花在学习上。我很喜欢那种自己去找办法学习知识,自己买硬件或做硬件学习的学生。我遇上这样的学生,有时候还会主动给他们硬件来学习。而对于那种有惰性的学生,我觉得可能没几个老师会喜欢的。

5. 软件
    Altera公司的Quartus II,设计软件。
    Mentor Graphics公司的ModelSim,仿真软件,Altera的软件里面也有相应的AE版本。
    其它的一些综合工具、程序编写工具,可以等到学习的差不多了再弄。

6. 资料篇
    软件的使用,我觉得最直接的方法是看厂商的Help,其次就是上面提到的有两本书的附录中也有相应的资料。
    DE2板子的10个例子,在【FPGA与SOPC设计教程:DE2实践 】这本书的第六章有中文版的翻译,大家可以到下载区找这本书。
    其它的学习资料或教程——我也准备写这么个东西,但是一直在思考是该从编程、硬件应用还是数字逻辑的角度来进行讲述,迟迟没有动笔是因为把握不好方向,一旦方向错了,会让很多人走弯路,我可负不起这个责任。
    其实,资料并不在多,关键是精,另外一个就是找的资料一定要看,不要以自己有多少资料为荣,应该是以自己看了多少资料为荣。

7. 学习的过程
    学习的过程,每个人都不太相同。我以个人经验随便说两句吧。
    首先是软件的使用,比如QuartusII的使用应该放在所有的学习之前(学过数字电路的同学,如果没有学过的话,先把一些基本概念学一下,在学习到《数字逻辑基础与VERILOG设计》的时候开始用原理图设计的方法学习使用该软件),然后就是学习Verilog了,建议在学习的过程中把书中的例子都用软件做一次,也利用Quartus提供的仿真功能进行仿真。
    基本的语法知识学习的同时,书上很多仿真的例子在Quartus里面并不能实行,这个时候就需要学习使用ModelSim了。
    进一步学习Verilog的高级编程知识,利用软件多做一些例子程序。
    上面推荐的后两本书看的差不多的时候(夏老师那本书的中级篇CPU设计之前的内容,另外那本第一部分结束),就可以到板子上编一些实际的应用程序了。这个时候就可以参考DE2那本书的几个例子,或者是参考电路板上的硬件,针对不同的部件进行编程和验证。
    然后就是根据自己的兴趣爱好和专业方向,找一个题目用Verilog去实现(或者找相关的老师,看他们手上有没有这样的方向,你可以去帮忙做点什么的),这个过程中需要学习更多其他方面的知识,这样才能做成真正的应用系统。
    这个时候可能手上的CPLD的资源可能就不那么够了,也许就该用FPGA来做了。此外FPGA和CPLD还是有区别的,两个器件应用的场合有所不同,这个在学习的过程中也要逐步积累这些知识和经验。此外,还可以学习一些SOC方面的知识,这里不仅仅是指的Nios II。
    后面继续学习,不断学习,持续学习——学习是一辈子的事情,不是花上那么几个月你就能把所有的技能学到手,更多的时候是通过实践不断提升自己的能力,这就是所谓的实践出真知。我想从大二开始学习到大三结束,两年的时间基本能掌握这门技能,大四的毕业设计应该可以做出自己的优秀设计来。

(全文完)

后记:
    这篇文章,我是随便讲了几句,可能有的并不适合你,可能某些概念还不是很严谨,所以希望大家多讨论,多交流,这样才能真正做到相互帮助,共同提高。
    对于教学,我是很希望自己能承担数字电路这门课程的教学工作,但是由于种种原因,可能我近几年都不太可能做这个工作,所以只能换一种方式来推广这门技术,让大家多学习一些。
    最后希望看过的朋友多提意见,也帮助我提高。

文章评论6条评论)

登录后参与讨论

用户1373959 2010-2-7 23:07

某些方面十分到位,非常感谢。

tengjingshu_112148725 2009-8-10 14:21

再看了一下,确实学习了很多,谢谢老师了:)

用户1034847 2009-8-5 10:16

说的很能不是太准确,希望大家讨论

用户106003 2009-7-23 10:49

并不是因为X(Horizontal)与Y(Vertical)初始值太小,常规电路板尺寸应该不会大过508*406mm吧, 主要原因是板上某些元器件的标注可能和你元器件的摆放位置太远了,是标注位置太远才导致导板尺寸太大,才提示胶片太小,仔细的去检查每个元器件的标注位置是否在板的边框线之中吧,

用户1433776 2009-7-17 19:12

总结还可以。初学者可以遵照。

tengjingshu_112148725 2009-7-17 14:27

谢谢分享心得

用户143043 2009-7-17 10:32

谢谢指点

用户1478350 2009-3-25 15:56

这个问题我以前也遇到过,一直不知道怎么解决。现在知道了,谢谢~~
相关推荐阅读
用户1034847 2009-09-10 08:52
基于Verilog HDL的数字系统设计入门教程(CPLD篇)——第六天
目录1.        简介        42.        实验环境        43.        蜂鸣器原理        43.1        蜂鸣器基础知识        43.2...
用户1034847 2009-08-31 10:46
关于Nios II中Verify failed错误的解决方法
Verifying 000xxxxx ( 0%)Verify failed between address 0xxxxxx and 0xxxxxxLeaving target processor pa...
用户1034847 2009-08-31 01:19
后续教程推出时间可能要稍微慢一点
因为今天才刚刚到支教的地方,各种事情还没有完全办妥。等一切安顿好,晚上的时间都会安排作为教程撰写的时间。希望在9月份能把这个教程全部写好。...
用户1034847 2009-08-21 13:48
Found pins functioning as undefined clocks...警告消除
关于Found pins functioning as undefined clocks and/or memory enable警告的消除编译项目的时候会出现这么一个警告:警告含义是CLK没有定义成...
用户1034847 2009-08-20 01:18
教程还需要再坚持
    由于前两日熬了一个通宵写一份教程,搞得这两天精神一直有些恍惚。自己不时问自己,自己做这个事情,是否有意义,是否应该?    身边的人,大多数的眼光都是往钱看,对于我这种行为基本不持肯定态度。我...
用户1034847 2009-08-19 13:12
基于Verilog HDL的数字系统设计入门教程(CPLD篇)
    从事电子设计方面的工作已经有一些年头,现在进入高校任职后也是在做一些相关的事情。从过去和现在接触到的很多学生身上,我看到了中国教育方面存在的一些不足之处。现在的学生在学习方面还是说得过去的,但...
我要评论
6
7
关闭 站长推荐上一条 /3 下一条