数字电路及系统设计第10章.ppt

上传人:wuy****n92 文档编号:88507660 上传时间:2023-04-26 格式:PPT 页数:122 大小:854KB
返回 下载 相关 举报
数字电路及系统设计第10章.ppt_第1页
第1页 / 共122页
数字电路及系统设计第10章.ppt_第2页
第2页 / 共122页
点击查看更多>>
资源描述

《数字电路及系统设计第10章.ppt》由会员分享,可在线阅读,更多相关《数字电路及系统设计第10章.ppt(122页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 用用VHDLVHDL进行数字系统设计进行数字系统设计总目录总目录退出退出2前言前言lEDAEDAElectronic Design AutomationElectronic Design Automation(电子设计自动化)(电子设计自动化)lVHICVHICVery High speed Integrated CircuitVery High speed Integrated CircuitlHDL-Hardware Description LanguageHDL-Hardware Description LanguagelVHDL-VHIC HDLVHDL-VHIC HDLl电子设计

2、自动化的关键技术电子设计自动化的关键技术 用形式化方法描述数字系统的硬件电路。用形式化方法描述数字系统的硬件电路。l8080年代后期美国国防部开发出年代后期美国国防部开发出VHDLVHDL,19931993年推出修订版年推出修订版lVerilog HDL 1993Verilog HDL 1993年年 与与C C接近接近l9595年以后国内开展这方面工作年以后国内开展这方面工作总目录总目录退出退出3数字系统硬件设计概述数字系统硬件设计概述传统的硬件设计方法传统的设计方法是自下而上的设计方法传统的设计方法是自下而上的设计方法采用通用的元器件采用通用的元器件后期进行仿真,浪费大,设计周期长后期进行仿

3、真,浪费大,设计周期长主要设计文件是电路原理图,可读性差,文件量大主要设计文件是电路原理图,可读性差,文件量大总目录总目录退出退出4图图 11-9 测量频率电路图测量频率电路图 总目录总目录退出退出5图 11-4 定时电路原理图总目录总目录退出退出6数字系统硬件设计概述数字系统硬件设计概述VHDLVHDL语言设计方法语言设计方法VHDL VHDL 是硬件描述语言,是描述硬件电路的功能、信号连接关系、定时关是硬件描述语言,是描述硬件电路的功能、信号连接关系、定时关系的语言。系的语言。采用自上而下的设计方法采用自上而下的设计方法早期仿真,提高了资源利用率,设计周期短早期仿真,提高了资源利用率,设计

4、周期短v行为级仿真行为级仿真vRTLRTL级仿真级仿真v门级仿真门级仿真降低设计难度降低设计难度主要设计文件是程序,可读性好,文件量小,可移植性好主要设计文件是程序,可读性好,文件量小,可移植性好 总目录总目录退出退出7自上至下设计系统硬件过程自上至下设计系统硬件过程规格设计规格设计行为级描述行为级描述行为级仿真行为级仿真RTL级描述级描述RTL级仿真级仿真逻辑综合、优化逻辑综合、优化门级仿真、检查门级仿真、检查输出门级网表输出门级网表总目录总目录退出退出8数字系统硬件设计概述数字系统硬件设计概述利用利用VHDL语言设计电路的优点语言设计电路的优点设计技术齐全,方法灵活设计技术齐全,方法灵活

5、行为级设计设计数学模型行为级设计设计数学模型 RTL级设计级设计 生成电路生成电路 结构化设计生成电路,与原理图设计方法相似结构化设计生成电路,与原理图设计方法相似描述功能强描述功能强设计电路与工艺无关设计电路与工艺无关成果易于共享成果易于共享总目录总目录退出退出9VHDL 语言描述的范畴语言描述的范畴 ASIC电路设计电路设计 局部电路的设计和仿真局部电路的设计和仿真 系统的硬件、软件的协同设计系统的硬件、软件的协同设计数字系统硬件设计概述数字系统硬件设计概述总目录总目录退出退出10VHDLVHDL语言的基本结构语言的基本结构 一般的高级语言:一般的高级语言:描述算法运算,是控制流,目的是实

6、现过程控制。描述算法运算,是控制流,目的是实现过程控制。VHDLVHDL语言:语言:描述具体的数字系统或数字电路的功能,目的是生成硬件电描述具体的数字系统或数字电路的功能,目的是生成硬件电路,采用的主要是并发语言。路,采用的主要是并发语言。总目录总目录退出退出11VHDLVHDL语言的基本结构语言的基本结构VHDL 语言的基本结构:语言的基本结构:库说明包集合实体构造体(配置)库说明包集合实体构造体(配置)库库:用来存放已经编译的实体、构造体、包集合和配置。:用来存放已经编译的实体、构造体、包集合和配置。库一般可由用户产生或者由库一般可由用户产生或者由ASICASIC芯片制造商提供。芯片制造商

7、提供。包集合包集合:存放各设计模块都能共享的数据类型、常数和子程序。存放各设计模块都能共享的数据类型、常数和子程序。实体实体:系统的外部接口关系。:系统的外部接口关系。构造体构造体:描述系统内部的结构和行为。:描述系统内部的结构和行为。配置配置:用于从库中选取所需的单元,来组成系统设计的不同版本。:用于从库中选取所需的单元,来组成系统设计的不同版本。总目录总目录退出退出12VHDLVHDL语言的基本单元语言的基本单元VHDLVHDL语言的基本单元语言的基本单元 一:一:VHDLVHDL语言描述方法语言描述方法 电原理图的描述方式,其中电原理图的描述方式,其中a,ba,b是输入,是输入,c c是

8、输出,是输出,C=ABC=AB。如果用如果用VHDL VHDL 语言来语言来 描述此电路:描述此电路:实体描述输入、输出,实体描述输入、输出,构造体描述功能。构造体描述功能。实体构造体基本单元实体构造体基本单元 总目录总目录退出退出13二:实体说明二:实体说明 ENTITY ENTITY 实体名字实体名字 IS IS PORT(PORT(端口名,端口名,););END END 实体名;实体名;说明:说明:1 1:实体名可用英文字母、数字、下划线表示:实体名可用英文字母、数字、下划线表示 ,名字开头,名字开头 只能为英文字母,结尾不能用下划线。只能为英文字母,结尾不能用下划线。2 2:PORT(

9、PORT(端口名:方向端口名:方向 数据类型);数据类型);端口名与实体名命名规则相同。端口名与实体名命名规则相同。方向:方向:IN IN 表示输入表示输入 OUT OUT 表示输出表示输出 INOUT INOUT 表示输入输出表示输入输出 BUFFER BUFFER 表示输出端带有反馈类型。表示输出端带有反馈类型。总目录总目录退出退出14数据类型:与一般高级语言类似,有许多种,但一般常使用两种。数据类型:与一般高级语言类似,有许多种,但一般常使用两种。BIT BIT:位:位 BIT_VECTOR :BIT_VECTOR :位矢量位矢量表示数据总线表示数据总线 D0-D7 D0-D7的数据类型

10、的数据类型 BIT_VECTOR(7 DOWNTO 0);BIT_VECTOR(7 DOWNTO 0);总目录总目录退出退出15例:例:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY and2 IS PORT(a,b:IN BIT;c:OUT BIT);END and2;ARCHITECTURE rtl OF and2 IS BEGIN c总目录总目录退出退出16上节课主要内容复习上节课主要内容复习VHDL 语言的基本结构:语言的基本结构:库说明包集合实体构造体库说明包集合实体构造体库库:用来存放已经编译的实体、构造体、包集合和配置。:用来存放已

11、经编译的实体、构造体、包集合和配置。库一般可由用户产生或者由库一般可由用户产生或者由ASICASIC芯片制造商提供。芯片制造商提供。包集合包集合:存放各设计模块都能共享的数据类型、常数和子程序。存放各设计模块都能共享的数据类型、常数和子程序。实体实体:系统的外部接口关系。:系统的外部接口关系。构造体构造体:描述系统内部的结构和行为。:描述系统内部的结构和行为。总目录总目录退出退出17上节课主要内容复习上节课主要内容复习基本设计单元基本设计单元l实体说明:接口信号实体说明:接口信号 ENTITY and2 IS ENTITY and2 IS PORT(a,b:IN BIT;PORT(a,b:IN

12、 BIT;c:OUT BIT)c:OUT BIT)END and2;END and2;l 构造体:内部逻辑和时序构造体:内部逻辑和时序 ARCHITECTURE rtl OF and2 IS ARCHITECTURE rtl OF and2 IS BEGIN BEGIN c=a AND b;c 总目录总目录退出退出18 STD_LOGIC STD_LOGIC_VECTOR 1993年制定出年制定出IEEE STD1164 标准。以电路需要,该类型数据可取如下标准。以电路需要,该类型数据可取如下9种不同的值。种不同的值。U 初始值初始值 X X是不定的值,强不确定是不定的值,强不确定 0 强强0

13、 1 强强1 Z 高阻高阻 W 弱不确定弱不确定 L 弱弱0 H 弱弱1 不可能情况不可能情况总目录总目录退出退出19VHDL描述数字系统的基本方法描述数字系统的基本方法三:构造体三:构造体 构造体用来描述实体的功能构造体用来描述实体的功能 ARCHITCTURE ARCHITCTURE 构造体名构造体名 OF OF 实体名实体名 IS IS 定义语句:内部信号,常数,数据类型,函数等的定义定义语句:内部信号,常数,数据类型,函数等的定义 BEGIN BEGIN 并发语句并发语句 END END 构造体名;构造体名;构造体的名称可由设计者命名。通常根据描述的对象把构造体命构造体的名称可由设计者

14、命名。通常根据描述的对象把构造体命 名为名为behavbehav(behaviorbehavior)行为描述,)行为描述,rtlrtl寄存器传输描述,寄存器传输描述,structstruct (structuralstructural)结构描述。)结构描述。总目录总目录退出退出20总目录总目录退出退出21常数、变量、信号所描述的对象常数、变量、信号所描述的对象 在在VHDL VHDL 语言中,可以赋予一个值的的对象就称为客体或对象。语言中,可以赋予一个值的的对象就称为客体或对象。对象主要包括以下对象主要包括以下3 3种:种:信号信号(SIGNAL)(SIGNAL):对应物理意义上是实际电路连接

