VHDL语言入门教程.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《VHDL语言入门教程.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 语言 入门教程
- 资源描述:
-
1、VHDL语言入门教程HDL-Hardware Description Language 一种用于描述数字电路的功能或行为的语言。目的是提为电路设计效率,缩一种用于描述数字电路的功能或行为的语言。目的是提为电路设计效率,缩短设计周期,减小设计成本,可在芯片制造前进行有效的仿真和错误检测。短设计周期,减小设计成本,可在芯片制造前进行有效的仿真和错误检测。优点:优点:HDL设计的电路能获得非常抽象级的描述。如基于设计的电路能获得非常抽象级的描述。如基于RTL(Register Transfer Level)描述的描述的IC,可用于不同的工艺。,可用于不同的工艺。HDL设计的电路,在设计的前期,就可以
2、完成电路的功能级的验证。设计的电路,在设计的前期,就可以完成电路的功能级的验证。HDL设计的电路类似于计算机编程。设计的电路类似于计算机编程。常用的常用的HDL语言:语言:VHDL、Verilog HDL VHDL是美国国防部在是美国国防部在20世纪世纪80年代初为实现其高速集成电路年代初为实现其高速集成电路硬件硬件VHSIC计划提出的描述语言计划提出的描述语言;IEEE从从1986年开始致力于年开始致力于VHDL标准化工作,融合了其它标准化工作,融合了其它ASIC芯片制造商开发的硬件描述语言的优点,于芯片制造商开发的硬件描述语言的优点,于93年形成了标年形成了标准版本(准版本(IEEE.st
3、d_1164)。)。1995年,我国国家技术监督局推荐年,我国国家技术监督局推荐VHDL做为电子设计自动化做为电子设计自动化硬件描述语言的国家标准。硬件描述语言的国家标准。VHDL 概述:概述:VHDL VHSIC Hardwarter Description Language Very High speed integrated circuitVHSIC 覆盖面广,系统硬件描述能力强,是一个多层次的硬件描述语言覆盖面广,系统硬件描述能力强,是一个多层次的硬件描述语言;VHDL语言具有良好的可读性,既可以被计算机接受,也容易被人们语言具有良好的可读性,既可以被计算机接受,也容易被人们所理解所理
4、解;VHDL语言可以与工艺无关编程语言可以与工艺无关编程;VHDL语言已做为一种语言已做为一种IEEE的工业标准,便于使用、交流和推广。的工业标准,便于使用、交流和推广。VHDL语言的不足之处语言的不足之处:VHDL优点优点:设计的最终实现取决于针对目标器件的编程器,工具的不同会导致综设计的最终实现取决于针对目标器件的编程器,工具的不同会导致综合质量不一样。合质量不一样。3.1.1 标识符标识符(Identifiers)要求:要求:l 首字符必须是字母首字符必须是字母l 末字符不能为下划线末字符不能为下划线l 不允许出现两个连续的下划线不允许出现两个连续的下划线l 不区分大小写不区分大小写l
5、VHDL定义的保留字(关键字),不能用作标识符定义的保留字(关键字),不能用作标识符l 标识符字符最长可以是标识符字符最长可以是32个字符。个字符。注释由两个连续的虚线()引导。注释由两个连续的虚线()引导。3.1 VHDL语言基础语言基础 标识符用来定义常数、变量、信号、端口、子程序或参数的名字,标识符用来定义常数、变量、信号、端口、子程序或参数的名字,由字母由字母(AZ,az)、数字、数字(09)和下划线和下划线(_)字符组成。字符组成。例如:例如:关键字(保留字):关键字(保留字):关键字(关键字(keyword)是)是VHDL中具有特别含义的单词,只中具有特别含义的单词,只能做为固定的
6、用途,用户不能用其做为标识符。能做为固定的用途,用户不能用其做为标识符。3.1.2 数据对象数据对象(Date Objects)常量常量ConstantConstant bus_width:integer:=8;-定义总线宽度为常数定义总线宽度为常数8 数据对象包括常量、变量、信号和文件四种类型。数据对象包括常量、变量、信号和文件四种类型。常量是对某一常量名赋予一个固定的值,而且只能赋值一次。通常赋常量是对某一常量名赋予一个固定的值,而且只能赋值一次。通常赋值在程序开始前进行,该值的数据类型则在说明语句中指明。值在程序开始前进行,该值的数据类型则在说明语句中指明。Constant 常数名:数据
7、类型:表达式常数名:数据类型:表达式Constant Vcc:real:=5.0;-定义定义Vcc的数据类型是实数,赋值为的数据类型是实数,赋值为5.0V常量所赋的值应和定义的数据类型一致;常量所赋的值应和定义的数据类型一致;常量在程序包、实体、构造体或进程的说明性区域内必须加以说明。定义在程序包常量在程序包、实体、构造体或进程的说明性区域内必须加以说明。定义在程序包内的常量可供所含的任何实体、构造体所引用,定义在实体说明内的常量只能在该内的常量可供所含的任何实体、构造体所引用,定义在实体说明内的常量只能在该实体内可见,定义在进程说明性区域中的常量只能在该进程内可见。实体内可见,定义在进程说明
8、性区域中的常量只能在该进程内可见。Variable 变量名:数据类型变量名:数据类型 :初始值初始值;Variable count:integer 0 to 255:=20;-定义定义count整数变量,变化整数变量,变化 范围范围0255,初始值为,初始值为20。变量变量Variable 变量只能在进程语句、函数语句和过程语句结构中使用。变变量只能在进程语句、函数语句和过程语句结构中使用。变量的赋值是直接的,非预设的,分配给变量的值立即成为当前值,量的赋值是直接的,非预设的,分配给变量的值立即成为当前值,变量不能表达变量不能表达“连线连线”或存储元件,不能设置传输延迟量。或存储元件,不能设置
9、传输延迟量。变量赋值语句:变量赋值语句:目标变量名目标变量名 :=表达式表达式;变量定义语句:变量定义语句:x:=10.0;-实数变量赋值为实数变量赋值为10.0Y:=1.5+x;-运算表达式赋值,注意表达式必须与目标变量的数据类型相同运算表达式赋值,注意表达式必须与目标变量的数据类型相同A(3 to 6):=(“1101”);-位矢量赋值位矢量赋值Signal 信号名信号名:数据类型数据类型:初始值初始值Signal clock:bit:=;-定义时钟信号类型,初始值为定义时钟信号类型,初始值为0 信号信号Signal 信号表示逻辑门的输入或输出,类似于连接线,也可以表达存信号表示逻辑门的输
10、入或输出,类似于连接线,也可以表达存储元件的状态。信号通常在构造体、程序包和实体中说明。储元件的状态。信号通常在构造体、程序包和实体中说明。信号定义语句:信号定义语句:Signal count:BIT_VECTOR(3 DOWNTO 0);-定义定义count为为4位位矢量位位矢量信号赋值语句:信号赋值语句:目标信号名目标信号名 =表达式表达式;x=9;Z=x after 5 ns;-在在5ns后将后将x的值赋予的值赋予z3.1.2 数据类型数据类型l 布尔:布尔:(Boolean)l 位位:(Bit)TYPE BIT IS(0,1);-取值为取值为0和和1,用于逻辑运算,用于逻辑运算 l 位
11、矢量位矢量:(Bit_Vector)TYPE BIT_VECTOR IS ARRAY(Natural range)OF BIT;-基于基于Bit类型的数类型的数 组,用于逻辑运算组,用于逻辑运算 SIGNAL a:Bit_Vector(0 TO 7);SIGNAL a:Bit_Vector(7 DOWNTO 0)VHDL的预定义数据类型的预定义数据类型 在在VHDL标准程序包标准程序包STANDARD中定义好,实际使用过程中,已中定义好,实际使用过程中,已自动包含进自动包含进VHDL源文件中,不需要通过源文件中,不需要通过USE语句显式调用。语句显式调用。TYPE BOOLEAN IS(FAL
12、SE,TRUE);-取值为取值为FALSE和和TRUE,不是数值,不,不是数值,不 能运算,一般用于关系运算符能运算,一般用于关系运算符l 整数:整数:(Integer)取值范围取值范围 -(231-1)(231-1),可用,可用32位有符号的二进制数表示位有符号的二进制数表示 variable a:integer range-63 to 63 在实际应用中,在实际应用中,VHDL仿真器将仿真器将Integer做为有符号数处理,而做为有符号数处理,而VHDL综合器将综合器将Integer做为无符号数处理;做为无符号数处理;要求用要求用RANGE子句为所定义的数限定范围,以便根据范围来决定表示此
13、子句为所定义的数限定范围,以便根据范围来决定表示此信号或变量的二进制数的位数。信号或变量的二进制数的位数。l 字符:字符:(Character)TYPE CHARACTER IS(NUL,SOH,STX,!,);-通常用通常用引起引起 来,区分大小写;来,区分大小写;l 字符串:字符串:(String)VARIABLE string_var:STRING(1 TO 7);string_var:=“A B C D”;-通常用通常用“”“”引起来,区分大小写;引起来,区分大小写;l 实数:实数:(Real)取值范围取值范围 -1.0E38+1.0E38,仅用于仿真不可综合,仅用于仿真不可综合 1.
14、0 -十进制浮点数十进制浮点数 843.6e+4 -八进制浮点数八进制浮点数 43.6E-4 -十进制浮点数十进制浮点数l 时间:时间:(Time)物理量数据,完整的包括整数和单位两个部分物理量数据,完整的包括整数和单位两个部分,用至少一个空格隔,用至少一个空格隔开,仅用于仿真不可综合;开,仅用于仿真不可综合;fs,ps,ns,us,ms,sec,min,hrl 错误等级错误等级(Severity Level):表示系统状态,表示系统状态,仅用于仿真不可综合;仅用于仿真不可综合;TYPE severity_level IS(NOTE、WARNING、ERROR、FAILURE);IEEE预定义
15、标准逻辑位与矢量预定义标准逻辑位与矢量l 标准逻辑位标准逻辑位(Std_Logic)l 标准逻辑位矢量标准逻辑位矢量(Std_Logic_vector)基于基于Std_Logic类型的数组;类型的数组;使用使用Std_Logic和和 Std_Logic_Vector要调用要调用IEEE库中的库中的Std_Logic_1164 程序包;就综合而言,能够在数字器件中实现的是程序包;就综合而言,能够在数字器件中实现的是“、0、1、Z”四种状态。四种状态。在条件语句中,必须要全面考虑在条件语句中,必须要全面考虑Std_Logic的所有可能取值情况,否则综的所有可能取值情况,否则综合器可能会插入不希望的
16、锁存器。合器可能会插入不希望的锁存器。U:Uninitialized;X:Forcing Unkown;0:Forcing 0 1:Forcing 1 Z:High Impedance W:Weak UnknownL:Weak 0 H:Weak 1 :Dont care枚举:枚举:type states is(idle,decision,read,write);type boolean is(false,true);type bit is(0,1);数组:数组:type value_type is array(127 downto 0)of integer;type matrix_type i
17、s array(0 to 15,0 to 31)of std_logic;用户自定义用户自定义l TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义 OF 基本数据类型基本数据类型 或或 TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义l SUBTYPE 子类型名子类型名 IS 基本数据类型定义基本数据类型定义 RANGE 约束范围约束范围subtype digit is integer range 0 to 9;3.1.3 数据类型转换数据类型转换VHDL为强定义类型语言,不同类型的数据不能进行运算和直接赋值。为强定义类型语言,不同类型的数据不能进行运算和直接赋值。
18、l 类型标记法类型标记法Variable A:integer;Variable B:real;A=integer(B);B=real(A);l 函数法函数法Conv_interger(A);-由由std_logic转换为转换为integer型,在型,在std_logic_unsigned包。包。l 常数转换法常数转换法/常量转换法常量转换法Type conv_table is array(std_logic)of bit;Constant table:conv_table:=(0|L=0,1|H=1,others=0);Signal a:bit;signal b:std_logic;A=tab
19、le(b);-将将std_logic型转换为型转换为bit型型具有转换表性质的常数具有转换表性质的常数 在在“STD_LOGIC_1164”、“STD_LOGIC_ARITH”和和 “STD_LOGIC_UNSIGNED”的程序包中提供的数据类型变换函数。的程序包中提供的数据类型变换函数。属性属性属性提供的是关于信号、类型等的指定特性。属性提供的是关于信号、类型等的指定特性。event:若属性对象有事件发生,则生成布尔值若属性对象有事件发生,则生成布尔值“true”,常用来检查,常用来检查时钟边沿是否有效。时钟边沿是否有效。上升沿:上升沿:Clock EVENT AND Clock=1 ran
20、ge:生成一个限制性数组对象的范围生成一个限制性数组对象的范围left:生成数据类型或数据子类型的左边界值;生成数据类型或数据子类型的左边界值;right,high,low,lengthrange:“0 to n”;reverse_range:“n downto 0”运算符运算符l 算术运算符:算术运算符:,*,/,MOD,REM,SLL,SRL,SLA,SRA,ROL,ROR,*,ABSl 关系运算符:关系运算符:,/,=l 逻辑运算符:逻辑运算符:AND,OR,NAND,NOR,XNOR,NOT,XORl 赋值运算符:赋值运算符:l 其他运算符:其他运算符:,&并置操作符并置操作符 SIG
21、NAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d:STD_LOGIC_VECTOR(1 DOWNTO 0);.a =1 0 d(1)1 ;-元素与元素并置,并置后的数组长度为元素与元素并置,并置后的数组长度为4.IF a d=101011 THEN.-在在IF条件句中可以使用并置符条件句中可以使用并置符 运算符优先级别运算符优先级别逻辑、算术运算符(逻辑、算术运算符(NOT,*,ABS)乘法运算符(乘法运算符(/,MOD,REM,*)正负运算符:,正负运算符:,加减、并置运算符:,加减、并置运算符:,&关系运算符:,关系运算符:,/,=逻辑运算符:逻辑运算
22、符:AND,OR,NAND,NOR,XNOR,NOT,XOR 移位运算符的左边为一维数组,其类型必须是移位运算符的左边为一维数组,其类型必须是BIT或或BOOLEAN,右边必须是整数移位次数为整数的绝对值。右边必须是整数移位次数为整数的绝对值。移位运算符操作示意图移位运算符操作示意图“1100”SLL1=“1000”“1100”SRL1=“0110”“1100”SLA1=“1000”“1100”SRA1=“1110”“1100”ROL1=“1001”“1100”ROR1=“0110”SLL:将位向量左移,右边移空位补零;:将位向量左移,右边移空位补零;SRL:将位向量右移,左边移空位补零;:将
23、位向量右移,左边移空位补零;SLA:将位向量左移,右边第一位的数值保持原值不变;:将位向量左移,右边第一位的数值保持原值不变;SRA:将位向量右移,左边第一位的数值保持原值不变;:将位向量右移,左边第一位的数值保持原值不变;ROL和和ROR:自循环左右移位。:自循环左右移位。取余运算(取余运算(a REM b)的符号与)的符号与a相同,其绝对值小于相同,其绝对值小于b的绝对值。的绝对值。例如:(例如:(-5)REM 2=(-1)5 REM 2=(1)取模运算(取模运算(a MOD b)的符号与)的符号与b相同,其绝对值小于相同,其绝对值小于b的绝对值。的绝对值。例如:(例如:(-5)MOD 2
24、=1 5 MOD(-2)=(-1)3.2 VHDL基本结构基本结构 实体(实体(Entity):描述所设计的系统的外部接口信号,定义电路设计中):描述所设计的系统的外部接口信号,定义电路设计中所有的输入和输出端口;所有的输入和输出端口;结构体结构体(Architecture):描述系统内部的结构和行为;:描述系统内部的结构和行为;包集合包集合(Package):存放各设计模块能共享的数据类型、常数和子程序等;:存放各设计模块能共享的数据类型、常数和子程序等;配置配置(Configuration):指定实体所对应的结构体;:指定实体所对应的结构体;库库(Library):存放已经编译的实体、结构
25、体、包集合和配置。:存放已经编译的实体、结构体、包集合和配置。LIBRARY IEEE;-库、程序包的说明调用库、程序包的说明调用 USE IEEE.Std_Logic_1164.ALL;ENTITY FreDevider IS -实体声明实体声明PORT(Clock:IN Std_logic;Clkout:OUT Std_logic);END;ARCHITECTURE Behavior OF FreDevider IS -结构体定义结构体定义SIGNAL Clk:Std_Logic;BEGIN PROCESS(Clock)BEGIN IF rising_edge(Clock)THEN Clk
展开阅读全文