Verilog语言编程基础

上传人:tia****g98 文档编号:244923843 上传时间:2024-10-06 格式:PPT 页数:48 大小:236KB
返回 下载 相关 举报
Verilog语言编程基础_第1页
第1页 / 共48页
Verilog语言编程基础_第2页
第2页 / 共48页
Verilog语言编程基础_第3页
第3页 / 共48页
点击查看更多>>
资源描述
,*,VerilogHDL,语言编程基础,大连,XXX,网络技术有限公司,HDL,语言简介,Verilog 中的模块(Module),Verilog,语言中常用语句,Verilog语言中阻塞和非阻塞赋值,Verilog语言中常见的错误,Verilog,的,语言要素,Verilog,语言的,4,大法宝,HDL,语言简介,HDL,:硬件描述语言,(Hardware Description Language),目前通用的,HDL,语言有,VHDL,和,Verilog,两种。目前多数,FPGA,厂商都有自己的逻辑综合工具,或者采用第三方的设计综合工具来支持自己的器件开发。这是由于,HDL,完成的设计具有可移植、易维护、好理解的性能。,HDL,语言简介,VHDL,语言最初于,1981,年由美国国防部(,DOD,)为解决所有电子产品存档而提出了一种统一标准语言,,1987,年成为,IEEE107687,标准,.1993,年后,形成,IEEE1164,以解决可综合,VHDL,描述在不同,EDA,厂商之间的移植问题,及,ASIC/FPGA,的门级库描述问题。,Verilog,语言最早由,Gateway,设计自动化公司于,1981,年提出,并提供相应的,Verilog,仿真器。,1985,年,仿真器增强版,Verilog-XL,推出。,Cadence,公司于,1989,年收购,Gateway,公司,并于,1990,年把,Verilog,语言推向市场,而保留了,Verilog-XL,的所有权。,1995,年,,Verilog,成为,IEEE1364,标准。,HDL,语言简介,VHDLVerilog,比较,:,两种语言均可有效地描述,RTL,级(寄存器传输级),但在行为,/,系统级,,Verilog,需要,PLI,的支持,门级以下级,Verilog,则有较大优势。对于两种语言来说,没有一种语言能描述的功能而另一种不能实现的。考虑到目前大多数的,ASIC,厂家支持,Verilog,网表,我们今后将主要推行使用,VerilogHDL,。,Verilog,语言中常用语句,Verilog语言中阻塞和非阻塞赋值,Verilog语言中常见的错误,Verilog,的,语言要素,Verilog,语言的,4,大法宝,Verilog 中的模块(Module),Verilog,中的模块,模块是,Verilog,的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。,整个逻辑设计就是通过模块之间的例化(,instantiation,)来构成一个整体的。,逻辑设计的思想体现了自顶向下的设计方法,模块间的例化方法,要求:,每个文件只包含一个模块。,模块名和文件名保持一致。,模块名,实例名,端口信号映射关系,模块的基本语法结构,module,module_name(port_list),;,Declarations:,reg,wire,parameter,input,output,inout,function,task,.,Statements:,Initial statement,Always statement,Module instantiation,Gate instantiation,UDP instantiation,Continuous assignment,endmodule,模块的结构需按上面的顺序进行,声明区用来对信号方向、信号数据类型、函数、任务、参数等进行描述。语句区用来对功能进行描述如:器件调用(,Module instantiation,)等。,Verilog,语言中常用语句,Verilog语言中阻塞和非阻塞赋值,Verilog语言中常见的错误,Verilog,语言的,4,大法宝,Verilog的语言要素,标识符,注释,格式,系统任务和函数,编译指令,值集合,数据类型,参数,Verilog,的语言要素,Verilog的语言要素,标识符,标识符,(identifier,)用于定义模块名、端口名、信号名等。,Verilog HDL,中的标识符,(identifier),可以是任意一组字母、数字、,$,符号和,_(,下划线,),符号的组合,但标识符的第一个字符必须是字母或者下划线。另外,标识符是区分大小写敏感的。以下是标识符的几个例子:,Verilog HDL,定义了一系列保留字,叫做关键词,附录,A,列出了语言中的所有保留字。注意只有小写的关键词才是保留字。例如,标识符,always(,这是个关键词,),与标识符,ALWAYS(,非关键词,),是不同的。,Verilog的语言要素,注释,两种注释的方式:,以,“,/*,”,符号开始,,“,*,/,”,结束,在两个符号之间的语句都是注释语句,因此可扩展到多行。如:,/*statement1,,,statement2,,,.,statementn*/,以上,n,个语句都是注释语句。,是以,/,开头的语句,它表示以,/,开始到本行结束都属于注释语句。,Verilog的语言要素,格式,自由的书写格式:,Verilog HDL,的书写格式是自由的,即一条语句可多行书写;一行可写多个语句。白空(新行、制表符、空格)没有特殊意义。,如:,input A,;,input B,;与,input A,;,input B,;,功能是一样的,但是这方面公司有严格的书写规范。,Verilog的语言要素,系统任务,以,$,字符开始的标识符表示系统任务。,任务提供了一种封装行为的机制。这种机制可在设计的不同部分被调用。任务可以返回,0,个或多个值。,函数在,0,时刻执行,即不允许延迟。,$d i s p l a y(Hi,you have reached LT today);,/*$d i s p l a y,系统任务在新的一行中显示。*,/,$t i m e,/,该系统任务返回当前的模拟时间。,Verilog的语言要素,编译指令,以,(反引号)开始的某些标识符是编译器指令。,在,Verilog,语言编译时,特定的编译器指令在整个编译过程中有效(编译过程可跨越多个文件),直到遇到其它的不同编译程序指令。,完整的标准编译器指令如下,:,define,undef,ifdef,else,endif,default_nettype,include,resetall,timescale,unconnected_drive,nounconnected_drive,celldefine,endcelldefine,Verilog的语言要素,值集合,四种基本的值类型:,0,:逻辑,0,或,“,假,”,;,1,:逻辑,1,或,“,真,”,;,X,:未知值;,Z,:高阻。,注意这四种值的解释都内置于语言中。如一个为,z,的值总是意味着高阻抗,一个为,0,的值通常是指逻辑,0,。,Verilog的语言要素,数据类型,两种数据类型,:,线网类型,(net type),和 寄存器类型(,reg type,)。,线网类型代表的是物理连接线,因此它不存贮逻辑值。必须由器件所驱动。,assign,赋值语句必须用线网类型。,定义:,wire a;,assign A =B C,;,当一个,wire,类型的信号没有被驱动时,缺省值为,Z,(高阻)。,信号没有定义数据类型时,缺省为,wire,类型。,寄存器类型通常用于对存储单元的描述,如,D,型触发器、,ROM,等。存储器类型的信号当在某种触发机制下分配了一个值,在分配下一个值之时保留原值。但必须注意的是,,reg,类型的变量,不一定是存储单元。,注意在,always,initial,语句中必须用,reg,类型的变量。定义:,reg msb:lsb reg1,reg2,.r e g N;,Verilog的语言要素,参数,参数是一个常量。参数经常用于定义时延和变量的宽度。使用参数说明的参数只被赋值一次。参数说明形式如下:,下面为具体实例:,p a r a m e t e r L I N E L E N G T H=132,;,p a r a m e t e r A L L _ X _ S=16bx;,Verilog的语言要素,常量,三种常量:整型、实型、字符串型。,整型数可以按如下两种方式书写:,1),简单的十进制数格式,32,十进制数,32,2),基数格式:,size base value,size,定义以位计的常量的位长;,base,为,o,或,O,(表示八进制),,b,或,B,(表示二进制),,d,或,D,(表示十进制),,h,或,H,(表示十六进制)之一;,value,是基于,base,的值的数字序列。值,x,和,z,以及十六进制中的,a,到,f,不区分大小写。如:,3b101 1h6,字符串是双引号内的字符序列。字符串不能分成多行书写。如:,INTERNAL ERROR,REACHED,HERE,Verilog的语言要素,运算符,算术运算符,加法(二元运算符):,“,+,”,;,减法(二元运算符):,“,-,”,;,乘法(二元运算符):,“,*,”,;,关系运算符有:,(大于),=,(不小于),=,(不大于),=,(逻辑相等),!,=,(逻辑不等),Verilog的语言要素,运算符,按位逻辑运算符,条件运算符,cond_expr?expr1:expr2,连接运算符,连接操作:将小表达式合并形成大表达式或者说总线的操作。形式如下:,expr1,expr2,.,,,exprN,例如:,wire 7:0 Dbus;,assign Dbus 7:4=Dbus 0,Dbus 1,Dbus2,Dbus 3 ;,Verilog语言中阻塞和非阻塞赋值,Verilog语言中常见的错误,Verilog,语言的,4,大法宝,Verilog语言中常用语句,Verilog其它常用语句,If,语句,使用,IF,语句的注意事项,当比较向量时,,verilog,将对位数小的向量做,0,扩展以使它们的长度相匹配,它的自动扩展为隐式的。建议采用显示扩展。,每一个,If,都应有一个,else,和它相对应,防止产生,latch,;,if,语句的嵌套时,应注意每个,If,条件的优先级;,建议采用于,if(variable=1),,不要采用,If(variable),以增强程序的可读性。,Verilog其它常用语句,Case,语句,使用Case语句的注意事项,所有的,Case,应该有一个,default case,,以免生成不必要的锁存器。允许空语句:,Default:;,避免使用,casex,。,IF,语句与,CASE,语句的比较,case,语句通常综合成一级多路复用器,而,if-then-else,则综合成优先编码的串接的多个多路复用器。,case,语句仿真要比条件赋值语句快,因为优先编码器的结构仅在信号的到达有先后时使用。,if,语句有优先级,,case,语句没有。,IF,语句与,CASE,语句的比较,两者综合实现后结果:,If,语句,case,语句,同步复位和异步复位,区别在这里,Verilog,中不能被综合的语句,initial wait,repeat while,forever named events,fork/join deassign,force/releaseprocedural assignments,operators:case equality and inequality,=,!=,另外,for,语句虽然可以综合,但也不建议使用,Verilog语言中阻塞和非阻塞赋值,Verilog语言中常见的错误,Verilog语言的4大法宝,Verilog,语言的,4,大法宝,Wire,-,数据类型:,Verilog,结构化元件间的物理连线。,Reg,-,数据类型:寄存器类型,Assign,-,连续赋值语句,Always,-Always,语句只要条件满足始终重复执行,连续赋值语句,assign,连续赋值语句的执行是:只要右边表达式任一个变量有变化,表达式立即被计算,计算的结果立即赋给左边信号。,连续赋值语句
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!