15、线。:对应物理意义上是实际电路连接线。变量变量(VARIABLE)(VARIABLE):相当于暂存寄存器,变量值不是最终的结果。:相当于暂存寄存器,变量值不是最终的结果。常数常数(CONSTANTCONSTANT):如电源、地等,用来描述固定的值。:如电源、地等,用来描述固定的值。总目录总目录退出退出22常数、变量、信号所描述的对象常数、变量、信号所描述的对象1 1、常数(、常数(CONSTANT)CONSTANT)格式:格式:CONSTANT CONSTANT 常数名:数据类型:表达式;常数名:数据类型:表达式;例:例:CONSTANT VCC:REAL:=5.0;CONSTANT VCC:

16、REAL:=5.0;CONSTANT DALY:TIME:=100ns;CONSTANT DALY:TIME:=100ns;CONSTANT FBUS:BIT_VECTOR:=“1010”CONSTANT FBUS:BIT_VECTOR:=“1010”CONSTANT G1 CONSTANT G1:BITBIT:1;1;数据类型和表达式表示的数据类型应该一致。数据类型和表达式表示的数据类型应该一致。表示是位信息,表示是位信息,而而“”“”表示的是位矢量信息。表示的是位矢量信息。总目录总目录退出退出23常数、变量、信号所描述的对象常数、变量、信号所描述的对象 2 2、变量(、变量(VARIABL

17、E)VARIABLE)变量是局部变量,只能在进程、过程、函数中使用和定义。变量是局部变量,只能在进程、过程、函数中使用和定义。格式:格式:VARIABLE VARIABLE 变量名:数据类型变量名:数据类型 约束条件:表达式;约束条件:表达式;例:例:VARIABLE x,y:INTEGER VARIABLE x,y:INTEGER VARIABLE x,y:INTEGER RANGE 0 TO 255:=10 VARIABLE x,y:INTEGER RANGE 0 TO 255:=10 在程序中,变量的赋值是立即生效的,不能产生附加延时。在程序中,变量的赋值是立即生效的,不能产生附加延时。

