第2章Verilong基本语法与语句摘要.ppt

  1. 1、本文档共105页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 Verilog设计初步 §2.1 Verilog概述 Verilog语言是1983年由GDA(Gateway Design Automation)公司的Phil Moorby首创的,之后Moorby又设计了Verilog-XL仿真器,Verilog-XL仿真器大获成功,也使得Verilog语言得到推广使用。 1989年,Cadence收购了GDA,1990年,Cadence公开发表了Verilog HDL,并成立了OVI组织专门负责Verilog HDL的发展。 Verilog于1995年成为IEEE标准,称为IEEE Standard 1364-1995(Verilog-1995) IEEE“1364-2001”标准(Verilog-2001)也获得通过,多数综合器、仿真器都已支持Verilog-2001标准 2、Verilog语言的特点 既适于可综合的电路设计,也可胜任电路与系统的仿真。 能在多个层次上对所设计的系统加以描述,从开关级、门级、寄存器传输级(RTL)到行为级,都可以胜任,同时语言不对设计规模施加任何限制。 灵活多样的电路描述风格,可进行行为描述,也可进行结构描述;支持混合建模,在一个设计中各个模块可以在不同的设计层次上建模和描述。 Verilog的行为描述语句,如条件语句、赋值语句和循环语句等,类似于软件高级语言,便于学习和使用。 内置各种基本逻辑门,便于进行门级结构描述;内置各种开关级元件,可进行开关级的建模。 易学易用,功能强,可满足各个层次设计人员的需要。 3 Verilog模块的结构 3 Verilog模块的结构 Verilog程序是由模块构成的。每个模块的内容都嵌在module和endmodule两个关键字之间;每个模块实现特定的功能。 每个模块首先要进行端口定义,并说明输入和输出口(input、output或inout),然后对模块的功能进行定义。 Verilog程序书写格式自由,一行可以写几个语句,一个语句也可以分多行写。 除了endmodule等少数语句外,每个语句的最后必须有分号。 可用 /*……*/ 和 //……对Verilog程序作注释。 Verilong程序中的关键字必须小写,其它字符区别大小写,输入程序时一定要注意! ⑴模块声明 模块声明包括模块名字,模块输入、输出端口列表。模块定义格式如下: module 模块名(端口1,端口2,端口3,……); ⑵端口(Port)定义 对模块的输入输出端口要明确说明,其格式为: input 端口名1,端口名2,…… 端口名n; //输入端口 output 端口名1,端口名2,…… 端口名n; //输出端口 inout 端口名1,端口名2,…… 端口名n; //输入输出端口 ⑶信号类型声明 对模块中所用到的所有信号(包括端口信号、节点信号等)都必须进行数据类型的定义。Verilog语言提供了各种信号类型,分别模拟实际电路中的各种物理连接和物理实体。 如果信号的数据类型没有定义,则综合器将其默认为是wire型。 ⑷逻辑功能定义 模块中最核心的部分是逻辑功能定义。 定义逻辑功能的几种基本方法: (1)用assign持续赋值语句定义 assign语句多用于组合逻辑的赋值,称为持续赋值方式。 若干连续赋值语句是并列执行,与顺序无关。 (2)用always过程块定义 always过程语句既可以用来描述组合电路,也可以描述时序电路。过程块反复依据条件执行,相当无限循环执行。 多个always过程块并行执行,与顺序无关。 (3)调用元件(元件例化) 调用元件的方法类似于在电路图输入方式下调入图形符号来完成设计,这种方法侧重于电路的结构描述。 以上逻辑功能混合使用时,它们都是并行执行的。 ⑸Verilog 模块的模板 module 顶层模块名 (输入输出端口列表); output 输出端口列表; //输出端口声明 input 输入端口列表; //输入端口声明 /*定义数据,信号的类型,函数声明*/ reg 信号名; //逻辑功能定义 assign 结果信号名=表达式; //使用assign语句定义逻辑功能 //用always块描述逻辑功能 always @ (敏感信号表达式) begin //过程赋值 //if-else,case语句 //while,repeat,for循环语句 //task,function调用 end //调用其他模块 调用模块名module_name 例化模块名 (端口列表port_list ); //门元件例化 门元件关键字 例化门元件名 (端口列表port_list); endmodule ⑹组合

文档评论(0)

文档资料 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档