《Verilog HDL数字系统设计与应用》 课件 FPGA-第3章-Verilog HDL的基本语法.pptx

《Verilog HDL数字系统设计与应用》 课件 FPGA-第3章-Verilog HDL的基本语法.pptx

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第3章VerilogHDL的基本语法;第3章VerilogHDL的基本语法;3.1Verilog模块;【例3.1】二输入与非门的VerilogHDL模块的描述。

moduleand_or(a,b,c); //模块名为and_or,端口有a,b,c

inputa,b; //声明a,b为输入端口

outputc; //声明c为输出端口

wired; //声明内部信号d

assignd=ab;//描述功能

assignc=!d; //描述功能

endmudule//模块结束;模块声明包括模块名字、模块输入、输出端口列表。模块定义格式如下:

module模块名(端口1,端口2,……);

endmodule

其中,模块名字是该模块唯一标识,名字后面的括号内容为端口列表定义,端口名定义必须符合标识符命名规则,端口名之间用逗号隔开,模块声明以分号结束。;端口是模块与外部其他模块进行信号传递的通道或通讯信号线,其类型有三种:输入端口(input)、输出(output)、双向端口(inout)。每个模块要先对端口进行定义,说明端口的类型,再对模块功能进行描述。

端口定义的语法格式为:

input端口1,端口2,……端口n;//输入端口

output端口1,端口2,……端口n;//输出端口

inout端口1,端口2,……端口n;//双向端口

端口定义时需注意以下几点:

(1)端口名之间用逗号分割。

(2)每个端口不仅需要声明是输入、输出或者双向端口类型,还要声明其数据类型,是wire型变量或reg型变量或其他数据类型。如不声明端口的数据类型,则端口默认为网络类型wire。

(3)输入端口(input)和双向端口(inout)不允许声明为寄存器类型。

(4)模块仿真测试文件不需要定义端口。;对模块中所有信号都必须进行数据类型的定义,这些信号主要包括端口信号和节点信号。下面举例说明典型的几种信号类型定义。

1、端口定义、数据类型分开定义。

modulecount(a,b,c);

inputa,b;

outputc;

wire[3:0]a,b;//定义输入信号a、b为4条总线组成的wire型变量

reg[3:0]c;//定义信号c为4条总线组成的reg型变量

wired;//定义信号节点d的数据类型为wire型变量

……

endmodule

2、端口定义和数据类型写在同一条语句中。

modulecount(a,b,c);

inputwire[3:0]a,b;//定义输入信号a、b为4条总线组成的wire型变量

outputreg[3:0]c;//定义信号c为4条总线组成的reg型变量

wired;//定义信号节点d的数据类型为wire型变量

……

endmodule;3、端口定义和数据类型放在端口列表中。

modulecount(inputwire[3:0]a,b,outputreg[3:0]c);

wired;

……

endmodule

以上三种书写风格中,第三种在书写形式上更加简洁,端口类型和信号类型放在模块列表中声明后,在模块内部就不需要再重复声明。

【例3.2】用VerilogHDL对二选一数据选择器的描述。

moduleMUX2_1(inputa,b,sel,outputout);

assignout=sel?b:a;

endmudule;模块最核心的部分是逻辑功能定义,可以使用数据流、行为描述和元件例化三种不同风格定义和描述逻辑电路的功能。

1、数据流描述风格

数据流描述风格通常采用连续赋值语句(assign)对电路的逻辑功能进行描述,通过说明数据的流向对模块进行描述。数据流描述方式比较适合对组合逻辑电路进行描述。

例如:

moduleaor(a,b,c,out);

inputa,b,c;

ouputout;

assignout=~((ab)|(~c));

endmodule

使用assign赋值时,赋值语句放在assign语句后面即可。;2、行为描述风格

行为描述风格使用过程块结构对电路功能进行描述,过程块通常有initial和always语句等。过程块结构内部是行为语句,如过程赋值语句、

您可能关注的文档

文档评论(0)

balala11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档