FPGA应用与开发实践教程 课件 附A2 Verilog HDL基本语法_第1页
FPGA应用与开发实践教程 课件 附A2 Verilog HDL基本语法_第2页
FPGA应用与开发实践教程 课件 附A2 Verilog HDL基本语法_第3页
FPGA应用与开发实践教程 课件 附A2 Verilog HDL基本语法_第4页
FPGA应用与开发实践教程 课件 附A2 Verilog HDL基本语法_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VerilogHDL基本语法运算符及表达式过程语句(initial、always)块语句(begin-end、fork-join)赋值语句条件语句循环语句task和function说明语句主要内容VerilogHDL的语言基本要素—基本语法一、VerilogHDL基本语法1、

词法规定

(1)关键字关键字(又称保留字),小写的英文字符串。如:module、endmodule、input、output、wire、reg、and、assign、always等。

(2)格式VerilogHDL是自由格式的,即结构可以跨越多行编写,也可以在一行内编写。空白符(换行、换页、tab和空格)没有特殊的意义,但使用空白符可以提高代码的可读性。在综合时,空白符被忽略。

VerilogHDL的语言基本要素—基本语法(3)标识符标识符(identifier)是程序代码中给对象(如模块、端口、变量等)取名所用的字符串。由字母、数字字符、下划线(_)和美元符号($)组成,区分大小写,其第一个字符必须是英文字母或下划线,不能是数字或$。以$开始的字符串是为系统函数保留的,如“$display”最长可以是1023个字符标识符区分大小写,sel和SEL是不同的标识符※关键字不能作为标识符使用。标识符举例:outputa,A;wireclk;34net;a*b_net;module

mux21

(out,a,b,sel);outputout;

input

a,b,sel;

notnot1

(nsel,sel);

and

and1(a1,a,nsel);

and

and2(b1,b,sel);

or

or1(out,a1,b1);endmoduleVerilogHDL的语言基本要素—基本语法(4)注释moduleFour_bit_FA(A,B,Cin,Sum,Cout);parameterLENGTH=4; //声明加法器位数参数input[(LENGTH-1):0]A,[(LENGTH-1):0]B;//输入/输出端口inputCin; output[(LENGTH-1):0]Sum;outputCout;wirec1,c2,c3; //内部线网声明//实例化四个一位全加器FA_structFA0(A[0],B[0],Cin,Sum[0],c1);//端口映射采用非名字关联FA_structFA1(A[1],B[1],C1,Sum[1],c2);FA_structFA2(A[0],B[0],C2,Sum[2],c3);FA_structFA3(A[0],B[0],C3,Sum[3],Cout);endmoduleVerilogHDL的语言基本要素—基本语法52、

数据类型常量变量常数:4'b1010,8'd31,-8’d31字符串:“IloveHIT”参数型:parameterIDLE=2'b01线网类型(Net)wire,triwand,triandwor,triortriregtri0,tri1supply0,supply1寄存器型(Register)RegIntegerRealTimerealtime‘0’,Low,

False,

Logic

Low,

Ground,

VSS,

Negative

Assertion

‘1’,

High,

True,

Logic

High,

Power,

VDD,

VCC,

Positive

Assertion

‘X’Unknown:

Occurs

at

Logical

Which

Cannotbe

Resolved

Conflict

HiZ,

High

Impedance,

Tri-

Stated,

Disabled

Driver

(Unknown)

VerilogHDL的语言基本要素—基本语法6常量及其表示三种类型的常量:整数型常量(整数)、实数型常量(实数)和字符串型常量。

(1)整数---整数的一般表达式为:

<+/-><size>’<baseformat><number>-14//十进制数-1416’d255//位宽为16的十进制数2558’h9a//位宽为8的十六进制数9a6’o21//位宽为6的八进制数218’hAF//位宽为8的十六进制数AF-4’d10//位宽为4的十进制数10(3+2)’b11001//非法表示,位宽不能为表达式注意:数基(base)无大小写之分VerilogHDL的语言基本要素—基本语法7(2)实数十进制格式,由数字和小数点组成(必须有小数点)例如:0.1,3.1415,2.0√3.x指数格式(科学计数法):由数字和字符e(E)组成,e(E)的前面必须要有数字而且后面必须为整数,

例如:

135.1e2

//其值为13510.08.5E2//850.0(e与E相同)4E-4//0.0004

4'b10104-bitbinary4'h54-bithexadecimal'h83aunsizedhexadecimal(zero-extendedto32bits)12unsizeddecimal(zero-extendedto32bits)64'hff0164-bithexadecimal(zero-extendedto64bits)8'b1100_00018-bit

