资源描述:
《第10章 Verilog硬件描述语言实例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、10.1引言第10章Verilog硬件描述语言实例VerilogHDL描述逻辑电路时常用3种描述方式,分别为:行为型描述、数据流型描述和结构型描述。行为型描述只描述行为特征,不涉及逻辑电路的实现,是一种高级语言描述方式,具有很强的通用性和有效性;数据流型描述指通过assign连续赋值实现组合逻辑功能的描述方式;结构型描述指描述实体连接的结构方式,所谓实体一般指Verilog语言已定义的基元,也就是说结构型描述指利用Verilog语言已定义的基元描述逻辑电路的描述方式。行为型描述语句更简练,不能被综合;结构型描述语句通常容易被综合,但语
2、句显得复杂。在实际开发中往往结合使用多种描述方法。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);//----------------1inputa,b;inputs;outputy;as
3、signy=(s==0)?a:b;//----------------2endmodule//----------------310.2.12选1数据选择器实例1//例10.2.1moduleMux21(a,b,s,y);//----------------1inputa,b;inputs;outputy;assigny=(s==0)?a:b;//----------------2endmodule//----------------31.Verilog语言描述2.程序说明(1)注释行(2)模块定义语句module和endmodule
4、所有的程序都置于模块(module)框架结构内。模块是Verilog最基本的构成单元。一个模块可以是一个元件或者一个设计单元。module<模块名>(端口列表)<申明><功能描述>endmodule模块名是该模块的唯一标识符。端口列表列举了该模块与外部电路连接的所有端口,包括输入、输出及双向端口。该模块共包括四个端口:输入端口a,b,s和输出端口y。图10.2.1为定义的二选一数据选择器。(3)连续赋值语句assign“assigny=(s==0)?a:b;”为一条连续赋值语句。连续赋值语句assign能够给网表变量赋值。只要等号右边
5、的表达式值发生变化,这种赋值行为就会立刻发生。连续赋值语句能模拟组合逻辑电路。(4)条件操作符“?”s==0?a:b为一条件表达式。式中条件操作符“?”为三目操作符,由两个操作符隔离三个操作数构成,语法格式如下:表达式1?表达式2:表达式3执行操作时,首先会计算表达式1的值,如果表达式1的值为1,那么将计算表达式2的值,做为条件表达式的最后结果;如果表达式1的值为0,则计算表达式3的值,并做为条件表达式最后的结果。(5)连续赋值语句assign等式运算符程序行2中表达式s==0为等式运算符,当“==”两边相等时,结果为1,否则为0。“
6、!=”为不等于运算符。因此例10.2.1中程序行2的功能为使用assign给wire型变量y赋值,当s为0时y状态和a相同,否则和b相同,实现了2选1数据选择器功能。仿真结果10.2.22选1数据选择器实例2//例10.2.2moduleMux21(a,b,s,y);inputa,b;inputs;outputy;//--------------1wired,e;//--------------2assignd=a&(~s);//--------------3assigne=b&s;assigny=d
7、e;endmodule(1)连线
8、类型wire程序中出现的中间变量d和e定义为wire类型,表示内部结点或连线。程序行1输出端口y的数据类型默认为wire类型。网表类型可通过连续赋值语句(assign语句)或逻辑门驱动,并需要驱动源持续驱动。如果一个网表没有和任何驱动源连接,其值为高阻状态。1.Verilog语言描述2.程序说明(2)位运算符按位取反(~)、按位与(&)和按位或(
9、),按位异或(^)、按位同或(^~,异或非)。参与运算两个数位数不同时,采用右对齐。&01xz00000101xxx0xxxz0xxx
10、01xz001xx11111xx1xxzx1xx^01
11、xz001xx110xxxxxxxzxxxx^~01xz010xx101xxxxxxxzxxxx~0110xxzx10.2.32选1数据选择器实例3//例10.2.3modulemux21(a,b,s,y);inputa