VHDL和verilog应该先学哪个?

时间:2021-07-15 10:29:56

  网上有太多的VHDL和verilog比较的文章,基本上说的都是VHDL和verilog之间可以实现同一级别的描述,包括仿真级、寄存器传输级、电路级,所以可以认为两者是等同级别的语言。很多时候会了其中一个,当然前提是真的学会,知道rtl(寄存器传输级)的意义,知道rtl与电路如何对应,在此基础上,则很容易就可以学另外一个。从这个意义上,或许先学什么都无所谓。

  学HDL无非要这么几类人:

  1.学生

  2.电子工程师

  3.软件工程师

  4.纯粹的爱好者

  学生,两眼一摸黑,老师教什么学什么,只为了应付而已,从而很多学生学的非常垃圾,毕业了连个跑马灯都不会做;电子工程师有电路的基础,甚至可以用原理图设计一定的数字逻辑,一般也是因为FPGA而学习;软件工程师有软件语言的基础,一般是嵌入式软件工程师为了FPGA而学习;爱好者只为兴趣,甚至未必是IT业的工作者。

  VHDL是强类型语言,比verilog严格。有很多人觉得verilog长的像C语言,所以觉得verilog可能更容易学,我觉得说这话的一般都是软件工程师。然而verilog只不过借用了C语言的符号而已,我甚至觉得还不够彻底,如果verilog当初由我来设计,我肯定就会赶begin/end滚蛋了,而且我实在不理解为什么不这么做。使用&还是and有本质区别吗?使用always@还是process有本质区别吗?这些都不是重点,这些都只是语法的区别而已。你有C语言的基础对于你学习用verilog设计电路作用不是很大,但HDL不仅用来设计真实电路,也是可以拿来设计仿真的,如果你是玩仿真的话,那么C的基础作用还是很大的。

  VHDL当初是用来做美国军方定制硬件的行为描述的语言,HDL的D不是design,而是description。VHDL有着相对verilog更大的抽象能力,理论上verilog只能在0/1的数字信号系统上玩,而VHDL完全可以为多进制数字建模。当然,同时,VHDL被定义成一种强类型语言,从而不像verilog用起来那么爽,很容易就写出语法错误,这对于有些人是一段痛苦的经历。从VHDL强大的抽象能力和强类型来看,这玩意比verilog更像软件,而verilog更像电路。VHDL的rtl更像是一种人为的定义,而verilog的rtl才更像是与电路的对应。

  在用VHDL的时候,遇到状态机,就定义一下类型type state is (stat1, stat2 ...),这个stat1、stat2只是不同的符号,这个很不电路啊。我们经常使用的std_logic、std_logic_vector,遇到与数字比较要conv_integer一通,这个真的很不电路。VHDL写代码的确很啰嗦,代码长度远胜于verilog。看来看去,明显还是verilog直接,那就是电路,不绕弯子。

  verilog强大的仿真功能,相比之下VHDL的仿真功能弱爆了。verilog这么多年的市场占有率远胜于VHDL,基本可以认为VHDL快被淘汰了,除了一些以前的设计需要支持以及很多学校还是以VHDL教学,基本用的很少了。

  学习HDL的设计,很多时候是要搞清楚RTL里实际电路和代码的对应。其实,对于verilog,也只要知道assign在rtl里肯定是组合逻辑(当然你带反馈除外,不过绝对不建议带反馈这么去写),而always里综合为组合逻辑和时序逻辑的条件,这些其实并不难。VHDL这一点倒也类似,区别不大。顺便说一句,三段式和一段式的本质差别在于三段式下状态和动作完全同时,而一段式下状态比动作快一拍。至于其他的网络上说法的各种扯淡,不用理会,都什么时代了,编译器(还没到综合阶段)如果连组合电路和时序电路都不能很好的整理出来并优化的,还好意思在世面上丢人现眼?

  综上所述,我现在还是觉得verilog比较适合初学了,甚至于学了verilog再去学VHDL作用不大。但是verilog很是灵活,这本是我之前觉得在学习verilog之前应该先学习VHDL的原因。但现在,我觉得,在学习verilog之前,还是先学习原理图设计吧,只是原理图设计之后的VHDL阶段没太多必要。

