vhdl复习

合集下载

VHDL复习

VHDL复习

百度题库VHDL复习资料1.一个完整的VHDL程序,一般有哪几部分组成,它们分别描述的是什么?答:、VHDL程序的基本结构由(库)、(程序包)、(实体)、(结构体)和(配置)组成。

2.IF THEN语句、case when语句、with select语句各是什么类型语句,顺序语句必须放在什么地方?答:IF THEN语句与case when语句是顺序语句,with select语句是并行语句,顺序语句必须放在进程中。

3.结构体中常用的功能描述方式有几种?答:1)行为描述方式 2)数据流描述方式 3)结构化描述方式4.QuartusⅡ是CPLD/FPGA集成开发软件,基于QuartusⅡ软件进行设计开发,包括几个步骤,分别是什么?答:步骤分别是:1)新建项目 2)设计输入 3)分析综合及设计编译4)时序仿真 5)引脚分配及下载配置5.1987VHDL标准中规定标识符由什么组成,有什么具体要求?答:标识符可以由英文字母,数字,下划线“-”等组成选择填空1.在VHDL语言中,下列对时钟边沿检测描述中,错误的是( D )。

A.if clk’event and clk = ‘1’ thenB. if falling_edge(clk) thenC. if clk’event and clk = ‘0’ thenD.if clk’stable and not clk = ‘1’ then2.一个项目的输入输出端口是定义在( A )。

A.实体中B.结构体中C.任何位置D.进程体3. 下列语句中,不属于并行语句的是( B )。

A.进程语句B.CASE语句C.元件例化语句D.WHEN…ELSE…语句4.描述项目具有逻辑功能的是( B )。

A.实体B.结构体C.配置D.进程5.关键字ARCHITECTURE定义的是( A)。

A.结构体B.进程C.实体D.配置6.关键字ARCHITECTURE定义的是( A )。

A.结构体B.进程C.实体D.配置7.QUARTESII中编译VHDL源程序时要求( A )。

VHDL复习资料

VHDL复习资料

VHDL复习资料1、名词解释1、ASIC 专用集成电路2、SOC 单片电子系统3、EDA 电子设计自动化4、FPGA 现场可编程自动化5、CPLD 复杂可编程逻辑器件6、VHDL 非常高速的硬件描述语言7、IP 知识产权核或知识产权模块2、VHDL优点:1、语法比较严谨2、有很好的行为级描述能力和一定的系统级描述能力缺点:1、VHDL代码比较冗长2、对数据类型匹配要求过于严格,初学不方便,编程耗时较多3、对版图级、管子级等底层的描述级别几乎不支持,无法直接用于集成电路的建模3、EDA设计流程1、设计输入1)图形输入:原理图输入、状态图输入和波形图输入2)HDL文本输入:最基本、最有效、最通用的输入方法2、综合综合就是将电路的高级语言转换成低级的,可与FPGA/CPLD的基本结构相映射的网表文件或程序3、适配适配器也称结构综合器;将由综合器产生的网标文件配置成最终的下载文件。

