20.1.3Verilog硬件描述语言实例I - Verilog硬件描述语言实例I-1_第1页
20.1.3Verilog硬件描述语言实例I - Verilog硬件描述语言实例I-1_第2页
20.1.3Verilog硬件描述语言实例I - Verilog硬件描述语言实例I-1_第3页
20.1.3Verilog硬件描述语言实例I - Verilog硬件描述语言实例I-1_第4页
20.1.3Verilog硬件描述语言实例I - Verilog硬件描述语言实例I-1_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

10.1引言第10章

Verilog

硬件描述语言实例VerilogHDL描述逻辑电路时常用3种描述方式,分别为:行为型描述、数据流型描述和结构型描述。

行为型描述只描述行为特征,不涉及逻辑电路的实现,是一种高级语言描述方式,具有很强的通用性和有效性;数据流型描述指通过assign连续赋值实现组合逻辑功能的描述方式;结构型描述指描述实体连接的结构方式,所谓实体一般指Verilog语言已定义的基元,也就是说结构型描述指利用Verilog语言已定义的基元描述逻辑电路的描述方式。

行为型描述语句更简练,有可能不被综合;结构型描述语句通常容易被综合,但语句显得复杂。在实际开发中往往结合使用多种描述方法。10.22选1数据选择器2选1数据选择器可以有多种描述方式,通过4个实例和3种描述方式对例子中出现的语法现象进行解释。10.2.12选1数据选择器的数据流型描述方式;10.2.22选1数据选择器的数据流型描述方式;

10.2.32选1数据选择器的行为型描述方式;

10.2.42选1数据选择器的结构型描述方式;

10.2.12选1数据选择器实例1//例10.2.1moduleMux21(a,b,s,y); //----------------1 inputa,b; inputs; outputy; assigny=(s==0)?a:b; //----------------2endmodule //----------------310.2.12选1数据选择器实例1//例10.2.1moduleMux21(a,b,s,y); //----------------1 inputa,b; inputs; outputy; assigny=(s==0)?a:b; //----------------2endmodule //----------------31.Verilog语言描述2.程序说明(1)注释行(2)模块定义语句module和endmodule

所有的程序都置于模块(module)框架结构内。模块是Verilog最基本的构成单元。一个模块可以是一个元件或者一个设计单元。module<模块名>(端口列表)

<申明><功能描述>endmodule该模块共包括四个端口:输入端口a,b,s和输出端口y。它定义的是二选一数据选择器。Verilog端口类型只有input(输入),output(输出),inout(双向端口)三种,端口类型申明描述了端口的信号传输方向。

图10.2.2Verilog端口类型(3)连续赋值语句assign“assigny=(s==0)?a:b;”为一条连续赋值语句。连续赋值语句assign能够给网表变量赋值。只要等号右边的表达式值发生变化,这种赋值行为就会立刻发生。连续赋值语句能模拟组合逻辑电路。(4)条件操作符“?”s==0?a:b为一条件表达式。式中条件操作符“?”为三目操作符,由两个操作符隔离三个操作数构成,语法格式如下:

表达式1?表达式2:表达式3执行操作时,首先会计算表达式1的值,如果表达式1的值为1,那么将计算表达式2的值,做为条件表达式的最后结果;如果表达式1的值为0,则计算表达式3的值,并做为条件表达式最后的结果。仿真结果仿真电路图仿真波形图

10.2.22选1数据选择器实例2//例10.2.2moduleMux21(a,b,s,y); inputa,b; inputs; outputy; //--------------1 wired,e; //--------------2 assignd=a&(~s);//--------------3 assigne=b&s; assigny=d|e; endmodule

(1)连线类型wire

程序中出现的中间变量d和e定义为wire类型,表示内部结点或连线。程序行1输出端口y的数据类型默认为wire类型。网表类型可通过连续赋值语句(assign语句)或逻辑门驱动。如果一个网表没有和任何驱动源连接,其值为高阻状态。1.Verilog语言描述2.程序说明(2)位运算符

按位取反(~)、按位与(&)和按位或(|),按位异或(^)、按位同或(^~,异或非)。参与运算两个数位数不同时,采用右对齐。&01xz00000101xxx0xxxz0xxx|01xz001xx11111xx1xxzx1xx^01xz001xx110xxxxxxxzxxxx^~01xz010xx101xxxxxxxzxxxx~

0110xxzx10.2.32选1数据选择器实例3//例10.2.3modulemux21(a,b,s,y);inputa,b,s;outputy;regy;always@(aorbors)//----------------------------------1if(!s)y=a;//-----------------------------------2elsey=b;//------------------------------------3endmodule

(1)寄存器类型reg

输出端口y的数据类型申明为reg即寄存器型,在always块中被赋值的信号必须定义为reg型。寄存器(reg)类型不一定是触发器。只能在always语句中通过过程赋值语句进行赋值。1.Verilog语言描述2.程序说明

程序行1“always@(aorbors)”为重复执行语句。always后面跟了一个时间控制语句,时间控制通过事件表达式(关键词“@”)实现,时间控制部分为完整敏感信号列表,只要任意敏感信号发生变化,过程块将重复连续执行,持续整个模拟过程。(3)条件语句(if-else)

条件语句if-else语句可用来选择是否执行某条语句。(4)逻辑运算符

三种逻辑运算符:逻辑与“&&”、逻辑或“||”和逻辑非“!”ab!a!ba&&ba||b真真假假真真真假假真假真假真真假假真假假真真假假逻辑运算的真值表(2)重复执行语句always10.2.32选1数据选择器实例4//例10.2.4modulemux21(y,a,b,s);inputa,b,s;outputy;notu1(ns,s);andu2(sela,a,ns);andu3(selb,b,s);oru4(y,sela,selb);endmodule

例10.2.4调用了多个底层模块的实例。调用模块的过程,称为实例化。实例的使用格式为:1.Verilog语言描述2.程序说明<模块名><实例名><端口列表>;非模块与模块或模块

例10.2.4为门级结构描述,它提供了模型和实际电路之间直接的一一对应的关系。VerilogHDL中一些基元与关键字对应关系如下:not—非门;buf—缓冲器;and—与门;or—非门;nand—与非门;nor—或非门;xor—异或门;xnor—同或门。这些模块称为Verilog语言的基元(Primitive)图10.2.5

例10.2.4仿真电路图10.34选1数据选择器10.3.14选1数据选择器实例1sel(1)sel(0)out00in001in110in211in34选1数据选择器功能表如表10.3.1所示。4个数据输入端口in0、in1、in2、in3,也称为输入变量,两位选择变量sel(1)和sel(0),数据输出端为out。

四选一数据选择器功能表//例10.3.1modulemux4_1(out,in0,in1,in2,in3,sel);outputout;inputin0,in1,in2,in3;input[1:0]sel;//-----------------1regout;always@(in0orin1orin2orin3orsel)//--------------2case(sel)2'b00:out=in0;2'b01:out=in1;2'b10:out=in2;2'b11:out=in3;default:out=1'bx;endcaseendmodule 1.Verilog

语言描述2.程序说明

Verilog中如果一个网表型变量和寄存器型变量定义时没有指定位长度,则它被认为是1位标量,如果设定了位长度,则被认为是一个矢量。(1)矢量类型wire[7:0]bus;

//8位矢量网表busreg[0:40]addr;

温馨提示

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

评论

0/150

提交评论