第3章硬件描述语言简介2_第1页
第3章硬件描述语言简介2_第2页
第3章硬件描述语言简介2_第3页
第3章硬件描述语言简介2_第4页
第3章硬件描述语言简介2_第5页
已阅读5页,还剩148页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第三章第三章 硬件描述语言简介硬件描述语言简介Chapter 3 Intoduction of Hardware Description Language本章主要内容本章主要内容 第一节第一节 概述概述 第二节第二节 VHDL简介简介 第三节第三节 Verilog HDL简介简介2 HDL(Hardware Description Language)是一种国际上流行的描述数字电路和系统的语是一种国际上流行的描述数字电路和系统的语言,可以在言,可以在EDA工具的支持下,快速实现设计工具的支持下,快速实现设计者的设计意图。者的设计意图。 常用的常用的HDL语言有语言有VHDL 和和Verilog

2、 HDL两两种。种。3.1 概述33.1 概述pHDL功能:l描述数字系统;描述数字系统;l描述多个数字电路模块之间的连接,组描述多个数字电路模块之间的连接,组合成一个较大的系统;合成一个较大的系统;l建立测试激励信号文件,在仿真环境中,建立测试激励信号文件,在仿真环境中,对设计好的系统进行调试验证。对设计好的系统进行调试验证。4一、一、VHDL定义及发展简介。定义及发展简介。二、二、Verilog HDL概况及发展简介。概况及发展简介。 3.1 概述53.1.1 VHDL定义及发展简介p什么是VHDL?VHDL: V VHSIC (Very High Speed IntegratedHSIC

3、 (Very High Speed Integrated Circuit) Circuit) H Hardwareardware D Descriptionescription L Languageanguage63.1.1 VHDL定义及发展简介pVHDL定义及发展历程;lVery High Speed Integrated Circuit Hardware Description Language:超高速集成电路硬件描述语言。l1980年开始在美国国防部的指导下开发;l1987.12IEEE Std 1076-1987: VHDL87l1993 更新为IEEE Std 1164-1993,

4、 VHDL93lIEEE还成立了专门机构推广VHDL, VASG(VHDL Analysis and Standard Group)73.1.1 VHDL定义及发展简介pVHDL作用:1 1、VHDLVHDL打破软、硬件的界限。打破软、硬件的界限。 传统的数字系统设计分为:传统的数字系统设计分为: 硬件设计(硬件设计人员)硬件设计(硬件设计人员) 软件设计(软件设计人员)软件设计(软件设计人员) VHDLVHDL是电子系统设计者和是电子系统设计者和 EDA EDA工具之间的界面。工具之间的界面。 EDA EDA工具及工具及 HDLHDL的流行,使电子系统向集成化、大规模的流行,使电子系统向集成

5、化、大规模和高速度等方向发展。和高速度等方向发展。 美国硅谷约有美国硅谷约有80%80%的的 ASICASIC和和 FPGA/CPLDFPGA/CPLD已采用已采用 HDL HDL进进行设计。行设计。83.1.1 VHDL定义及发展简介pVHDL特点;1 1、VHDLVHDL具有强大的语言结构,系统硬件描述能力强、设计效具有强大的语言结构,系统硬件描述能力强、设计效率高;具有较高的抽象描述能力。率高;具有较高的抽象描述能力。2 2、VHDLVHDL语言可读性强,易于修改和发现错误。语言可读性强,易于修改和发现错误。3 3、VHDLVHDL具有丰富的仿真语句和库函数,可对具有丰富的仿真语句和库函

6、数,可对VHDLVHDL源代码进行源代码进行早期功能仿真,有利于大系统的设计与验证。早期功能仿真,有利于大系统的设计与验证。4 4、VHDLVHDL设计与硬件电路关系不大。设计与硬件电路关系不大。 5 5、VHDLVHDL设计不依赖于器件,与工艺无关设计不依赖于器件,与工艺无关 。6 6、移植性好。、移植性好。 7 7、VHDLVHDL体系符合体系符合TOP-DOWNTOP-DOWN和和CECE(并行工程)设计思想。(并行工程)设计思想。8 8、VHDLVHDL设计效率高,产品上市时间快,成本低。设计效率高,产品上市时间快,成本低。9 9、易于、易于ASICASIC实现。实现。93.1.2 V

7、erilog HDL概况及发展简介pVerilog HDL的定义lVerilog HDL是硬件描述语言的一种,用于数是硬件描述语言的一种,用于数字电子系统设计。该语言允许设计者进行各种字电子系统设计。该语言允许设计者进行各种级别的逻辑设计,进行数字逻辑系统的仿真验级别的逻辑设计,进行数字逻辑系统的仿真验证、时序分析、逻辑综合。它是目前应用最广证、时序分析、逻辑综合。它是目前应用最广泛的一种硬件描述语言。泛的一种硬件描述语言。p Verilog于1983年首创,1995年成为IEEE 1364-1995标准。103.1.2 Verilog HDL概况及发展简介p1983年:Gateway Des