如JEDEC、JAM、SOF、POF格式4、时序仿真和功能仿真5、编程下载6、硬件测试4、CPLD和FPGA1、CPLD 基于乘积项的可编程结构不丢失容量小2、FPGA 基于可编程的查找表(RAM)结构丢失容量大3、FPGA典型公司:Xilinx(赛灵思)Altera(阿尔特拉)5、组合电路的VHDL描述基本结构实体(外部可见):描述外部特性结构体:描述内部特性1、实体表达实体描述的是电路器件的:端口构成、端口类型和端口上流动的信号的属性ENTITY [NAME] ISPORT(Q1:IN STD_LOGIC;Q2:OUT STD_LOGIC_VECTOR (N DOWNTO 0));END;2、实体名3、端口语句和端口信号名4、端口模式5、数据类型:INTEGER类型、BOOLEAN类型、STD_LOGIC类型和BIT类型等6、结构体表达:ARCHITECTURE XX OF [NAME] IS[说明语句]BEGIN[功能描述语句]END;7、复制符号和数据比较符号8、WHEN_ELSE条件信号赋值语句9、关键字10、标识符11、规范的程序书写格式12、文件取名和存盘6、STD_LOGIC数据类型定义语句:‘0’表示强逻辑0,’1’表示强逻辑1,’Z’表示高阻态7、设计库和标准程序包WORK 工作区库:IEEE.包:STD_LOGIC.1164STD_LOGIC_UNSIGNED8、数据对象有三类:信号(SIGNAL)、变量(VARIABLE)和常量(CONSTANT)变量:VARIABLE 变量名:数据类型:= 初始值信号目标信号名<= 表达式AFTER时间量;--AFTER是关键词9、进程语句和顺序语句顺序语句IF_THEN_ELSE_END IF是放在由PROCESS_END PROCESS引导的语句中的进程顺序描述语句:包括IF语句、CASE语句、LOOP语句等结构组成进程跳出语句:包括NEXT语句、EXIT语句,用于控制进程的运行方向进程要点:PROCESS为一无限循环语句十、VHDL文字规则P 322十一、填空题(多数是元件例化)元件例化:八位乘法器library ieee;use ieee.std_logic_1164.all;entity add8 isport(a, b :in std_logic_vector(7 downto 0);sum :out std_logic_vector(8 downto 0));end;architecture xx of add8 iscomponent banjia isport(a,b: in std_logic;c,s :out std_logic);end component;component quanjia isport(a,b,c_1: in std_logic;c,s :out std_logic);end component;signal oc:std_logic_vector(6 downto 0);beginu0: banjia port map(a=>a(0), b=>b(0), c=>oc(0), s=>sum(0));u1: quanjia port map(a=>a(1),b=>b(1),c_1=>oc(0),c=>oc(1),s=>sum(1));u2: quanjia port map(a=>a(2),b=>b(2),c_1=>oc(1),c=>oc(2),s=>sum(2));u3: quanjia port map(a=>a(3),b=>b(3),c_1=>oc(2),c=>oc(3),s=>sum(3));u4: quanjia port map(a=>a(4),b=>b(4),c_1=>oc(3),c=>oc(4),s=>sum(4));u5: quanjia port map(a=>a(5),b=>b(5),c_1=>oc(4),c=>oc(5),s=>sum(5));u6: quanjia port map(a=>a(6),b=>b(6),c_1=>oc(5),c=>oc(6),s=>sum(6));u7: quanjia port map(a=>a(7),b=>b(7),c_1=>oc(6),c=>sum(8),s=>sum(7));end;---*************************--半加器library ieee;use ieee.std_logic_1164.all;entity banjia isport(a,b: in std_logic;c,s :out std_logic);end;architecture xx of banjia isbegins <= a xor b;c <= a and b;end;--********************************--全加器library ieee;use ieee.std_logic_1164.all;entity quanjia isport(a,b,c_1: in std_logic;c,s :out std_logic);end;architecture xx of quanjia isbegins <= a xor b xor c_1;c <= (a and b) or (a and c_1) or (b and c_1);end;十二、编程题1、计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JSQ4 ISPORT(CLK:IN STD_LOGIC;Q :OUT STD_LOGIC_VECTOR(1 DOWNTO 0));END;ARCHITECTURE XX OF JSQ4 ISSIGNAL TQ:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF CLK'EVENT AND CLK='1' THENTQ<= TQ+1;END IF;END PROCESS;Q<=TQ;END2、译码器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY YIMAQI ISPORT(ADDR:IN STD_LOGIC_VECTOR(1 DOWNTO 0)Y :OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END;ARCHITECTURE XX OF IS YIMAQI ISBEGINY<="1110"WHEN ADDR="00"ELSE"1101"WHEN ADDR="01"ELSE"1011"WHEN ADDR="10"ELSE"0111";END;3、选择器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY XZQ ISPORT(D0,D1,D2,D3:IN STD_LOGIC_VECTOR(7 DOWNTO 0) ADDR :IN STD_LOGIC_VECTOR(1 DOWNTO 0)DATA :OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END;ARCHITECTURE XX OF XZQ ISBEGINDATA<=DO WHEN ADDR="00" ELSED1 WHEN ADDR="01" ELSEDO WHEN ADDR="10" ELSED3;END;。

(完整版)VHDL复习

(完整版)VHDL复习

百度题库VHDL复习资料1.一个完整的VHDL程序,一般有哪几部分组成,它们分别描述的是什么?答:、VHDL程序的基本结构由(库)、(程序包)、(实体)、(结构体)和(配置)组成。

2.IF THEN语句、case when语句、with select语句各是什么类型语句,顺序语句必须放在什么地方?答:IF THEN语句与case when语句是顺序语句,with select语句是并行语句,顺序语句必须放在进程中。

