EDA技术与应用:第四章 数字系统与Verilog HDL 描述

举报
资源描述
第四章 数字系统与Verilog HDL 描述 4.1 Verilog HDL的一般结构 硬件描述语言(硬件描述语言(HDL)用来描述电子系统。)用来描述电子系统。由若干相互联结,相互作用的基本电路组成的,具有特由若干相互联结,相互作用的基本电路组成的,具有特定功能的电路整体,称为电子系统。定功能的电路整体,称为电子系统。电子系统一般被称为实体。当一个电子系统不是十分复电子系统一般被称为实体。当一个电子系统不是十分复杂时,系统常被称为电路。在这里两个名称可以互用。杂时,系统常被称为电路。在这里两个名称可以互用。显然一个Verilog模块代表一个系统,明显地它能表示系统的接口和主体。module模块名(?)inputoutput系统的主体描述endmodule括号内的“?”代表接口。这些接口(或称端口)的细节 用 input、output描述。描述包含了端口方向和它类型的一些信息。1.Verilong HDL模块的结构 1)模块任何模块都以关键词任何模块都以关键词module开头,紧跟模块名以开头,紧跟模块名以endmodule结束。在结束。在module和和endmodule之间共有三个部之间共有三个部分:分:接口接口、主体主体和和可选附加组件可选附加组件。接口:由端口和参数声明组成;接口:由端口和参数声明组成;主体:模块内部的描述;主体:模块内部的描述;可选组件:在模块任何地方用可选组件:在模块任何地方用include定义。定义。modulemodule-name(端口列表);input,output,inout,/端口声明reg,wire,parameter,/参数声明Continuousassignment/连续赋值Moduleinstantiation/低级模块例化Initialstatement/初始语句Alwaysstatement/always语句function,task,./任务和函数Gateinstantiation/门级描述UDPinstantiation/原语方式描述endmodule一个模块的基本语法如下:一个模块的基本语法如下:例例4.4.用用VerilogHDL语言描述的一个上升沿语言描述的一个上升沿D触发器的模块。触发器的模块。例例1 1 用用Verilog HDL语言描述一个上升沿语言描述一个上升沿D D触发器。触发器。module dff(q,clk,data);output q;input clk,data;reg q;always(posedge clk)q=data;endmodule 端口类端口类型说明型说明数据类型说明数据类型说明功能描述功能描述(行为描述)(行为描述)句尾句尾分号分号模块模块名名由由“always-begin”和和“end”构成功能描述块,它实现设构成功能描述块,它实现设计要求,它一直监视输入信号计要求,它一直监视输入信号clk的变化,在的变化,在clk发生上升沿跳发生上升沿跳变时,将变时,将data的值赋给输出信号的值赋给输出信号q。2)模块的命名Verilog中的每一标识符,包含模块名,必须遵循如下规则:中的每一标识符,包含模块名,必须遵循如下规则:1)它必须用字母,数字、美元符)它必须用字母,数字、美元符$下划线构成;下划线构成;2)必须以字母或下划线开始;)必须以字母或下划线开始;3)标识符内不能有空格;)标识符内不能有空格;4)区分大小写)区分大小写5)保留的关键字不能使用。)保留的关键字不能使用。3)VerilogHDL的书写格式Initialbegincounter=4b00;#10WEIS=8b011;end其与下面的指令是一样的:其与下面的指令是一样的:Initialbegincounter=4b00;#10WEIS=8b011;end4)Verilog中组注释中组注释Verilog支持两种类型的注释:每行注释和块注释。支持两种类型的注释:每行注释和块注释。1)每行注释以)每行注释以/开始,结束于本行。开始,结束于本行。2)块注释以)块注释以/*开始,以开始,以*/结束。结束。5)系统描述)系统描述/Design(设计设计):/Filename(文件名文件名):/Purpose(目的目的):/Note(注意注意):/Limitations(局限局限):/Errors(错误错误):/Includefiles(包含文件包含文件):/Author(作者作者):/Simulator(仿真仿真):/版本版本3.VerilongHDL模块的描述方式模块的描述方式 在模块中,可用下述方式描述一个设计:在模块中,可用下述方式描述一个设计:1)使用原语和低级模块例化(结构方式);)使用原语和低级模块例化(结构方式);2)指定输出信号与输入信号的传输(数据流方式);)指定输出信号与输入信号的传输(数据流方式);3)以电路所期望的行为来定义电路中算法(行为方式);)以电路所期望的行为来定义电路中算法(行为方式);4)上述描述方式的混合。上述描述方式的混合。(1)结构化描述形式)结构化描述形式 Verilog中的结构方式代表门级或高一级的物理电路实现。中的结构方式代表门级或高一级的物理电路实现。它代表了由信号相连元件的原理图。设计隐藏在元件中。结它代表了由信号相连元件的原理图。设计隐藏在元件中。结构定义中的元件可以是原语或例化的模块。构定义中的元件可以是原语或例化的模块。在结构建模中,描述语句主要是实例化语句,包括对在结构建模中,描述语句主要是实例化语句,包括对Verilog HDL 内置门(如与门(内置门(如与门(and)异或门()异或门(xor)等的)等的例化以及对其它器件的调用,这里的元件包括门、触发器、例化以及对其它器件的调用,这里的元件包括门、触发器、以及其它一些小模块等简单的元件,也可以是以及其它一些小模块等简单的元件,也可以是FPGA厂家提厂家提供的一些宏单元以及设计者已经有的设计。供的一些宏单元以及设计者已经有的设计。在在Verilog HDL中可使用如下方式描述结构中可使用如下方式描述结构:1)内置门原语内置门原语(在门级在门级);2)开关级原语开关级原语(在晶体管级在晶体管级);3)用户定义的原语用户定义的原语(在门级在门级);4)模块实例模块实例(创建层次结构创建层次结构)。一个模块能够在另外一个模块中被引用,这样就建立一个模块能够在另外一个模块中被引用,这样就建立了描述的层次。模块实例化语句形式如下:了描述的层次。模块实例化语句形式如下:元件名元件名 (端口列表);(端口列表);其中:其中:元件名是已经设计好的基本数字逻辑电路模块元件名是已经设计好的基本数字逻辑电路模块的名称,它们相当于已设计好的基本数字逻辑电路模块,的名称,它们相当于已设计好的基本数字逻辑电路模块,其端口列表用于描述基本数字逻辑电路的输入输出端口与其端口列表用于描述基本数字逻辑电路的输入输出端口与例化元件接线端口的连接关系。例化元件接线端口的连接关系。端口列表的表示方法有两种:名称关联法和位置关联端口列表的表示方法有两种:名称关联法和位置关联法,两者的表示方法不同,但其编程的效果相同,注法,两者的表示方法不同,但其编程的效果相同,注意关联方式不能够混合使用。意关联方式不能够混合使用。端口关联形式如下:端口关联形式如下:port_expr /通过位置。通过位置。.PortName(port_expr)/通过名称。通过名称。基本数字逻辑电路的端口应该和基本数字逻辑电路的端口应该和“端口列表端口列表”中的中的所列出的端口名称一一对应,各个端口名之间用逗号所列出的端口名称一一对应,各个端口名之间用逗号隔开。隔开。例例4.1.1:.module and1(C,A,B););input A,B;output C;.and1 A1(T3,A,B);/实例化时采用位置关联,实例化时采用位置关联,T3对应输对应输出端口出端口C,A对应对应A,B对应对应B。and1 A2(.C(T3),),.A(A),),.B(B););/实例化时实例化时采用名字关联,采用名字关联,.C是是and 器件的端口,其与信号器件的端口,其与信号T3相连相连.endmoduleport_expr 可以是以下的任何类型:可以是以下的任何类型:(1)标识符(标识符(reg 或或net)如)如 .C(T3),),T3为为wire型标识符。型标识符。(2)位选择位选择,如,如 .C(D0),),C端口接到端口接到D信号的第信号的第0bit 位。位。(3)部分选择部分选择,如,如.Bus(Din5:4)。)。(4)上述类型的合并,如上述类型的合并,如.Addr(A1,A21:0)。)。(5)表达式(只适用于输入端口),如表达式(只适用于输入端口),如.A(wire Zire=0)。)。建议:建议:在例化的端口映射中请采用名字关联,这样,当被调用在例化的端口映射中请采用名字关联,这样,当被调用的模块管脚改变时不易出错。的模块管脚改变时不易出错。在实例化中,有些管脚可能没用到,可在映射中采用空白处理。在实例化中,有些管脚可能没用到,可在映射中采用空白处理。Verilog HDL结构描述的小结:结构描述的小结:1)模块的调用)模块的调用模块的调用利用结构描述,基本方式如下:模块的调用利用结构描述,基本方式如下:基本方式:基本方式:模块名模块名 调用名(端口名表项)调用名(端口名表项)模块的调用有以下的几种方式:模块的调用有以下的几种方式:方式一:方式一:位置对应调用方式;位置对应调用方式;方式二:方式二:端口名对应调用方式;端口名对应调用方式;方式三:方式三:存在不连接端口的调用方式(未连存在不连接端口的调用方式(未连PORT允许用(,)号空出其位置)。允许用(,)号空出其位置)。ninput:符号内部总是符号内部总是net,外部可连,外部可连net和和reg数据类型。数据类型。n output:其内部可为其内部可为net或或reg,而外部必须连各种,而外部必须连各种net数数据类型。据类型。ninouts:它的内外都用它的内外都用net且只能连各种且只能连各种net数据类型。端数据类型。端口使用规则示意图如图所示。口使用规则示意图如图所示。2)端口()端口(PORT)连接的规则)连接的规则(1)给电路图中的每个输入输出引脚赋以端口名;)给电路图中的每个输入输出引脚赋以端口名;(2)给电路图中每条内部连线信号取上各自的连线名;)给电路图中每条内部连线信号取上各自的连线名;(3)给电路图中的每个逻辑单元取一个单元名)给电路图中的每个逻辑单元取一个单元名(即即“调用名调用名”);(4)给所要描述的这个电路模块确定一个模块名;)给所要描述的这个电路模块确定一个模块名;(5)用)用module定义相应模块名的结构描述定义相应模块名的结构描述,并将逻辑并将逻辑图中所有的输入输出端口名列入端口名表项中,再完图中所有的输入输出端口名列入端口名表项中,再完成对各端口的输入输出类型说明;成对各端口的输入输出类型说明;(6)依照电路图中的连接关系,确定各单元之间端口)依照电路图中的连接关系,确定各单元之间端口信号的连接,完成对电路图内部的结构描述。最后用信号的连接,完成对电路图内部的结构描述。最后用endmodule结束模块描述全过程。结束模块描述全过程。3)结构描述小结)结构描述小结(2)数据流描述方式)数据流描述方式n 一个电路可以由赋值语句来描述,它将输入转化成所一个电路可以由赋值语句来描述,它将输入转化成所要输出值。此种定义方式称为数据流。要输出值。此种定义方式称为数据流。n在这种方式中,电路不以元件间的信号连接来描述,在这种方式中,电路不以元件间的信号连接来描述,而是用表达式来将输入转化或想要的输出。而是用表达式来将输入转化或想要的输出。n 表达式可以基于广泛的操作符,例如:逻辑、算术、表达式可以基于广泛的操作符,例如:逻辑、算术、条件、连接等操作符。条件、连接等操作符。n所有这些操作符被用到数据流方式中赋值,因此,所有这些操作
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关资源
正为您匹配相似的精品文档
相关搜索

当前位置:首页 > 中学教育 > 初中教育


电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号