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

上传人:牧羊曲112 文档编号:6294827 上传时间:2023-10-14 格式:PPT 页数:122 大小:854KB
返回 下载 相关 举报
数字电路及系统设计第10章.ppt_第1页
第1页 / 共122页
数字电路及系统设计第10章.ppt_第2页
第2页 / 共122页
数字电路及系统设计第10章.ppt_第3页
第3页 / 共122页
数字电路及系统设计第10章.ppt_第4页
第4页 / 共122页
数字电路及系统设计第10章.ppt_第5页
第5页 / 共122页
点击查看更多>>
资源描述

《数字电路及系统设计第10章.ppt》由会员分享,可在线阅读,更多相关《数字电路及系统设计第10章.ppt(122页珍藏版)》请在三一办公上搜索。

1、,用VHDL进行数字系统设计,总目录,退出,前言,EDAElectronic Design Automation(电子设计自动化)VHICVery High speed Integrated CircuitHDL-Hardware Description LanguageVHDL-VHIC HDL电子设计自动化的关键技术 用形式化方法描述数字系统的硬件电路。80年代后期美国国防部开发出VHDL,1993年推出修订版Verilog HDL 1993年 与C接近95年以后国内开展这方面工作,总目录,退出,数字系统硬件设计概述,传统的硬件设计方法传统的设计方法是自下而上的设计方法采用通用的元器件后期

2、进行仿真,浪费大,设计周期长主要设计文件是电路原理图,可读性差,文件量大,总目录,退出,图 11-9 测量频率电路图,总目录,退出,图 11-4 定时电路原理图,总目录,退出,数字系统硬件设计概述,VHDL语言设计方法VHDL 是硬件描述语言,是描述硬件电路的功能、信号连接关系、定时关系的语言。采用自上而下的设计方法早期仿真,提高了资源利用率,设计周期短行为级仿真RTL级仿真门级仿真降低设计难度主要设计文件是程序,可读性好,文件量小,可移植性好,总目录,退出,自上至下设计系统硬件过程,规格设计,行为级描述,行为级仿真,RTL级描述,RTL级仿真,逻辑综合、优化,门级仿真、检查,输出门级网表,总

3、目录,退出,数字系统硬件设计概述,利用VHDL语言设计电路的优点设计技术齐全,方法灵活 行为级设计设计数学模型 RTL级设计 生成电路 结构化设计生成电路,与原理图设计方法相似描述功能强设计电路与工艺无关成果易于共享,总目录,退出,VHDL 语言描述的范畴 ASIC电路设计 局部电路的设计和仿真 系统的硬件、软件的协同设计,数字系统硬件设计概述,总目录,退出,VHDL语言的基本结构,一般的高级语言:描述算法运算,是控制流,目的是实现过程控制。VHDL语言:描述具体的数字系统或数字电路的功能,目的是生成硬件电路,采用的主要是并发语言。,总目录,退出,VHDL语言的基本结构,VHDL 语言的基本结

4、构:库说明包集合实体构造体(配置)库:用来存放已经编译的实体、构造体、包集合和配置。库一般可由用户产生或者由ASIC芯片制造商提供。包集合:存放各设计模块都能共享的数据类型、常数和子程序。实体:系统的外部接口关系。构造体:描述系统内部的结构和行为。配置:用于从库中选取所需的单元,来组成系统设计的不同版本。,总目录,退出,VHDL语言的基本单元,VHDL语言的基本单元 一:VHDL语言描述方法 电原理图的描述方式,其中a,b是输入,c是输出,C=AB。如果用VHDL 语言来 描述此电路:实体描述输入、输出,构造体描述功能。实体构造体基本单元,总目录,退出,二:实体说明 ENTITY 实体名字 I

5、S PORT(端口名,);END 实体名;说明:1:实体名可用英文字母、数字、下划线表示,名字开头 只能为英文字母,结尾不能用下划线。2:PORT(端口名:方向 数据类型);端口名与实体名命名规则相同。方向:IN 表示输入 OUT 表示输出 INOUT 表示输入输出 BUFFER 表示输出端带有反馈类型。,总目录,退出,数据类型:与一般高级语言类似,有许多种,但一般常使用两种。BIT:位 BIT_VECTOR:位矢量表示数据总线 D0-D7的数据类型 BIT_VECTOR(7 DOWNTO 0);,总目录,退出,例:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.AL