3.结构体中常用的功能描述方式有几种?答:1)行为描述方式 2)数据流描述方式 3)结构化描述方式4.QuartusⅡ是CPLD/FPGA集成开发软件,基于QuartusⅡ软件进行设计开发,包括几个步骤,分别是什么?答:步骤分别是:1)新建项目 2)设计输入 3)分析综合及设计编译4)时序仿真 5)引脚分配及下载配置5.1987VHDL标准中规定标识符由什么组成,有什么具体要求?答:标识符可以由英文字母,数字,下划线“-”等组成选择填空1.在VHDL语言中,下列对时钟边沿检测描述中,错误的是( D )。

A.if clk’event and clk = ‘1’ thenB. if falling_edge(clk) thenC. if clk’event and clk = ‘0’ thenD.if clk’stable and not clk = ‘1’ then2.一个项目的输入输出端口是定义在( A )。

A.实体中B.结构体中C.任何位置D.进程体3. 下列语句中,不属于并行语句的是( B )。

A.进程语句B.CASE语句C.元件例化语句D.WHEN…ELSE…语句4.描述项目具有逻辑功能的是( B )。

A.实体B.结构体C.配置D.进程5.关键字ARCHITECTURE定义的是( A)。

A.结构体B.进程C.实体D.配置6.关键字ARCHITECTURE定义的是( A )。

A.结构体B.进程C.实体D.配置7.QUARTESII中编译VHDL源程序时要求( A )。

vhdl期末考试复习题大全

vhdl期末考试复习题大全

VHDL 复习一.问答题一.问答题1信号赋值语句在什么情况下作为并行语句?在什么情况下作顺序语句?信号赋值和变量赋值符号分别是什么?两种赋值符号有什么区别?赋值符号分别是什么?两种赋值符号有什么区别?l 信号赋值语句在进程外作并行语句,并发执行,与语句所处的位置无关。

信号赋值语句在进程内或子程序内做顺序语句,按顺序执行,与语句所处的位置有关。

语句在进程内或子程序内做顺序语句,按顺序执行,与语句所处的位置有关。

l 信号赋值符号为“<=”变量赋值用变量赋值用““:=”。

信号赋值符号用于信号赋值动作,信号赋值符号用于信号赋值动作,不立不立即生效。

变量,赋值符号用于变量赋值动作,立即生效。

即生效。

变量,赋值符号用于变量赋值动作,立即生效。

2进程的敏感信号表指的是什么?简述敏感信号表在进程中的作用?进程的敏感信号表指的是什么?简述敏感信号表在进程中的作用?l 进程的“敏感信号表”也称敏感表,是进程的激活条件,可由一个或多个信号组成,各信号间以“,”号分隔。

当敏感信号表中的任一个信号有事件发生,即发生任意变化,此时,进程被激活,进程中的语句将从上到下逐句执行一遍,当最后一条语句执行完毕之后,进程即进入等待挂起状态,直到下一次敏感表中的信号有事件发生,进程再次被激活,如此循环往复。

件发生,进程再次被激活,如此循环往复。

3什么是库、程序包、子程序、过程调用和函数调用?什么是库、程序包、子程序、过程调用和函数调用?l 库和程序包用来描述和保存元件、类型说明和子程序等,以便在其它设计中通过其目录可查询、调用。

子程序由过程和函数组成。

在子程序调用过程中,过程能返回多个变量,多个变量,函数只能返回一个变量。

函数只能返回一个变量。

函数只能返回一个变量。

若子程序调用的是一个过程,若子程序调用的是一个过程,若子程序调用的是一个过程,就称为过程调用,就称为过程调用,若子程序调用的是一个函数,则称为函数调用。

过程调用、函数调用都是子程序调用。

VHDL复习题要点

VHDL复习题要点

一、选择题( A )1.一个项目的输入输出端口是定义在:A。

实体中 B. 结构体中C. 任何位置D。

进程体( B)2.描述项目具有逻辑功能的是:A。

实体B。

结构体C。

配置 D. 进程( A )3.关键字ARCHITECTURE定义的是:A。

结构体 B. 进程C. 实体D。

配置( D )4.VHDL语言中变量定义的位置是:A。

实体中中任何位置B。

实体中特定位置C. 结构体中任何位置D. 结构体中特定位置( D )5.VHDL语言中信号定义的位置是:A. 实体中任何位置B。

实体中特定位置C. 结构体中任何位置D. 结构体中特定位置( B )6.变量是局部量可以写在:A。

实体中B。

进程中C. 线粒体D. 种子体中( A )7.变量和信号的描述正确的是:A. 变量赋值号是:=B. 信号赋值号是:=C。