VHDL和verilog应该先学哪个?的更多相关文章

  1. FPGA的“可编程”使你迷惑吗?

    http://www.alteraforum.com.cn/showtopic-7791.aspx FPGA的“可编程”使你迷惑吗?   任何一个硬件工程师对FPGA都不会陌生,就好比C语言对于软件工 ...

  2. VHDL生成的ngc文件被verilog的工程调用的问题

    1. 问题的提出 工程a是一个soft core,用VHDL写的,综合的时候去掉了"Add I/O buffers" ,并将-iob(Pack I/O Registers into ...

  3. 对Verilog 初学者比较有用的整理(转自它处)

    *作者: Ian11122840    时间: 2010-9-27 09:04                                                              ...

  4. 基于VHDL利用PS2键盘控制的电子密码锁设计

    基于VHDL利用PS2键盘控制的密码锁设计 附件:下载地址 中文摘要 摘 要:现代社会,人们的安全意识正在不断提升.按键密码锁由于其具有方便性.低成本等特征,还是大有用武之地的.但是通常的按键密码锁开 ...

  5. Verilog HDL设计规范及经验谈(转载)

    1. 规范很重要      工作过的朋友肯定知道,公司里是很强调规范的,特别是对于大的设计(无论软件还是硬件),不按照规范走几乎是不可实现的.逻辑设计也是这样:如果不按规范做的话,过一个月后调试时发现 ...

  6. verilog学习五点经验分享

    1.规范很重要工作过的朋友肯定知道,公司里是很强调规范的,特别是对于大的设计(无论软件还是硬件),不按照规范走几乎是不可实现的.逻辑设计也是这样:如果不按规范做的话,过一个月后调试时发现有错,回头再看 ...

  7. Verilog与SystemVerilog编程陷阱:怎样避免101个常犯的编码错误

    这篇是计算机类的优质预售推荐>>>><Verilog与SystemVerilog编程陷阱:怎样避免101个常犯的编码错误> 编辑推荐 纠错式学习,从"陷阱 ...

  8. 【第一季】CH04&lowbar;FPGA设计Verilog基础(一)Enter a post title

    [第一季]CH04_FPGA设计Verilog基础(一) 4.1 Verilog HDL 代码规范 u 项目构架设计 项目的构架用于团队的沟通,以及项目设计的全局把控 u 接口时序设计规范 模块和模块 ...

  9. verilog 介绍

    Verilog HDL Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法较*.VHDL和Verilog HDL两者相比,VHDL的书写规则比Verilog HDL烦琐一些,但 ...

随机推荐

  1. 第四组 12月8号sprint会议

    会议时间:12月8号,16:30会议地点:蛙鸣湖旁小树林 会议进程:   1.首先对到场人员进行点名   2.对程序主要功能进行讨论,每人都可以*发言,然后分配每个成员的任务,并决定实现第一个功能: ...

  2. MVC区域小结

    MVC区域小结 MVC区域小结 MVC3一直在学习,项目中有的时候也会用到,博客园也一直逛,想写点什么东西,可惜我这个人平时都很懒,理论层面的东西自己写不来,还是来点实际的简单入门的博客,对自己总结能 ...

  3. 一点公益二码公益开发模式系统源码App

    写这篇文章,是因为最近看到的一个著名的开源项目在内部使用时的各种问题,不得不说,很多的开源的东西思想是不错的,但离真正工程化都有不小的距离,所以没什么商业公司采用的开源产品如果要引入的话一定要慎重,通 ...

  4. zf-安徽桐城关于&lpar;资源中心-数据录入&rpar;上传文件后没有进行处理Excel文件的原因

    上传的文件 是会自动复制到另外一个路径的 如果没有进行处理 那么表示那个路径并没有那个文件 这样就会卡死 导致之后的文件都不会进行处理(后台有个变量是从数据库里获得文件路径的),所以需要去数据库 执行 ...

  5. 多表连接时USING和ON的区别,USING会去掉重复列,ON显示重复列。

  6. Linux的文本处理工具浅谈-awk sed grep

    Linux的文本处理工具浅谈 awk   老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS ...

  7. A&sol;D和D&sol;A的学习

    从我们学到的知识了解到,我们的单片机是一个典型的数字系统.数字系统只能对输入的数字信号进行处理,其输出信号也是数字信号.但是在工业检测系统和日常生活中的许多物理量都是模拟量,比如温度.长度.压力.速度 ...

  8. ionic 001

    安装和穿件app npm install -g cordova ionic 使用模板创建app ionic start myApp blank ionic start myApp tabs ionic ...

  9. LeetCode - Nth Highest Salary

    题目大概意思是要求找出第n高的Salary,直接写一个Function.作为一个SQL新手我学到了1.SQL中Function的写法和变量的定义,取值.2.limit查询分    页的方法. 在这个题 ...

  10. 今天才知道的JavaScript的真实历史~&lbrack;转&rsqb;

    JavaScript真的继承自Cmm吗?JavaScript与Java有多少关系?JavaScirpt最初的设计是怎样的?这个文章是从一个叫编程人生的网站上看到的.不知道出处在哪.在许多资料,Java ...