18、tmp1:=tmp2+tmp3 AFTER 10ns tmp1:=tmp2+tmp3 AFTER 10ns 总目录总目录退出退出24常数、变量、信号所描述的对象常数、变量、信号所描述的对象3 3、信号、信号(SIGNAL)(SIGNAL)信号量是全局变量,只能在构造体中定义,而不能在进程、信号量是全局变量,只能在构造体中定义,而不能在进程、过程、函数中定义。过程、函数中定义。格式:格式:SIGNAL SIGNAL 信号名:数据类型信号名:数据类型 约束条件:表达式;约束条件:表达式;SIGANL ground:BIT:=0;SIGANL ground:BIT:=0;SIGANL x,y:INT

19、EGER RANGE 0 TO 255:=10;SIGANL x,y:INTEGER RANGE 0 TO 255:=10;总目录总目录退出退出25常数、变量、信号所描述的对象常数、变量、信号所描述的对象4 4、信号量和变量的区别、信号量和变量的区别信号量是全局量,而变量是局部量。信号量是全局量,而变量是局部量。信号赋值用信号赋值用“=”,“=”,而变量用而变量用“:”。信号和变量可以相互代入。信号和变量可以相互代入。如:如:a a 是变量,是变量,b b是信号,则是信号,则a:=b;b=a;a:=b;b总目录总目录退出退出26属性描述属性描述描述时钟边沿的属性描述时钟边沿的属性EVENTEV

