Xilinx FPGA设计与实践教程 教学课件 作者 赵吉成 第1 5章 第3章.ppt

Xilinx FPGA设计与实践教程 教学课件 作者 赵吉成 第1 5章 第3章.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.1 基本知识介绍 VerilogHDL语言是一种硬件描述语言,最初是在1984年由Gateway Design Automation(GDA)公司开发Verilog-XL仿真器时一起开发出来的。在一个非赢利性组织Open Verilog International(OVI)的不断推进下,1995年IEEE制定了VerilogHDL的标准,即IEEE-1364标准定义,也就是我们通常见到的Verilog-1995。后来随着人们对这个流行语言的进一步完善,Verilog语言的功能得到了进一步增强,就有了VerilogHDL-2001标准,在本书中我们使用的是Verilog-2001标准。   VerilogHDL语言是一种硬件描述语言,最初是在1984年由Gateway Design Automation(GDA)公司开发Verilog-XL仿真器时一起开发出来的。在一个非赢利性组织Open Verilog International(OVI)的不断推进下,1995年IEEE制定了VerilogHDL的标准,即IEEE-1364标准定义,也就是我们通常见到的Verilog-1995。后来随着人们对这个流行语言的进一步完善,Verilog语言的功能得到了进一步增强,就有了VerilogHDL-2001标准,在本书中我们使用的是Verilog-2001标准。   Verilog 语言可以用来描述复杂的大型数字系统的各个层次的设计,所以功能上是非常强大的。而作为本书讲述Verilog语言的目的在于讲述如何用它来进行硬件电路的设计,而不是对Verilog语言本身的研究,所以不会像别的教程一样覆盖Verilog的方方面面,而只是通过最简捷的方式引导读者迅速掌握设计的精髓。在实际工程应用中,我们需要掌握Verilog语言的精华部分就足已了,也就是通常我们所说的,语言仅仅是一种描述方式,和开发工具没有两样,而重要的是数字电路的设计思想和设计方法。   Verilog语法和C语言非常相似,这样一来对我们有好处也有坏处,好处在于我们有了C语言的基础,上手起来非常容易,所以很容易掌握它的语法,而坏处在于我们可万万不能用C语言的设计思路进行Verilog语言的设计,因为Verilog语言是一种硬件描述语言,其最大的特点在于硬件电路的并行执行特性,不像C语言是面向过程来执行的,所以这中间有一些细微的差别,往往会导致初学者在设计时达不到自己想要的结果。我们要带着设计硬件电路的初衷来学习Verilog的描述方法。在本书中,将语言描述和实际电路紧密结合,自始至终都贯穿着代码设计结构清晰、可综合性强、良好的编码风格等原则,这样更有利于读者更快地掌握这门语言的精髓而少走弯路。   学习一门语言最快速的方法就是立即使用它进行编程。我们首先用一个最简单的比较器来描述Verilog程序的框架,在描述中仅仅使用逻辑操作符来描述门级的组合逻辑。这样也有利于读者对VerilogHDL硬件描述功能的深刻理解。本章我们采用门级电路做入门描述,目标在于理解VerilogHDL语言描述的结构和方法。在第四章中我们还将详细介绍Verilog的相关细节,包括运算操作符、结构组成以及寄存器级的组合逻辑描述等。 3.2 模块结构和编程框架 3.2.1 模块的结构   我们以1位比较器为例。比较器包含两个输入:分别为i0和i1,输出为eq;当i0和i1相等时,eq输出为1,否则,eq输出为0。真值表如表3-1所示。 如果用基本逻辑门电路(非门、与门、或门、异或等)来完成此电路功能,采用数字电路常用的描述方法来描述如下:   【程序3-1】 1位比较器的Verilog语言描述。   module eq1    // I/O 端口    (    input wire i0,i1,    output wire eq    );    //信号声明    wire p0,p1;    //主体部分    //将两项结果相或    assign eq = p0 | p1;    //赋值p0和p1;    assign p0 = ~i0 ~i1;    assign p1 = i0 i1;   endmodule   学习和理解硬件描述语言最好的办法就是要思考所描述的电路具体是什么样的构造,比如当前这段代码,我们可以从三个方面进行考虑:   (1) ?I/O端口部分描述了电路的输入输出端口,输入端口包括i0和i1,输出端口为eq。   (2) 信号声明部分描述电路的内部连接信号,它们是p0 和p1。   (3) 主体部分描述了内部电路的组织结构,代码中有三个阻塞赋值语句,每一

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档