binary32'b101xzero-extendedto32bits3'b1010_11013-bitnumber,truncatedto3'b1016.3decimalnotation32e-4scientificnotationfor0.00324.1e3scientificnotationfor4100VerilogHDL的语言基本要素—基本语法8(3)字符串常量是由一对双引号括起来的字符序列(不能跨行)。如”helloworld!”是一个合法字符串。每个字符串(包括空格)被看作是8位的ASCII值序列。存储字符串“helloworld!”,就需要定义一个8*12位的变量:reg[1:8*12]stringvar;initialbeginstringvar=“helloworld”;endVerilogHDL的语言基本要素—基本语法9变量的数据类型(1)线网型变量(net)

wire型信号定义格式如下:wire[msb:lsb]变量名1,变量名2,…变量名n;wirea;//定义了一个1位的wire型数据wire[7:0]b;//定义了一个8位的wire型向量wire[4:1]c,d;//定义了二个4位的wire型向量assignc=d;

线网型变量可以理解为实际电路中的导线,通常表示为结构实体(例如门)之间的

物理连接。

VerilogHDL的语言基本要素—基本语法10线网类型除了常用的wire、tri类型之外,还有一些其他的线网类型线网类型功能说明可综合性说明wiretri表示单元(元件)之间的连线,Wire为一般连线:

tri为三态线√supply0

supply1用于对电源建模√wandtriand多重驱动,具有线与特性的线网类型wortrior多重驱动,具有线或特性的线网类型triltri0上拉电阻,用于开关级建模trireg具有电荷保持特性的线网类型,用于开关级建模VerilogHDL的语言基本要素—基本语法11(2)寄存器型变量可以理解为实际电路中的寄存器,具有记忆性,是数据储存单元的抽象,在输入信号消失后它可以保持原有的数值不变。与线网型变量的根本区别在于:register型变量需要被明确地赋值,并且在被重新赋值前一直保持原值。关键字是reg,只能在initial或always赋值,默认值是x。注意:在always和initial块内被赋值的每一个信号都必须定义成reg型。总结:Verilog程序模块中,被声明为input或者inout型的端口,只能被定义为线网型变量,被声明为output型的端口可以被定义为线网型或者寄存器型变量,输入输出信号类型缺省时自动定义为wire型。wire型信号可以用作任何方程式的输入,也可以用作“assign”语句或实例元件的输出,不可以在initial和always模块中被赋值。VerilogHDL的语言基本要素—基本语法12reg型数据的格式如下:reg[msb:lsb]变量名1,变量名2,…变量名n;regclock;reg[3:0]regb;reg[4:1]regc,regd;除了常用的reg类型之外,还有一些其他的寄存器类型:寄存器类型功能说明可综合说明reg常用的寄存器型变量√integer32位有符号整型变量√time64位无符号时间变量real64位有符号实型变量寄存器类型变量及其说明VerilogHDL的语言基本要素—基本语法13端口类型判断方法:一个端口看成是由相互连接的两个部分组成,一部分位于模块的内部,另一部分位于模块的外部。当在一个模块中调用(引用)另一个模块时,端口之间的连接必须遵守一些规则。端口的IOP端口的数据类型module内部module外部inputnetnet或regoutputnet或regnetinoutnetnet端口的I/O与数据类型的关系VerilogHDL的语言基本要素—基本语法14输入端口:从模块内部来讲,输入端口必须为线网数据类型,从模块外部来看,输入端口可以连接到线网或者reg数据类型的变量。输出端口:从模块内部来讲,输出端口可以是线网或者reg数据类型,从模块外部来看,输出必须连接到线网类型的变量,而不能连接到reg类型的变量。输入/输出端口:从模块内部来讲,输入/输出端口必须为线网数据类型;从模块外部来看,输入/输出端口也必须连接到线网类型的变量。位宽匹配:在对模块进行调用的时候,verilog允许端口的内、外两个部分具有不同的位宽。一般情况下,verilog仿真器会对此警告。未连接端口:Verilog允许模块实例的端口保持未连接的状态。例如,如果模块的某些输出端口只用于调试,那么这些端口可以不与外部信号连接。端口与外部信号的连接:在对模块调用的时候,可以使用两种方法将模块定义的端口与外部环境中的信号连接起来:按顺序连接以及按名字连接。但两种方法不能混合在一起使用。顺序端口连接:需要连接到模块实例的信号必须与模块声明时目标端口在端口列表中的位置保持一致。VerilogHDL的语言基本要素—基本语法15端口类型定义举例输入端口in1,in2可以由net/register(A,B)驱动,但输入端口in1,in2只能是net类型。输出端口out可以是net/register类型,输出端口只能驱动net(Y)。若输出端口out在过程块中赋值则为register类型;若在过程块外赋值(包括实例化语句),则为net类型。外部信号A,B类型判断方法与输出端口相同。VerilogHDL的语言基本要素—基本语法16数据类型选择举例修改前:moduleexample(o1,o2,a,b,c,d);inputa,b,c,d;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论