6、L;ENTITY and2 IS PORT(a,b:IN BIT;c:OUT BIT);END and2;ARCHITECTURE rtl OF and2 IS BEGIN c=a AND b;END rtl;大写 保留字小写 名称VHDL语言对大写小写无区分,大写小写有利于阅读。,总目录,退出,上节课主要内容复习,VHDL 语言的基本结构:库说明包集合实体构造体库:用来存放已经编译的实体、构造体、包集合和配置。库一般可由用户产生或者由ASIC芯片制造商提供。包集合:存放各设计模块都能共享的数据类型、常数和子程序。实体:系统的外部接口关系。构造体:描述系统内部的结构和行为。,总目录,退出,上节

7、课主要内容复习,基本设计单元实体说明:接口信号 ENTITY and2 IS PORT(a,b:IN BIT;c:OUT BIT)END and2;构造体:内部逻辑和时序 ARCHITECTURE rtl OF and2 IS BEGIN c=a AND b;END rtl;,总目录,退出,STD_LOGIC STD_LOGIC_VECTOR 1993年制定出IEEE STD1164 标准。以电路需要,该类型数据可取如下9种不同的值。U 初始值 X X是不定的值,强不确定 0 强0 1 强1 Z 高阻 W 弱不确定 L 弱0 H 弱1 不可能情况,总目录,退出,VHDL描述数字系统的基本方法,

8、三:构造体 构造体用来描述实体的功能 ARCHITCTURE 构造体名 OF 实体名 IS 定义语句:内部信号,常数,数据类型,函数等的定义 BEGIN 并发语句 END 构造体名;构造体的名称可由设计者命名。通常根据描述的对象把构造体命 名为behav(behavior)行为描述,rtl寄存器传输描述,struct(structural)结构描述。,总目录,退出,总目录,退出,常数、变量、信号所描述的对象,在VHDL 语言中,可以赋予一个值的的对象就称为客体或对象。对象主要包括以下3种:信号(SIGNAL):对应物理意义上是实际电路连接线。变量(VARIABLE):相当于暂存寄存器,变量值不

9、是最终的结果。常数(CONSTANT):如电源、地等,用来描述固定的值。,总目录,退出,常数、变量、信号所描述的对象,1、常数(CONSTANT)格式:CONSTANT 常数名:数据类型:表达式;例:CONSTANT VCC:REAL:=5.0;CONSTANT DALY:TIME:=100ns;CONSTANT FBUS:BIT_VECTOR:=“1010”CONSTANT G1:BIT:1;数据类型和表达式表示的数据类型应该一致。表示是位信息,而“”表示的是位矢量信息。,总目录,退出,常数、变量、信号所描述的对象,2、变量(VARIABLE)变量是局部变量,只能在进程、过程、函数中使用和定

10、义。格式:VARIABLE 变量名:数据类型 约束条件:表达式;例:VARIABLE x,y:INTEGER VARIABLE x,y:INTEGER RANGE 0 TO 255:=10 在程序中,变量的赋值是立即生效的,不能产生附加延时。tmp1:=tmp2+tmp3 AFTER 10ns,总目录,退出,常数、变量、信号所描述的对象,3、信号(SIGNAL)信号量是全局变量,只能在构造体中定义,而不能在进程、过程、函数中定义。格式:SIGNAL 信号名:数据类型 约束条件:表达式;SIGANL ground:BIT:=0;SIGANL x,y:INTEGER RANGE 0 TO 255:

11、=10;,总目录,退出,常数、变量、信号所描述的对象,4、信号量和变量的区别信号量是全局量,而变量是局部量。信号赋值用“=”,而变量用“:”。信号和变量可以相互代入。如:a 是变量,b是信号,则a:=b;b=a;变量是立即赋值的,而信号量是在进程结束时赋值的。,总目录,退出,属性描述,描述时钟边沿的属性EVENTEVENT属性属于信号类属性。描述信号边沿出现的时刻如:时钟上升沿IF(clkEVENT AND clk=1)THEN q=d;,总目录,退出,例:设计一个2选1的数据选择器,总目录,退出,2选1的数据选择器,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.A

