- 1、本文档共54页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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语句等。过程块结构内部是行为语句,如过程赋值语句、
您可能关注的文档
- 《Verilog HDL数字系统设计与应用》 课件 FPGA-第1章-硬件描述语言与可编程逻辑器件.pptx
- 《Verilog HDL数字系统设计与应用》 课件 FPGA-第2章-开发工具的介绍和使用.pptx
- 《Verilog HDL数字系统设计与应用》 课件 FPGA-第4章-行为描述语言.pptx
- 《Verilog HDL数字系统设计与应用》 课件 FPGA-第7章-基本时序逻辑电路的设计.pptx
- 《Verilog HDL数字系统设计与应用》 课件 PGA-第5章-基本组合逻辑电路的设计.pptx
- 《Verilog HDL数字系统设计与应用》 课件全套 叶俊明-第1--9章-硬件描述语言与可编程逻辑器件---实验指导.pptx
- 《Vue.js前端开发技术与实践(第二版)》 课件 第2章 Vue项目开发ES6基础-模块.pptx
- 《Vue.js前端开发技术与实践(第二版)》 课件 第2章 Vue项目开发ES6基础-异步编程.pptx
- 《Vue.js前端开发技术与实践(第二版)》 课件 第3章 初识Vue.pptx
- 《Vue.js前端开发技术与实践(第二版)》 课件 第4章 Vue指令.pptx
文档评论(0)