20、ENT属性属于信号类属性。描述信号边沿出现的时刻属性属于信号类属性。描述信号边沿出现的时刻如:时钟上升沿如:时钟上升沿IF(clkEVENT AND clk=1)THEN q总目录总目录退出退出27例:设计一个2选1的数据选择器总目录总目录退出退出282选1的数据选择器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux IS PORT(D0,D1,sel:IN BIT;F:OUT BIT);END mux;ARCHITECTURE rtl OF mux IS SIGNAL tmp1,tmp2:BIT;BEGIN tmp1=D1 AND sel

21、;tmp2=D0 AND(NOT sel);F 总目录总目录退出退出29VHDLVHDL基本设计单元构成基本设计单元构成一个完整的设计单元一个完整的设计单元 LIBRARY LIBRARY IEEEIEEE;库库 USE IEEE.USE IEEE.STD_LOGIC_1164STD_LOGIC_1164.ALL;.ALL;包集合包集合 ENTITY ENTITY 实体名字实体名字 IS IS PORT(PORT(端口名,端口名,););END END 实体名;实体名;ARCHITCTURE ARCHITCTURE 构造体名构造体名 OF OF 实体名实体名 IS IS 定义语句:信号常数,数

22、据类型等定义语句:信号常数,数据类型等 BEGIN BEGIN 并发语句并发语句 END END 构造体名;构造体名;总目录总目录退出退出302选1的数据选择器ENTITY mux IS PORT(D0,D1,sel:IN BIT;F:OUT BIT);END mux;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ARCHITECTURE rtl OF mux IS SIGNAL tmp1,tmp2:BIT;BEGIN tmp1=D1 AND sel;tmp2=D0 AND(NOT sel);F 总目录总目录退出退出31VHDLVHDL基本设计单元构成基本设

23、计单元构成一个完整的设计单元一个完整的设计单元 LIBRARY LIBRARY IEEEIEEE;库库 USE IEEE.USE IEEE.STD_LOGIC_1164STD_LOGIC_1164.ALL;.ALL;包集合包集合 ENTITY ENTITY 实体名字实体名字 IS IS PORT(PORT(端口名,端口名,););END END 实体名;实体名;ARCHITCTURE ARCHITCTURE 构造体名构造体名 OF OF 实体名实体名 IS IS 定义语句:信号常数,数据类型等定义语句:信号常数,数据类型等 BEGIN BEGIN 并发语句并发语句 END END 构造体名;构