变量赋值号是<= D。

二者没有区别( B )8。

变量和信号的描述正确的是:A。

变量可以带出进程 B. 信号可以带出进程C. 信号不能带出进程D. 二者没有区别()9.对于信号和变量的说法,哪一个是不正确的:A. 信号用于作为进程中局部数据存储单元B. 变量的赋值是立即完成的C。

信号在整个结构体内的任何地方都能适用D. 变量和信号的赋值符号不一样( A )10.下列关于变量的说法正确的是:A.变量是一个局部量,它只能在进程和子程序中使用B.B. 变量的赋值不是立即发生的,它需要有一个δ延时×××××试卷第1页(共××页)C. 在进程的敏感信号表中,既可以使用信号,也可以使用变量D. 变量赋值的一般表达式为:目标变量名〈= 表达式( C )11.可以不必声明而直接引用的数据类型是:A。

STD_LOGIC B。

STD_LOGIC_VECTORC. BIT D。

前面三个答案都是错误的( C )12.STD_LOGIG_1164中定义高阻的字符是:A. X B。

VHDL复习资料

VHDL复习资料

一.填空(每空1分,共20分)1.MAX+plusII是ALTERA 公司自己开发的EDA 工具软件。

2. VHDL设计实体的基本结构由库、程序包、实体、结构体、配置等部分构成。

3.在VHDL中最常用的库IEEE 标准库,最常用的包集合是1164。

4.在VHDL的端口声明语句中,端口方向包括输入(in)、输出(out)、输入|输出(inout)、缓冲和。

5.VHDL的顺序语句只能出现在进程、函数、过程中,是按程序书写顺序自上而下,一条一条地执行。

6.VHDL的块语句是并行语句结构,它的内部是由并行语句构成的7.VHDL的变量(VARIABLE)是一种局部量,只能在进程、函数和过程中声明和使用。

8.MAX+plusII支持文本、原理图、波形、符号编辑等不同的编辑方式。

9.MAX+plusII工具软件有功能、时序、仿真等功能。

10.MAX—PLUSⅡ的波形编辑文件分波形输入和波形仿真,它们的文件扩展名分别是W D F 和S C F。

11.VHDL的实体声明部分指定了设计单元的输入输出端口,它是设计实体对外的通信界面,是外界可以看到的部分。

12.CPLD和FPGA的含义分别是复杂可编程逻辑器件,现场可编程门阵列。

13.在VHDL中,含WAIT语句的进程Process的括号不能再加敏感量 ,否则是非法的.14.VHDL的Process(进程)语句是由顺序语句组成的,但其本身却是并发语句结构。

15.VHDL的子程序有函数和过程两种类型。

16.在VHDL中,标准逻辑位数据有 0和1种逻辑值。

17.MAX—PLUSⅡ的仿真分功能仿真和时序仿真。

18.VHDL的变量(VARIABLE)是一个功能变量,只能在进程、函数和过程中声明和使用。

19.VHDL的数据对象包括常数、变量、信号和文件。

20. 实体和结构体是设计实体的基本组成部分,它们可以构成最基本的VHDL程序。

20.VHDL语言的字符是以字母的下划线括起来的数字、字母和符号。

VHDL复习

1 VHDL的设计流程?编写VHDL代码,保存为一个后缀名为.vhd的文件,代码保存好进行综合阶段。

然然代码编译,编译通过后,进行优化,然后就可以对设计进行仿真。

仿真通过后,对各种电路单元进行布线工作,或者生成asic掩膜文件,用于asic的生产。

2 VHDL中最基本的结构?作用?库(library),实体(entity),构造体(architecture),库是一些常用代码的集合,将电路设计中经常使用的一些代码存放到库中有利于设计的重用和代码共享。

实体是用来描述电路的所有输入/输出引脚。

构造体中的代码是用来描述电路的行为和实现功能。

3 VHDL中的基本数据类型?哪些是可综合的类型?预定义数据类型,位(bit)和位矢量(bit-vector),布尔类型,整数类型,自然数类型,实数和物理量字符类型都是不可综合的,字符,有符号数和无符号数类型。

用户自定义类型:整数和实数类型,枚举类型,数组类型,记录类型,子类型。

标量BIT,STD_LOGIC,STD_ULOGIC,BOLLEAN是可综合的。

矢量BIT_VECTORSTD_LOGIC_VECTOR,STD_ULOGIC_VECTOR,INTEGER,SIGNEG,UNSIGNED是可综合的。

