EDA 第3章 Verilog设计入门ppt课件_第1页
EDA 第3章 Verilog设计入门ppt课件_第2页
EDA 第3章 Verilog设计入门ppt课件_第3页
EDA 第3章 Verilog设计入门ppt课件_第4页
EDA 第3章 Verilog设计入门ppt课件_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

第3章Verilog设计入门,Verilog设计入门,3.1组合电路的Verilog描述,3.1.12选1多路选择器及其Verilog描述,3.1.12选1多路选择器及其Verilog描述,1模块表达,说明:任何可综合的基本模块都必须以关键词module开头,模块名属于标识符,由设计者自定;模块名右侧括号称为模块端口列表,列出所有输入、输出或双向端口名,端口名之间用逗号分开,括号外加分号,端口名也属于标识符;3.以endmodule关键词结束模块,旁边没有标点符号;4.不应用数字或中文定义实体名,也不应用与EDA软件工具库中以定义好的关键词或元件作为模块名,如or2,不能用数字起头的模块名,如74LS160;5.Verilog规定,所有关键词必须小写,如INPUT、MODULE都不是关键词,标识符对大小写敏感,与VHDL不同。,2端口语句、端口信号名和端口模式,端口或端口信号是模块与外部电路连接的通道,端口关键词有三种,一般格式如下:,说明:端口关键词旁的端口名可以有多个,端口名之间用逗号分开,最后加分号。,2端口语句、端口信号名和端口模式(1)单逻辑位,或标量位,如例中用input和output定义的端口a、b、s、y;(2)逻辑矢量位,描述一个多信号端口或总线端口,使用第四句的端口描述,其中msb和lsb分别表示信号矢量的最高和最低位数;如信号C定义为:output3:0C;,Verilog的端口模式:(1)input:输入端口。数据只能由此端口被读入模块实体中。(2)output:输出端口。数据只能通过此端口从模块实体向外流出,或者说可以将模块中的数据向此端口赋值。(3)inout:双向端口。即可以对此端口赋值,也可以向此端口输入信号,如RAM的数据口、单片机的I/O口等。,3赋值语句和条件操作符,关键词assign引导不同形式的赋值语句,如:,注:assign语句属于并行语句,即无论有多少行语句,都是同时执行。,3赋值语句和条件操作符,条件操作符的一般格式:,说明:当条件表达式的计算值为真时(数值等于1),选择并计算表达式1的值,否则(数值等于0),选择并计算表达式2的值。,4.关键字(Keyword)是指verilog语言中预定义的有特色含义的英文词语,如3.1中input、output、module、endmodule,assign等。5.标示符(Identifier)是设计者在verilog程序中自定义的,用于表示不同的名词的词语,如模块名、信号名、端口名等。例3.1中的MUX21a、a和b等。6.规范的程序书写格式verilog程序对书写格式十分宽松,可以一行写多条语句(只要能写下),也可以分行书写。,7.文件取名和存盘(1)文件名可以由设计者任意给定,文件后缀扩展名必须是“.V”,如adder.v;(2)对于Quartus,文件名与该程序的模块名必须一致。如例3.1的文件名应该是MUX21a.v;(3)文件取名对大小写敏感;(4)verilog程序必须存入某文件夹中(要求非中文文件夹名),不要存在根目录或桌面上。,3.1.24选1多路选择器及其case语句表述方式,1reg型变量定义(1)verilog中最常用的变量:寄存器型变量(reg)和网线型变量(wire)。(2)模块中功能描述涉及的所有信号都必须定义相应的变量类型,如果没有在模块中显式地定义信号的类型,verilog默认定义为wire型。(3)当需要信号为寄存器型信号时必须使用reg进行显示定义,在过程语句always引导的顺序语句中规定必须是reg型变量。(4)输入或双向口信号不能定义为寄存器型信号类型,2.过程语句,模块中任何顺序语句都必须放在过程语句结构中,格式如下:,(1)过程语句首先需要用always引导;(2)要求将过程语句中所有的输入信号都放在敏感信号中;(3)当过程语句的执行依赖于敏感信号的变化,当某一敏感信号变化时,将启动此过程语句,于是always引导的所有顺序语句被执行一遍,然后返回起始端,进入等待状态;(4)所有过程语句本身都属于并行语句,而任一过程引导的语句结构都是顺序语句;,敏感信号的表达方式:(1)用文字or连接所有敏感信号;(2)用逗号区分或连接所有的敏感信号;(3)省略形式;试图通过选择性地列出敏感信号来改变逻辑设计是无效的。,3.块语句begin_end,(1)块语句begin_end本身没什么功能,仅限于在always引导的过程语句中使用,通常用来组合顺序语句,相当于括号的作用;(2)verilog规定,若某语句结构中仅包含一条语句,则无需显式定义块语句,若含多条语句,包含语句结构,如case语句,也包含含有局部变量定义的单条语句,则必须用begin_end将它们括起来;,4case条件语句和4种逻辑状态,Case语句是一种多分支条件语句,类似真值表的描述方式,其表述方式有三种,case、casez(变量是高阻值)和casex(变量是未知值)语句。Case语句一般格式如下:,Case语句注意三项:(1)表达式中的值必须在case以下列出的取值范围内,且数据类型要匹配;如例3.2的s1和s0只能对应2位二进制数;(2)与VHDL不同,verilog的case语句各分支表达式间未必是并列关系,当多个分支取值同时满足表达式时,执行最先满足的表达式分支,其余分支不检测;(3)除非所有条件句能完整覆盖case语句中的取值,否则最末必须加上default语句。,Verilog中的四种基本数值:0:即二进制数0、低电平、逻辑0、事件为伪的判断结果;1:即二进制数1、高电平、逻辑1、事件为真的判断结果;z或Z:高阻态,或高阻值,还可用“?”表示。x或X:不确定,或未知的逻辑状态。,5并位操作和数字表达,大括号:并位运算符,将两个或多个信号按二进制位拼接起来,作为一个信号使用。,(1)并位操作,(2)数字表示表示二进制数的一般格式:,说明:B表示二进制,O表示八进制,H表示十六进制,D表示十进制,且不分大小写。2.verilog2001规定可定义有符号二进制数,如8b10111011和8sb10111011是不一样的。前者是普通无符号数,后者是有符号数,最高位1是符号。,(3)赋值符号“=”说明:只能用于顺序语句中,3.1.34选1多路选择器及其数据流描述方式,数据流描述方式:即直接用布尔逻辑表达式来描述模块的功能。,1按位逻辑操作符,如果两个操作数位矢量不同长度,综合器将自动根据最长位的操作数的位数把较短的数据按右端补0对齐的规则进行运算操作,如C和E的操作。,2等式操作符,(1)当关系为真时,等式操作的结果为1,当关系为假时,结果为0;(2)=等于操作符,两个二进制数比较必须每一位都相等,结果才为1,否则为0,且如果其中有的位是未知值X或高阻值z都判断为假,输出0;(3)全等比较操作符=,将两个比较值当成确定的值进行比较,当表述相同为1.,3assign连续赋值语句,由assign引导的赋值语句方式也称为数据流描述方式,即当等号右侧的驱动表达式中的任一信号发生变化时,表达式被计算一遍,赋给左侧的目标变量;,当一个模块中有多个assign语句时,不允许有多个不同赋值表达式,即在同一个模块中,wire型变量不允许有多个驱动源。如果驱动表达式为高阻态,是可以允许的。,4wire定义网线型变量,端口变量被默认为网线型变量,但由于assign语句中的变量必须是网线型变量,所以必须用网线型变量显式定义。,wire和assign在表达信号及信号赋值性质上是一致的。如下:,用wire语句描述的4选1多路选择器:,5注释符号,3.1.44选1多路选择器及其if语句描述方式,1if_else条件语句,执行过程:当if后的条件表达式为真时,执行赋值语句,否则执行else后的If语句,如此数据的执行下去,直到完成所有if语句。同样,如果执行多条语句时,应该用begin-end块语句将它们括起来。If(s)y=a;elsebeginy=b;z=c;q=1b0;end,2过程赋值语句,(1)阻塞式赋值:“=”,(2)非阻塞式赋值:“=”,例3.2和例3.5中两种不同的赋值符号:“=”和“=”,特点:一旦执行完当前赋值语句,如y=b,赋值目标变量y即刻获得计算值,如果在一个块语句中含有多条阻塞式赋值语句,当执行到某条赋值语句时,其他语句被禁止执行,其他语句被阻塞了一样。,特点:必须在块语句执行结束时才整体完成赋值操作,在执行当前语句时,对块中其他语句的执行不加阻塞,所有赋值语句都是并行运行的。,3.数据表示方式例如:SEL=2当等式不匹配时,verilog综合器会自动使其匹配;上例中将整数2变换成2b10.S1,S0=2b10,(SEL=2),(SEL=2D2),当所赋值大于某变量已定义的矢量位可能的值,综合器会将赋值符号右侧的数据折算成二进制数,然后根据被赋值变量所定义的位数,向左截去多余位数。,例如:Y定义为Y1:0,当编译赋值语句Y=9,最后Y=2b01,截去了高位的10.,3.1.5加法器及其Verilog描述,1.半加器描述,3.1.5加法器及其Verilog描述,说明:例3.6利用半加器的逻辑原理图(3.7)直接给出布尔函数描述方法,3.1.5加法器及其Verilog描述,例3.7利用case语句诠释逻辑真值表,需注意两点:(1)在条件语句中,若涉及的语句多于一条,应该用块语句括起来。若为非阻塞式赋值,块中所有语句并行执行;若为阻塞式赋值,块中语句顺序执行。(2)条件数值虽为整数1、2、3的表达式,但综合器自动转化为case的变量a,b与对应数据类型的数值进行比较判定。,说明:例3.8直接使用了加法算术操作符“+”的描述方式。,用布尔函数的方式表达的或门模块,将半加器描述文件和或门描述文件分别以文件名h_adder.v和or2a.v存盘,就可以作为较低层次的基本元件待高层次顶层设计的调用。,3.1.5加法器及其Verilog描述,2.全加器顶层文件设计和例化语句,3.1.5加法器及其Verilog描述,2.全加器顶层文件设计和例化语句,3.1.5加法器及其Verilog描述,元件例化:就是引入一种连接关系,将预先设计好的设计模块定位为一个元件,然后利用特定的语句将此元件与当前的设计实体中指定端口相连接,为当前设计实体引进一个新的、低一级的设计层次。,说明:(1)元件例化是使verilog设计模块构成自上而下层次化设计的重要途径;(2)元件例化可以多层次调用;(3)被调用的底层模块可以以不同形式出现,如verilog文件、FPGA元件、其他硬件描述语言设计的元件、IP核等。,元件例化的一般格式:,端口关联法:括号中的信号名是外部端口名,括号外带点的信号名是待连接的元件自己的端口名。端口关联法中的连接表述放置的位置不影响结果。位置关联法:以位置的对应关系连接相应的端口。,分析以下语句的含义和用法:,3.1.5加法器及其Verilog描述,3.8位加法器描述,3.8位加法器描述,3.2时序模块及其Verilog表述,3.2.1边沿触发型触发器及其Verilog表述,只有当时钟上升沿到来时,输出Q的数值才会随输入D改变,否则Q值保持不变。,3.2.1边沿触发型触发器及其Verilog表述,时钟边沿敏感关键词:posedgePosedgeCLK表示当输入信号CLK出现一个上升沿时,敏感信号PosedgeCLK将启动过程语句。执行过程:当输入的时钟信号CLK发生一个上升沿,即刻启动过程语句,执行以下赋值语句,将D送往输出信号Q,使其更新。反之,若CLK没有上升沿发生,赋值语句将不会被执行,保持Q的原值不变,直到下次更新。,时钟边沿敏感表述:posedgeCLK(上升沿敏感);negsedgeCLK(下降沿敏感);verilog对时序模块的描述特点:凡是边沿触发性质的时序元件必须使用时钟边沿敏感表述,而不用此表述产生的时序电路都是电平敏感性时序电路。,3.2.2电平触发型锁存器及其Verilog表述,当时钟CLK为高电平时,输出Q的数值才会随D输入的数据而变化,而当CLK为低电平时将保存其在高电平时锁入的数据。,3.2.2电平触发型锁存器及其Verilog表述,执行过程分析:(1)当CLK由0变为高电平1,过程语句被执行,于是顺序执行以下的if语句,满足if语句的条件,执行赋值语句Q=D,将D的数据向Q赋值,更新Q,结束if语句。(2)当CLK由1变成0,无论D是否发生变化,都将启动过程,去执行if语句。当这是CLK=0,不满足if语句条件,无法执行赋值语句,Q值保持不变。(3)当CLK没有发生任何变化,且CLK一直为0,敏感信号D发生了变化,也能启动过程,由于CLK=0,无法执行if语句,从而无法执行赋值语句,Q值保持不变。当CLK=1,更新Q。,说明:通过使用不完整的条件语句,即在条件语句中有意不把所有可能的条件对应的操作表述出来,只列出满足某部分条件下的任务,不用posedge敏感表述,同样能产生时序电路。,3.2.3含异步复位/时钟使能型触发器及其Verilog表述,功能:只要RST=0,此时输出端即刻被清0,与时钟CLK无关;只有RST=1,ED=1时,时钟上升沿才有效。,3.2.3含异步复位/时钟使能型触发器及其Verilog表述,3.2.4同步复位型触发器及其Verilog表述,3.2.4同步复位型触发器及其Verilog表述,说明:“同步”并非时序之同步,是指某控制信号只有在时钟信号有效时才起作用。,3.2.5异步复位型锁存器及其Verilog表述,3.2.5异步复位型锁存器及其Verilog表述,3.2.6Verilo

温馨提示

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

评论

0/150

提交评论