24、造体名;总目录总目录退出退出32频率测量电路频率测量电路总目录总目录退出退出33频率测量电路框图频率测量电路框图总目录总目录退出退出34构造体的子结构描述构造体的子结构描述构造体的子结构描述构造体的子结构描述 三种子结构描述语句:三种子结构描述语句:BLOCK BLOCK 块块 PROCESS PROCESS 进程进程 SUBPROGRAM SUBPROGRAM 子程序子程序(PROCEDURE PROCEDURE、FUNCTION FUNCTION)总目录总目录退出退出35块(块(BLOCKBLOCK)语句结构描述语句结构描述1 1 块(块(BLOCKBLOCK)语句结构语句结构 块结构名:

25、块结构名:BLOCK BLOCK BEGIN BEGIN 并发语句;并发语句;:END BLOCK END BLOCK 块结构名;块结构名;总目录总目录退出退出36ARCHITECTURE rtl OF mux2 IS SINGAL tmp1,tmp2:BIT;BEGIN muxB:BLOCK BEGIN tmp1=d1 AND sel;tmp2=d0 AND (NOT sel);F总目录总目录退出退出37块结构块结构ARCHITECTURE ARCHITECTURE BEGINBEGIN black1black1:BLOCK BLOCK BEGIN BEGIN 并发语句;并发语句;:END

26、BLOCK black1 END BLOCK black1;black2 black2:BLOCK BLOCK BEGIN BEGIN 并发语句;并发语句;:END BLOCK black2 END BLOCK black2;black3black3:BLOCK BLOCK BEGIN BEGIN 并发语句;并发语句;:END BLOCK black3 END BLOCK black3;总目录总目录退出退出38进程(进程(PROCESSPROCESS)语句结构描述)语句结构描述2 2 进程(进程(PROCESSPROCESS)语句的结构)语句的结构 进程名进程名:PROCESS PROCESS

27、(信号(信号1 1,信号,信号2 2,)-敏感量敏感量 BEGIN BEGIN 顺序语句;顺序语句;:END PROCESS END PROCESS 进程名进程名;进程中语句的顺序执行:进程中语句的顺序执行:进程内的顺序性;进程内的顺序性;进程间的并发性进程间的并发性进程的启动和执行:敏感量变化启动进程执行进程的启动和执行:敏感量变化启动进程执行 总目录总目录退出退出39进程间的并发性进程间的并发性process1 PROCESSprocess1 PROCESS(信号(信号1 1,信号,信号2 2,)BEGIN BEGIN 顺序语句;顺序语句;:END PROCESS process1 END

28、 PROCESS process1;process2 PROCESSprocess2 PROCESS(信号(信号6 6,信号,信号7 7,)BEGIN BEGIN 顺序语句;顺序语句;:END PROCESS process2 END PROCESS process2;F=a OR b;F总目录总目录退出退出40进程中定义变量进程中定义变量ARCHITECTURE rtl OF shff1 IS BEGINPROCESS(clk)VARIABLE z:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF(clkEVENT AND clk=1)THEN z(0):=a;z(1

29、):=z(0);z(2):=z(1);z(3):=z(2);q总目录总目录退出退出41构造体中定义信号构造体中定义信号ARCHITECTURE rtl OF shff IS SIGNAL z:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk)BEGIN IF(clkEVENT AND clk=1)THEN z(0)=a;z(1)=z(0);z(2)=z(1);z(3)=z(2);q总目录总目录退出退出42进程举例进程举例ARCHITECTURE rtl OF shff IS SIGNAL z:STD_LOGIC_VECTOR(3 DOWNTO 0);B

30、EGINPROCESS(clk)BEGIN IF(clkEVENT AND clk=1)THEN z(0)=a;z(1)=z(0);z(2)=z(1);z(3)=z(2);q=z(3);END IF;END PROCESS;END rtl;ARCHITECTURE rtl OF shff1 IS BEGINPROCESS(clk)VARIABLE z:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF(clkEVENT AND clk=1)THEN z(0):=a;z(1):=z(0);z(2):=z(1);z(3):=z(2);q总目录总目录退出退出43D触发器的设计触

31、发器的设计ENTITY dff1 ISPORT(clk,d,reset:INSTD_LOGIC;q:out STD_LOGIC);END dff1;ARCHITECTURE rtl OF dff1 IS BEGINPROCESS(clk,reset)BEGINIF(reset=0)THEN q=0;ELSIF(clkEVENT AND clk=1)THEN q总目录总目录退出退出44序列信号检测器的设计序列信号检测器的设计 用用T T触发器构成序列信号检测器触发器构成序列信号检测器 总目录总目录退出退出45ENTITY tff2 ISPORT(clk,x,reset:IN STD_LOGIC;

32、q,F :OUT STD_LOGIC);END tff2;ARCHITECTURE rtl OF tff2 IS BEGINPROCESS(clk,reset)BEGINIF(reset=0)THEN q=0;ELSIF(clkEVENT AND clk=1)THEN q=x xor q;END IF;F总目录总目录退出退出46小结小结VHDL VHDL 语言的基本结构语言的基本结构库说明包集合实体构造体库说明包集合实体构造体构造体中的子结构构造体中的子结构BLOCK BLOCK 块块PROCESS PROCESS 进程进程进程的定义及进程的执行进程的定义及进程的执行进程间并发进程间并发进程内

33、顺序执行进程内顺序执行 总目录总目录退出退出47 作业作业 1、用、用VHDL语言设计一个一位全加器。语言设计一个一位全加器。2、电路如图所示,用、电路如图所示,用VHDL语言描述该电路。语言描述该电路。总目录总目录退出退出48信号信号(SIGNAL)(SIGNAL)、变量变量(VARIABLE)(VARIABLE)、常数常数(CONSTANTCONSTANT)在在VHDLVHDL语言中信号、变量、常数都要指定数据类型。语言中信号、变量、常数都要指定数据类型。VHDL VHDL语言定义数据类型比较严格,不同数据类型长度不同,也不语言定义数据类型比较严格,不同数据类型长度不同,也不能互相代入。数

34、据类型可以自定义,使用相对灵活。能互相代入。数据类型可以自定义,使用相对灵活。标准的数据类型标准的数据类型用户定义的数据类型用户定义的数据类型 总目录总目录退出退出49一、标准数据类型(自己看书)一、标准数据类型(自己看书)1:整数:整数 2:实数:实数 3:位:位 4:位矢量:位矢量 5:布尔量:布尔量 6:字符:字符 7:字符串:字符串 8:时间:时间 9:错误等级:错误等级 10:大于等于零的整数:大于等于零的整数总目录总目录退出退出50二:用户定义的数据类型二:用户定义的数据类型 1:格式:格式 TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义 2:定义种类:定义种类 枚

35、举类型枚举类型 整数整数 实数实数 数组数组 存取存取 文件文件 记录记录 时间时间总目录总目录退出退出51三:数据子类型定义三:数据子类型定义 1:格式:格式 SUBTYPE 子类型名子类型名 IS 数据类型名数据类型名 约束条件;约束条件;2:例子:例子 SUBTYPE digit IS INTEGER 0 TO 9;SUBTYPE iobus IS STD_LOGIC_VECTOR(7 DOWNTO 0);总目录总目录退出退出52SINGAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);“1010”为为a信号上的值,则信号上的值,则 a(3)=1;a(2)=0;a(1)

36、=1;a(0)=0 SINGAL b:STD_LOGIC_VECTOR(0 TO 3);“1101”为为b信号上的值,则信号上的值,则 b(3)=1;b(2)=0;b(1)=1;b(0)=1总目录总目录退出退出53 ENTITY count6 IS PORT(reset,clk:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END count6;ARCHITECTURE rtl OF count6 IS BEGIN PROCESS(clk)VARIABLE q6:INTEGER;BEGIN IF(reset=0)THEN q6:=0;ELSIF

37、(clkEVENT AND clk=1)THEN IF(q6=5)THEN q6:=0;ELSE q6:=q6+1;END IF;END IF;q总目录总目录退出退出54VHDLVHDL语言中的运算符号语言中的运算符号 VHDL VHDL中的运算操作符有:中的运算操作符有:逻辑运算逻辑运算:与、或、非、与非、或非、异或与、或、非、与非、或非、异或关系运算、关系运算、/、=算术运算算术运算+、*、/、MODMOD、RMERME、*、ASBASB、并置运算并置运算&总目录总目录退出退出55例:例:SINGAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);SINGAL a:STD_

38、LOGIC_VECTOR(3 DOWNTO 0);SINGAL b:STD_LOGIC_VECTOR(2 DOWNTO 0);SINGAL b:STD_LOGIC_VECTOR(2 DOWNTO 0);若取若取a=“1011”,b=“111”;VHDLa=“1011”,ba,ba,而这实际是不正而这实际是不正确的,所以在进行比较运算是数据定义类型的位数应该相同。确的,所以在进行比较运算是数据定义类型的位数应该相同。用并置方法可以解决此问题。用并置方法可以解决此问题。SINGAL c:STD_LOGIC_VECTOR(3 DOWNTO 0);SINGAL c:STD_LOGIC_VECTOR(3

39、 DOWNTO 0);c”0111”c”0111”然后比较然后比较a a和和c c即可。即可。&是并置运算符,将信号可以连接起来。是并置运算符,将信号可以连接起来。总目录总目录退出退出56属性描述属性描述描述时钟边沿的属性描述时钟边沿的属性EVENTEVENTEVENTEVENT属性属于信号类属性。描述信号边沿出现的时刻属性属于信号类属性。描述信号边沿出现的时刻如:时钟上升沿如:时钟上升沿IF(clkEVENT AND clk=1)THENIF(clkEVENT AND clk=1)THEN q=d;q总目录总目录退出退出57构造体的子结构描述构造体的子结构描述 三种子结构描述语句:三种子结构

40、描述语句:BLOCK BLOCK 块块 PROCESS PROCESS 进程进程 SUBPROGRAM SUBPROGRAM 子程序(子程序(PROCEDURE PROCEDURE、FUNCTION FUNCTION)总目录总目录退出退出58子程序子程序 子程序子程序 ;主程序调用以后能将处理结果返回主程序的程序模块。;主程序调用以后能将处理结果返回主程序的程序模块。子程序有两种类型:子程序有两种类型:过程和函数过程和函数 通常用来描述常用的功能比较独立的电路,过程和函数应在包集通常用来描述常用的功能比较独立的电路,过程和函数应在包集合中定义,通常放在库的某一个包集合中。合中定义,通常放在库的

41、某一个包集合中。总目录总目录退出退出591:过程语句的定义:过程语句的定义 结构:结构:PROCEDURE 过程名(参数过程名(参数1,参数,参数2,)IS 定义语句定义语句 (用来定义一些变量,常数)(用来定义一些变量,常数)BEGIN 顺序语句顺序语句 END 过程名过程名 说明:说明:(1)过程需要参数,参数应该包含输入参数和输出参数。)过程需要参数,参数应该包含输入参数和输出参数。(2)参数通常应为信号量。)参数通常应为信号量。总目录总目录退出退出60例:矢量转换为整数,用过程来描述例:矢量转换为整数,用过程来描述PROCEDURE vector_to_int(z :IN STD_LI

42、GIC_VECTOR,x_flag:OUT BOOLEAN,q :INOUT INTEGER)IS BEGIN q:=0;x_flag:=FALSE;FOR I IN zRANGE LOOP q:=q*2;IF(Z(I)=1)THEN q:=q+1;ELSIF(Z(I)/=0)THEN -状态不定状态不定 x_flag:=TRUE;END IF;END LOOP;END vector_to_int;101总目录总目录退出退出612:函数语句(:函数语句(FUNCTION)结构:结构:FUNCTION 函数名(参数函数名(参数1,参数,参数2)RETURN 数据类型名数据类型名 IS 定义语句定

43、义语句 BEGIN 顺序语句顺序语句 RETURN返回变量名返回变量名 END 函数名函数名总目录总目录退出退出62例:例:FUNCTION max(a :STD_LOGIC_VECTOR,b :STD_LOGIC_VECTOR)RETURN STD_LOGIC_VECTOR IS BEGIN IF(ab)THEN tmp:=a;ELSE tmp:=b;END IF RETURN tmp;END max;总目录总目录退出退出63说明:说明:(1 1)函数名后的括号中均为输入参数。)函数名后的括号中均为输入参数。(2 2)RETURNRETURN应注明返回的数据类型。应注明返回的数据类型。(3

44、3)可定义变量和参数。)可定义变量和参数。(4 4)函数体内均为顺序语句。)函数体内均为顺序语句。(5 5)RETURNRETURN后紧跟变量名。后紧跟变量名。(6 6)函数在库的包集合中定义。)函数在库的包集合中定义。总目录总目录退出退出64库、包集合及配置库、包集合及配置库的功能类似于目录库的功能类似于目录库:存放编译后的数据集合,单元,构造体,实体等,使得设计者库:存放编译后的数据集合,单元,构造体,实体等,使得设计者可以共享已经编译过的设计结果。可以共享已经编译过的设计结果。库的种类很多,库之间是相互独立的,不可嵌套库的种类很多,库之间是相互独立的,不可嵌套一、库的种类一、库的种类(1

45、 1)STDSTD库库 任何包集合都可不作任何说明便可以使用。任何包集合都可不作任何说明便可以使用。如如VHDLVHDL标准库中定义标准库中定义BITBIT、BIT_VECTORBIT_VECTOR等。等。65(2 2)IEEEIEEE库库 美国电子电器工程师协会定义的库,在使用其中的包集合美国电子电器工程师协会定义的库,在使用其中的包集合之前应先说明。之前应先说明。如:如:LIBRARY IEEE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.ALL;66(3)(3)面向用户的面向用户的ASICASIC库库

46、为了进行门级仿真,各个公司提供面向为了进行门级仿真,各个公司提供面向ASICASIC的逻辑门库,例的逻辑门库,例设计单片机、乘法器、接口等电路时,并不需要用用户设计这些设计单片机、乘法器、接口等电路时,并不需要用用户设计这些器件,直接可调用。器件,直接可调用。总目录总目录退出退出67(4 4)工作库)工作库 现行工作库,用户设计好电路经过编译后放入工作库中。现行工作库,用户设计好电路经过编译后放入工作库中。(5 5)用户定义库)用户定义库 为了方便工作,用户自己设计的单元可以作为用户自定义库。为了方便工作,用户自己设计的单元可以作为用户自定义库。库的使用范围:库的使用范围:只能作用在一个实体单