8、ign Automation公司在C语言的基础上,开发了Verilog HDL。p1989年,Cadence收购了GDA,1990年该公司成立OVI(Open Verilog International)组织,推广该语言。p1995年: IEEE制定了IEEE标准IEEE 1364-1995标准。p2001年:发布了Verilog HDL 1364-2001标准,加入了Verilog HDL-A标准,使其具有描述模拟电路的能力。11其他HDL语言p其他HDL语言l最流行的最流行的HDL 语言是语言是Verilog 和和VHDL。 后来后来在其基础上又发展出了许多抽象程度更高的硬在其基础上又发展

9、出了许多抽象程度更高的硬件描述语言,如件描述语言,如SystemVerilog 、Superlog 、SystemC 和和CoWare C 等。这些高级等。这些高级HDL语语言的语法结构更加丰富,更适合用于系统级、言的语法结构更加丰富,更适合用于系统级、功能级等高层次的设计描述和仿真。功能级等高层次的设计描述和仿真。12其他HDL语言13l相同点:相同点:都可以借助类似高级语言的特性来抽象描述数字电路的结构和功能,都可以对设计出来的电路进行验证和仿真,以确保电路的正确性,以及都可以实现电路描述与工艺实现的分离。l 不同点:不同点:Verilog具有较多的第三方工具的支持;语法结构比VHDL简单

10、;Verilog 类C,学习起来比VHDL容易。3.1 概述14VerilogVHDL系统级系统级算法级算法级寄存器传输级寄存器传输级逻辑门级逻辑门级开关电路级开关电路级Verilog与与VHDL建模能力比较建模能力比较3.1 概述153.2 VHDL简介一、一、VHDL设计描述的基本结构。设计描述的基本结构。二、数据类型、词法、运算符、对象、属性。二、数据类型、词法、运算符、对象、属性。 三、三、VHDL语句、库和语句、库和use子句子句四、四、VHDL设计实体及举例设计实体及举例16pVHDL设计简述lVHDL主要用于描述数字系统的主要用于描述数字系统的结构、行结构、行为、功能和接口为、功

11、能和接口。l VHDL将一个设计将一个设计(元件、电路、系统元件、电路、系统)分分为:为: 外部(可视部分、端口) 内部(不可视部分、内部功能、算法)3.2 VHDL简介17p外部与内部:3.2 VHDL简介器件或子系统 ARCHITECTURE Process ProcessENTITYSequentialProcessCombinational Processportsportscomponentportsports18pVHDL语言的一些基本特点:lVHDL语言由保留关键字组成;语言由保留关键字组成;l一般,一般,VHDL语言对字母大小写不敏感;语言对字母大小写不敏感; 例外:例外: 、