4 信号与变量的区别信号是全局的,用于结构体中并行语句间数据流的传递;变量则是局部的,他主要用于单个进程中中间变量的存储.信号在时序电路中赋值延迟更新数值,变量赋值在组合电路中立即更新数值。

5 信号与变量怎样影响寄存器数量?对一个信号来说,当一个信号的赋值以另一个信号的边沿或跳变为条件时(即发生同步赋值时),该信号经编译后就会产生寄存器。

对变量来说,若一个信号是在另一个信号跳变时被赋值,并且最终该值又被赋给了另外的信号(数值传递作用),则将生成寄存器。

6 函数的输入特点?输出结果特点?函数有零个或多个输入参数。

输入参数只能是常量(默认)或信号(不允许是变量)。

输出有一个返回值。

VHDL考试复习资料


实体说明(entity)
buffer 用于信号的输出,但和out模式不同,buffer可以回读输 出的数据。如: data:buffer integer; 此时data可以作为输出端口输出数据,也可以读取所输 出的值。 data<=data+1; --回读端口数据再加1送出
端口模式:buffer 数据输出 数据回读
数据类型
数据类型: • VHDL标准数据类型有10种,与电路中的逻辑电平直接对应
的是“bit”和“bit_vector”两种类型。除此之外还有: integer real boolean character string time severity level natural、positive
•课本11行数据枚举类型,12行属于子类型 定义变量时限定数组下标
数据类型
子类型
• 子类型是从其他数据类型中派生出来的,其区别是子类型的取值范 围是原数据类型的子集,采用这种方式可以使程序结果更加精简, 消耗更小的硬件资源。 • 子类型的定义方式:
SUBTYPE 子类型名 IS 基本数据类型名 [范围限制];
• • • • 库(library) 程序包(package) 实体说明(entity declaration) 结构体(architecture body)
library package
entity declaration
• 配置(configuration)
architectur0 architectur1
必须的两个部分:
• 实体说明(entity declaration) • 结构体(architecture body)
architecturn

VHDL期末复习资料

一、填空题(根据题意,将下列各题的正确答案填写在对应小题内的“”处,每空1.5分,)1.基于EDA技术的电子系统设计采用的是的方法。

2. 时序仿真是在设计输入完成之后,选择具体器件并完成布局、布线之后进行的时序关系仿真,因此又称为。

3. 图形文件设计结束后一定要通过,检查设计文件是否正确。

4. 一个实用的vhdl程序一般由、和组成。

5.实体的端口定义包括、和。

6. VHDL的操作符包括、、和四类。

7. 在VHDL中,标准逻辑类型数据有种逻辑值。

8.在一个实体的端口方向说明时,输入使用in表示,那么结构体内部不能再使用的输出是用表示;双向端口是用表示;结构体内部可再次使用的输出是用表示。

9.VHDL的短标识符名必须以,后跟若干字母、数字或单个下划线构成,但最后不能为。

10. vhdl的数据对象包括、、、和它们用来存放各种类型数据。

11.在VHDL的端口声明语句中,端口方向包括、、和。

12. 进程process在仿真运行中,只能处于和两种状态。

13. VHDL的结构体用来描述实体的和,它由VHDL语句构成,是外界看不到的部分。

14.CLK下降沿描述语句为:。

15. VHDL的实体声明部分指定了设计单元的或它是设计实体对外的一个通信界面,是外界可以看到的部分。

16. 在VHDL中最常用的库是标准库,最常用的数据包是数据包。

17. 过程调用的两种方法为和。

18. 一个完整的VHDL语言程序通常包含、、、和。

19. 和是设计实体的基本组成部分,它们可以构成最基本的VHDL程序。

20. VHDL语言的两大基本语句是和。

21. 根据VHDL语法规则,在VHDL程序中使用的文字、数据对象、数据类型都需要。

22. 逻辑综合中,信号赋值符号是,变量的赋值符号。

23. 在VHDL中,的数据传输是立即发生的,不存在任何延时的行为。

24. 进程process后面括号里面的称为。

25. 在std_logic类型中,_ ____、_ ____和_ ____三种值不能够被综合所支持。

VHDL复习题

习题3.1比较常用硬件描述语言VHDL、Verilog和ABEL语言的优劣。

1.VHDL:描述语言层次较高,不易控制底层电路,因而对综合器的性能要求较高。

有多种EDA工具选择,已成为IEEE标准。

