verilog语言及程序设计课件

上传人:20****08 文档编号:242761036 上传时间:2024-09-02 格式:PPTX 页数:41 大小:223.73KB
返回 下载 相关 举报
verilog语言及程序设计课件_第1页
第1页 / 共41页
verilog语言及程序设计课件_第2页
第2页 / 共41页
verilog语言及程序设计课件_第3页
第3页 / 共41页
点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text styles,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,hwadee,2024/9/2,41,Click to edit Chapter title style,Click to edit Chapter Description text styles,Second level,阻塞语句在,verilog,中的应用,阻塞语句,顾名思义,即本条语句具有影响下一条语句的作用,如果该条语句没有执行完,那么下条语句不可能进入执行状态的,阻塞语句最能体现,verilog HDL,和,C,语言之间的血缘关系,比如,在时钟沿触发的,always,进程里,若先执行,b=c,,再执行,a=b,,那么本质上,在一个时钟沿触发里面,,a=c,成立,即是说,不要,b,变量,直接在进程里赋值,a=c,,结果是一样的。这和,c,语言中,b=c,a=b,性质相同,阻塞语句在verilog中的应用阻塞语句,顾名思义,即本条语,非阻塞语句在,verilog,中的应用,非阻塞语句,顾名思义,本条语句不影响下一条语句的作用,更能体现硬件电路的特点。这正是非阻塞语句广泛应用于时序逻辑电路的原因。,如果在一个时钟沿触发的,always,进程里面,,b=c,a=b,那么就不可能直接在进程里面赋值,a=c.,因为,c,的值要经过两个时钟延迟才传到,a,里面,如果,c,为,1,,,b,为,0,,,a,为,1,的话,那么在在非阻塞语句的进程里面,,第一个时钟沿到来,,a,为,0,第二个时钟沿到来,a,为,1,(注,:,在一次触发进程里,无论是阻塞和非阻塞语句,每条语句只能执行一次),非阻塞语句在verilog中的应用非阻塞语句,顾名思义,本条,阻塞语句与非阻塞语句使用注意事项,阻塞语句是顺序执行的,而非阻塞语句是同时执行的,大体原则:阻塞语句运用于组合逻辑电路设计,非阻塞语句运用于时序逻辑电路设计,不要在同一个,always,块里面混合使用,“,阻塞赋值,”,和,“,非阻塞赋值,”,阻塞语句与非阻塞语句使用注意事项阻塞语句是顺序执行的,而非阻,Verilog,的特点,Verilog,易学易用(与,C,语言相似),功能强大,使用 广泛。,可以在不同层次描述数字系统,开关级描述,寄存器传输级描述,门级描述,基本设计单元是,“,模块,”,(,block,),包括:,接口描述,逻辑功能描述,Verilog的特点Verilog易学易用(与C语言相似),,Verilog HDL,程序基本结构,Verilog,的,基本设计单元是,“,模块,”,(,BLOCK,),模块,由,两部分组成,:一部分,描述接口,,另一部分,描述逻辑功能,。,按照模块接口的描述,一个模块可以在另一个模块中使用;逻辑功能的描述可以使用,连续赋值语句(描述数据流行为)、过程结构(时序行为)、开关级原语、门级原语和用户定义的原语,等方式。,Verilog HDL程序基本结构Verilog的基本设计单,模块的基本结构,Module();,端口说明,(input,out,inout),参数定义,数据类型定义,连续赋值语句,(assign),过程块,(initial,和,always),行为描述语句,低层模块实例,任务和函数,延时说明块,endmodule,模块的基本结构Module();,模块的基本结构说明,是模块惟一的标识符,;,是由模块的输入、输出和双向端口组成的,端口列表,,这些列表用来与其他模块进行,连接,;,数据类型定义,部分用来指定模块内所用的,数据对,象为寄存器型、存储器型或连线型;,过程块,包括,initial,过程块和,always,过程块,两种,,,行为描述语句,只能出现在这两种过程块中;,延时说明块,用来对模块各个输入和输出端口间的,路径延时,进行说明。,模块的基本结构说明是模块惟一的标识符; 端口列表,模块调用,调用模块实例的一般格式,:,();,Verilog HDL,程序是由模块组成的,,每个模块的内容都包含在,“,Module,”,和,“,endmodule,”,之间。,每个模块都要进行,端口定义,,说明输入、输出端口。,模块调用调用模块实例的一般格式:,模块的描述方式,Verilog HDL,模块代表硬件上的,逻辑实体,其范围可以从简单的门到整个电路系统,.,模块可以根据所采用的不同描述方式而分为,行为描述,和,结构描述,两类,也可采用两种方式的组合。,模块的描述方式Verilog HDL模块代表硬件上的逻辑实体,Verilog,语言要素,标识符(,identifier,),用来,表示各种变量、参数或构件的名称,,可以是任意一组字母、数字、,$,符号和,_,(下划线)符号的组合,,但第一个字符必须是字母或下划线,区分大小写,转义标识符,可以在一条标识符中包含任何,可打印字符,。转义标识符,以,“,”,(,反斜杠)符号开头,以空白结尾,(空白可以是一个空格、一个制表符或换行符),Verilog 语言要素标识符(identifier),Verilog,语言要素,关键字,Verilog HDL,定义了一系列,保留字(关键字),。,在编写,Verilog HDL,程序时,,变量的定义不要与关键字冲突。,注意,只有小写的关键字才是保留字。,注释,在,Verilog HDL,里有,两种形式的注释,:,/,是,单行注释,/* */,是,多行注释,Verilog 语言要素关键字,格式,Verilog HDL,区分大小写,即大小写的标识符是不同的。,源程序书写格式自由,,可跨越多行编写,也可在一行内编写。,格式Verilog HDL 区分大小写,即大小写的标识符是不,系统任务和函数,以字符开始的标识符表示系统任务或系统函数。,任务提供了一种,封装行为,的机制。这种机制,$,可以在设计的不同部分被,调用,。任务可以返回,0,个或多个值。函数除只能返回一个值以外与任务相同。,函数在,0,时刻执行,即不允许延迟,而任务可以带有延迟。,系统任务和函数以字符开始的标识符表示系统任务或系统函数。任务,常见系统任务和函数,显示任务,$display,,,$write,,,$strobe,,,$monitor,,,$monitoron,,,$monitoroff,模拟控制任务,$finish,,,$stop,模拟时间函数,$time,,,$stime,,,$realtime,常见系统任务和函数显示任务,常用任务和函数,概率分布函数,$ramdom(seed),其它,$setup, $hold, $setuphold, $width, $period, $skew, $recovery, $nochange, $rtoi, $itor, $realtobits, $bitstoreal, $printtimescale, $timeformat,等,常用任务和函数概率分布函数,编译指令,以,(,反引号)开始的某些标识符是编译器指令,。,在,Verilog,语言编译时,特定的编译器指令在整个编译过程中有效(编译过程可跨越多个文件),直到遇到其他不同的编译程序指令。,编译指令以(反引号)开始的某些标识符是编译器指令。,一些编译指令,define ,undef,ifdef ,else,endif,default_nettype,include,resetall,timescale,一些编译指令 define , undef,值集合,Verilog HDL,有,四种基本的值,0,:逻辑,0,或,“,假,”,;,1,:逻辑,1,或,“,真,”,;,x:,未知;,z,:高阻。,值集合Verilog HDL有四种基本的值,说明,在门的输入或一个表达式中为,“,z,”,的值通常解释成,“,x,”,,此外,x,和,z,是不区分大小写的。,下划线符号(,),可以随意用在整数或实数中,它们就数量本身没有意义,仅,用以提高可读性,。唯一的限制是,下划线不能用做首字符。,说明在门的输入或一个表达式中为“z”的值通常解释成“x”,此,常量,整型,十进制数格式 ,如,100,基数表示法 ,如,4,b1101,实数型,十进制计数法,科学计数法,字符串型,双引号内的字符序列,不能分成多行书写,常量整型,参数,参数是一个常量,。,经常,用于定义时延和变量的宽度,。,使用参数说明的参数只被赋值一次,。,参数说明形式如下,(见,P233,),参数值也可以在编译时被改变,。改变参数值可以使用参数定义语句或通过在模块初始化语句中定义参数值。,参数参数是一个常量。,数据类型,Verilog HDL,有,两大类数据类型,线网,表示结构化元件间的物理连线,有,wire,,,tri,,,wor,,,trior,,,wand,,,triand,,,trireg,,,tri1,,,tri0,,,supply0,,,supply1,等类型。,寄存器,表示一个抽象的数据存储单元,有,reg,,,integer,,,time,,,real,,,realtime,等类型。,数据类型 Verilog HDL有两大类数据类型,表达式中的运算符,(,1,),算术运算符,(,,,,/,,,%,),(,2,),位运算符,(,,,&,,,|,,,,,),(,3,),逻辑运算符,(,&,,,|,,,!,,),(,4,),关系运算符,(,,,=,,,=,),(,5,),相等关系运算符,(,=,,,!=,,,=,,,!=,),(,6,),移位运算符,(),(,7,),连接和复制运算,(,| |,),(,8,),归约运算符,(,&,,,|,,,&,,,|,,,,,),(,9,),条件运算符,(?:),(,10,)优先级别(见,P237,表,11.6,),表达式中的运算符 (1)算术运算符(,/ ,%),内置基本门,(,1,),多输入门,and, nand, or, nor, xor, xnor,(,2,),多输出门,buf, not,(,3,),三态门,bufif0, bufif1, notif0, notif1,(,4,),上拉、下拉电阻,pullup, pulldown,(,5,),MOS,开关,cmos, nmos, pmos, rcmos, rnmos, rpmos,(,6,),双向开关,tran, tranif0, tranif1, rtran, rtranif0, rtranif1,内置基本门 (1)多输入门,连续赋值语句,连续赋值语句,用于,数据流行为建模,,适用于,组合逻辑电路,,主要用于对,线网,wire,类型变量,的赋值。,语法格式,assign ,驱动强度, #,时延值,线网标识符表达式,连续赋值语句连续赋值语句用于数据流行为建模,适用于组合逻辑电,连续赋值语句,连续赋值语句没有保持的概念,,只要右端表达式中操作数的值发生变化,表达式即被重新计算;如果结果值有变化,新结果就赋给左边的线网。,连续赋值语句之间是并发的,,与书写的先后顺序无关,连续赋值语句连续赋值语句没有保持的概念,只要右端表达式中操作,行为建模语句,行为建模,有以下内容:,过程结构,时序控制,语句块,过程性赋值,条件语句,循环语句,行为建模语句行为建模有以下内容:,过程结构,以下,两种语句,是为一个设计的,行为建模,的主要机制,initial,语句,always,语句,一个模块中可以包含任意多个,initial,或,always,语句,所有的,initial,和,always,语句在,0,时刻开始并行执行,过程结构 以下两种语句是为一个设计的行为建模的主要机制,时序控制,时延控制,表示在语句执行前的,“,等待时延,”,。,使用格式有,两种,:, 时延值,(最小时延:典型时延:最大时延),例:,3 c,a,;,时序控制 时延控制,事件控制,边沿触发事件控制,主要有,正边沿(,posedge,),和,负边沿(,negedge,),两种,例:,always (posedge clk),count=count+1;,电平敏感事件控制,进程语句或进程中的过程语句一直延迟到列出的控制信号有变化才执行,例:,always (a or b),c=ab;,事件控制边沿触发事件控制,语句块,顺序语句块,格式:,begin ,标识符,语句,1;,;,语句,n; end,其中,标识符,是可选项,语句块中的语句,按给定次序顺序执行,并行语句块,格式:,fork ,标识符,语句,1;,;,语句,n; join,其中,标识符,是可选项,语句块中的语句,并行执行,语句块 顺序语句块,过程性赋值,它是在,initial,语句或,always,语句内的赋值,,只能对寄存器数据类型的变量赋值,阻塞性赋值,(),阻塞性赋值是指立即赋值,非阻塞性赋值,(,),非阻塞性赋值是在语句块结束后,块内的非阻塞性赋值语句同时进行赋值,过程性赋值 它是在initial语句或always语句内的赋,if,条件语句,if,条件语句,3,种格式,if,(表达式) 语句;,if,(表达式) 语句,1;,else,语句,2;,if,(表达式,1,) 语句,1;,else if,(表达式,2,) 语句,2;,else if,(表达式,n,) 语句,n,;,else,语句,n,1;,if条件语句 if条件语句 3种格式,Case,条件语句,语法格式,:,case,(控制表达式),分支表达式,1:,语句,1;,分支表达式,2:,语句,2;,分支表达式,n,:语句,n,;,default,:语句,n,1,;,Endcase,case,可以换为,casex,或,casez,,这三者使用形式上一样,但功能上有所差别。,Case条件语句,case,、,casez,和,casex,的差别,case,0,1,x,z,0,1,0,0,0,1,0,1,0,0,x,0,0,1,0,z,0,0,0,1,case、casez和casex的差别 01xz010001,case,、,casez,和,casex,的差别,casez,0,1,x,z,0,1,0,0,1,1,0,1,0,1,x,0,0,1,1,z,1,1,1,1,case、casez和casex的差别casez01xz01,case,、,casez,和,casex,的差别,Casex,0,1,x,z,0,1,0,1,1,1,0,1,1,1,x,1,1,1,1,z,1,1,1,1,case、casez和casex的差别Casex01xz01,case,、,casez,和,casex,的差别,从表中可以看出三者差别如下:,case,是将所有逻辑值进行比较;,casez,则将高阻情况,z,情况忽略;,casex,则进一步将高阻,z,和未定,x,均忽略不计。,case、casez和casex的差别从表中可以看出三者差别,循环语句,Forever,语法格式,:,forever,语句,功能:,将语句永远执行下去,主要用于产生时钟变量等,Repeat,语法格式,:,repeat,(循环次数表达式) 语句,功能:,执行指定循环次数,循环语句 Forever,循环语句,While,语法格式,:,while (,条件表达式,),语句,功能:,执行过程赋值语句直到指定的条件为假,For,语法格式,:,for,(循环下标初值;循环条件;循环下标增量) 过程语句,功能:按照指定的次数重复执行过程赋值语句若干次,循环语句While,华迪电子实训中心,2006.10,谢 谢!,华迪电子实训中心 2006.10 谢 谢!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


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

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


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