vhdl 程序的基本结构 vhdl程序一般由5个部分组成
EDA技术实用教程(潘松第5版)第3章-VHDL设计初步
库—STD库
VHDL定义了两个标准程序包,即STANDARD和 TEXTIO(文件输入/输出)程序包,它们都收入在 STD库中,可随时调用。由于STD库符合VHDL语言 标准,在应用中不必用打开库语句。即
LIBRARY
STD;
STD.STANDARD.ALL
是不必要的。
库— WORK库
WORK库是用户的VHDL设计的现行工作库,用 于存放用户设计和定义的一些设计单元和程序包。 WORK库自动满足VHDL语言标准,在实际调用中, 也不必显示预先说明,即不必在VHDL程序中明确 打开并指定。 基于VHDL所要求的WORK库的基本概念,利用 VHDL进行设计时,不允许在根目录下进行,而是 必须为此设定一个文件夹,用于保存所有此项目 的设计文件,VHDL综合器将此文件默认为WORK库。 还要注意的是,工作库并不是这个文件夹的名字, 而是一个逻辑名。综合器将指示器指向该文件夹 的路径。
库的用法
例:
LIBRARY
USE
IEEE;
IEEE.STD_LOGIC_1164.STD_ULOGIC;
USE
IEEE. STD_LOGIC_1164.RISING _EDGE;
表示向当前设计实体开放了IEEE. STD_LOGIC_1164程序包中的RISING_EDGE函数, 但由于此函数要用到IEEE. STD_ULOGIC,所以在 其前面加了一条USE语句,开放同一程序包中的这 一数据类型。
设计实体
结构体 (Architecture) (P62)
结构体用于描述设计实体的内部结构和实
体端口间的逻辑关系,在电路上相当于器件的内
部电路结构。结构体由信号声明部分和功能描述
语句部分组成。信号声明部分用于结构体内部使
VHDL语言基础
VHDL的优点
• 描述能力强
– 具有功能强大的语言结构 – 用简洁明确的代码描述复杂的逻辑设计 – 它支持多层次的设计描述 – 支持设计库和可重用设计模块
• 设计和工艺、器件无关
– 设计并不依赖于工艺和器件 – 同一设计,可以用多种不同的方法来实现 – 设计人员可以专注于设计
VHDL的优点
• 可移植、设计易于共享和复用
• 结构体有三种描述方式
– 行为描述(behavioral) – 数据流描述(dataflow) – 结构化描述(structural)
行为描述
•对设计中的描述是按算法的路径来描述的 •优点在于无需关注设计的门级实现,而只需注意正确的函数 模型
例:等值比较器的功能,当信号A和B相等时,EQUALS 有效
END STRUCTURE;
•类似于电路的网络表,将各个器件通过语言的 形式进行连接,与电路有一一对应的关系。
•一般用于大规模电路的层次化设计时。
三种描述方式的比较
描述方式 优点
缺点
适用场合
结构化描 述
数据流描 述
连接关系清 晰,电路模 块化清晰
布尔函数定 义明白
电路不易理解、 电路层次化设
繁琐、复杂
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY EQCOMP4 IS
PORT( A, B : IN STD_LOGIC_VECTOR(3 EQUALS: OUT STD_LOGIC);
END EQCOMP4;
DOWNTO 0);
ARCHITECTURE BEHAVAL OF EQCOMP4 BEGIN
VHDL语言基础
VHDL语言基础
EDA电子设计自动化知识点总结
1、实体界面说明中端口的模式有四种端口模式为:1、IN相当于只可输入的引脚;2、OUT相当于只可输出的引脚;3、BUFFER相当于带输出缓冲器并可以回读的引脚;4、INOUT相当于双向引脚;2、嵌入式阵列块EAB能实现存储功能,每个EAB提供2048比特,可完成ROM,RAM,双口RAM或者FIFO功能。
3、VHDL程序设计中的两大基本描述语句是顺序语句,并行语句。
4、FLEX10K的结构提供了两条专用高速通道,即进位链和级联链。
5、常用的源程序输入方式有原理图输入方式、状态图输入方式、VHDL软件程序的文本方式。
6、FPGA的可编程互连线分为通用互连、直接互连、长线。
7、FPGA(现场可编程门阵列)结构可分为三部分:可编程逻辑单元、可编程输入/输出单元、可编程连线。
8、CPLD(复杂可编程逻辑器件)的结构可分为三部分:可编程逻辑宏单元、可编程输入/输出单元、可编程内部连线。
9、结构体的三种描述方式:行为级描述、数据流级描述、结构级描述。
10、EDA设计几个描述层次:行为级描述、寄存器传输级描述(RTL)、门级描述、版图级描述。
11、构成一个完整的VHDL语言程序的五大基本结构:实体(ENTITY)、结构体(ARCHITECURE)、配置(CONFIGURATION)、库(LIBRARY)、程序包(PACKAGE)。
12、VHDL的子程序有过程和函数两种类型,具有可重载性。
13、数字ASIC设计方法有两种:全定制法、半定制法(门阵列法、标准单元法、可编程逻辑器件法)。
14、数字系统的模型:数据处理子系统和控制子系统。
15、数字系统设计方法:模块设计法、自顶向下设计法、自底向上设计法。
16、EDA的工程设计流程:原理图/HDL文本输入→功能仿真→综合→适配→时序→仿真→编辑下载→硬件测试。
17、FPGA的配置流程:芯片初始化、芯片配置和起动。
18、转向控制语句共有五种:IF 语句、CASE 语句、LOOP 语句、NEXT 语句和EXIT 语句。
EDA技术实用教程考试复习题目试题库(关于VHDL)
《EDA技术与项目训练》选择题1. 一个项目的输入输出端口是定义在 A 。
A. 实体中B. 结构体中C. 任何位置D. 进程体2. 描述项目具有逻辑功能的是 B 。
A. 实体B. 结构体C. 配置D. 进程3. 关键字ARCHITECTURE定义的是 A 。
A. 结构体B. 进程C. 实体D. 配置4. MAXPLUSII中编译VHDL源程序时要求 C 。
A.文件名和实体可不同名B.文件名和实体名无关C. 文件名和实体名要相同D. 不确定5. 1987标准的VHDL语言对大小写是 D 。
A. 敏感的B. 只能用小写C. 只能用大写D. 不敏感6. 关于1987标准的VHDL语言中,标识符描述正确的是 A 。
A. 必须以英文字母开头B.可以使用汉字开头C.可以使用数字开头D.任何字符都可以7. 关于1987标准的VHDL语言中,标识符描述正确的是 B 。
A. 下划线可以连用B. 下划线不能连用C. 不能使用下划线D. 可以使用任何字符8. 符合1987VHDL标准的标识符是 A 。
A. A_2B. A+2C. 2AD. 229. 符合1987VHDL标准的标识符是 A 。
A. a_2_3B. a_____2C. 2_2_aD. 2a10. 不符合1987VHDL标准的标识符是 C 。
A. a_1_inB. a_in_2C. 2_aD. asd_111. 不符合1987VHDL标准的标识符是 D 。
A. a2b2B. a1b1C. ad12D. %5012. VHDL语言中变量定义的位置是 D 。
A. 实体中中任何位置B. 实体中特定位置C. 结构体中任何位置D. 结构体中特定位置13. VHDL语言中信号定义的位置是 B D 。
A. 实体中任何位置B. 实体中特定位置C. 结构体中任何位置D. 结构体中特定位置14. 变量是局部量可以写在 B 。
A. 实体中B. 进程中C. 线粒体D. 种子体中15. 变量和信号的描述正确的是 A 。
VHDL
1.3 VHDL的作用
HDL打破软、硬件的界限 传统的数字系统设计分为:
硬件设计(硬件设计人员)
软件设计(软件设计人员) 是硬件设计者和 EDA工具之间的界面
EDA工具及 HDL的流行,使电子系 统向集成化、大规模和高速度等方向发 展。 美国硅谷约有80%的 ASIC和 FPGA/CPLD已采用 HDL进行设计。
一般情况下 USE定义区的格式写成
LIBRARY IEEE; USE IEE.STD_LOGIC_1164.ALL; USE IEE.STD_LOGIC_ARITH.ALL; USE IEE.STD_LOGIC_UNSIGNED.ALL;
2.2 实体声明
实体声明:定义系统的输入输出端口
语法:
ENTITY <entity_name> IS Generic Declarations(类属表); Port Declarations(端口表); END <entity_name>; (1076-1987 version) END ENTITY <entity_name> ; ( 1076-1993 version)
子类型声明;常量声明。
END <包名> ; (1076-1987) END PACKAGE BODY <包名> ; (1076-1993)
例:程序包声明
2、 库
含义:存放预先完成的程序包和数据集合体 的仓库,包含了包或包的汇集 格式:LIBRARY 库名; 种类: STD 库(默认库) IEEE库 WORK库(默认库) 面向ASIC的库 用户定义库
硬件描述语言VHDL
1 概述
1.1 什么是VHDL(HDL)?
2--VHDL_与_Verilog_HDL_的结构对比
VHDL 与Verilog HDL 的对比1.整体结构VHDL 库程序包Verilog HDL entity 实体名is module 模块名(端口列表)port(端口说明)输入/输出端口说明endarchitecture 结构体名of 实体名is说明部分;变量类型说明;begin代入语句;assign 语句(连续赋值语句);元件语句;元件例化语句;进程语句;always @ 块语句;end 结构体名;endmodule点评:两者结构基本相似,并行语句的种类也类似;VHDL语言需要进行大量说明,程序通常比较长;Verilog HDL通常不进行说明,或只进行非常简短的说明,程序比较简短。
2.数据对象及类型VHDL 常量信号变量9种预定义类型各类用户定义类型可描述各类不同的量必须进行类型说明运算时必须考虑类型的一致性和适用性Verilog HDL 常量:数量,参量变量:网络型寄存器型类型种类少运算时所受的约束少3.运算符号运算主要分为3类:算术运算逻辑运算关系运算算术运算VHDL中有10种但很多都不能进行综合,只能用于行为描述Verilog HDL中只有能够综合的5种逻辑运算VHDL中有常用的6种,均用字符形式表达Verilog HDL中有3类共14种,分为一般逻辑运算,位逻辑运算,缩减逻辑运算关系运算VHDL中有6种Verilog HDL中有2类共8种,对比增加了全等和不全等(用于对不定态比较)。
除了以上3类运算外,VHDL中还有连接运算,Verilog HDL中还有连接运算、移位运算和条件运算。
点评:VHDL的运算划分比较抽象,适应面较广Verilog HDL的运算划分比较具体,对逻辑代数反映更细致一些。
4.语句两种语言的语句都分为并行语句和顺序语句,并行语句在主程序中使用,顺序语句只能在子结构中使用;并行语句都分为3种形式:代入语句(3种)assign语句(连续赋值)(对wire类型变量)元件语句(需进行说明)门原语、元件例化语句(无需说明)process (敏感表) always @( )begin begin…. ……end process; end顺序语句信号赋值非阻塞赋值(对reg型变量)变量赋值阻塞赋值条件语句if case 基本相同,VHDL稍微严密一些循环语句loop(3种形式)for repeat while forever时钟边沿检测clk'event and clk='1' ('0') posedeg clk (negedge)5.子结构function function 'defineprocedure task6.附加结构librarypackage 'include7.典型程序对比:序列信号发生器:kser预先设计模块:8选1MUX:MUX8控制输入a[2..0] 数据输入d[7..0] 数据输出y3位2进制加法计数器:COUNTER3时钟输入clk状态输出q[2..0]设计要求:按照时钟节拍,由y端口循环顺序输出“11110101”序小结:对于简单模块的设计,采用两种语言进行编程的思路基本相同,VHDL 语言由于说明语句较多,程序会更长一些。
EDA课件3
用VHDL语言设计的电路无论规模大小,都要使 用一个完整的VHDL程序结构,这个完整的程序结构 称为设计实体或实体。
设计实体是指能被VHDL语言综合器所接受,并 能作为独立的设计单元,以元件的形式存在的VHDL 语言程序。 所谓的元件,既可以被高层次的系统调用,成 为系统的一部分,也可以作为一个电路的功能模块, 独立存在和运行。
fallw: TIME :=1ns ); --定义fallw为下降沿
--定义A、B和Y为逻辑位
B: IN
STD_LOGIC;
STD_LOGIC );
16
第3章 VHDL程序的基本结构
3.1.2 VHDL语言的结构体
结构体是设计实体的核心,它具体指明了设计 实体的行为、元件及内部连接关系。
结构体所承担的任务 : ① 定义结构体内部所使用的各项元素;
3
第3章 VHDL程序的基本结构
1. VHDL设计实体的结构 一个完整的VHDL设计实体(设计文件),通常
包括:
■ 库(Library)和程序包(Package)
■ 实体说明(Entity)
■ 结构体(Architecture)
■ 配置(Configuration)
4
第3章 VHDL程序的基本结构
结构体:用来描述电路内部结构和逻辑功能。并以 标识符ARCHITECTURE开头,以END结尾。
8
第3章 VHDL程序的基本结构
3. 1.1 VHDL语言的实体说明
实体说明是VHDL程序设计中最基本的组成部分, 实体说明语句的格式如下: 主要用来描述设计实体的外部接口信号,定义设计 实体说明语句 ENTITY 实体名 IS 单元的输入、输出端口,是设计实体对外的一个通 类属说明语句 [GENERIC(类属表);] 信界面,但它不描述设计的具体功能。 端口说明语句 [PORT(端口表);] 结束语句 END [ENTITY] 实体名;
EDA简答题
一、填空题(本大题共10小题,每空1分,共20 分)1.一般把EDA技术的发展分为MOS时代、MOS时代和ASIC三个阶段。
2.EDA设计流程包括设计输入、设计实现、实际设计检验和下载编程四个步骤。
3.EDA设计输入主要包括图形输入、HDL文本输入和状态机输入。
4.时序仿真是在设计输入完成之后,选择具体器件并完成布局、布线之后进行的时序关系仿真,因此又称为功能仿真。
5.VHDL的数据对象包括变量、常量和信号,它们是用来存放各种类型数据的容器。
6.图形文件设计结束后一定要通过仿真,检查设计文件是否正确。
7.以EDA方式设计实现的电路设计文件,最终可以编程下到FPGA和CPLD芯片中,完成硬件设计和验证。
8.MAX+PLUS的文本文件类型是(后缀名).VHD。
9.在PC上利用VHDL进行项目设计,不允许在根目录下进行,必须在根目录为设计建立一个工程目录。
10.VHDL源程序的文件名应与实体名相同,否则无法通过编译。
EDA技术的发展趋势1 可编程器件的发展趋势:向高密度大规模的方向发展,向系统内可重构的方向发展,向低电压低功耗的方向发展,向混合可编程技术方向发展;硬件描述语句可在3个层次上进行电路描述(由高到低):行为级,RTL级和门电路级2.设计单元的基本构造•一个设计单元都是由实体说明和构造体两部分组成。
•实体的功能是对这个设计单元与外部电路进行接口描叙。
实体是设计单元的表层,实体说明部分规定了设计单元的输入输出接口信号或引脚,它是设计单元对外的一个通信界面。
•结构体定义了设计单元的具体构造和操作(行为)。
•每个实体可以有多个结构体,不同的结构体对应着实体不同的结构和算法实现方案,其间的各结构体的地位是相等的。
3.实体说明(ENTITY)•实体象一个“黑盒子”•体描叙黑盒子的I/O。
–以“ENTITY实体名IS”开始–至“END 实体名”结束4.(1)端口说明--PORTS•端口说明是基本设计实体(单元)与外部接口的描述,也可以说是对外部引脚信号的名称、数据类型和输入输出方向的描述。
VHDL语法简单情况总结
VHDL语法简单总结一个VHDL程序代码包含实体(entity)、结构体(architecture)、配置(configuration)、程序包(package)、库(library)等。
一、数据类型1.用户自定义数据类型使用关键字TYPE,例如:TYPE my_integer IS RANGE -32 TO 32;–用户自定义的整数类型的子集TYPE student_grade IS RANGE 0 TO 100;–用户自定义的自然数类型的子集TYPE state IS (idle, forward, backward, stop);–枚举数据类型,常用于有限状态机的状态定义一般来说,枚举类型的数据自动按顺序依次编码。
2.子类型在原有已定义数据类型上加一些约束条件,可以定义该数据类型的子类型。
VHDL不允许不同类型的数据直接进行操作运算,而某个数据类型的子类型则可以和原有类型数据直接进行操作运算。
子类型定义使用SUBTYPE关键字。
3.数组(ARRAY)ARRAY是将相同数据类型的数据集合在一起形成的一种新的数据类型。
TYPE type_name IS ARRAY (specification) OF data_type;–定义新的数组类型语法结构SIGNAL signal_name: type_name [:= initial_value];–使用新的数组类型对SIGNAL,CONSTANT, VARIABLE进行声明例如:TYPE delay_lines IS ARRAY (L-2 DOWNTO 0) OF SIGNED (W_IN-1 DOWNTO 0);–滤波器输入延迟链类型定义TYPE coeffs IS ARRAY (L-1 DOWNTO 0) OF SIGNED (W_COEF-1 DOWNTO 0);–滤波器系数类型定义SIGNAL delay_regs: delay_lines; –信号延迟寄存器声明CONSTANT coef: coeffs := ( ); –常量系数声明并赋初值4.端口数组在定义电路的输入/输出端口时,有时需把端口定义为矢量阵列,而在ENTITY中不允许使用TYPE进行类型定义,所以必须在包集(PACKAGE)中根据端口的具体信号特征建立用户自定义的数据类型,该数据类型可以供包括ENTITY在内的整个设计使用。
第四讲VHDL语言基础知识
对象说明的一般格式是: <gt; <信号种类>: =<表达式>; 说明 标识符 <子类型说明>是类型名或类型名加限制条件 <信号种类>为BUS或REGISTER,该项为任选项 :=<表达式>为对象赋初值
3、配置
格式
CONFIGURATION END 配置名;
配置名 OF 实体名 [说明语句];
IS
说明
这种配置用于选择不包含块(BLOCK)和元 件(COMPONENTS)的构造体。在配置语句中只包 含有实体所选配的构造体名,其他什么也没有。
4、包集合
格式
PACKAGE
说明
包集合名 IS [说明语句]; END 包集合名; PACKAGE BODY 包集合名 [说明语句]; END BODY;
VHDL源文件基本格式
LIBRARY 库名; USE 库名.程序包名.; ENTITY 实体名 IS PORT(……); END 实体名; --库(声明库) --程序包(引用库) --实体
ARCHITECTURE 结构体名 OF 实体名--结构体 (………) END 结构体名;
VHDL源程序基本格式举例:
端口模式
IN OUT INOUT BUFFER 输入,信号只能自端口到实体 输出,信号只能自实体到端口 双向,信号既可输入又可输出 缓冲,信号自实体输出,又有 内部反馈
Entity
Out与Buffer的区别
Entity test1 is port(a: in std_logic; b,c: out std_logic ); end test1; Entity test2 is port(a: in std_logic; b : buffer std_logic; c: out std_logic ); end test2; architecture a of test2 is begin b <= not(a); c <= b; end a;
