网站大量收购独家精品文档,联系QQ:2885784924

第二章、Verilog HDL及数字电路入门.doc

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

第二章、数字电路与Verilog HDL入门 本章主要讲授Verilog的基础知识以及与数字电路的关系。 本章内容:基本verilog HDL的语法构成 基本的组合电路设计及语法组成 基本的时序电路设计及语法构成 Verilog HDL的基本语句 Verilog HDL是硬件描述语言的一种,故它是用来描述硬件电路的,而现阶段Verilog HDL主要描述的是数字电路。注意:这里是描述,而不是其它的“编程”语言。所以,从这个角度讲硬件描述语言与数字电路之间会有着不可分割的联系。以下主要通过HDL与数字电路的比对来讲述基本的Verilog语法。 在Verilog HDL语言中,Verilog所描述的符号及逻辑在数字电路中均有相应的符号与逻辑相对应。 下面是常见的一些符号: 数字电路的符号 Verilog HDL描述的符号 电路符号的名字 module func(a, b, c, d); …… endmodule 端口 上图中的a、b、c、d称为该电路func的端口。 在模块名后面的括号中都是端口,端口之间用“,”隔开。 端口的方向 假设图中a b为输入端口, c d为输出端口。 input a;用input声明的端口为输入端口 input b; output c;用output声明的端口为输出端口 output d; 此外,用inout声明的端口为双向端口。 端口的类型 在数字电路中,通常具有两类数据类型,能保持数值的寄存器型(比如触发器)和不能保持数值的连线型。 wire a;用wire声明的端口为连线型 reg c;用reg声明的端口为寄存器型。通常,输入一般都为wire型,而输出可以为wire型也可以为reg型。 wire d; wire clk; reg q; 功能实现 由内部硬件电路实现,此处以与非门为例: 使用always或者assign或者例化语句实现 如:① always c = !(a b); ② assign c = !(a b); ③ NAND2 func(c,a,b); 这里要求掌握①②的用法,③的用法后面章节将详细讲述。 被赋值对象为wire型时,使用assign语句进行赋值 被赋值对象为reg型时,使用always语句进行赋值 边沿 数字电路中有上升沿和下降沿 posedge 信号 表示信号的上升沿 negedge 信号 表示信号的下降沿 posedge和negedge关键字都是配合always使用的。 总线 假设有8位数据总线D0~D7 用D[7:0]或者D[0:7]或者D[8:1]或者D[1:8]等表示。也可以用D[4:-3]之类的表示方式。 其他 高电平 低电平 高阻态 不确定态 1 0 Z 或 z X 或 x Verilog HDL通常的结构构成 模块的结构如下: 一个完整的Verilog HDL通常由4部分构成: (1)模块声明部分,包含关键字module 和endmodule,在module后面的是模块名称和端口名列表,注意,端口名列表的括号后面有个分号 (2)端口方向定义,指明所有的端口是输入还是输出或者是双向(关键字为inout,后面会学习到)的。 (3)端口(和内部变量)类型,一般来说,所有的输入都是wire型,输出端一般要根据是组合电路还是时序电路分别定义成wire型和reg型。 (4)功能实现部分,这部分通常是设计的核心,大型的设计重点就在这里,通常由always、assign和元件例化(后面会学习到)构成。 任何一个电路的描述都必须由这4部分构成,不论设计多么简单或者多么复杂。 例:一个简单的组合逻辑电路的Verilog HDL实现 用Verilog HDL实现一与门。 代码注释: ⑴ 使用module关键字定一个模块,模块名为andgate2,它有三个端口,端口名分别为a,b,c。 ⑵ 使用input关键字将a端口声明为输入端口。 ⑶ 使用input关键字将b端口也声明为输入端口。 ⑷ 使用output关键字将c端口声明为输出端口。 ⑸ 使用wire声明端口a是连线型。 ⑹ 使用wire声明端口b是连线型。 ⑺ 使用wire声明端口c是连线型。 ⑻ 模块功能实现部分,使用assign赋值语句将c的值赋值为a与上(“”是与运算符号)b的结果。 ⑼ 模块结束关键字endmodule,注意:end和module中间没有空格,endmodule是一个整体。 以上代码具有verilog的基本特征,须熟记。由此Verilog HDL生成的对应的电路图符号如下: 注:此图使用altera公司的FPGA/CPLD集成开发环

文档评论(0)

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

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

1亿VIP精品文档

相关文档