应用VHDL进行工程设计的优点是多方面的,具体如下:(1) 与其他的硬件描述语言相比,VHDL具有更强的行为描述能力。

(2) VHDL具有丰富的仿真语句和库函数,使得在任何大系统的设计早期,就能查验设计系统的功能可行性,随时可对系统进行仿真模拟,使设计者对整个工程的结构和功能可行性做出判断。

(3) VHDL语句的行为描述能力和程序结构,决定了它具有支持大规模设计的分解和已有设计的再利用功能。

(4) 用VHDL完成一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动把VHDL描述设计转变成门级网表(根据不同的实现芯片)。

(5) VHDL对设计的描述具有相对独立性。

(6) VHDL具有类属描述语句和子程序调用等功能,对于完成的设计,在不改变源程序的条件下,只需改变类属参量或函数,就能轻易地改变设计的规模和结构。

2. Verilog:设计者需要了解电路的结构细节,对综合器的性能要求较低。

有多种EDA工具选择,已成为IEEE标准。

3.ABEL: 设计者需要了解电路的结构细节,对综合器的性能要求较低。

支持ABEL的综合器只有一家,ABEL正朝国际化标准努力。

3.2 VHDL程序一般包括几个组成部分?每部分的作用是什么?(1)三个基本组成部分:库、程序包使用说明,实体描述和实体对应的结构体描述。

(2)库、程序包使用说明:用于打开调用本设计实体将用到的库、程序包实体描述:用于描述该设计实体与外界的接口信号说明结构体描述:用于描述该设计实体内部的组成及内部工作的逻辑关系结构体配置语句主要用于层次化的方式对特定的设计实体进行元件的例化,或是为实体选定某个特定的结构体3.3 VHDL语言中数据对象有几种?各种数据对象的作用范围如何?各种数据对象的实际物理含义是什么?(1)数据对象有三种:变量、常量、信号(2)常量的作用范围取决于其所定义的位置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章VHDL程序基本结构例1 一个2输入的与门的逻辑描述LIBRARY ieee; --库说明语句USE ieee.std_logic_1164.ALL; --程序包说明语句ENTITY and2 ISPORT(a,b : IN STD_LOGIC;y : OUT STD_LOGIC);END and2;ARCHITECTURE and2x OF and2 ISBEGINy<=a AND b;END and2x;端口说明的一般格式为:PORT(端口名{,端口名}:端口模式数据类型;端口名{,端口名}:端口模式数据类型);PORT (a,b : IN STD_LOGIC;y : OUT STD_LOGIC);端口名是赋于每个外部引脚的名字,名字的含义要与惯例接轨,如D开头的端口名表示数据,A开头的端口名表示地址等。

端口名通常用几个英文字母或一个英文字母加数字表示。

下面是合法的端口名:CLK,RESET,A0,D3端口模式用来说明数据传输通过该端口的方向。

端口模式有以下几类:IN(输入):仅允许数据流进入端口。

主要用于时钟输入、控制输入、单向数据输入。

OUT(输出):仅允许数据流由实体内部流出端口。

该模式通常用于终端计数一类的输出,不能用于反馈。

第二章短标识符规则:短标识符由字母、数字以及下划线字符组成,且具有以下特征要求:●第一个字符必须是字母;●最后一个字符不能是下划线;●不允许连续两个下划线;●在标识符中大、小写字母是等效的。

●VHDL中的注释文字一律为2个连续的连接线“--”,可以出现在任一语句后面,也可以出现在独立行;●VHDL的保留字(关键字)不能用于标识符;扩展标识符规则:扩展标识符是VHDL’93版增加的标识符书写规则:(1) 扩展标识符用反斜杠来定界。

例如:\multi_screens\,\eda_centrol\等都是合法的扩展标识符。

(2) 允许包含图形符号、空格符。

例如:\mode A, \$100\, \p%name\等。

(3) 反斜杠之间的字符可以用保留字。

例如:\buffer\, \entity\, \end\等。

(4) 扩展标识符的界定符两个斜杠之间可以用数字打头。

如:\100$\,\2chip\,\4screens\等。

(5) 扩展标识符中允许多个下划线相连。

例如:\Four_screens\,\TWO_Computer_sharptor\等。

(6) 扩展标识符区分大小写。

例如: \EDA\ 与\eda\不同。

(7) 扩展标识符与短标识符不同。

例如:\COMPUTER\ 与Computer不同。

在VHDL中,凡是可以赋予一个值的客体称为数据对象。