12、“ ”所括的字符、字符串;所括的字符、字符串;l每条每条VHDL语句由一个分号(;)结束;语句由一个分号(;)结束;lVHDL语言对空格不敏感,增加可读性;语言对空格不敏感,增加可读性;l在在“-”之后的是之后的是VHDL的注释语句;的注释语句;lVHDL有以下描述风格:有以下描述风格:行为描述;数据流(寄存器传输RTL)描述;结构化描述; 3.2 VHDL简介19p基本结构包括:l实体(实体(Entity)l结构体(结构体(Architecture)l配置(配置(Configuration)l库(库(Library)、程序包()、程序包(Package)VHDL程序基本结构20VHDL程序基

13、本结构 库、程序包库、程序包 实体(实体(Entity) 结构体结构体 (Architecture) 进程或其它进程或其它并行结构并行结构 配置(配置(Configuration)212 2 选选 1 1 选择器选择器:VHDL程序基本结构22一、实体一、实体 实体(说明):实体(说明): 定义系统的输入输出端口定义系统的输入输出端口 语法:语法: ENTITY IS Generic Declarations Port DeclarationsEND ; (1076-1987 version)END ENTITY ; ( 1076-1993 version)VHDL程序基本结构233.2 VH

14、DL简介1 1、类属说明、类属说明 确定实体或组件中定义的局部常数。模块化确定实体或组件中定义的局部常数。模块化设计时多用于不同层次模块之间信息的传递。设计时多用于不同层次模块之间信息的传递。可从外部改变内部电路结构和规模。可从外部改变内部电路结构和规模。 类属说明类属说明必须放在端口说明之前必须放在端口说明之前。 Generic (Generic ( 常数名称:类型常数名称:类型 := = 缺省值缺省值 常数名称:类型常数名称:类型 := = 缺省值缺省值 ) );一、实体一、实体243.2 VHDL简介1 1、类属常用于定义:、类属常用于定义: 实体端口的大小、设计实体的物理特性、总实体端

15、口的大小、设计实体的物理特性、总线宽度、元件例化的数量等。线宽度、元件例化的数量等。例:例: entity mck isentity mck is generic(width: integer:=16);generic(width: integer:=16); port(add_bus:out std_logic_vector port(add_bus:out std_logic_vector ( (width-1width-1 downto 0); downto 0); 一、实体一、实体253.2 VHDL简介例:例:2 2输入与门的实体描述输入与门的实体描述 entity and2 ise

16、ntity and2 is generic(risewidth: time:= 1 ns;generic(risewidth: time:= 1 ns; fallwidth: time:= 1 ns); fallwidth: time:= 1 ns); port(a1: in std_logic; port(a1: in std_logic; a0: in std_logic; a0: in std_logic; z0: out std_loigc); z0: out std_loigc); end entity and2; end entity and2; 注:数据类型注:数据类型 time

17、 time 用于仿真模块的设计。用于仿真模块的设计。 综合器仅支持数据类型为整数的类属值。综合器仅支持数据类型为整数的类属值。263.2 VHDL简介其中,其中,端口模式:端口模式: in:in: 输入型,此端口为只读型。输入型,此端口为只读型。 out:out: 输出型,只能在实体内部对其赋值。输出型,只能在实体内部对其赋值。 inout:inout:输入输出型,既可读也可赋值。输入输出型,既可读也可赋值。 buffer:buffer: 缓冲型,与缓冲型,与 out out 相似,但可读。相似,但可读。Port Port ( ( 端口名称端口名称 ,端口名称,端口名称 :端口模式端口模式 数

18、据类型;数据类型; 端口名称端口名称 ,端口名称,端口名称 :端口模式:端口模式 数据类型数据类型 ) );2 2、端口声明、端口声明端口声明:确定输入、输出端口的数目和类型。端口声明:确定输入、输出端口的数目和类型。一、实体一、实体273.2 VHDL简介一、实体一、实体 指端口上流动的数据的表达格式。为预先定义好指端口上流动的数据的表达格式。为预先定义好的数据类型。的数据类型。 如:如:bitbit、bit_vectorbit_vector、integerinteger、 std_logicstd_logic、std_logic_vectorstd_logic_vector 等。等。例:例

19、:entity nand2 is entity m81 isentity nand2 is entity m81 is port ( port( port ( port( a,b:in a,b:in bitbit; a:in ; a:in bit_vectorbit_vector(7 downto 0); (7 downto 0); z: out z: out bitbit sel:in sel:in bit_vectorbit_vector(2 downto 0); (2 downto 0); ) ; b:out bit); ) ; b:out bit); end entity nand2;

20、 end entity m81;end entity nand2; end entity m81;3 3、数据类型、数据类型283.2 VHDL简介作用:定义系统(或模块)的行为、元件及内部作用:定义系统(或模块)的行为、元件及内部 的连接关系,即描述其逻辑功能。的连接关系,即描述其逻辑功能。两个组成部分:两个组成部分: 对数据类型、常数、信号、子程序、元件等对数据类型、常数、信号、子程序、元件等 元素的元素的说明说明部分。部分。 以各种不同的描述风格描述的系统的逻辑功以各种不同的描述风格描述的系统的逻辑功 能实现的部分。常用的描述风格有:能实现的部分。常用的描述风格有:行为描行为描 述、数据

21、流描述、述、数据流描述、 结构化描述结构化描述。二、结构体二、结构体293.2 VHDL简介结构体结构体说明结构体功能描述 常数说明 数据类型说明 信号说明 例化元件说明 子程序说明 块语句 进程语句 信号赋值语句 子程序调用语句 元件例化语句 303.2 VHDL简介实体与结构体的关系:实体与结构体的关系:设计实体结构体1结构体2结构体3结构体n。 一个设计实体可有多个结构体,代表实体一个设计实体可有多个结构体,代表实体的多种实现方式。各个结构体的地位相同。的多种实现方式。各个结构体的地位相同。313.2 VHDL简介注:同一实体的结构体不能同名。定义语句中的注:同一实体的结构体不能同名。定

22、义语句中的 常数、信号不能与实体中的端口同名。常数、信号不能与实体中的端口同名。architecturearchitecture 结构体名称 ofof 实体名称 is 说明语句内部信号、常数、 数据类型、子程序(函数、过程)、 元件等的说明; beginbegin 并行处理(功能描述)语句; endend architecture 结构体名称;语法:语法:二、结构体二、结构体323.2 VHDL简介例:一个完整描述(例:一个完整描述(3 bit 3 bit 计数器)计数器)333.2 VHDL简介程序包:程序包: 已定义的常数、数据类型、元件调用说明、已定义的常数、数据类型、元件调用说明、子程

23、序的一个集合。子程序的一个集合。 目的:方便公共信息、资源的访问和共享。目的:方便公共信息、资源的访问和共享。库:库: 多个程序包构成库。多个程序包构成库。 三、程序包、库三、程序包、库343.2 VHDL简介程序包说明的内容:程序包说明的内容: 常量说明;常量说明; VHDLVHDL数据类型说明;数据类型说明; 元件说明;元件说明; 子程序说明;子程序说明;程序包的结构包括:程序包的结构包括: 程序包说明(包首)程序包说明(包首) 程序包主体(包体)程序包主体(包体)三、程序包、库三、程序包、库353.2 VHDL简介包声明项可由以下语句组成:包声明项可由以下语句组成: use use 语句

24、(用来包括其它程序包);语句(用来包括其它程序包); 类型说明;子类型说明;常量说明;类型说明;子类型说明;常量说明; 信号说明;子程序说明;元件说明。信号说明;子程序说明;元件说明。 package 程序包名 is 包说明项 end 程序包名;1 1、程序包说明(包首)、程序包说明(包首)语法:语法:三、程序包、库三、程序包、库363.2 VHDL简介三、程序包、库三、程序包、库包体说明项可含:包体说明项可含: use use 语句;子程序语句;子程序说说明;明;子程序主体子程序主体; 类型类型说说明;子类型明;子类型说说明;常量明;常量说说明。明。 package body 程序包名 is

25、 包体说明项 end 程序包名;2 2、程序包包体、程序包包体程序包的内容:程序包的内容:子程序的实现算法子程序的实现算法。包体语法:包体语法:373.2 VHDL简介3 3、库的种类、库的种类 VHDLVHDL库可分为库可分为 5 5种:种: 1 1)IEEE IEEE 库库 定义了四个常用的程序包: std_logic_1164 std_logic_1164 (std_logic types & related functions) std_logic_arith std_logic_arith (arithmetic functions) std_logic_signed std

26、_logic_signed (signed arithmetic functions) std_logic_unsigned std_logic_unsigned (unsigned arithmetic functions)三、程序包、库三、程序包、库383.2 VHDL简介 2 2)STD STD 库(默认库)库(默认库) 库中程序包为:库中程序包为:standardstandard, 定义最基本的数据类型:定义最基本的数据类型: BitBit,bit_vector bit_vector ,BooleanBoolean, IntegerInteger,RealReal,and Timean

27、d Time 注:注:Type BitType Bit 2 logic value system ( 2 logic value system (0 0, , 1 1) ) 3 3)面向)面向ASICASIC的库的库 4 4)WORKWORK库(默认库)库(默认库) 5 5)用户定义库)用户定义库3 3、库的种类、库的种类 三、程序包、库三、程序包、库393.2 VHDL简介4 4、库及程序包的使用、库及程序包的使用 库及程序包的说明总是放在实体单元前面,库及程序包的说明总是放在实体单元前面,默认库及程序包可不作说明。用关健字默认库及程序包可不作说明。用关健字librarylibrary 说明

28、要使用的库,用关健字说明要使用的库,用关健字 use use 说明要使用的库中的程说明要使用的库中的程序包。序包。 库及程序包的作用范围:仅限于所说明的设计实体。库及程序包的作用范围:仅限于所说明的设计实体。 每一个设计实体都必须有自已完整的库及程序包说每一个设计实体都必须有自已完整的库及程序包说明语句。明语句。三、程序包、库三、程序包、库403.2 VHDL简介库的使用语法:库的使用语法:程序包的使用有两种常用格式:程序包的使用有两种常用格式: 例:例: library ieeelibrary ieee; use ieee.std_logic_1164.alluse ieee.std_log

29、ic_1164.all; use ieee.std_logic_unsigned.conv_integer;use ieee.std_logic_unsigned.conv_integer; library 库名;库名; use 库名程序包名项目名库名程序包名项目名 use 库名程序包名库名程序包名All;41VHDL语言要素四类语言要素:四类语言要素: 数据对象数据对象(Data ObjectData Object) 数据类型数据类型(Data TypeData Type) 操作数操作数(OperandsOperands) 操作符操作符(OperatorOperator)42p一、VHDL文

30、字规则l1、数字型文字;、数字型文字;l2、字符串型文字(文字串和数字串);、字符串型文字(文字串和数字串);l3、标识符;、标识符;l4、下标名及下标段名;、下标名及下标段名;VHDL语言要素43二、数据对象二、数据对象 三种对象:三种对象:常量(常量(ConstantConstant) 变量(变量(VariableVariable) 信号(信号(SignalSignal) 三种对象的物理含义:三种对象的物理含义: 常量常量代表数字电路中的电源、地、恒定逻代表数字电路中的电源、地、恒定逻 辑值等常数;辑值等常数; 变量变量代表代表暂存暂存某些值的载体,常用于描述某些值的载体,常用于描述 算法

31、;算法; 信号信号代表物理设计中的某一条硬件连接线,代表物理设计中的某一条硬件连接线, 包括输入、输出端口。包括输入、输出端口。VHDL语言要素44三、三、VHDLVHDL数据类型数据类型 VHDLVHDL是一种强数据类型语言。是一种强数据类型语言。 要求设计实体中的每一个常数、信号、变量、要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类函数以及设定的各种参量都必须具有确定的数据类型,并且相同数据类型的量才能互相传递和作用。型,并且相同数据类型的量才能互相传递和作用。 VHDLVHDL数据类型分为四大类:数据类型分为四大类: 标量类型(标量类型(SCALAR

32、 TYPESCALAR TYPE);); 复合类型(复合类型(COMPOSITE TYPECOMPOSITE TYPE);); 存取类型(存取类型(ACCESS TYPEACCESS TYPE);); 文件类型(文件类型(FILES TYPEFILES TYPE)。)。VHDL语言要素45四、四、VHDLVHDL中的表达式中的表达式 表达式:表达式:由操作符和操作数构成,完成算术或 逻辑运算。 1 1、操作符、操作符 VHDL操作符的分类: 逻辑操作符(Logical Operator)、 关系操作符(Relational Operator)、 算术操作符(Arithmetic Operato

33、r)、 重载操作符(Overloading Operator) VHDL语言要素462 2、操作数、操作数 操作数: 操作符进行运算时所需的数据。 操作数的种类: 标志符;集合;属性;表达式;函数 调用;索引名;文字;限定表达式;记 录和域;片段名;类型转换; 四、四、VHDLVHDL中的表达式中的表达式VHDL语言要素473 3、重载操作符、重载操作符 VHDL是强类型语言,相同类型的操作数才能进行操作。VHDL自身定义的算术和布尔函数仅对内部数据类型(standard 程序包中的数据类型)有效。即: 算术运算符算术运算符+,-, = +,-, = 仅对仅对integerinteger类型有

34、类型有效。逻辑运算符效。逻辑运算符AND, OR, NOTAND, OR, NOT仅对仅对 bit bit 类型有效。类型有效。 如: variable a,b,c :integer; variable x,y,z :bit; c := a + b; z := x and y;四、四、VHDLVHDL中的表达式中的表达式VHDL语言要素483.2 VHDL简介 硬件执行:并发执行(VHDL本质) 仿真执行:顺序执行、并发执行 分为两大类:顺序(Sequential)描述语句 并发(Concurrent)描述语句 ARCHITECTURE Process ProcessENTITYSequent

35、ialProcessCombinationalProcessportsportscomponent4 VHDL顺序语句(顺序语句(Sequential)493.2 VHDL简介顺序描述语句:顺序描述语句: 执行顺序与书写顺序一致,与传统软件设计执行顺序与书写顺序一致,与传统软件设计语言的特点相似。语言的特点相似。顺序语句只能用在进程与子程顺序语句只能用在进程与子程序中。序中。 可描述组合逻辑、时序逻辑。可描述组合逻辑、时序逻辑。常用的顺序描述语句:常用的顺序描述语句:赋值语句;赋值语句;ifif语句;语句;casecase语句;语句;nullnull语句;语句;looploop语句;语句;ne

36、xtnext语句;语句;exitexit语句;子程序;语句;子程序;returnreturn语句;语句;waitwait语句语句503.2 VHDL简介 5 VHDL并发语句(并发语句(Concurrent) Architecture并发语句并发语句并发语句信号信号信号513.2 VHDL简介常用的并发描述语句有:常用的并发描述语句有: 进程(进程(processprocess)语句)语句、 块(block)语句、 顺序描述语句的并行版本、 并行过程调用语句、 元件例化语句元件例化语句、 生成语句生成语句。 523.2 VHDL简介6 VHDL描述风格描述风格三种描述风格: 行为描述 数据流(

37、寄存器传输)描述 结构描述 53一一 行为描述行为描述 行为描述是以算法形式对系统模型、功能的描述,与硬件结构无关。抽象程度最高。 常用语句:进程、过程、函数。 行为描述主要用于:模型仿真、功能仿真。 例:8位加法计数器VHDL的描述风格5455二二 数据流描述:数据流描述: 数据流描述又称为寄存器传输级描述(RTL _Register Transfer Level)。RTL级描述是以寄存器为特征,在寄存器之间插入组合逻辑电路。即以描述数据流的流向为特征。VHDL的描述风格56三三 结构化描述:结构化描述: 在多层次的设计中,高层次的设计模块调用低层次的设计模块,构成模块化的设计。VHDL的描

38、述风格57结构描述是元件互连的描述,使用元件例化语句。一位全加器的原理图VHDL的描述风格58一位全加器的一位全加器的VHDLVHDL结构化描述结构化描述59一位全加器的一位全加器的VHDLVHDL结构化描述结构化描述603.3 Verilog HDL简介一、基本程序结构。一、基本程序结构。二、词法构成。二、词法构成。 三、模块的两种描述方式。三、模块的两种描述方式。61Verilog HDL描述层次l 行为级:行为级:有关行为和技术指标模块,容易理解有关行为和技术指标模块,容易理解l RTL级:级:有关逻辑执行步骤的模块,较难理解有关逻辑执行步骤的模块,较难理解l 门级:门级:有关逻辑部件互

39、相连接的模块,很难理解有关逻辑部件互相连接的模块,很难理解l 开关级:开关级:有关物理形状和布局参数的模块,非常有关物理形状和布局参数的模块,非常难理解难理解62Verilog HDL描述层次行为级行为级行为综合行为综合RTL级级门级门级开关级开关级逻辑综合逻辑综合布局布线布局布线综合前仿真综合前仿真综合后仿真综合后仿真63pVerilog HDL标识符:l所谓标识别符就是用户为程序描述中的所谓标识别符就是用户为程序描述中的Verilog 对象所起的名字;对象所起的名字;l标识符必须以英语字母(标识符必须以英语字母(a-z, A-Z)起头,或)起头,或者用下横线符(者用下横线符(_)起头。内容

40、可以包含数字、)起头。内容可以包含数字、$符和下横线符;符和下横线符;l标识符最长可以达到标识符最长可以达到1023个字符;个字符;l Verilog语言是大小写敏感的,因此语言是大小写敏感的,因此sel和和SEL 是两个不同的标识符。是两个不同的标识符。Verilog HDL标识符64Verilog HDL标识符合法的:合法的: 非法的:非法的:shift_reg_a 34net busa_index a*b_netbus263 n263 /不能用数字开头不能用数字开头/不能含有非字母符号不能含有非字母符号* */不能含有非字母符号不能含有非字母符号 65Verilog HDL模块结构CDA

41、BF66Verilog HDL模块结构Verilog描述:描述:module AOI(A,B,C,D,F)input A,B,C,D;output F; assign F=(A&B)|(C&D);endmodule67Verilog HDL模块结构端口定义端口定义input 输入端口输入端口output 输出端口输出端口inout 端口端口module 名字名字 (端口名端口名);endmodule信号类型定义信号类型定义wireregparameter逻辑功能定义逻辑功能定义assignalwaysfunctiontask.68Verilog HDL模块结构module dd

42、er4(cout,sum,ina,inb,cin);input3:0 ina,inb;input cin;output3:0 sum;output cout;assign cout,sum=ina+inb+cin;endmodule69Verilog HDL模块结构module count4(out,reset,clk);output3:0 out;input reset,clk;reg3:0 out;always (posedge clk)begin if (!reset) out=0; /同步复位同步复位 else out=out+1;/计数计数endendmodule70Verilog

43、HDL模块结构模块实例化模块实例化( (module instances) ):格式:格式: ( ); ;71Verilog HDL模块结构p将模块的实例通过端口连接起来构成一个大的系统或元件;p 实例中端口的次序与模块定义的次序相同;p 模块实例化与C语言函数调用不同,每个实例都是模块的一个完全拷贝,相互独立、并行。72Verilog HDL模块结构pVerilog语言特点:lVerilog程序是由模块构成的。每个模块的内容程序是由模块构成的。每个模块的内容都嵌在都嵌在module和和endmodule两个关键字之间,两个关键字之间,每个模块实现特定功能,模块可以进行层次嵌每个模块实现特定功

44、能,模块可以进行层次嵌套;套;l 每个模块首先要进行端口定义,并说明端口类每个模块首先要进行端口定义,并说明端口类型,然后对模块的功能进行逻辑描述;型,然后对模块的功能进行逻辑描述;73Verilog HDL模块结构pVerilog语言特点:lVerilog程序书写格式自由,一行可以写几个语程序书写格式自由,一行可以写几个语句,一个语句也可以分多行写;句,一个语句也可以分多行写;l 除了除了endmodule等少数语句外,每个语句的等少数语句外,每个语句的最后必须有分号;最后必须有分号;l 可以用可以用 /*/ 和和 / 对对Verilog程序作注程序作注释,好的源程序都应当加上必要的注释,以

45、增释,好的源程序都应当加上必要的注释,以增强程序的可读性和可维护性。强程序的可读性和可维护性。74Verilog HDL数据类型p定义l数据类型(数据类型(Data Type)是用来表示数字)是用来表示数字电路中的电路中的物理连线、数据存储和传送单物理连线、数据存储和传送单元元等物理量的。等物理量的。75Verilog HDL数据类型p Verilog HDL共有19种数据类型:包括wire、integer、parameter、time等;p 最基本的是两类:l 连线型连线型: wirel 寄存器型寄存器型: regp 最常用:wire、reg、parameter、integer76Veril

46、og HDL数据类型p数据类型分类:l常量数据类型常量数据类型 integer x和z parameterl 变量数据类型变量数据类型 nets register77Verilog HDL数据类型pinteger:完整数字表达式:完整数字表达式: 举例:举例: 8b10101000 8b1010_1000 8ha8 16878Verilog HDL数据类型px和z :x x表示不确定值表示不确定值举例:举例:8 8b1010 xxxxb1010 xxxx 8 8haxhaxz z表示高阻值表示高阻值举例:举例:assign i2c_sda = sda_oe ? i2c_sda_o : 1bz;

47、79Verilog HDL数据类型pparameter:格式:格式:parameter 参数名参数名1= =表达式,表达式,, ,参数名参数名n= =表达式表达式; ;举例:举例:Parameter msb=7,f=18; ;Parameter average_delay=(msb+f)/2;80Verilog HDL数据类型pnets :l由模块或门驱动的由模块或门驱动的连线连线l驱动端信号的改变驱动端信号的改变会立刻传递到输出会立刻传递到输出的连线上的连线上nets81Verilog HDL数据类型p种类: 类型类型 功能功能 wire, tri 对应于标准的互连线(缺省)对应于标准的互连

48、线(缺省)supply1, supply2 对应于电源线或接地线对应于电源线或接地线wor, trior 对应于有多个驱动源的对应于有多个驱动源的线或线或逻辑连接逻辑连接wand, triand 对应于有多个驱动源的对应于有多个驱动源的线与线与逻辑连接逻辑连接trireg 对应于有电容存在暂时存储电平的连接对应于有电容存在暂时存储电平的连接tri1, tri0 对应于对应于需要上拉或下拉的需要上拉或下拉的连接连接82Verilog HDL数据类型pwire:l wire是最常用的连线型变量;是最常用的连线型变量;l 模块中的输入输出信号类型缺省时自动定义为模块中的输入输出信号类型缺省时自动定义

49、为wire型;型;l 可用作任何表达式的输入,也可用作可用作任何表达式的输入,也可用作“assign”语句和实例元件的输出,在综合器中,可取四值:语句和实例元件的输出,在综合器中,可取四值:0、1、X、Z;p格式:wire 数据名数据名1,数据名,数据名n;wiren-1:0 数据名数据名1,数据名,数据名n;83Verilog HDL数据类型pregister:l对应的是具有状态保持作用的电路元件;对应的是具有状态保持作用的电路元件;l 需要被明确赋值,在重新赋值前一直保持原值;需要被明确赋值,在重新赋值前一直保持原值;l 须放在过程语句(如须放在过程语句(如initial,always)中

50、,通)中,通过过程赋值语句赋值。过过程赋值语句赋值。p格式reg 数据名数据名1,数据名,数据名n;regn-1:0 数据名数据名1,数据名,数据名n;84Verilog HDL数据类型p举例:85Verilog HDL数据类型p描述module rw2( clk, d, out1, out2 ) ;input clk, d;output out1, out2;reg out1;wire out2;assign out2 = d & out1 ;always (posedge clk) begin out1 = d ; endendmodule 86Verilog HDL数据类型p如何

51、选择正确的数据类型? inoutinout?87Verilog HDL数据类型p数据类型选择:l输入口(输入口(input)可以由寄存器或网络连接驱动,)可以由寄存器或网络连接驱动,但它本身只能驱动网络连接;但它本身只能驱动网络连接;l 输出口输出口 (output)可以由寄存器或网络连接驱动,可以由寄存器或网络连接驱动,但它本身只能驱动网络连接;但它本身只能驱动网络连接;l输入输入/输出口输出口(inout)只可以由网络连接驱动只可以由网络连接驱动,且本,且本身只能驱动网络连接;身只能驱动网络连接;l 如果信号变量是在过程块如果信号变量是在过程块 (initial块块 或或 always块块

52、)中被赋值的,必须把它声明为寄存器类型变量。中被赋值的,必须把它声明为寄存器类型变量。88Verilog HDL数据类型p数据类型选择:net/registerinoutinoutnetnetnetnet/registernet89Verilog HDL数据类型module test1(clk,rst_n,cen16);input clk, rst_n;output cen16;reg cen16; reg 3:0count;always(posedge clk) beginif (!rst_n) begin cen16=0; count =0; endelse if(&count)

53、begin count =0; cen16=1; endelse begin count = count +1; cen16=0; end endendmodule 90Verilog HDL数据类型module test2(clk,rst_n,cen4);input clk, rst_n;output cen4;reg cen4; reg 1:0count;always(posedge clk) beginif (!rst_n) begin cen4=0; count =0; endelse if(&count) begin count =0; cen4=1; endelse beg

54、in count = count +1; cen4=0; end endendmodule 91Verilog HDL数据类型module test (clk,rst_n,cen64);input clk, rst_n;output cen64;wire cen16;test1 test1(clk, rst_n,cen16);test2 test2(cen16, rst_n,cen64);endmodule 92Verilog HDL数据类型p选择数据类型时常犯的三个错误:l在过程块中对变量赋值时,忘了把它定义为寄在过程块中对变量赋值时,忘了把它定义为寄存器类型(存器类型(reg),或已把它定

55、义为连接类型),或已把它定义为连接类型了(了(wire););l把实例的输出连接出去时,将它定义为寄存器把实例的输出连接出去时,将它定义为寄存器类型了;类型了;l把模块的输入信号定义为寄存器类型了。把模块的输入信号定义为寄存器类型了。93Verilog HDL 运算符p按功能分:l算术运算符、逻辑运算符、关系运算符、缩减算术运算符、逻辑运算符、关系运算符、缩减运算符、条件运算符、位运算符、移位运算符、运算符、条件运算符、位运算符、移位运算符、拼接运算符等。拼接运算符等。p 按操作数分:l 单目运算符、双目运算符、三目运算符。单目运算符、双目运算符、三目运算符。94p算术运算符 (Arithme

56、tic operator) + 加加 - 减减 * 乘乘 / 除除 % 求模求模p逻辑运算符(Logical operator) & 逻辑与逻辑与 | 逻辑或逻辑或 ! 逻辑非逻辑非 Verilog HDL 运算符95Verilog HDL 运算符A B A&BA|B!A !B1 1110 01 0010 10 1011 00 0001 196p位运算符(Bitwise operator) 按位取反按位取反 & 按位与按位与 | 按位或按位或 按位异或按位异或, 按位同或按位同或Verilog HDL 运算符97Verilog HDL 运算符设设a=4b0011,b=4

57、b1010,c=3b011,d=4b11x0则:则:a/按位取反,结果是按位取反,结果是4b1100b&c/按位与运算,结果是按位与运算,结果是4b0010ad/按位同或运算,结果是按位同或运算,结果是4b00 x0a&b/逻辑与运算,等价于逻辑与运算,等价于1&198p关系运算符 (Relational operator) 小于小于 大于大于= 大于或等于大于或等于注意:“n或或A 右移右移 左移左移102p条件运算符 (Conditional operator) Verilog HDL 运算符这是一个三目运算符,对这是一个三目运算符,对3 3个操作数进行运算。个操作

58、数进行运算。用法:用法: signal=condition?true_expression:flase_expression; 即:信号即:信号= =条件?表达式条件?表达式1 1:表达式:表达式2 2; 条件成立时,信号取表达式条件成立时,信号取表达式1 1的值,反之取的值,反之取2 2。 ?103p条件运算符 举例Verilog HDL 运算符01sel in0in1 out104p位接运算符 Verilog HDL 运算符 用法:用法: 信号信号1的某几位的某几位,信号信号2的某几位的某几位,信号信号n的某几位的某几位举例:举例:assign cout,sum = a+b+cin;105

59、运算符运算符优先级优先级! * / %+ - = != = !=& & | &|? :106Verilog HDL 语句p分类l过程语句过程语句l块语句块语句l赋值语句赋值语句l条件语句条件语句l循环语句循环语句l编译向导编译向导107类类 别别语语 句句可综合性可综合性过程语句过程语句always initial块语句块语句串行块串行块begin-end并行块并行块fork-join 赋值语句赋值语句持续赋值持续赋值assign过程赋值过程赋值=、=条件语句条件语句if-elsecase 循环语句循环语句forrepeat while forever 编译向导编译向导

60、defineincludeifdef,else,endif108Verilog HDL 语句always ()begin/过程赋值过程赋值/if-else,case选择语句选择语句end109Verilog HDL 语句敏感信号类型:敏感信号类型:(a)(a or b)(posedge clock)(negedge clock)(posedge clk or negedge reset)110Verilog HDL 语句举例:举例:DFFmodule DFF (d , clk, reset, q, qb ); output q, qb; input clk, reset,d; reg q, qb; always (posedge clk) begin if (!reset) begin q =0; qb=1; en

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论