欢迎来到天天文库
浏览记录
ID:50046142
大小:241.50 KB
页数:71页
时间:2020-03-08
《EDA 与数字系统设计 第2版 教学课件 作者 李国丽 等编著 CH3ch3-2.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章VerilogHDL硬件描述语言3.1VerilogHDL概述3.2VerilogHDL语言要素3.3VerilogHDL基本语句3.4VerilogHDL门元件和结构描述3.5仿真验证3.6可综合性描述3.7设计实例3.2VerilogHDL语言要素3.2.1基本语法定义3.2.2数据类型3.2.3运算符3.2.4编译向导3.2.5系统任务与系统函数3.2.1基本语法定义VerilogHDL源代码的基本语法元素构成:空白部分(Whitespace)注释(Comment)标识符(Identifi
2、er)关键字(Keyword)(1)空白部分(Whitespace)空白符包括空格,TAB键,换行符以及换页符。VerilogHDL的书写自由。在多行完成的语句可以写到一行长,甚至于在一行内完成一个模块的描述也是可能的。从软件工程角度看,为提高可读性,力求代码错落有致。(2)注释(Comment)在代码中添加注释行可以提高代码的可读性和可维护性。VerilogHDL中注释行的定义与C语言完全一致,分为两类:第一类是单行注释,以“//”开始到本行行末结束,不允许续行。第二类是多行注释,以“/*”开始,以
3、“*/”结束。可以跨越多行,但是中间不允许嵌套。(3)标识符VerilogHDL标识符与C语言等一样。一般说来,VerilogHDL中的标识符有普通标识符、转义标识符。普通标识符的命名规则是:(1)必须由字母(a〜z,A〜Z)或者下划线开头,字母区分大小写;(2)后续部分可以是字母、数字、下划线或$;(3)总长度要小于1024个字符串的长度;合法的普通标识符举例如下:sdfj_kiu//允许在标识符内部包含下划线_sdfji//允许以下划线开头转义标识符转义标识符指以反斜杠“”开头,以空白符结尾的任
4、意字符串序列。空白符可以是一个空格、一个TAB键、一个制表符或者一个换行符等。转义字符本身没有意义,如转义标识符:t\”sfji//与“sfji”等价23kie//可以以任意可打印的字符开头标识符的第一个字符不能够是“$”,因为在VerilogHDL中,“$”专门用来代表系统命令(4)关键字VeriogHDL定义约有98个专用词.用户命名时避免使用.全部为小写.其中常用的有:alwaysmoduleendmoduleassignregandbeginendforcaseorfunctio
5、ninputoutputparameterwaitifelsewhile3.2.2数据类型VerilogHDL的数据类型分为常量和变量,在程序运行过程中常量的值是保持不变的,VerilogHDL有整型、实型和字符型三种常量。VerilogHDL的变量分为线型和寄存器型两种,两者在驱动方式、保持方式和对应的硬件实现都不相同。这两种变量在定义时要设置位宽,缺省值为一位。常用的数据类型:常量、参数常量、线型变量和寄存器型变量,以及存储器的定义方式。其他数据类型可以参考VerilogHDL语法手册。常用的数据
6、类型:1数值(Number)2常量(Constants)3参数(Parameters)4线型变量(Nets)5寄存器型变量(Registers)6存储器(Memories)VerilogHDL中逻辑状态的取值含义:0逻辑0、逻辑假、低电平1逻辑1、逻辑真、高电平x或X不确定态z或Z高阻态1数值X:代表一个未被预置初始状态的变量或是由于两个或更多个驱动装置试图将之设定为不同的值而引起的冲突型线型变量。Z:代表高阻状态或浮空量。也可以用?表示z。Verilog中有三类数值常量:整型:[size]’base
7、value如,8’h2a实型:3.5,2.4e6字符型:“hellow”2.常量(Constants)(1)整数(Integers)VerilogHDL的整数可以是十进制、十六进制、八进制或二进制。整数定义的格式为:<位宽>’<基数><数值>位宽:指所要表示的整数用二进制展开时所需要的二进制位的位数。基数:用b(B),o(O),d(D),h(H)分别表示二进制、八进制、十进制和十六进制。基数缺省默认为十进制数。8’b1100_0001,8'h3F数值:是由基数所决定的。如果基数定义为b或B,数值可以是
8、0,1,x(X),z(Z)。对于基数是d或D的情况,数值符可以是从0到9的任何十进制数,但不可以是X或Z。举例如下:15(十进制15)'h15(十进制21,十六进制15)5'b10011(十进制19,二进制10011)12'h01F(十进制31,十六进制01F)'b01x(无十进制值,二进制01x)需要注意如下内容:(1)数值常量中的下划线“_”是为了增加可读性,可以忽略,如“8’b1100_0001”是8位二进制数。(2)数值常量中的“?”表示高阻状态
此文档下载收益归作者所有