常用的数据对象为常量、变量、信号和文件,其中文件类型是VHDL’93标准中新通过的。

对象说明的一般书写格式为:对象类别标识符表:子类型标识[:=初值];对象说明举例:CONSTANT T1,T2:time :=30ns,--常量说明V ARIABLE SUM:read;--变量说明SIGNAL CLOCK:bit;--信号说明FILE input:Text IS IN “STD_INPUT”--文件说明信号赋值语句格式为:目标信号名<= 表达式;赋值语句中的表达式必须与目标信号具有相同的数据类型。

信号通常在构造体、包集合和实体中说明;信号不能在进程中说明(但可以在进程中使用)。

“:=”表示对信号直接赋值,表示信号初始值不产生延时。

“<=”表示代入赋值,代入赋值法允许产生延时。

例如:T1 <=T2 after 20ns;信号包括I/O引脚信号以及IC内部缓冲信号,有硬件电路与之对应,故信号之间的传递有实际的附加延时。

硬件中的信号总是同时工作的,即信号同时在各个模块中流动,这就是硬件电路的并发性。

HDL体现了实际电路中信号“同时”流动的这种基本特性。

信号和变量的主要区别:变量是一个局部量,只能用于进程或子程序中;信号是一个全局量,它可以用来进行进程之间的通信。

变量赋值立即生效,不存在延时行为;信号赋值具有非立即性,信号之间的传递具有延时性。

变量用作进程中暂存数据的单元;信号用作电路中的信号连线。

信号赋值可以出现在进程中,也可以直接出现在结构体中,但它们的运行含义不同:前者属顺序信号赋值,此时的赋值操作要视进程是否已被启动;后者属并行信号赋值,其赋值操作是各自独立并行发生的。

IEEE库STD_LOGIC_1164程序包中定义的STD_LOGIC类型和STD_LOGIC_VECTOR类型。

(VHDL’93标准)STD_LOGIC类型的数据可以具有九种取值,其含义如下:’U’:初始值’X’:不定态’0’:强制0’1’:强制1’Z’:高阻态’W’:弱信号不定态’L’:弱信号0’H’:弱信号1’_’:不可能情况(可忽略值)其中,“X”方便了系统仿真,“Z”方便了双向总线的描述。

VHDL中共有四类运算符:(1)逻辑运算符:包括一元逻辑运算符和二元逻辑运算符。

一元逻辑运算符包括:NOT二元逻辑运算符包括:AND、OR、NAND、NOR、XOR、XNOR这7种逻辑运算符可以对“STD_LOGIC ”和“BIT”等逻辑型数据、“STD_LOGIC _VECTOR”逻辑型数组及布尔数据进行逻辑运算。

必须注意,运算符的左边和右边,以及代入的信号的数据类型必须是相同的。

在一些高级语言中,逻辑操作符有从左向右或从右向左的优先组合顺序,而在VHDL中,左右没有优先组合的区别,一个表达式中如果有多个逻辑操作符,运算顺序的不同可能会影响运算结果,就需要用括号来解决组合顺序的问题。

例如:q <= a AND b OR NOT c AND d;这条语句在编译时会给出语法错误信息,可以加上括号改为:q <= (a AND b) OR (NOT (c AND d));如果逻辑表达式中只有AND、OR、XOR这3个操作符中的一种,可以不加括号,因为对于这三种逻辑运算来说,改变运算顺序不会影响逻辑结果VHDL中的操作符:●“<=”赋值符:用于将数据传给信号。

●“:=”赋值符:用于将数据传给变量。

该赋值符也用于为信号、变量、常量等指定初值。

●“=>”符号:在WHEN语句中出现,其含义是“THEN(则)”。

4)并置运算符:&(连接),用于将多个位连接成为位矢量。

例如:DBUS<=D0&D1&D2&D3,即DBUS<=(D0,D1,D2,D3)。

并置运算符的使用规则如下:并置运算符可用于位的连接,形成位矢量。

并置运算符可用两位矢量的连接构成更大的位矢量。

位的连接,可以用并置符连接法,也可用集合体连接法。

举例如下:DA TA_C <=D0 &D1 &D2 &D3;DA TA_C <=(D0,D1,D2,D3);第三章顺序语句用在进程或子程序中,用来定义进程或子程序的行为。

顺序语句每一条语句的执行(指仿真执行)都是按语句排列的次序执行的。

