- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)