47、元的内部,当另外的实体单元用到只能作用在一个实体单元的内部,当另外的实体单元用到时必须重新说明时必须重新说明。总目录总目录退出退出68三:包集合三:包集合 包集合相当于高级语言中的包集合相当于高级语言中的INCLUDE语句。语句。包集合包含信号的定义、常数定义、数据类型定义、包集合包含信号的定义、常数定义、数据类型定义、元器件定义、函数定义、过程定义等。包集合是一个可元器件定义、函数定义、过程定义等。包集合是一个可编译的设计单元,也是库结构中的一个层次。编译的设计单元,也是库结构中的一个层次。1:结构:结构 PACKAGE 包集合名包集合名 IS 说明语句说明语句 END 包集合名;包集合名;

48、PACKAGE BODY 包集合名包集合名 IS 语句语句 END 包集合名;包集合名;总目录总目录退出退出69 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;PACKAGE mypack IS Subtype sbit IS STD_LOGIC;FUNCTION max(a,b:sbit)RETURN sbit;END mypack;PACKAGE BODY mypack IS FUNCTION max(a,b:sbit)RETURN sbit IS VARIABLE tmp:STD_LOGIC;BEGIN IF(ab)THEN tmp:=a;ELSE t

49、mp:=b;END IF;RETURN tmp;END max;END mypack;总目录总目录退出退出70.F总目录总目录退出退出71VHDL语言的构造体描述方式语言的构造体描述方式VHDL中的描述方式分为:中的描述方式分为:1:行为描述方式:行为描述方式 不能进行综合,可以仿真,对系统数学模型的描述。不能进行综合,可以仿真,对系统数学模型的描述。2:RTL级描述级描述 可以综合,形成综合电路。可以综合,形成综合电路。3:结构化描述:结构化描述总目录总目录退出退出72构造体的行为描述方式构造体的行为描述方式一:目的和应用场合一:目的和应用场合 主要目的是验证和仿真系统的数学模型。主要目的是

50、验证和仿真系统的数学模型。二:特点二:特点 1:VHDL语言的所有语言都可用来描述构造体的行为描述。语言的所有语言都可用来描述构造体的行为描述。2:一般该描述不能进行逻辑综合。:一般该描述不能进行逻辑综合。3:该描述更贴近于数学描述,而不贴近逻辑连接描述。:该描述更贴近于数学描述,而不贴近逻辑连接描述。例:例:c总目录总目录退出退出73三:行为描述的一些常用语句三:行为描述的一些常用语句 1:代入语句:代入语句 信号量信号量=敏感量表达式;敏感量表达式;c=a AND b;这是一个并发语句;这是一个并发语句,a 和和b都是敏感量,并都是敏感量,并发代入语句是进程的缩写。发代入语句是进程的缩写。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