VHDL常用语法,读VHDL代码必备

2016-04-28 22:16 阅读 3,690 次 评论 2 条

本人没有写过VHDL程序,只是读代码的时候需要理解,网上找到对比看看,作为一个备查记录放到这里吧。在使用source insight阅读vhdl代码时,才发现source insight默认支持vhdl语法高亮,而需要自己安装脚本才能支持verilog语法高亮,难道vhdl比verilog更流行。

=====================

VHDL的设计单元的基本组成部分是实体(entity)和结构体(architecture),实体包含设计系统单元的输入和输出端口信息,结构体描述设计单元的组成和行为,便于各模块之间数据传送。利用单元(compont)、块(block)、过程(procure)和函数(function)等语句,用结构化层次化的描述方法,使复杂电路的设计更加简便。采用包的概念,便于标准设计文档资料的保存和广泛应用。

entity实体定义了一个设计系统单元的端口信息与一些常量信息,并且实体名需与文件名保持一致,并不包含设计单元的组成和行为描述。组成和行为描述在结构体(architecture)内进行。

VHDL语言有常数、信号和变量三种数据对象,每一个数据对象都要指定数据类型,VHDL的数据类型丰富,有数值数据类型和逻辑数据类型,有位型和位向量型。既支持预定义的数据类型,又支持自定义的数据类型,其定义的数据类型具有明确的物理意义,VHDL是强类型语言。

数字系统有组合电路和时序电路,时序电路又分为同步和异步,电路的动作行为有并行和串行动作,VHDL语言常用语句分为并行语句和顺序语句,完成能够描述复杂的电路结构和行为状态。

&在VHDL中为连接操作符,从高位向低位连接为一个位向量类型。

SXT函数用来扩展一个信号的位宽。比如说RegA为5位(10011),WIDTH=10,那么RegB<=SXT(RegA,WIDTH)执行完之后RegB的末五位就和RegA相同,高5位都是RegA的最高位(也就是符号位)的值,即RegB=1111110011。

:=为变量赋值,<=为信号赋值。

标识符有字母(A。。Z,a。。。z)、数字和下划线字符组成。任何标识符必须以英文字母开始。末字符不能为下划线。不允许出现两个连续的下划线。标识符中不区分大小写字母。

conv_integer()类型转换函数,将singed或其它类型转换为整型。

process语句包含了一个代表着设计中部分逻辑行为的独立顺序语句描述的进程。需要注意的是VHDL中的按序只是执行上的顺序性但这并不意味着process语句结构所对应的硬件逻辑行为也具有相同的顺序。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:VHDL常用语法,读VHDL代码必备 | 起点博客
分类:应用笔记 标签:

发表评论


表情

  1. 辛胡
    辛胡 【农民】

    貌似verilog在学校教的少,教科书vhdl多,上班后发现verilog多。难道从c较fpga开发的人多

  2. will
    will【站长】

    用的习惯就好,现在xilinx有hls,直接通过编写c语言代码,转换为verilog的,c程序员转型更快了