《EDA技术实用教程-VHDL版第3章VHDL设计初步.ppt》由会员分享,可在线阅读,更多相关《EDA技术实用教程-VHDL版第3章VHDL设计初步.ppt(72页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第 3 3 章章 VHDL设计初步设计初步3.1组合逻辑电路的组合逻辑电路的VHDL描述描述 3.1.1 2选选1多路选择器的多路选择器的VHDL描述描述 图图3-1 mux21a实体实体 3.1组合逻辑电路的组合逻辑电路的VHDL描述描述 3.1.1 2选选1多路选择器的多路选择器的VHDL描述描述 图图3-2 mux21a结构体结构体 3.1组合逻辑电路的组合逻辑电路的VHDL描述描述【例】二选一选择器描述方法【例】二选一选择器描述方法1 ENTITY mux21a IS PORT(a,b:IN BIT;s:IN BIT;y:OUT BIT );END ENTITY mux21a;ARC
2、HITECTURE one OF mux21a IS SIGNAL d,e:BIT;-说说明明语语句句 BEGINd=a AND(NOT S);e=b AND s;y=d OR e ;END ARCHITECTURE one;实体结构体3.1.1 2选选1多路选择器的多路选择器的VHDL描述描述 3.13.1组合逻辑电路的组合逻辑电路的VHDLVHDL描述描述 n此电路的VHDL描述由两大部分组成:n (1)以关键词ENTITY引导,n END ENTITY mux2la结尾的语句部分,n 称为实体。n 实体描述了电路器件的外部情况及各信号端口的基本n 性质。n (2)以关键词ARCHITEC
3、TURE引导,n END ARCHITECTURE one结尾的语句部分,n 称为结构体。n 结构体负责描述电路器件的内部逻辑功能或电路结构。3.1组合逻辑电路的组合逻辑电路的VHDL描述描述 3.1.2 相关语句结构和语法说明相关语句结构和语法说明 ENTITY e_name IS PORT(p_name:port_m data_type;.p_namei:port_mi data_type);END ENTITY e_name;红红色色为为描述描述实实体的关体的关键词键词,不分大小写。,不分大小写。1.1.实体表达实体表达 2.2.实体名实体名 e_name,由,由设计设计者自定的者自定的
4、标识标识符。由字母、数字、下划符。由字母、数字、下划线线构成。构成。不能以数字起不能以数字起头头,不能用中文,不能与关,不能用中文,不能与关键词键词或或EDA工具工具库库的元件名相同。的元件名相同。如:如:72lk,OR2均均为为非法非法实实体名。体名。3.3.端口语句和端口信号名端口语句和端口信号名 PORT(););描述描述电电路的端口及其端口信号。路的端口及其端口信号。如如 PORT(a,b:IN BIT;s:IN BIT;y:OUT BIT );3.13.1组合逻辑电路的组合逻辑电路的VHDLVHDL描述描述 端口信号名端口模式端口信号的数据类型3.1.2 相关语句结构和语法说明相关语
5、句结构和语法说明 3.1组合逻辑电路的组合逻辑电路的VHDL描述描述 3.1.2 相关语句结构和语法说明相关语句结构和语法说明 4.4.端口模式端口模式 IN:输入端口,定义的通道为单向只读模式输入端口,定义的通道为单向只读模式OUT:输出端口,定义的通道为单向输出模式输出端口,定义的通道为单向输出模式 INOUT:定义的通道确定为输入输出双向端口定义的通道确定为输入输出双向端口BUFFER:缓冲端口,其功能与缓冲端口,其功能与INOUT类似类似 3.1组合逻辑电路的组合逻辑电路的VHDL描述描述 3.1.2 相关语句结构和语法说明相关语句结构和语法说明 5.5.数据类型数据类型 INTEGE
6、R类类型型 (整数(整数类类型)型)BOOLEAN类类型型 (布(布尔尔类类型)型)取取值值范范围为围为true,false STD_LOGIC类类型型 (标标准准逻辑逻辑位位类类型)型)取取值值范范围围有:有:U,X,0,1,Z,W,L,H,-BIT类类型型 (位(位类类型)型)取取值值范范围围是是逻辑逻辑位位1,03.1组合逻辑电路的组合逻辑电路的VHDL描述描述 3.1.2 相关语句结构和语法说明相关语句结构和语法说明 6.6.结构体表达结构体表达 ARCHITECTURE arch_name OF e_name IS 说明语句说明语句BEGIN (功能描述语句功能描述语句)END AR
7、CHITECTURE arch_name;红红色色为为描述描述结结构体的关构体的关键词键词,不分大小写。,不分大小写。说说明明语语句并非必句并非必须须,而功能描述,而功能描述语语句必句必须须存在。存在。结构体名实体名7.7.逻辑操作符逻辑操作符 AND、OR、NOT、NAND(与非)、(与非)、NOR(或非)、(或非)、XOR(异或)、(异或)、XNOR(同或)(同或)逻辑操作符的操作数是逻辑操作符的操作数是BIT、BOOLEAN、STD_LOGIC。3.1组合逻辑电路的组合逻辑电路的VHDL描述描述 3.1.2 相关语句结构和语法说明相关语句结构和语法说明 3.1组合逻辑电路的组合逻辑电路的
8、VHDL描述描述 3.1.2 相关语句结构和语法说明相关语句结构和语法说明 8.8.赋值符号和数据比较符号赋值符号和数据比较符号 赋值符赋值符 “=”如如 表达式表达式 y=a 表示表示输输入端口入端口a的数据向的数据向输输出端口出端口y传输传输。注:注:赋值赋值符符“=”两两边边的信号的数据的信号的数据类类型必型必须须一致。一致。数据比较符号数据比较符号“=”其输出结果的数据类型是其输出结果的数据类型是BOOLEAN类型。类型。如如 表达式表达式 IF s=0 THEN.3.1组合逻辑电路的组合逻辑电路的VHDL描述描述【例】二选一选择器描述方法【例】二选一选择器描述方法2ENTITY mu
9、x21a IS PORT(a,b:IN BIT;s:IN BIT;y:OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN y=a WHEN s=0 ELSE b ;END ARCHITECTURE one;实体结构体3.1组合逻辑电路的组合逻辑电路的VHDL描述描述 3.1.2 相关语句结构和语法说明相关语句结构和语法说明 9.WHEN_ELSE9.WHEN_ELSE条件信号赋值语句(属于并行语句)条件信号赋值语句(属于并行语句)赋值目标赋值目标=表达式表达式 WHEN 赋值条件赋值条件 ELSE 表达式表达式 WHE
10、N 赋值条件赋值条件 ELSE .表达式表达式 ;z =a WHEN p1=1 ELSE b WHEN p2=1 ELSE c ;3.1组合逻辑电路的组合逻辑电路的VHDL描述描述【例【例3-3】二选一选择器描述方法】二选一选择器描述方法3 ENTITY mux21a IS PORT(a,b,s:IN BIT;y:OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS(a,b,s)BEGIN IF s=0 THEN y=a;ELSE y=b;END IF;END PROCESS;END ARCHITECTU
11、RE one;3.1.2 相关语句结构和语法说明相关语句结构和语法说明 进程的敏感信号表3.1组合逻辑电路的组合逻辑电路的VHDL描述描述 3.1.2 相关语句结构和语法说明相关语句结构和语法说明 1010.条件语句条件语句 (属于顺序语句)(属于顺序语句)IF_THEN_ELSE IF语句必须以语句语句必须以语句 “END IF;”结束结束 如如 IF s=0 THEN y=a;ELSE y=b;END IF;END IF;3.1组合逻辑电路的组合逻辑电路的VHDL描述描述 3.1.2 相关语句结构和语法说明相关语句结构和语法说明 11.11.进程语句和顺序语句进程语句和顺序语句 顺顺 序序
12、 语语 句句“IF_THEN_ELSE END IF;”是是 放放 在在 由由“PROCESSEND PROCESS”引引导导的的语语句句中中的的。由由PROCESS引引导导的的语语句句称称为为进进程程语语句句。在在VHDLVHDL中中,所所有有合合法法的的顺顺利利描描述述语语句句都都必必须须放在进程语句中。放在进程语句中。PROCESS旁旁的的()称称为为进进程程的的敏敏感感信信号号表表,要要求求将将进进程程中中的的所所有有输输入入信信号号都都放放在在敏敏感感信信号号表表中中。当当信信号号表表中中的的某某一一敏敏感感信信号号从从原原来来的的“1”变变成成“0”,或或者者从从原原来来的的“0”
13、变变成成“1”时时,将将启启动动此此进程语句,即将其中的语句全部执行一遍。进程语句,即将其中的语句全部执行一遍。12.文件取名和存盘文件取名和存盘 12.12.文件取名和存盘文件取名和存盘 3.1 3.1 组合逻辑电路的组合逻辑电路的VHDLVHDL描述描述 用用Quartus iiQuartus ii提供的提供的VHDLVHDL文本编辑器编辑文本编辑器编辑VHDLVHDL代码文件,代码文件,在保存文件时,文件名为在保存文件时,文件名为 “*.vhd *.vhd”。建议程序的文件名。建议程序的文件名尽可能与该程序的实体名一致。推荐使用小写。尽可能与该程序的实体名一致。推荐使用小写。3.1.2
14、相关语句结构和语法说明相关语句结构和语法说明 3.1组合逻辑电路的组合逻辑电路的VHDL描述描述 mux21a功能时序波形图功能时序波形图3.1 组合逻辑电路的组合逻辑电路的VHDL描述描述【例【例3-18】或门逻辑描述或门逻辑描述 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY or2a IS PORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC);END ENTITY or2a;ARCHITECTURE one OF or2a IS BEGIN c=a OR b;END ARCHITECTURE one;半加器半加器h_
15、adder电路图及其真值表电路图及其真值表 3.3.1 半加器描述半加器描述 3.3.1 半加器描述半加器描述 3.3 1位二进制全加器的位二进制全加器的VHDL描述描述【例【例3-16】LIBRARY IEEE;-半加器描述半加器描述(1):布尔方程描述方法布尔方程描述方法USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder IS PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE fh1 OF h_adder is BEGIN so=a XOR b;co=a A
16、ND b;END ARCHITECTURE fh1;K KX康芯科技康芯科技【例【例3-17】LIBRARY IEEE;-半加器描述半加器描述(2):真值表描述方法真值表描述方法USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder IS PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE fh1 OF h_adder is SIGNAL X:STD_LOGIC_VECTOR(1 DOWNTO 0);-定义标准逻辑位矢量定义标准逻辑位矢量 数据类型数据类型BEGIN
17、X so=0;co so=1;co so=1;co so=0;co NULL;END CASE;END PROCESS;END ARCHITECTURE fh1;3.1 组合逻辑电路的组合逻辑电路的VHDL描述描述 1.1.CASECASE语句语句(属于顺序语句,必须放在进程语句中)属于顺序语句,必须放在进程语句中)CASE ISWhen =;.;;When =;.;;.WHEN OTHERS=;END CASE;3.1 组合逻辑电路的组合逻辑电路的VHDL描述描述 2.2.标准逻辑矢量数据类型标准逻辑矢量数据类型 STD_LOGIC_VECTOR 与与 STD_LOGIC 都被定都被定义义在
18、在STD_LOGIC_1164的程序包中。的程序包中。STD_LOGIC_VECTOR定定义为标义为标准一准一维维数数组组,数,数组组中的每个中的每个元素都是元素都是标标准准逻辑逻辑位位STD_LOGIC。在使用在使用STD_LOGIC_VECTOR中,中,必须注明其数组宽度,即位宽,如:必须注明其数组宽度,即位宽,如:B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);或或 SIGNAL A:STD_LOGIC_VECTOR(1 TO 4);B=01100010;-B(7)为为 0 B(4 DOWNTO 1)=1101;-B(4)为为 1 B(7 DOWNTO 4)=A;-
19、B(6)等于等于 A(2)3.1 组合逻辑电路的组合逻辑电路的VHDL描述描述 3.3.并置操作符并置操作符 SIGNAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d:STD_LOGIC_VECTOR(1 DOWNTO 0);.a ain,b=bin,co=d,so=e);-例化语句例化语句 u2:h_adder PORT MAP(a=e,b=cin,co=f,so=sum);cout连接端口名连接端口名);其中,例化名相当于当前系统(电路板)中的一个插座名。其中,例化名相当于当前系统(电路板)中的一个插座名。元元件件名名相相当当于于准准备备在在此此插插座座
20、上上插插入入的的已已定定义义的的元元件件,即即为为待待调调用用的的元元件件的的名字。名字。PORT MAP为关键词。为关键词。端口名为待调用的元件本身的端口名。端口名为待调用的元件本身的端口名。连接端口名为顶层文件中准备与调用元件的端口相连的通信线(端口)名。连接端口名为顶层文件中准备与调用元件的端口相连的通信线(端口)名。3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述3.2.1 D触发器的触发器的VHDL描述描述 K KX康芯科技康芯科技【例【例3-8】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF1 IS PORT(CL
21、K:IN STD_LOGIC;D:IN STD_LOGIC;Q:OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC;-类似于在芯片内部定义一个数据的暂存节点类似于在芯片内部定义一个数据的暂存节点 BEGIN PROCESS(CLK,Q1)BEGIN IF CLKEVENT AND CLK=1 THEN Q1=D;END IF;END PROCESS;Q=Q1;-将内部的暂存数据向端口输出(双横线将内部的暂存数据向端口输出(双横线-是注释符号)是注释符号)END bhv;图4-4 D触发器D触发器实体触发器实体D触
22、发器仿真波形触发器仿真波形边沿触发边沿触发D触发器:触发器:当时钟信号的当时钟信号的上升沿上升沿到来时,到来时,Q=D。否则,否则,Q保持原值不变。保持原值不变。3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述3.2.2 VHDL描述的语言现象说明描述的语言现象说明 图4-4 D触发器1.1.标准逻辑位数据类型标准逻辑位数据类型STD_LOGICSTD_LOGIC BIT数据类型定义:数据类型定义:TYPE BIT IS(0,1);-只有两种取值只有两种取值 STD_LOGIC数据类型定义:数据类型定义:TYPE STD_LOGIC IS(U,X,0,1,Z,W,L,H,-);ST
23、D_LOGIC类型比类型比BIT类型包含的内容多,且包含了类型包含的内容多,且包含了BIT类型。类型。以下是程序包中对两种数据类型的定义。以下是程序包中对两种数据类型的定义。3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述3.2.2 VHDL描述的语言现象说明描述的语言现象说明 图4-4 D触发器2.2.设计库和标准程序包设计库和标准程序包 VHDL综合器附带了设计库和程序包,用来存放数据类型的综合器附带了设计库和程序包,用来存放数据类型的说明,以及函数的。说明,以及函数的。如:如:BIT数据类型的定义是包含在数据类型的定义是包含在VHDL标准程序包标准程序包STANDARD中的,
24、而该程序包是包含在中的,而该程序包是包含在VHDL的标准库的标准库STD中的。中的。为了使用为了使用BIT数据类型,则应该在程序之前增加说明语句。数据类型,则应该在程序之前增加说明语句。3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述例例3-1LIBRARY WORK;-表示打开用表示打开用户户工程文件所在的目工程文件所在的目录录,该该目目录为录为默默认认工作工作库库WORKLIBRARY STD;-表示打开表示打开STD库库USE STD.STANDARD.ALL;-表示允表示允许许使用使用STD库库中的中的STANDARD 程序包中的所有内容程序包中的所有内容(.all)ENT
25、ITY mux21a IS PORT(a,b:IN BIT;s:IN BIT;y:OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN y=a WHEN s=0 ELSE b ;END ARCHITECTURE one;3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述使用库和程序包的一般定义表式是:使用库和程序包的一般定义表式是:LIBRARY LIBRARY ;USE USE .ALL;.ALL;如例如例3-6中中LIBRARY IEEE;-表示打开表示打开IEEE库库USE IEEE.STD_LOGIC_
26、1164.ALL;-表示允表示允许许使用使用IEEE库库中中 名名为为STD_LOGIC_1164的程序包的所有内容。的程序包的所有内容。3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述3.2.2 VHDL描述的语言现象说明描述的语言现象说明 图4-4 D触发器3.3.数据对象和信号定义数据对象和信号定义VHDL中的数据对象有三类,即变量(中的数据对象有三类,即变量(VARIABLE)、常量)、常量(CONSTANT)和信号()和信号(SIGNAL)。信号是描述硬件系统的基本数据对象,类似于连接线。可以作信号是描述硬件系统的基本数据对象,类似于连接线。可以作为设计实体中模块间的信息
27、交流通道。信号只有数据类型属性,为设计实体中模块间的信息交流通道。信号只有数据类型属性,没有没有IN、OUT等端口模式。等端口模式。如:如:SIGNAL Q1:STD_LOGIC;3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述如例如例4-6中:中:CLKEVENT AND CLK=1该表达式用于检测时钟信号该表达式用于检测时钟信号CLK的上升沿,如果检的上升沿,如果检测到上升沿,则该表达式将输出布尔值测到上升沿,则该表达式将输出布尔值“true”。4.4.上升沿检测表式和信号属性函数上升沿检测表式和信号属性函数EVENTEVENT EVENT 用于测定某信号的跳变情况,即对该信号
28、在当前的用于测定某信号的跳变情况,即对该信号在当前的一个极小时间段内发生事件的情况进行检测。检测一个极小时间段内发生事件的情况进行检测。检测到跳变,则输出一个布尔值到跳变,则输出一个布尔值“true”,否则为布尔,否则为布尔值值“false”。3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述5.5.不完整条件语句与时序电路不完整条件语句与时序电路 【例【例3-9】设计一个一位比较器,当】设计一个一位比较器,当a1b1,输出为输出为1,否则输出为,否则输出为0。ENTITY COMP_BAD IS PORT(a1,b1 :IN BIT;q1 :OUT BIT );END;ARCHIT
29、ECTURE one OF COMP_BAD IS BEGIN PROCESS(a1,b1)BEGIN IF a1 b1 THEN q1=1;ELSIF a1 b1 THEN q1 b1 THEN q1=1;ELSE q1=0;END IF;.3.2.3 实现时序电路的实现时序电路的VHDL不同表述不同表述【例【例3-11】(方法】(方法2).PROCESS(CLK)BEGINIF CLKEVENT AND(CLK=1)AND(CLKLAST_VALUE=0)THEN Q=D;-确保确保CLK的变化是一次上升沿的跳变的变化是一次上升沿的跳变 END IF;END PROCESS;3.2.3 实
30、现时序电路的实现时序电路的VHDL不同表述不同表述【例【例3-12】(方法】(方法3).PROCESS(CLK)BEGINIF CLK=1 AND CLKLAST_VALUE=0 THEN Q=D;END IF;END PROCESS;【例【例3-13】(方法】(方法4)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF3 IS PORT(CLK,D:IN STD_LOGIC;Q:OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1:STD_LOGIC;BEGIN PROCESS(C
31、LK)BEGIN IF rising_edge(CLK)-上升沿上升沿检测检测函数,是函数,是IEEE库库中的中的 STD_LOGIC_1164程序包中的预定义函数程序包中的预定义函数 THEN Q1=D;END IF;END PROCESS;Q=Q1;END;3.2.3 实现时序电路的实现时序电路的VHDL不同表述不同表述【例【例3-14】(方法(方法5).PROCESS BEGIN wait until CLK=1 ;-利用利用wait unitl语句,语句,Q=D;如果当前如果当前CLK不不为为1,等待并保持,等待并保持Q原原 值值不不变变,直到,直到CLK为为1时时才才对对Q进进行行赋
32、值赋值操作。操作。END PROCESS;3.2.3 实现时序电路的实现时序电路的VHDL不同表述不同表述【例【例3-15】(方法(方法6).PROCESS(CLK)BEGIN IF CLK=1 THEN Q=D;-利用进程的启动特性产生对利用进程的启动特性产生对CLK的边沿检测的边沿检测 END IF;END PROCESS;图图3 3-7 6 6种描述方法的电路仿真时序波形种描述方法的电路仿真时序波形 3.2.3 实现时序电路的实现时序电路的VHDL不同表述不同表述【例例 3-16】电电 平平 触触 发发 型型 D D寄寄 存存 器器,即即 CLKCLK处处 于于 高高 电电 平平 时时,
33、输输 出出 Q Q随随D D的变化而变化的变化而变化,CLK,CLK处于低电平时,处于低电平时,Q Q保持不变。保持不变。.PROCESS(CLK,D)BEGIN IF CLK=1 THEN Q=D;END IF;END PROCESS;注注:将将D放放在在进进程程的的敏敏感感信信号号表表中中,D的的任任何何变变化化都都会会启启动动进进程程,进进而而判判断断IF语语句句,条条件件成成立立(即即CLK=1),则则对对Q不不断断进进行行更更新新。条条件件不不成成立立时时,即使,即使D有有变变化,都不化,都不执执行行Q=D。3.2.4 异步时序电路设计异步时序电路设计【例【例3-17】用两个进程描述
34、一个异步时序电路。】用两个进程描述一个异步时序电路。.ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2:STD_LOGIC;BEGINPRO1:PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q1=NOT(Q2 OR A);END IF;END PROCESS;PRO2:PROCESS(Q1)BEGIN IF Q1EVENT AND Q1=1 THEN Q2=D;END IF;END PROCESS;QQ=Q2;.图图3 3-9 例例3 3-15综合后的电路(综合后的电路(Synplify综合)综合)3.2.4
35、 异步时序电路设计异步时序电路设计 3.3 计数器设计计数器设计【例【例3-18】方法】方法1ENTITY CNT4 IS PORT(CLK:IN BIT;Q :BUFFER INTEGER RANGE 15 DOWNTO 0 );END;ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q=Q+1;END IF;END PROCESS;END bhv;3.3.1 4位二进制加法计数器设计位二进制加法计数器设计 表式Q=Q+1的右项与左项并非处于相同的时刻内,对于时序电路,除了传输延时外
36、,前者的结果出现于当前时钟周期;后者,即左项要获得当前的Q+1,需等待下一个时钟周期。表面上,BUFFER具有双向端口INOUT的功能,但实际上其输入功能是不完整的,它只能将自己输出的信号再反馈回来,并不含有IN的功能。因此Q的端口模式为BUFFER 是较合理的。注意注意注意注意3.3.2 整数类型整数类型 Q:BUFFER INTEGER RANGE 15 DOWNTO 0;设置设置Q的端口模式为的端口模式为BUFFER,数据类型为,数据类型为INTEGER,取值范围为,取值范围为15到到0。注:注:VHDL规定算术运算的操作数为规定算术运算的操作数为INTEGER需要用需要用RANGE语句
37、对所定义的数限定范围。语句对所定义的数限定范围。此题综合器对此题综合器对Q综合成四条信号线:综合成四条信号线:Q3,Q2,Q1,Q0。3.3.2 整数类型整数类型 1 1 十进制整数十进制整数十进制整数十进制整数0 0 十进制整数十进制整数十进制整数十进制整数35 35 十进制整数十进制整数十进制整数十进制整数10E310E3 十进制整数,等于十进制整数十进制整数,等于十进制整数十进制整数,等于十进制整数十进制整数,等于十进制整数1000 1000 16#D9#16#D9#十六进制整数,等于十六进制整数十六进制整数,等于十六进制整数十六进制整数,等于十六进制整数十六进制整数,等于十六进制整数D
38、9H D9H 8#720#8#720#八进制整数,等于八进制整数八进制整数,等于八进制整数八进制整数,等于八进制整数八进制整数,等于八进制整数720O 720O 2#11010010#2#11010010#二进制整数,等于二进制整数二进制整数,等于二进制整数二进制整数,等于二进制整数二进制整数,等于二进制整数11010010B 11010010B 整数常量的书写方式示例整数常量的书写方式示例整数常量的书写方式示例整数常量的书写方式示例3.3.2 整数类型整数类型 整数类型有以下子类型:整数类型有以下子类型:NATURAL(自然数类型)取值范围为自然数类型)取值范围为0和所有正整数。和所有正整数
39、。POSITIVE(正整数类型)取值范围为所有正整数。(正整数类型)取值范围为所有正整数。注:注:数据类型数据类型BIT,BIT_VECTOR,INTEGER,NATURAL,POSITIVE都都被定义在被定义在VHDL的标准库(的标准库(STD库)中的标准程序包库)中的标准程序包STANDARD中中的。是默认打开的,说明语句可以省略。的。是默认打开的,说明语句可以省略。K KX康芯科技康芯科技3.3.3 计数器设计的其他表述方法计数器设计的其他表述方法【例【例3-19】方法】方法2 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_L
40、OGIC_UNSIGNED.ALL;ENTITY CNT4 IS PORT(CLK:IN STD_LOGIC;Q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END;ARCHITECTURE bhv OF CNT4 ISSIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q1=Q1+1;END IF;END PROCESS;Q=Q1;END bhv;上例中,上例中,Q的端口模式为的端口模式为OUT,没有输入特性,因此不能使用,没有输入特性,因此
41、不能使用Q=Q+1的语句。的语句。解决方法:定义一个内部信号解决方法:定义一个内部信号Q1,内部信号没有端口模式,即内部信号没有端口模式,即Q1的的数据流动方向不受限制,可执行数据流动方向不受限制,可执行 Q1=Q1+1的操作。的操作。新的问题:新的问题:Q10);-计计数器异步复位数器异步复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟检测时钟上升沿上升沿 IF EN=1 THEN -检测是否允许计数(同步使能)检测是否允许计数(同步使能)IF CQI 0);-大于大于9,计数值清零计数值清零 END IF;END IF;END IF;IF CQI=“1001”T
42、HEN COUT=1;-计数大于计数大于9,输出进位信号,输出进位信号 ELSE COUT=0;END IF;CQ=CQI;-将计数值向端口输出将计数值向端口输出 END PROCESS;END behav;相关语法说明相关语法说明:1.变量变量 VARIABLE CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);定定义标识义标识符符CQI为变为变量,其数据量,其数据类类型型为为含有含有4个元素的个元素的标标准准逻辑逻辑矢量。矢量。变变量的功能主要用于数据的量的功能主要用于数据的暂暂存。存。变变量的量的赋值赋值符号是符号是:=信号的信号的赋值赋值符号是符号是=如:如:VARIA
43、BLE a:BIT;SIGNAL b:BIT;a:=1;bX)例如:例如:SIGNAL d :STD_LOGIC_VECTOR(4 DOWNTO 0);VARIABLE a:STD_LOGIC_VECTOR(15 DOWNTO 0);.如:如:d 0);a:=(OTHERS=0);等价于等价于d=“00000”;a:=“0000000000000000”;又如又如 da(3),3=a(5),OTHERS=a(1);等价于等价于d=a(1)&a(5)&a(1)&a(3)&a(1);十进制加法计数器的十进制加法计数器的RTL电路(电路(Synplify综合)综合)比较比较器器比较比较器器二输二输入
44、与入与门门2选选1选择器选择器4位锁存器位锁存器四输入与门四输入与门加加1器器二输二输入与入与门门2选选1选择器选择器四输入与门四输入与门比较比较器器由语句由语句IF CQI0)产生。产生。由由IF EN=1 THEN 产生。产生。由由IF CQI=9 THEN COUT=1;ELSE COUT=0;产生。产生。十进制加法计数器的工作时序十进制加法计数器的工作时序 习习 题题 3-1.画出与下例实体描述对应的原理图符号元件:画出与下例实体描述对应的原理图符号元件:ENTITY buf3s IS -实体实体1:三态缓冲器三态缓冲器 PORT(input:IN STD_LOGIC;-输入端输入端
45、enable:IN STD_LOGIC;-使能端使能端 output:OUT STD_LOGIC);-输出端输出端END buf3x;ENTITY mux21 IS -实体实体2:2选选1多路选择器多路选择器 PORT(in0,in1,sel:IN STD_LOGIC;output:OUT STD_LOGIC);END;习习 题题 3-2.图图所所示示的的是是4选选1多多路路选选择择器器,试试分分别别用用IF_THEN语语句句和和CASE语语句句的的表表达达方方式式写写出出此此电电路路的的VHDL程序。程序。选选择择控控制制的的信信号号s1和和s0的的数数据据类类型型为为STD_LOGIC_V
46、ECTOR;当当s1=0,s0=0;s1=0,s0=1;s1=1,s0=0和和s1=1,s0=1分分别别执行执行y=a、y=b、y=c、y=d。4选选1多路选择器多路选择器 习习 题题 3-3.3-3.图图所所示示的的是是双双2 2选选1 1多多路路选选择择器器构构成成的的电电路路MUXKMUXK,对对于于其其中中MUX21AMUX21A,当当s=0s=0和和11时时,分分别别有有y=ay=a和和y=by=b。试试在在一一个个结结构构体体中中用用两两个个进进程程来来表达此电路,每个进程中用表达此电路,每个进程中用CASECASE语句描述一个语句描述一个2 2选选1 1多路选择器多路选择器MUX
47、21AMUX21A。双双2选选1多路选择器多路选择器 习习 题题 3-4.3-4.下下图图是是一一个个含含有有上上升升沿沿触触发发的的D D触触发发器器的的时时序序电电路路,试试写写出出此此电电路路的的VHDLVHDL设计文件。设计文件。习习 题题 3-5.3-5.给出给出1 1位全减器的位全减器的VHDLVHDL描述。要求:描述。要求:(1)(1)首首先先设设计计1 1位位半半减减器器,然然后后用用例例化化语语句句将将它它们们连连接接起起来来,图图4-204-20中中h_suberh_suber是半减器,是半减器,diffdiff是输出差,是输出差,s_outs_out是借位输出,是借位输出
48、,sub_insub_in是借位输入。是借位输入。(2)(2)以以1 1位位全全减减器器为为基基本本硬硬件件,构构成成串串行行借借位位的的8 8位位减减法法器器,要要求求用用例例化化语语句来完成此项设计句来完成此项设计(减法运算是减法运算是 x x y-sun_in=diffr)y-sun_in=diffr)。1位全减器位全减器 习习 题题 3-6.3-6.根据下图,写出顶层文件根据下图,写出顶层文件MX3256.VHDMX3256.VHD的的VHDLVHDL设计文件。设计文件。3-7.3-7.设计含有异步清零和计数使能的设计含有异步清零和计数使能的1616位二进制加减可控计数器。位二进制加减可控计数器。