信号代入语句变量赋值语句WAIT语句IF语句CASE语句LOOP语句NEXT语句EXIT语句RETURN语句NULL语句选择控制的IF语句的语法格式为:IF 条件THEN顺序处理语句l;ELSE顺序处理语句2;END IF;CASE语句是无序的,所有表达式的值都是并行处理的;CASE语句所有表达式的值都必须穷举,且不能重复,不能穷尽的值用OTHERS 表示;CASE语句中至少要包含一个条件语句。

对任意项输入的条件表达式,VHDL不支持。

(即条件表达式的值不能含有‘X’)在VHDL中,并行语句有多种语句格式,它们在结构体中的执行是同步进行的,或者说是并行运行的;其执行方式与书写顺序无关。

在执行中,并行语句之间可以有信息往来;也可以是互为独立、互不相关、异步运行(如多时钟情况)。

但每一并行语句内部的语句运行方式可以不同,即有并行执行方式(如块语句)和顺序执行方式(如进程语句)。

条件信号赋值语句的格式为:目标信号<= 表达式1 WHEN 条件1 ELSE表达式2 WHEN 条件2 ELSE……表达式n;1. 条件信号代入语句与进程中的IF语句相同,具有顺序性,但ELSE不能省略。

2. 执行该语句时,每一赋值条件是按书写的先后关系逐项测定的,一旦发现条件为“true”,立即将表达式的值赋予目标信号。

3. 赋值条件的数据类型是布尔量。

4. 由于条件测试的顺序性,条件信号代入语句的赋值具有优先级别,其中第1子句优先级别最高,依次类推。

选择信号赋值语句的格式为:WITH 条件表达式SELECT目标信号<= 表达式1 WHEN 条件1,表达式2 WHEN 条件2,……表达式n WHEN 条件n;PROCESS语句的表达格式如下:[进程标号:] PROCESS [(敏感信号1,敏感信号2,…)][进程说明语句];BEGIN顺序描述语句;END PROCESS [进程标号];STD库的程序包STANDARD程序包预先在STD库中编译,它定义了若干类型、子类型和函数。

布尔类型子类型有:位Bit类型延迟长度字符类型自然数范围出错级别整数范围实数范围文件类型整数范围时间单位第五章时序电路的初始状态应由复位信号来设置。

根据复位信号对时序电路复位的操作不同,使其可以分为同步复位和异步复位。

同步复位在设计时序电路同步复位功能时,VHDL程序要把同步复位放在以时钟为敏感信号的进程中定义,且用IF语句来描述必要的复位条件。

(A)PROCESS (clock_signal)BEGINIF (clock_edge_condition) THENIF (reset_condition) THEN Signal_out <= reset_value;ELSE Signal_out <= signal_in;-- 其他时序语句END IF;END IF;END PROCESS;(B)PROCESSBEGINW AIT ON (clock_signal) UNTIL (clock_edge_condition)IF (reset_condition) THENSignal_out <= reset_value;ELSESignal_out <= signal_in;-- 其他时序语句END IF;END PROCESS;异步复位所谓异步复位,就是当复位信号有效时,时序电路立即复位,与时钟信号无关。

异步复位方法有三个要点:首先,在进程敏感信号表中应有clk,Reset同时存在;其次,用IF语句描述复位条件;最后,ELSIF程序段描述时钟信号边沿的条件,并加clk'EVENT属性。

PROCESS(reset_signal,clock_signal)BEGINIF(reset_condition)THEN --复位条件成立Signal_out <=reset_value;--复位赋予输出信号ELSIF(clock_event AND clock_edge_condition)THENSignal_out <=signal_in;--复位条件不成立其他时序语句;--执行正常时序电路功能END IF;END PROCESS;例1:半加器ENTITY h_adder ISPORT(a, b : IN STD_LOGIC;s, c : OUT STD_LOGIC);END h_adder;ARCHITECTURE rtl OF h_adder ISBEGINc<=a AND b;s<=a XOR b;END rtl;例2:全加器ENTITY f_adder ISPORT(a, b,ci : IN STD_LOGIC;s, co : OUT STD_LOGIC); END f_adder;ARCHITECTURE arc OF f_adder ISCOMPONENT h_adderPORT(a, b : IN STD_LOGIC;s, c : OUT STD_LOGIC);END COMPONENT;SIGNAL s1,c1,c2:STD_LOGIC;BEGINu1:h_adder PORT MAP(a,b,s1,c1);u2:h_adder PORT MAP(s1,ci,s,c2);co<=c1 OR c2;END arc;例3-1 设计D触发器(下页相关知识介绍)。

相关文档
最新文档