欢迎来到天天文库
浏览记录
ID:62483599
大小:14.96 KB
页数:7页
时间:2021-05-09
《从Verilog到VHDL(上)基本语法.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、16六从学校里开始,我所接触的就一直是VerilogHDL而非更老牌的VHDL,而且后续接触的项目中也多半是Verilog的用户,坦白的讲,Verilog的活力也确实更足一些,从IEEE1800-2005开始的SystemVerilog的标准化,将Verification和Design的一体化的尝试,我个人认为,是走在正确的道路上。所以,我确实想不到,我竟然也要回头学起VHDL来了,毕竟一些老牌公司,特别是欧洲的公司,往往因为历史原因,仍然在使用VHDL,看来终究是绕不过去的了——正如一个DesignVerification工程师在目前想完全的不和
2、SpecmanE打交道是很难的一样。下面记载的是两种语言学习过程中的一些体会,而且更多的是从语法角度出发,算是梳理一下思路吧,而且,以前从来没有接触过VHDL,当然会存在很多非常初级的东西。而在本文之后,打算再写一篇简单阐述下结合Cadence的IUS工具,使用SystemVerilog对VHDL进行验证的基本方起手式从Verilog撞进VHDL的世界,有些东西要先搞清楚,否则会一头雾水:1.大小写敏感:Verilog是大小写敏感的,VHDL则非;2.注释:Verilog的行注释为//,块注释为/**/;VHDL只支持行注释–;[1.这
3、个算是不方便的一个地方了,不过不论是在Vim还是Emacs当中,批量做行注释也很容易实现;]基本结构VHDL被认为是要求更严格,更多讲究的语言,相比和C类似的Verilog,架构上更严谨一些:1.基本结构:从上往下为USE定义区(调用库和包);Package定义区(自定义程序包);Entity定义区(定义电路实体外观,I/O接口的规格);[2.Entity感觉像是C的头文件定义之类的东西,而在Verilog当中,这些其实都是被整合在Module里头一起完成了。]Architecture定义区(描述内部功能);[3.同上,相当于Verilog的Mod
4、ule内部实现。]Configuration定义区(决定那个Architecture被使用)[4.这也许就是之所以要分开Arch和Entity的原因,类似的效果在Verilog里实现,则需要使用那个configurationblocks/librarymapfiles这些在Verilog2001当中增加的features,不过这些部分在Verilog当中属于Beyondlanguage,更多的是位于语言之上的scope中了。]1.并行与串行:在这一点上,VHDL和Verilog有些类似,书写在Architecture内的语句,直接被认为是并行执行,
5、无论书写顺序的(就如同Verilog中的并列的Always语句块);而顺序执行的串行语句必须放置在进程语句(process)当中,正如Verilog的begin…end。2.process:和Verilog不同的是这里的Process是要求有敏感变量列表作为输入的,正如试图在Verilog中用Always语句实现组合逻辑时类似。所以当写这样的语句,不妨多回想Verilog中对于敏感变量列表的要求。3.例化:在VHDL当中尝试例化一个entity,比起Verilog要麻烦不少。首先,必须在Architecture当中用Component语
6、法来声明这个实体的Port和Generic(参数);然后才可在后续内容当中例化实体,并且用genericmap和portmap来进行参数赋值和port连接。1.库,包和配置:VHDL这方面的组织比起Verilog显然要严密多了,使用configuration,用简单的语句,就可以把不同的architecture实现和entity实现绑定,而此时我们就能看出VHDL之所以要分开所谓entity和architecture的目的所在了。CONFIGURATION配置名OF实体名ISFOR为实体选配的构造体名ENDFOR;END配置名;而事实上,confi
7、guration还可以直接指定某个Hierachy的某个实体究竟适用那种entity来例化,语法如下(参见VHDLConfiguration):configurationTopMixedofTopis—TopMixed是配置名,Top是实体名forStructure—Structure是结构体名,是和实体Top相对应的结构体forB1:Blk—B1和B2是结构体structure中的元件例化语句的标号useentityWork.Blk(RTL);—此语句说明,在元件例化的时候,利用用户自定义—的实体blk来例化,其结构体是RTLendfor;for
8、B2:BlkuseentityWork.GateLevelBlk(Synth)—此语句说明,元件例化B2时,利用实体—Ga
此文档下载收益归作者所有