12、LL;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;tmp2=D0 AND(NOT sel);F=tmp1 OR tmp2;END rtl;,总目录,退出,VHDL基本设计单元构成,一个完整的设计单元 LIBRARY IEEE;库 USE IEEE.STD_LOGIC_1164.ALL;包集合 ENTITY 实体名字 IS PORT(端口名,);END 实体名;ARCHITCTURE 构造体名

13、 OF 实体名 IS 定义语句:信号常数,数据类型等 BEGIN 并发语句 END 构造体名;,总目录,退出,2选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=tmp1 OR tmp2;END rtl;,总目录,退出,VHDL基本设计单元构成,一个

14、完整的设计单元 LIBRARY IEEE;库 USE IEEE.STD_LOGIC_1164.ALL;包集合 ENTITY 实体名字 IS PORT(端口名,);END 实体名;ARCHITCTURE 构造体名 OF 实体名 IS 定义语句:信号常数,数据类型等 BEGIN 并发语句 END 构造体名;,总目录,退出,频率测量电路,总目录,退出,频率测量电路框图,总目录,退出,构造体的子结构描述,构造体的子结构描述 三种子结构描述语句:BLOCK 块 PROCESS 进程 SUBPROGRAM 子程序(PROCEDURE、FUNCTION),总目录,退出,块(BLOCK)语句结构描述,1 块(

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

16、;:END BLOCK black2;black3:BLOCK BEGIN 并发语句;:END BLOCK black3;,总目录,退出,进程(PROCESS)语句结构描述,2 进程(PROCESS)语句的结构 进程名:PROCESS(信号1,信号2,)-敏感量 BEGIN 顺序语句;:END PROCESS 进程名;进程中语句的顺序执行:进程内的顺序性;进程间的并发性进程的启动和执行:敏感量变化启动进程执行,总目录,退出,进程间的并发性,process1 PROCESS(信号1,信号2,)BEGIN 顺序语句;:END PROCESS process1;process2 PROCESS(信号

17、6,信号7,)BEGIN 顺序语句;:END PROCESS process2;F=a OR b;,总目录,退出,进程中定义变量,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=z(3);END IF;END PROCESS;END rtl;,总目录,退出,构造体中定义信号,ARCHITECTURE rtl OF shff

18、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=z(3);END IF;END PROCESS;END rtl;,总目录,退出,进程举例,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(

19、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=z(3);END IF;END PROCESS;END rtl;,总目录,退出,D触发器的设计,ENTITY dff1 ISPORT(clk,d,res

20、et: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=d;END IF;END PROCESS;END rtl;,总目录,退出,序列信号检测器的设计,用T触发器构成序列信号检测器,总目录,退出,ENTITY tff2 ISPORT(clk,x,reset:IN STD_LOGIC;q,F:OUT STD_LOGIC);END tff2;ARCHITECT

21、URE 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=q and x;END rtl;,总目录,退出,小结,VHDL 语言的基本结构库说明包集合实体构造体构造体中的子结构BLOCK 块PROCESS 进程进程的定义及进程的执行进程间并发进程内顺序执行,总目录,退出,作业 1、用VHDL语言设计一个一位全加器。2、电路如图所示,用VHDL语言描述该电路。,总目录,退出,信号(SIGNAL)、变量(VARIABLE)、常数

22、(CONSTANT)在VHDL语言中信号、变量、常数都要指定数据类型。VHDL语言定义数据类型比较严格,不同数据类型长度不同,也不能互相代入。数据类型可以自定义,使用相对灵活。标准的数据类型用户定义的数据类型,总目录,退出,一、标准数据类型(自己看书)1:整数 2:实数 3:位 4:位矢量 5:布尔量 6:字符 7:字符串 8:时间 9:错误等级 10:大于等于零的整数,总目录,退出,二:用户定义的数据类型 1:格式 TYPE 数据类型名 IS 数据类型定义 2:定义种类 枚举类型 整数 实数 数组 存取 文件 记录 时间,总目录,退出,三:数据子类型定义 1:格式 SUBTYPE 子类型名

23、IS 数据类型名 约束条件;2:例子 SUBTYPE digit IS INTEGER 0 TO 9;SUBTYPE iobus IS STD_LOGIC_VECTOR(7 DOWNTO 0);,总目录,退出,SINGAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);“1010”为a信号上的值,则 a(3)=1;a(2)=0;a(1)=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,总目录,退出,ENTITY count6 IS PORT(reset,

24、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(clkEVENT AND clk=1)THEN IF(q6=5)THEN q6:=0;ELSE q6:=q6+1;END IF;END IF;q=CONV_STD_LOGIC_VECTOR(q6,3);END PROCESS;END rtl;,总目录,退出,VHDL语言

25、中的运算符号,VHDL中的运算操作符有:逻辑运算:与、或、非、与非、或非、异或关系运算、/、=算术运算+、*、/、MOD、RME、*、ASB、并置运算&,总目录,退出,例:SINGAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);SINGAL b:STD_LOGIC_VECTOR(2 DOWNTO 0);若取aa,而这实际是不正确的,所以在进行比较运算是数据定义类型的位数应该相同。用并置方法可以解决此问题。SINGAL c:STD_LOGIC_VECTOR(3 DOWNTO 0);c”0111”然后比较a和c即可。&是并置运算符,将信号可以连接起来。,总目录,退出,属性描述,

26、描述时钟边沿的属性EVENTEVENT属性属于信号类属性。描述信号边沿出现的时刻如:时钟上升沿IF(clkEVENT AND clk=1)THEN q=d;,总目录,退出,构造体的子结构描述 三种子结构描述语句:BLOCK 块 PROCESS 进程 SUBPROGRAM 子程序(PROCEDURE、FUNCTION),总目录,退出,子程序 子程序;主程序调用以后能将处理结果返回主程序的程序模块。子程序有两种类型:过程和函数 通常用来描述常用的功能比较独立的电路,过程和函数应在包集合中定义,通常放在库的某一个包集合中。,总目录,退出,1:过程语句的定义 结构:PROCEDURE 过程名(参数1,

27、参数2,)IS 定义语句(用来定义一些变量,常数)BEGIN 顺序语句 END 过程名 说明:(1)过程需要参数,参数应该包含输入参数和输出参数。(2)参数通常应为信号量。,总目录,退出,例:矢量转换为整数,用过程来描述,PROCEDURE vector_to_int(z:IN STD_LIGIC_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

28、:=TRUE;END IF;END LOOP;END vector_to_int;101,总目录,退出,2:函数语句(FUNCTION)结构:FUNCTION 函数名(参数1,参数2)RETURN 数据类型名 IS 定义语句 BEGIN 顺序语句 RETURN返回变量名 END 函数名,总目录,退出,例: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;,总目录,退出

29、,说明:(1)函数名后的括号中均为输入参数。(2)RETURN应注明返回的数据类型。(3)可定义变量和参数。(4)函数体内均为顺序语句。(5)RETURN后紧跟变量名。(6)函数在库的包集合中定义。,总目录,退出,库、包集合及配置,库的功能类似于目录库:存放编译后的数据集合,单元,构造体,实体等,使得设计者可以共享已经编译过的设计结果。库的种类很多,库之间是相互独立的,不可嵌套一、库的种类(1)STD库 任何包集合都可不作任何说明便可以使用。如VHDL标准库中定义BIT、BIT_VECTOR等。,(2)IEEE库 美国电子电器工程师协会定义的库,在使用其中的包集合之前应先说明。如:LIBRAR

30、Y IEEE;USE IEEE.STD_LOGIC_1164.ALL;,(3)面向用户的ASIC库 为了进行门级仿真,各个公司提供面向ASIC的逻辑门库,例设计单片机、乘法器、接口等电路时,并不需要用用户设计这些器件,直接可调用。,总目录,退出,(4)工作库 现行工作库,用户设计好电路经过编译后放入工作库中。(5)用户定义库 为了方便工作,用户自己设计的单元可以作为用户自定义库。库的使用范围:只能作用在一个实体单元的内部,当另外的实体单元用到时必须重新说明。,总目录,退出,三:包集合 包集合相当于高级语言中的INCLUDE语句。包集合包含信号的定义、常数定义、数据类型定义、元器件定义、函数定义

31、、过程定义等。包集合是一个可编译的设计单元,也是库结构中的一个层次。1:结构 PACKAGE 包集合名 IS 说明语句 END 包集合名;PACKAGE BODY 包集合名 IS 语句 END 包集合名;,总目录,退出,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

32、VARIABLE tmp:STD_LOGIC;BEGIN IF(ab)THEN tmp:=a;ELSE tmp:=b;END IF;RETURN tmp;END max;END mypack;,总目录,退出,.F=max(a,b);.包集合的使用 在实体前应作具体说明,方能使用包集合。,总目录,退出,VHDL语言的构造体描述方式,VHDL中的描述方式分为:1:行为描述方式 不能进行综合,可以仿真,对系统数学模型的描述。2:RTL级描述 可以综合,形成综合电路。3:结构化描述,总目录,退出,构造体的行为描述方式,一:目的和应用场合 主要目的是验证和仿真系统的数学模型。二:特点 1:VHDL语言的

33、所有语言都可用来描述构造体的行为描述。2:一般该描述不能进行逻辑综合。3:该描述更贴近于数学描述,而不贴近逻辑连接描述。例:c=a AND b AFTER 5 ns;(行为描述),总目录,退出,三:行为描述的一些常用语句 1:代入语句 信号量=敏感量表达式;c=a AND b;这是一个并发语句,a 和b都是敏感量,并发代入语句是进程的缩写。可写成进程为:PROCESS(a,b)BEGIN c=a AND b;END PROCESS;,总目录,退出,2:延时语句(1)惯性延时 系统或器件输出信号必须要有一个时间延时,常常表示如下:c=a AND b AFTER 10ns;(2)传输延时 用来描述

34、总线延时、连接线延时以及ASIC芯片延时。c=TRANSPORT(a AND b)AFTER 5ns;,总目录,退出,构造体的RTL描述,一:目的合应用场合 用于逻辑仿真和综合,并可以最终生成硬件电路。二:特点 1:贴近于逻辑连接的描述。2:RTL描述都可以综合成逻辑电路。3:VHDL语言中有少数的语句可以进行RTL描述。,总目录,退出,三:描述时应注意的问题 1:X状态的传递 例:PROCESS(sel)BEGIN IF(sel=1)THEN Y=0;ELSE ELSIF(sel=0)Y=1;Y=1;END IF ELSE END PROCESS Y=X;END IF END PROCESS

35、,总目录,退出,2:寄存器设计的限制(1)禁止一个进程描述一个以上的寄存器 即一个进程只能有一个寄存器时钟。如:PROCESS(clk1,clk2)是错误的,这是由于受综合的限制。(2)禁止用ELSE项来描述寄存器。例:PROCESS(clk)BEGIN IF(clkEVENT AND clk=1)THEN Y=a;ELSE Y=b;END IF END PROCESS(3)进程的最后结果应代入信号量。(4)联系多的一些电路尽可能放在1个进程中来描述。,总目录,退出,结构体的结构化描述方式,一:应用场合 用在将已经设计好的编译模块连接起来,以便生成新的功能模块或者系统。这种方法和画电路图类似,

36、高层次的模块可调用低层次的模块。二:结构化描述的特点 1:与硬件连接关系密切。2:多层次描述清晰。3:要求设计者硬件知识较多。4:可以进行逻辑综合。,总目录,退出,三:描述方法1:元件描述语句 需要在构造体中说明的语句。例:COMPONENT and2 PORT(a,b:IN BIT;c:OUT BIT);END COMPONENT;2:元件映射语句 u0:and2 PORT MAP(x1,x2,l1);,总目录,退出,ENTITY mux2 IS PORT(d0,d1,sel:IN STD_LOGIC;q:OUT STD_LOGIC)END mux2;ARCHITECTURE rtl OF

37、mux2 IS COMPONENT and2 PORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC);END COMPONENT;COMPONENT or2 PORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC);END COMPONENT;,总目录,退出,COMPONENT inv PORT(a:IN STD_LOGIC;b:OUT STD_LOGIC);END COMPONENT;SIGNAL aa,ab,nsel:STD_LOGIC(信号量无方向)BEGIN u1:inv PORT MAP(sel,nsel);u2:and2 PORT MAP(

38、d1,nsel,ab);u3:and2 PORT MAP(d0,sel,aa);u4:or2 PORT MAP(aa,ab,q);END rtl;,总目录,退出,说明:元件映射的方法有两种:(1)顺序映射 上例为顺序映射。(2)名称映射 u2:and2 PORT MAP(a=d1;b=nsel;c=ab)名称映射时顺序可以颠倒。,总目录,退出,一位加法器,总目录,退出,说明:元件映射的方法有两种:(1)顺序映射 上例为顺序映射。(2)名称映射 u2:and2 PORT MAP(a=d1;b=nsel;c=ab)名称映射时顺序可以颠倒。,总目录,退出,说明:元件映射的方法有两种:(1)顺序映射

39、上例为顺序映射。(2)名称映射 u2:and2 PORT MAP(a=d1;b=nsel;c=ab)名称映射时顺序可以颠倒。,总目录,退出,ENTITY adder IS PORT(a,b,ci:IN STD_LOGIC;s,co:OUT STD_LOGIC);END adder;ARCHITECTURE rtl OF adder IS BEGIN PROCESS(a,b,ci)VARIABLE axb,ab,axbc:STD_LOGIC;BEGIN axb:=a XOR b;ab:=a AND b;axbc:=axb AND ci;s=ci XOR axb;co=axbc OR ab;END

40、 PROCESS;END rtl;,总目录,退出,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY adder4 IS PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ci:IN STD_LOGIC;co:OUT STD_LOGIC;s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END adder4;ARCHITECTURE rtl OF adder4 IS COMPONENT adder PORT(a,b,ci:IN STD_LOGIC;s,co:OUT STD_LOGIC);END CO

41、MPONENT;,总目录,退出,SIGNAL c0,c1,c2:STD_LOGIC;BEGIN u0:adder PORT MAP(a(0),b(0),ci,s(0),c0);u1:adder PORT MAP(a(1),b(1),c0,s(1),c1);u2:adder PORT MAP(a(2),b(2),c1,s(2),c2);u3:adder PORT MAP(a(3),b(3),c2,s(1),co);END rtl;,总目录,退出,VHDL语言的主要描述语句,两类描述语句 1:并发语句 在构造体中使用,是VHDL 中最基本的语句。2:顺序语句 只能在函数、过程、进程中使用。,总目录

42、,退出,顺序描述语句,WAIT 语句断言语句信号代入语句变量赋值语句IF语句CASE语句LOOP语句NEXT语句EXIT语句过程调用语句NULL语句,总目录,退出,一:WAIT语句 1:格式 WAIT:表示无限等待 WAIT ON 信号:信号变化前处于等待,变化后进程执行,结束挂起等待状态 WAIT UNTIL*条件:条件满足后,结束等待状态。WAIT FOR 时间:时间到后,结束等待。2:说明 可以将上述WAIT 语句“或”起来 带*号的WAIT 语句可以进行逻辑综合功能,其余只能进行行为描述。无敏感量进程是无限等待循环的进程。,总目录,退出,IF语句,IF语句 1:开关控制IF(clkEV

43、ENT AND clk=1)THEN q=d;END IF;2:2选1控制 IF 条件 顺序语句 ELSE 顺序语句 END IF;3:多选择控制 IF 条件1 THEN ELSIF 条件2 THEN,总目录,退出,1:开关控制IF(clkEVENT AND clk=1)THEN q=d;END IF;2:2选1控制 IF 条件 顺序语句 ELSE 顺序语句 END IF;,3:多选择控制 IF 条件1 THEN ELSIF 条件2 THEN ELSIF 条件n THEN ELSE END IF,总目录,退出,例:设计一个4选1数据选择器,总目录,退出,ENTITY mux4 IS PORT(

44、Input:IN STD_LOGIC_VECTOR(3 DOWNTO 0);sel:IN STD_LOGIC_VECTOR(1DOWNTO 0);Y:OUT STD_LOGIC);END mux4;ARCHITECTURE rtl OF mux4 ISBEGINPROCESS(INPUT,SEL),BEGIN IF(sel=00)THEN Y=input(0);ELSIF(sel=01)THEN Y=input(1);ELSIF(sel=10)THEN Y=input(2);ELSE Y=input(3);END IF;END PROCESS;END rtl;,总目录,退出,CASE 语句,C

45、ASE 语句 格式:CASE 表达式 IS WHEN 条件表达式=顺序语句;END CASE;,总目录,退出,ARCHITECTURE rtl OF max4 IS BEGIN PROCESS(sel,input)BEGIN CASE sel IS WHEN“00”=YYYYY=X;END CASE;END PROCESS;END rtl;,总目录,退出,CASE 语句和IF 语句的区别,(1)IF语句按条件顺序处理,而CASE语句按条件是无顺序处理,从而CASE语句不能用来设计优先编码器。(2)CASE语句必须列出所有条件,IF语句不一定,一般来说,列出所有条件是不大可能的,故在CASE语句

46、中,常常在最后又WHEN OTHERS 语句。,总目录,退出,LOOP语句,LOOP语句用于描述迭代电路,即将相同功能的电路串连起来,通常有两种描述方式。1:FOR循环变量 标号:FOR 循环变量 IN 离散范围 LOOP 顺序语句 END LOOP 标号;循环变量无须在构造体内定义,这是语法规定,常取I.,总目录,退出,例:PROCESS(a)VARIABLE tmp:STD_LOGIC;BEGIN tmp:=0;FOR I IN 0 TO 7 LOOP tmp:=tmp XOR a(I);END LOOP Y=tmp;END PROCESS;,总目录,退出,NEXT 语句 格式:NEXT

47、标号WHEN 条件 有标号时,跳到标号处,没有标号时,跳到下一个循环。九:EXIT 语句 EXIT 标号WHEN 条件 有标号时跳到标号处,没有标号时,跳出本次循环。NEXT语句在LOOP内部使用,不能从一个LOOP跳到另外一个LOOP 中,而EXIT 可以跳出LOOP循环。,总目录,退出,作业:设计一个“38”译码电路。,总目录,退出,并发描述语句,一:进程语句(PROCESS)其格式已经在前面讲过,在这里只介绍一些注意事项。1:构造体内可以有多个进程并发执行,进程里可以使用构造体定义的信号 量,尽量在进程内部使用变量,然后结果通过信号量带出。2:进程中的语句都为顺序语句。3:进程启动的条件

48、:(1)进程敏感量时,敏感量变化,进程将启动。(2)若无敏感量,利用WAIT语句控制,WAIT条件满足,进程启动一次。(3)无敏感量,也无WAIT语句,则此进程为无限循环进程。4:进程之间的同步和通信是通过信号量来实现的。5:进程只能定义常数、变量,不能定义信号量。,总目录,退出,二:并发代入语句 一个并发代入语句是一个进程的缩写。c=a AND b是一个并发语句,这里a,b都是信号量,而不是变量,因为信号量才能在构造体中使用。一个并发语句可以写成一个进程。如:PROCESS(a,b)BEGIN c=a AND b;END PROCESS;,总目录,退出,三:条件代入语句 实质是在进程外部实现

49、IF 语句的功能,解决了在构造体中不能使用IF语句的问题,因为IF语句是顺序语句,而条件代入语句是并发语句。格式:目的信号量=表达式1 WHEN 条件1 ELSE 表达式2 WHEN 条件2 ELSE ELSE 表达式n;,总目录,退出,四:选择信号代入语句 实质是在进程外部实现CASE语句的功能。格式:WITH 表达式 SELECT 目的信号=表达式1 WHEN 条件1,表达式2 WHEN 条件2,表达式n WHEN 条件n;,总目录,退出,五:并发过程调用 过程的调用语句可在进程中使用,也可在构造体中使用,在构造体重调用的过程为并发过程调用。,总目录,退出,GENERATE 语句,在进程外

50、实现LOOP语句的功能,用来产生多个相同的结构。1:FOR_GENERATE 标号:FOR 变量 IN 离散区间 GENERATE 并发处理语句 END GENERATE 标号;,总目录,退出,ARCHITECTURE rtl OF shff IS COMPONENT dff PORT(d,clk:IN STD_LOGIC;q:OUT STD_LOGIC);END COMPONENT;SIGNAL z:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN z(0)=a;g1:FOR I IN 0 TO 3 GENERATE dffx:dff PORT MAP(z(I),clk,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号