版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章第三章Verilog 硬件描述语言硬件描述语言基础知识基础知识数字逻辑数字逻辑 0506(二)(二)内内 容容第二节第二节 Verilog HDL基础知识基础知识第三节第三节 Verilog HDL模块的结构描述模块的结构描述第四节第四节 Verilog HDL模块的数据流描述模块的数据流描述第五节第五节 Verilog HDL模块的行为描述模块的行为描述第一节第一节 概述概述第一节第一节 概述概述一一.传统的数字系统设计技术传统的数字系统设计技术基于基于SSI、MSI、LSI、VLSI集成电路的设计。集成电路的设计。系统方案系统方案器件选择器件选择画电路图画电路图布线制版布线制版系统调
2、试系统调试定型生产定型生产修改修改存在的存在的“问题问题”(1)逻辑器件的功能对系统设计的限制)逻辑器件的功能对系统设计的限制(2)逻辑器件的集成度对系统规模的限制)逻辑器件的集成度对系统规模的限制(3)逻辑器件之间的布线对系统性能的限制)逻辑器件之间的布线对系统性能的限制(4)不便于系统的扩展、升级)不便于系统的扩展、升级(5)不便于早期发现问题)不便于早期发现问题二二.现代的数字系统设计技术现代的数字系统设计技术基于基于EDA技术及大规模可编程逻辑器件的数字系统设计。技术及大规模可编程逻辑器件的数字系统设计。1.微电子技术以惊人的速度发展,集成电路的工艺水平微电子技术以惊人的速度发展,集成
3、电路的工艺水平 达到深亚微米级,一个芯片上可集成数百万乃至上千达到深亚微米级,一个芯片上可集成数百万乃至上千 万只晶体管,工作速度可达万只晶体管,工作速度可达Gb/s,为制造出规模大、,为制造出规模大、 速度快和信息容量更高的芯片系统提供了基础条件。速度快和信息容量更高的芯片系统提供了基础条件。 特别是,大规模可编程逻辑器件(特别是,大规模可编程逻辑器件(PLD Programmable Logic Device) 的出现,引起了数字系统的出现,引起了数字系统设计领域的革命性变革。设计领域的革命性变革。PLD已成为现代数字系统的物已成为现代数字系统的物理载体,设计师在实验室就可以设计出芯片理载
4、体,设计师在实验室就可以设计出芯片系统系统,并立,并立即投入实际应用。即投入实际应用。 PLD是厂家作为一种通用性器件生产的半定制电路。其是厂家作为一种通用性器件生产的半定制电路。其特点是:特点是:(1)用户通过对器件的编程实现所需要的逻辑功能;)用户通过对器件的编程实现所需要的逻辑功能;(2)PLD是一种用户可配置的逻辑器件;是一种用户可配置的逻辑器件;(3)成本低、使用灵活、设计周期短、可靠性高、风险小。)成本低、使用灵活、设计周期短、可靠性高、风险小。简单低密度简单低密度PLDPLA复杂高密度复杂高密度PLDPALPROMGALEPLDCPLDFPGAPLD2.以计算机为工作平台,融合应
5、用电子技术、计算机技术、以计算机为工作平台,融合应用电子技术、计算机技术、 智能化技术以及图形学、拓扑学、计算数学等众多学科智能化技术以及图形学、拓扑学、计算数学等众多学科 的最新成果,辅助进行集成电路设计、电子电路设计和的最新成果,辅助进行集成电路设计、电子电路设计和 PCB设计的设计的EDA(Electronic Design Automation,电子电子 设计自动化)技术日趋完善。设计自动化)技术日趋完善。现代现代EDA技术的主要特征是:技术的主要特征是:引入硬件描述语言;引入硬件描述语言;支持高层次的抽象设计;支持高层次的抽象设计;具有逻辑综合、行为综合、系统综合能力。具有逻辑综合、
6、行为综合、系统综合能力。 总之,总之, PLD器件的出现和器件的出现和EDA技术发展,技术发展,使数字系统设计的设计方法和设计技术都发生使数字系统设计的设计方法和设计技术都发生了深刻的变化,称之为了深刻的变化,称之为基于基于EDA和和PLD的现代的现代数字系统设计方法数字系统设计方法。设计者通过设计芯片来实。设计者通过设计芯片来实现各种不同的数字系统功能,即设计者可以自现各种不同的数字系统功能,即设计者可以自己定义器件的内部逻辑和管脚。增加了设计的己定义器件的内部逻辑和管脚。增加了设计的自由度,提高了设计效率,减少芯片的种类和自由度,提高了设计效率,减少芯片的种类和数量,缩小体积,降低功耗,节
7、约成本,提高数量,缩小体积,降低功耗,节约成本,提高可靠性。可靠性。设计方法的改变:采用硬件描述语言建模设计方法的改变:采用硬件描述语言建模 硬件描述语言(硬件描述语言(HDL)是一种采用形式化方法描)是一种采用形式化方法描述数字电路和数字系统的语言。述数字电路和数字系统的语言。 设计者利用这种语言可以从上层到下层(从抽象到设计者利用这种语言可以从上层到下层(从抽象到具体),逐层描述自己的设计思想,用一系列分层次的具体),逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。模块来表示极其复杂的数字系统。借助借助EDA仿真工具逐层进行仿真验证。仿真工具逐层进行仿真验证。 通过通
8、过EDA综合工具将需要物理实现的模块组合转综合工具将需要物理实现的模块组合转换成门级电路网表。换成门级电路网表。 利用芯片厂家提供自动布线布局工具(适配器)将利用芯片厂家提供自动布线布局工具(适配器)将网表映射为具体器件的布线结构,最后编程下载到网表映射为具体器件的布线结构,最后编程下载到PLD器件。器件。三三.硬件描述语言硬件描述语言 1987年,由美国国防部组织开发的年,由美国国防部组织开发的VHDL成为成为IEEE国际标准。国际标准。 1995年,由一个民间公司的私有财产转化而来的年,由一个民间公司的私有财产转化而来的Verilog HLD也正式成为也正式成为IEEE国际标准。国际标准。
9、 本课程主要介绍如何用本课程主要介绍如何用Verilog HDL描述基本的组合描述基本的组合逻辑电路和基本的同步时序逻辑电路,为今后进行数字系逻辑电路和基本的同步时序逻辑电路,为今后进行数字系统设计打基础。统设计打基础。 从从20世纪世纪80年代至今,先后出现过数十种硬件描述语年代至今,先后出现过数十种硬件描述语言。目前流行的有言。目前流行的有VHDL和和Verilog HDL两种。两种。 Verilog HDL是目前应用最广泛的一种硬件描述语是目前应用最广泛的一种硬件描述语言。据有关文献报道,在美国使用言。据有关文献报道,在美国使用Verilog HDL进行设进行设计的工程师约有十几万人,全
10、美国有计的工程师约有十几万人,全美国有200多所大学讲授多所大学讲授Verilog HDL的设计方法;在我国的台湾省,几乎所有的设计方法;在我国的台湾省,几乎所有著名大学的电子和计算机工程系都开设了与著名大学的电子和计算机工程系都开设了与Verilog HDL有关的课程。有关的课程。四四. Verilog HDL的产生及发展的产生及发展由由GDA(GateWay Design Automation)公司的公司的Phil Moorby首创。首创。1983年年1984年年Moorby设计出第一个仿真器:设计出第一个仿真器:Verilog-XL1986年年Moorby提出了用于快速门级仿真的提出了用
11、于快速门级仿真的XL算法,算法,Verilog HDL得到迅速发展。得到迅速发展。1989年年Cadence公司收购了公司收购了GDA,Verilog HDL成为成为其私有财产。其私有财产。1990年年Verilog HDL公开发表,并成立公开发表,并成立OVI(Open Verilog International)组织,负责促进该语)组织,负责促进该语言的发展。言的发展。1995年年基于该语言具有简洁、高效、易学易用、功能基于该语言具有简洁、高效、易学易用、功能强等优点,强等优点,Verilog HDL IEEE1346-1995标准标准公开发表,成为标准化的硬件描述语言。公开发表,成为标准
12、化的硬件描述语言。1999年年模拟和数字都适用的模拟和数字都适用的Verilog HDL标准公开发表。标准公开发表。2001年年Verilog HDL IEEE1364-2001标准公开发表。标准公开发表。 VHDL虽早于虽早于Verilog HDL成为成为IEEE标准,标准,但它侧重于语言的标准,又是军方组织开发的,但它侧重于语言的标准,又是军方组织开发的,不像不像Verilog HDL那样拥有更广泛的设计群体、那样拥有更广泛的设计群体、成熟的资源。与成熟的资源。与VHDL相比,相比,Verilog HDL的最的最大优点是:它是一种非常容易掌握的硬件描述语大优点是:它是一种非常容易掌握的硬件
13、描述语言,只要有言,只要有C语言的编程基础,通过语言的编程基础,通过20学时的学学时的学习,在经过一段时间的实际操作,一般可在习,在经过一段时间的实际操作,一般可在23个月内掌握这种设计技术。而个月内掌握这种设计技术。而VHDL的语法结构的语法结构比较繁琐、不直观,需要有比较繁琐、不直观,需要有Ada编程基础,一般编程基础,一般需要需要6个月以上的专业培训,才能掌握其基本设个月以上的专业培训,才能掌握其基本设计技术。计技术。 Verilog HDL是在是在C语言的基础上发展起语言的基础上发展起来的,从语法结构上看,来的,从语法结构上看,Verilog HDL与与C语语言有许多相似之处,继承和借
14、鉴了很多言有许多相似之处,继承和借鉴了很多C语言语言的语法结构,二者的运算符几乎完全相同。的语法结构,二者的运算符几乎完全相同。但是作为一种硬件描述语言,但是作为一种硬件描述语言,Verilog HDL与与C语言有着本质的区别,这一点希望在学习中语言有着本质的区别,这一点希望在学习中认真体会。认真体会。既能进行面向综合的电路设计,也可用于电路的模拟仿真。既能进行面向综合的电路设计,也可用于电路的模拟仿真。能够在多个层次上对所设计的系统加以描述:开关级、门能够在多个层次上对所设计的系统加以描述:开关级、门 级、寄存器传输级、级、寄存器传输级、 行为级。行为级。不对设计的规模施加任何限制。不对设计
15、的规模施加任何限制。具有混合建模能力,即在一个设计中,各个模块可在不同层具有混合建模能力,即在一个设计中,各个模块可在不同层 次上建模和描述。次上建模和描述。灵活多样的电路描述风格:行为描述、结构描述、数据流描灵活多样的电路描述风格:行为描述、结构描述、数据流描 述。述。其行为描述语句(条件、赋值、循环)类似于高级语言,易其行为描述语句(条件、赋值、循环)类似于高级语言,易 学易用。学易用。内置各种基本逻辑门,适合门级建模。内置各种基本逻辑门,适合门级建模。 内置各种开关级元件,适合开关级建模。内置各种开关级元件,适合开关级建模。可灵活创建用户定义原语(可灵活创建用户定义原语(UDP)。)。可
16、通过编程语言接口(可通过编程语言接口(PLI)调用)调用C语言编写的各种函数。语言编写的各种函数。五五. Verilog HDL的特点的特点随课深入,逐步体会。随课深入,逐步体会。六六.层次管理的概念层次管理的概念 现代集成电路制造工艺水平已经达到了深亚微米级现代集成电路制造工艺水平已经达到了深亚微米级 (0.15m),可以在一个芯片上集成数十万乃至数千万,可以在一个芯片上集成数十万乃至数千万个典型门。设计如此大规模的电路必须采用层次化、结构个典型门。设计如此大规模的电路必须采用层次化、结构化的设计方法,即总设计师将一个完整的硬件设计方案逐化的设计方法,即总设计师将一个完整的硬件设计方案逐层分
17、解,划分成若干个可操作的模块,由多个设计师同时层分解,划分成若干个可操作的模块,由多个设计师同时设计一个硬件系统中的不同模块,上一层设计师采用行为设计一个硬件系统中的不同模块,上一层设计师采用行为级的逻辑模拟模块对其下一层设计者的设计进行验证。其级的逻辑模拟模块对其下一层设计者的设计进行验证。其中一些模块可采用商业化的中一些模块可采用商业化的IP核。核。 显然,这是一种显然,这是一种Top-Down的设计思想,可以用设计的设计思想,可以用设计树的形式描述。树的形式描述。系统级设计系统级设计模块模块A模块模块B模块模块C模块模块A2模块模块A2模块模块A1模块模块B2模块模块B1模块模块C2模块
18、模块C1第二节第二节 Verilog HDL基础知识基础知识一一.Verilog 模块的结构模块的结构 Verilog HDL以模块集合的形式来描述数字系统。以模块集合的形式来描述数字系统。 “模块模块”(module)是)是Verilog 程序的基本设计单元,程序的基本设计单元,用于描述某个设计的功能、结构、与其他模块通信的外部用于描述某个设计的功能、结构、与其他模块通信的外部端口。端口。 先通过三个简单的先通过三个简单的Verilog程序,直观地认识程序,直观地认识Verilog模块的结构。模块的结构。例例1:根据电路结构建模根据电路结构建模1 bsela11ba selout1modul
19、eMUX2-1 (out,a,b,sel););output out;Input a,b,sel;wire a, b, sel, out;wire a1, b1, sel-; not u1(sel-,sel););and u2(a1,a,sel-););and u3(b1,b,sel););or u4(out,a1,b1););endmodule/模块名、端口列表模块名、端口列表/声明声明out为输出端口为输出端口/声明声明a,b,sel为输入端口为输入端口/定义端口信号的数据类型定义端口信号的数据类型/定义内部节点信号(连线)定义内部节点信号(连线)/调用内置调用内置“非非”门元件门元件/调
20、用内置调用内置“与与”门元件门元件/调用内置调用内置“与与”门元件门元件/调用内置调用内置“或或”门元件门元件例例2:根据逻辑表达式建模:根据逻辑表达式建模bselaselout moduleMUX2-1 (out,a,b,sel););output out ;Input a,b,sel ;wire a, b, sel, out ;endmoduleassign out = ( (sel) & a) | (sel & b) ;定义同上定义同上采用逻辑表达式进行逻辑功能的描述采用逻辑表达式进行逻辑功能的描述1 bsela11ba selout1例例3:根据电路行为建模:根据电路行
21、为建模moduleMUX2-1 (out,a,b,sel););output out;Input a,b,sel;wire a, b, sel;reg out;endmodulealways (sel or a or b )if ( ! sel ) out = a;else out = b;定义定义always中的赋值变量中的赋值变量 只要信号只要信号sel、a、b中有一个发生变化,就执中有一个发生变化,就执行下面的语句。在这里已行下面的语句。在这里已看不出电路的结构,而是看不出电路的结构,而是一种电路行为的描述。一种电路行为的描述。1 bsela11ba selout1Verilog 模块基
22、模块基本结构本结构module 模块名模块名 (端口列表)(端口列表);端口定义端口定义input 输入端口输入端口output 输出端口输出端口数据类型说明数据类型说明wireregparameter逻辑功能定义逻辑功能定义assignalways语言内置门元件调用语言内置门元件调用endmodule1. 模块声明模块声明 Verilog 模块结构完全包含在模块结构完全包含在module和和endmodule关键字之间。关键字之间。模块声明的格式:模块声明的格式:module 模块名模块名 (端口(端口1,端口,端口2、.););endmodule2. 端口(端口(Port)定义)定义 端口
23、是模块与外界或其他模块进行连接和通信的信号线,端口是模块与外界或其他模块进行连接和通信的信号线,对模块的输入、输出端口要进行明确的定义,格式如下:对模块的输入、输出端口要进行明确的定义,格式如下:input 向量位宽向量位宽 端口名端口名1,端口名,端口名2, 端口名端口名n;output 向量位宽向量位宽 端口名端口名1,端口名,端口名2, 端口名端口名n;定义输入定义输入定义输出定义输出3. 数据类型和信号类型的声明数据类型和信号类型的声明 每个端口除声明为输入、输出,还要声明其数据类型是每个端口除声明为输入、输出,还要声明其数据类型是连线型(连线型(wire)还是寄存器型()还是寄存器型
24、(reg),若没有声明,综合器默若没有声明,综合器默认为是认为是wire型。型。 模块中用到的节点信号(连线)也必须进行数据类型模块中用到的节点信号(连线)也必须进行数据类型的定义。的定义。用用wire将信号定义为连线型;将信号定义为连线型;用用reg将信号定义为寄存器型;将信号定义为寄存器型;用用parameter定义符号常量。定义符号常量。特别提示:输入不能声明为特别提示:输入不能声明为reg型!型!4. 逻辑功能定义逻辑功能定义 模块中最核心的部分是逻辑功能定义。下面介绍几模块中最核心的部分是逻辑功能定义。下面介绍几种基本方法。种基本方法。4.1 用用“assign”持续赋值语句进行逻辑
25、功能的定义持续赋值语句进行逻辑功能的定义例如:例如:assign F=(A&B)|(C&D) ; “assign”语句一般用于组合逻辑的赋值,称为持续语句一般用于组合逻辑的赋值,称为持续赋值方式。是一种基于逻辑表达式的逻辑功能描述方式。赋值方式。是一种基于逻辑表达式的逻辑功能描述方式。在前面的例在前面的例2中,就是采用这种方式建立电路模型。中,就是采用这种方式建立电路模型。4.2 调用内置元件(元件例化)描述电路结构调用内置元件(元件例化)描述电路结构调用调用Verilog HDL中提供的动态元件中提供的动态元件“画画”电路图。电路图。例如:例如: and myand3 ( o
26、ut, a, b, c ) ;调用门元件,构造一个名为调用门元件,构造一个名为myand3的三输入与门。的三输入与门。and c1 ( F, in1, in2 ) ;调用门元件,构造一个名为调用门元件,构造一个名为c1的二输入与门。的二输入与门。 前面例前面例1中,通过调用门元件,进行信号的相互连接,中,通过调用门元件,进行信号的相互连接,构造电路的模型。构造电路的模型。4.3 用用 “always”过程块描述电路的逻辑功能过程块描述电路的逻辑功能例如:例如:always (posedge clk) begin if (reset) out=0 ; else out=out+1 ; end这是
27、一个同步清零计数器这是一个同步清零计数器的描述。每当的描述。每当clk上升沿到上升沿到来时就执行一遍来时就执行一遍beginend块内的语句。块内的语句。前面例前面例3中,就是采用中,就是采用“always”描述电路的行为。描述电路的行为。 关于逻辑功能定义的其他关于逻辑功能定义的其他方法,在下学期的方法,在下学期的数字系统数字系统设计设计课程中进一步学习、研课程中进一步学习、研究。究。小结小结Verilog HDL程序是由模块构成的程序是由模块构成的 模块是可以进行层次嵌套的模块是可以进行层次嵌套的上层模块可以通过模块调用构成更大的逻辑系统上层模块可以通过模块调用构成更大的逻辑系统Veril
28、og 模块分为逻辑综合模块和逻辑模拟模块模块分为逻辑综合模块和逻辑模拟模块每个模块由模块声明、端口定义、数据类型说明、逻辑功每个模块由模块声明、端口定义、数据类型说明、逻辑功 能定义四部分构成能定义四部分构成Verilog HDL程序的书写格式自由,一行可写多个语句,一程序的书写格式自由,一行可写多个语句,一 个语句也可分写多行。个语句也可分写多行。除除endmodule外,每个语句和数据定义的最后必须有分号外,每个语句和数据定义的最后必须有分号可用可用/*/和和/进行多行、单行注释,增强程序的可读性进行多行、单行注释,增强程序的可读性二二. Verilog HDL中的数字(数值)常量中的数字
29、(数值)常量Verilog HDL 有下列四种基本的逻辑状态有下列四种基本的逻辑状态:0: 低电平、低电平、 逻辑逻辑0或或“假假” 1: 高电平、逻辑高电平、逻辑1或或“真真”x或或X: 不确定或未知的逻辑状态不确定或未知的逻辑状态 z或或Z: 高阻状态高阻状态Verilog HDL中的常量是有这四类基本值组成的。中的常量是有这四类基本值组成的。 位宽:对应二进位宽:对应二进制数的宽度,省制数的宽度,省缺为缺为32位。位。当指定当指定进制格进制格式时,式时,不能省不能省略略数值采用的进制格式数值采用的进制格式b或或B:二进制:二进制d或或D或缺省:十进制或缺省:十进制h或或H:十六进制:十六
30、进制o或或O:八进制:八进制基于进制的数基于进制的数字序列字序列 Verilog HDL可综合模块中常用的整数型常量的书写格式:可综合模块中常用的整数型常量的书写格式:正、负号正、负号例:例: 659 /简单的十进制表示简单的十进制表示h 837FF /*省缺位宽的十六进制数,位宽大于实际位数,数值高位是省缺位宽的十六进制数,位宽大于实际位数,数值高位是 0或或1,高位补,高位补0;数值高位是;数值高位是 x 或或 z ,高位补,高位补 x 或或 z 。*/o 7460 /省缺位宽的八进制数省缺位宽的八进制数4AF /非法的整数表示,十六进制需要非法的整数表示,十六进制需要 hb001 /非法
31、的整数表示,不能省略非法的整数表示,不能省略 4b0010 /四位的二进制数四位的二进制数5D3 /五位的十进制数五位的十进制数8 b0100_1010 /使用下划线增加可读性使用下划线增加可读性 三三. Verilog HDL中的标识符中的标识符由字母、数字以及符号由字母、数字以及符号“$”、“_”(下划线)组成。(下划线)组成。标识符必须以字母或下划线开头标识符必须以字母或下划线开头标识符是区分大小写的标识符是区分大小写的合法标识符举例:合法标识符举例:countCOUNT_A1_d2不正确的标识符:不正确的标识符:30countOut*$123标识符常用于标识符常用于“模块名模块名”或或
32、“变量名变量名”四四. Verilog HDL中的关键字中的关键字 关键字也称为保留字,是关键字也称为保留字,是Verilog HDL 语言内部的专用语言内部的专用词,用于组织语言结构,全部采用小写形式。词,用于组织语言结构,全部采用小写形式。 例如:例如:module、endmodule、begin、end、always、and、or、if、else、wire、reg、input、output、 请同学们在后续课程学习时,关注、总结请同学们在后续课程学习时,关注、总结 Verilog HDL 中的关键字,从现在开始熟悉掌握。中的关键字,从现在开始熟悉掌握。请注意:请注意:ALWAYS是标识符
33、,与关键字是标识符,与关键字always是不同的。是不同的。五五.Verilog HDL中的数据(变量)类型中的数据(变量)类型 在硬件描述语言中,数据类型用来表示数字电路中在硬件描述语言中,数据类型用来表示数字电路中的物理连线、数据存储和传送单元。的物理连线、数据存储和传送单元。 Verilog HDL中共有中共有19种数据类型,分为连线型种数据类型,分为连线型(Net Type)和寄存器型()和寄存器型(Register Type)。在可综合)。在可综合模块中,最常用的是这两类中的模块中,最常用的是这两类中的wire型、型、reg型、型、integer型和型和paiameter型。型。1.
34、 连线型(连线型(Net Type)变量)变量 连线型变量一般用来描述硬件电路中的各种物理连线。连线型变量一般用来描述硬件电路中的各种物理连线。其特点是输出始终跟随输入的变化而变化。对连线型变量有其特点是输出始终跟随输入的变化而变化。对连线型变量有两种驱动方式,一种是在结构描述中将其连接到一个逻辑门两种驱动方式,一种是在结构描述中将其连接到一个逻辑门或模块的输出端;另一种是用或模块的输出端;另一种是用assign语句进行赋值。语句进行赋值。类型类型功能说明功能说明wire, tri常用连线类型常用连线类型wor,trior具有线或特性的连线具有线或特性的连线wand,triand具有线与特性的
35、连线具有线与特性的连线tri1,tri0上拉电阻,下拉电阻上拉电阻,下拉电阻supply1,supply0电源(逻辑电源(逻辑1),地(逻辑),地(逻辑0)Verilog HDL提供了多种连线型变量提供了多种连线型变量重点介绍在可综合模块中最常用的是重点介绍在可综合模块中最常用的是wire型变量型变量 wire型变量常用来表示通过型变量常用来表示通过 assign 语句赋值的组合语句赋值的组合逻辑信号。逻辑信号。 Verilog 模块中的模块中的输入、输出端口输入、输出端口的信号类型说明省的信号类型说明省缺时,自动定义为缺时,自动定义为 wire 型。型。wire型变型变量可用于量可用于任何表
36、达式的输入任何表达式的输入assign语句的输出语句的输出实例元件的输出实例元件的输出对综合器而言,其取值对综合器而言,其取值 0,1,x,z其他模块的输出其他模块的输出wire型变量的定义格式型变量的定义格式 wire 向量位宽向量位宽数据名数据名1,数据名,数据名2, 数据名数据名n ;关键字关键字n-1 : 0 或或 n : 1时,定义多位时,定义多位wire型向量;型向量;省略时,定义一位的省略时,定义一位的wire型变量。型变量。例如,例如,wire型变量或向量的定义:型变量或向量的定义: wire a , b ; /定义两个定义两个 1 位位 wire 型变量型变量 a , b w
37、ire 7:0 databus; /定义一个定义一个8位宽的向量(数据总线)位宽的向量(数据总线) wire 20:1 addrbus ; /定义定义20位宽的地址总线位宽的地址总线 例如,例如,wire型向量的全域使用型向量的全域使用 wire 7:0 in , out ; /定义两个定义两个8位位wire型向量型向量in , outassign out = in ; /按位对应赋值按位对应赋值例如,对例如,对wire型向量可选域使用型向量可选域使用 wire 7:0 out ; wire 3:0 in ; assign out 5:2 = in ; / in 的的 0-3 位赋值给位赋值给
38、 out 的的 2-5 位位等效于:等效于:assign out 5 = in 3 ; assign out 4 = in 2 ; assign out 3 = in 1 ; assign out 2 = in 0 ;2. 寄存器型(寄存器型(Register Type)变量)变量 寄存器型变量对应的是具有状态保持作用的电路元寄存器型变量对应的是具有状态保持作用的电路元件。例如:触发器,寄存器。件。例如:触发器,寄存器。 寄存器型变量的特点是必须进行明确的赋值,并且寄存器型变量的特点是必须进行明确的赋值,并且在被重新赋值前一直保持原值。在被重新赋值前一直保持原值。register型变量与型变量
39、与net型变量的根本区别在于:型变量的根本区别在于:register型变量能够保持最后一次的赋值;型变量能够保持最后一次的赋值;net型变量需型变量需要有持续的驱动。要有持续的驱动。 在设计中必须将寄存器型变量放在过程块语句(在设计中必须将寄存器型变量放在过程块语句(initial , always)中,通过过程赋值语句赋值。即:)中,通过过程赋值语句赋值。即: initial , always过程块内被赋值的每一个信号,都必须定义为过程块内被赋值的每一个信号,都必须定义为register型变量。型变量。 Verilog HDL中也提供了多种寄存器型变量,在可综中也提供了多种寄存器型变量,在可
40、综合模块中常用的是合模块中常用的是integer型和型和reg型。型。 integer寄存器型变量是一种纯数学的抽象描述,它寄存器型变量是一种纯数学的抽象描述,它虽然能定义带符号的虽然能定义带符号的32位整型寄存器变量,但不对应任位整型寄存器变量,但不对应任何具体的硬件电路。何具体的硬件电路。 reg 数据名数据名1,数据名,数据名2, 数据名数据名n ;reg型变量的定义格式:型变量的定义格式:关键字关键字n-1 : 0 或或 n : 1时,定义多位时,定义多位reg型向量;型向量;省略时,定义一位的省略时,定义一位的reg型变量。型变量。例如,例如,reg型变量、向量的定义型变量、向量的定
41、义 reg a , b ; /定义两个寄存器型变量定义两个寄存器型变量a , b 。位宽为。位宽为 1 。 reg 7:0 data ; /定义位宽为定义位宽为8的寄存器型变量的寄存器型变量data 。 reg 8:1 data ; /等效。等效。例如:例如:reg 7:0 a,b ;reg3:0 c ;reg d ;d=a 7 & b 7 ; /位选择位选择c=a 7:4 + b 3:0 ; /域选择域选择 在表达式中,可任意使用在表达式中,可任意使用reg型变量中的一位或相邻几型变量中的一位或相邻几位,分别称为位选择和域选择。位,分别称为位选择和域选择。例:例:parameter
42、sel=8 , code=8ha3 ;/定义定义 sel 为常数为常数8 (十进制),(十进制),code 为常数为常数 a3 (十六进制)(十六进制)parameter data=8 , addr=data * 2 ;/data为为8,addr为为16, 用常数表达式赋值。用常数表达式赋值。3. parameter型数据型数据 在在 Verilog HDL中,用中,用 parameter 定义符号常量,即定定义符号常量,即定义一个标识符代表一个常量。定义格式如下:义一个标识符代表一个常量。定义格式如下: parameter 参数名参数名1=表达式表达式1,参数名,参数名2=表达式表达式2,
43、;六六.Verilog HDL中的运算符中的运算符按功能分成九大类:按功能分成九大类:关系运算符关系运算符算术运算符算术运算符逻辑运算符逻辑运算符等式运算符等式运算符缩减运算符缩减运算符条件运算符条件运算符拼接运算符拼接运算符移位运算符移位运算符位运算符位运算符按运算符所带的操作数区分:按运算符所带的操作数区分:单目运算符(单目运算符(unary operator),带一个操作数。),带一个操作数。双目运算符(双目运算符(binary operator),带两个操作数。),带两个操作数。三目运算符(三目运算符(ternary operator),带三个操作数。),带三个操作数。算算 术术 运运
44、 算算 符符+ 加加- 减减* 乘乘/ 除除 % 模运算符(对两个整型数据进行求余运算)模运算符(对两个整型数据进行求余运算)均为双目运算符。均为双目运算符。在进行整数除法运算时,结果略去小数。在进行整数除法运算时,结果略去小数。取模运算时,结果符号与第一操作数相同。取模运算时,结果符号与第一操作数相同。当两操作数中有一个为当两操作数中有一个为 x ,则结果就为,则结果就为 x 。10%3,结果为,结果为1;12%4,结果为,结果为0;-10%3,结果为,结果为-1;11%-3,结果为,结果为2逻逻 辑辑 运运 算算 符符& 逻辑与,双目运算逻辑与,双目运算 逻辑或,双目运算逻辑或,双
45、目运算! 逻辑非,单目运算逻辑非,单目运算当进行逻辑运算时:当进行逻辑运算时: 若操作数是一位的,则逻辑运算真值表如下:若操作数是一位的,则逻辑运算真值表如下:a ba&ba|b!a !b0 000110 1011010010 111110 0 当操作数由多位组成,则将操作数作为一个整体处理,即当操作数由多位组成,则将操作数作为一个整体处理,即如操作数所有位都是如操作数所有位都是“0”,则整体作为逻辑,则整体作为逻辑“0”;只要其中;只要其中有一位是有一位是“1”,则整体作为逻辑,则整体作为逻辑“1”。 若操作数中有若操作数中有 x , 则结果也可能是则结果也可能是 x 。例如:设例如
46、:设 a = 2 b = 0 c = 4hx a & b 逻辑与,逻辑与,1 & 0 , 结果为结果为 0 a b 逻辑或,逻辑或,1 0 ,结果为,结果为 1 ! a 逻辑非逻辑非 ,!,!1 ,结果为,结果为 0a & c 逻辑与,逻辑与,1 & x , 结果为结果为 x a c 逻辑或逻辑或 ,1 x ,结果为,结果为 1 ! c 逻辑非逻辑非 ,!,!X ,结果为,结果为 x位位 运运 算算 符符 按位非(按位取反),单目运算。按位非(按位取反),单目运算。& 按位与按位与 按位或按位或 按位异或按位异或 , 按位异或非(按位同或)按位异或非(按位同或)将操作数按位对应,进行逻辑运算。将操作数按位对应,进行逻辑运算。两个不同长度的数据进行位运算时,按右对齐,位数少两个不同长度的数据进行位运算时,按右对齐,位数少 的在高位补的在高位补“0”。注意注意 x 对运算结果的影响对运算结果的影响位运算符应用举例:位运算符应用举例:若若 A = 5B11001, B = 5b101x1 , 则则 A = 5b00110 A & B = 5b10001 AB = 5b111x1 A B = 5b011x0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师师徒结对计划
- 《材料成型工艺基础A》教学大纲
- 玉溪师范学院《网球》2023-2024学年第一学期期末试卷
- 施工现场项目部管理制度
- 火山引擎·数据飞轮-行业实践系列自皮书·银行业 -新一代全行级标签体系与标签应用篇 2024
- 2024年细微射频同轴电缆项目评估分析报告
- 2023年有机氟化工产品项目评估分析报告
- 投资学第7版 郎荣燊 思政大纲
- 2019粤教版 高中美术 选择性必修1 绘画《第二单元 练就创造美的巧手》大单元整体教学设计2020课标
- 2024届广西梧州柳州高考数学试题命题比赛模拟试卷
- 【8物(科)期中模拟】合肥市2023-2024学年八年级上学期期中模拟物理作业试卷
- 情商与智慧人生学习通超星期末考试答案章节答案2024年
- 部编人教版《道德与法治》六年级上册第6课《人大代表为人民》课件
- 液化气站双重预防体系手册
- 盘扣式卸料平台施工方案
- 《无人驾驶航空器飞行管理暂行条例》考试复习题库(含答案)
- 2024年榆林交通投资建设集团有限公司招聘笔试冲刺题(带答案解析)
- 空乘人员生涯发展展示
- 新探索研究生英语(基础级)读写教程参考答案Language-focus
- 习近平总书记关于教育的重要论述研究学习通章节答案期末考试题库2023年
- 2024年高中语文会考试题及答案
评论
0/150
提交评论