3 VHDL基础1

合集下载

VHDL入门教程

VHDL入门教程

VHDL入门教程VHDL(Very High-speed Integrated Circuit HardwareDescription Language)是一种用于设计数字电路的硬件描述语言。

它是IEEE 1076标准中规定的一种语言,广泛应用于数字电路的设计、仿真和综合等领域。

本文将为大家介绍VHDL的基础知识和入门教程。

一、VHDL的基本概念1. 实体(Entity):VHDL代码的最高层次,用于定义模块的输入、输出和内部信号。

2. 架构(Architecture):定义了实体中的各个信号和组合逻辑的行为。

3. 信号(Signal):表示数据在电路中的传输和操作。

4. 进程(Process):定义了组合逻辑的行为,用于描述信号之间的关系。

5. 实体声明(Entity Declaration):用于描述模块的名称、输入、输出和内部信号。

6. 架构声明(Architecture Declaration):用于描述模块的内部逻辑。

二、VHDL的基本语法1.实体声明语法:```entity entity_name isport ( port_list );end entity_name;```其中,entity_name是实体的名称,port_list是实体的输入、输出和内部信号。

2.架构声明语法:```architecture architecture_name of entity_name issignal signal_list;beginprocess (sensitivity_list)begin--逻辑行为描述end process;end architecture_name;```其中,architecture_name是架构的名称,entity_name是实体的名称,signal_list是架构的内部信号,sensitivity_list是触发事件的信号列表。

三、VHDL的基本例子下面以一个简单的4位加法器为例介绍VHDL的编写和仿真流程。

第1章VHDL语言基础

第1章VHDL语言基础
(Bit)、位矢量型(Bit-vector)和整数型(Integer)等。 ➢ 在实用中,端口描述中的数据类型主要有两类:位(BIT)和
位矢量(BIT_VECTOR)。若端口定义为BIT,则其信号值 是一个1位的二进制数,取值只能是0或1;若端口定义为 BIT_VECTOR,则其信号值是一组二进制数。
➢ 在电路中,如果实体代表一个器件符号,则结构体描述了 这个符号的内部行为。当把这个符号例化成一个实际的器 件安装到电路上时,则需用配置语句为这个例化的器件指 定一个结构体(即指定一种实现方案),或由编译器自动选一 个结构体。
1. 结构体的一般语句格式 ARCHITECTURE 结构体名 OF 实体名 IS [说明语句;] BEGIN [功能描述语句;] END [ARCHITECTURE] [结构体名];
1.1 VHDL程序基本结构
一、VHDL程序设计约定 ➢ 语句结构描述中方括号“[ ]”内的内容为可选内容。 ➢ 对于VHDL的编译器和综合器来说,程序文字的大小写是不
加区分的。 ➢ 程序中的注释使用双横线“- -”。 ➢ 源程序命名与实体同名(MAX+plus Ⅱ要求)。
二、VHDL程序设计引例( 74LS00的设计 )
③ 信号赋值语句将设计实体内的处理结果向定义的信号或界面 端口进行赋值。
④ 子程序调用语句用于调用一个已设计好的子程序。
⑤ 元件例化语句对其他的设计实体作元件调用说明,并将此元 件的端口与其他的元件、信号或高层次实体的界面端口进行 连接。
A
A NAND2
Y
Y
B
B
(a)
A1
A NAND2
U1 Y
Y1
B1
B
A2
A NAND2

VHDL语言的基本语法

VHDL语言的基本语法

B:二进制基数符号,表示二进制数位0或1。 二进制基数符号,表示二进制数位0 O:八进制基数符号。 八进制基数符号。 X:十六进制基数符号(0~F) 。 十六进制基数符号(0~ (0 例如: 1_1101_1110 1_1101_1110” 例如:B“1_1101_1110 --二进制数数组,位矢数组长度是9 --二进制数数组,位矢数组长度是9 二进制数数组 AD0 X“AD0” AD --十六进制数数组,位矢数组长度是12 --十六进制数数组,位矢数组长度是12 十六进制数数组
4、下标名及下标段名 下标名用于指示数组型变量或信号的某一 下标名用于指示数组型变量或信号的某一 元素, 元素,如:a(2) , b(n) 下标段名则用于指示数组型变量或信号的 下标段名则用于指示数组型变量或信号的 某一段元素,其语句格式如下: 某一段元素,其语句格式如下:
数组类型信号名或变量名(表达式 表达式2]); 数组类型信号名或变量名 表达式1 [TO/DOWNTO 表达式 ; 表达式
信号的使用和定义范围是实体、结构体和程序包 信号的使用和定义范围是实体、结构体和程序包.
在程序中: 在程序中 (1) 信号值的代入采用“<=”代入符,而且信号 信号值的代入采用“ ”代入符, 代入时可以附加延时。 代入时可以附加延时。 (2) 变量赋值时用“:=”,不可附加延时。 变量赋值时用“ ” 不可附加延时。 (3) 信号的初始赋值符号仍是“:=”。 信号的初始赋值符号仍是“ ” 例: X<=Y AFTER 10 ns; ; --X,Y都是信号,且Y的值经过 都是信号, 的值经过10ns延 , 都是信号 的值经过 延 时以后才被代入X。 时以后才被代入 。
(1) 赋值语句右方的表达式必须是一个与目标变量有相同 数据类型的数值。 数据类型的数值。 (2) 变量不能用于硬件连线和存储元件。 变量不能用于硬件连线和存储元件。 (3) 变量的适用范围仅限于定义了变量的进程或子程序中。 变量的适用范围仅限于定义了变量的进程或子程序中。 (4) 若将变量用于进程之外,必须将该值赋给一个相同的 若将变量用于进程之外, 类型的信号,即进程之间传递数据靠的是信号。 类型的信号,即进程之间传递数据靠的是信号。

VHDL入门教程

VHDL入门教程

什么是VHDL?
Very high speed integrated Hardware Description Language (VHDL)
★是IEEE、工业标准硬件描述语言 ★用语言的方式而非图形等方式描述硬件电路
容易修改 容易保存
★特别适合于设计的电路有:
复杂组合逻辑电路,如:
• 译码器、编码器、加减法器、多路选择器、地址译码器…...
6、结构体表达
例3-5 ARCHITECTURE arch_name OF e_name IS (说明语句 ) BEGIN arch_name 为结构体名 (功能描述语句) END ARCHITECTURE arch_name;
(说明语句)不是必须的。包括在结构体中需要说明和定义的数据对象、数 据类型、元件调用声明等; (功能描述语句)是必须的。可以是并行语句,顺序语句或是它们的混合。
一个结构体中可以包含任意个进程语句,所有的进程语句都是并行语 句。而由任一进程引导的语句结构属于顺序语句。 文件名不分大小写, 12、文件取名和存盘 VHDL文件后缀扩展名:.vhd, 尽量与实体名一致。
多路选择器VHDL描述小结
【例3-2】 … ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGIN d <= a AND (NOT S) ; e <= b AND s ; y <= d OR e ; END ARCHITECTURE one ;
例3-4 ENTITY e_name IS PORT (p_name : port_m data_type; ………. p_namei : port_mi data_type); END ENTITY e_name;

VHDL入门教程

VHDL入门教程

VHDL入门教程VHDL(Very High-Speed Integrated Circuit HardwareDescription Language)是一种硬件描述语言,用于设计数字电路和系统。

它是由美国国防部在20世纪80年代早期开发的,并由IEEE 1076标准化。

VHDL可以用于描述电路结构、电路行为和模拟。

一、VHDL概述VHDL是一种硬件描述语言,它允许工程师以更高级的语言编写硬件描述。

它可以描述电路结构、电路行为和模拟。

VHDL可以应用于各种电子系统的设计,从简单的数字逻辑门到复杂的处理器。

二、VHDL基本结构VHDL的基本结构包括实体声明、体声明和结构化代码。

实体声明描述了电路的接口,包括输入和输出。

主体声明描述了电路的行为。

结构化代码定义了电路的结构。

三、VHDL数据类型VHDL提供了多种数据类型,包括标量类型(比如整数和实数)、数组类型和记录类型。

每种类型都有其特定的操作和范围。

四、VHDL信号VHDL中的信号用于在电路中传递信息。

信号可以在过程中赋值,并且具有各种延迟属性。

信号还可以连接到模块的输入和输出端口,以实现电路之间的通信。

五、VHDL实体和体VHDL设计包含实体和体。

实体描述了电路的接口和连接,而体描述了电路的行为。

实体和体之间使用端口来传递信息。

六、VHDL组件VHDL中的组件用于将电路模块化,以实现更高层次的设计和复用。

组件可以在实体中声明,并在体中实例化。

七、VHDL并发语句VHDL中的并发语句用于描述电路中多个同时运行的过程。

并发语句包括并行语句、过程、并行块和并行时钟。

八、VHDL测试VHDL测试包括自动测试和手动测试。

自动测试使用测试工具和仿真器来验证电路的正确性。

手动测试包括使用仿真器进行手工测试和调试。

九、VHDL实例以下是一个简单的VHDL实例,实现了一个4位二进制加法器:```vhdllibrary IEEE;use IEEE.STD_LOGIC_1164.all;entity binary_adder isporta : in std_logic_vector(3 downto 0);b : in std_logic_vector(3 downto 0);sum : out std_logic_vector(4 downto 0);carry : out std_logicend binary_adder;architecture behavior of binary_adder isbeginprocess(a, b)variable temp_sum : std_logic_vector(4 downto 0);variable temp_carry : std_logic;begintemp_sum := ("0000" & a) + ("0000" & b);temp_carry := '0' when temp_sum(4) = '0' else '1';sum <= temp_sum;carry <= temp_carry;end process;end behavior;```上述VHDL代码定义了一个名为`binary_adder`的实体,它有两个4位输入`a`和`b`,一个5位输出`sum`和一个单一位输出`carry`。

第2章 VHDL语言基础

第2章 VHDL语言基础

End 实体名;
端口名
端口模式
数据类型
(2)ENTITY
端口模式(MODE)有以下几种类型: IN ;OUT;INOUT ;BUFFER 端口模式可用下图说明:(黑框代表一个设计或模块)
IN
OUT
BUFFER
INOUT
二输入与门电路设计范例
Library std; Use std.standard.all;
(4)CONFIGURATION定义区
定义格式: Configuration 配置名 of 实体名 is for 选用的结构体名 end for; end configuration 配置名 ;
二输入与门电路设计范例
a c
b电Leabharlann 真值表abc
0
0
0
1
0
0
0
1
0
1
1
1
二输入与门电路设计范例
Architecture Na of and2 is
‘1’; 符号<=为信号直接赋值符。
End Na;
--结构体Na
Architecture Nb of and2 is
Begin
c <= a and b;
--and 为逻辑与操作
End Nb; --结构体Nb
Library ieee; Use ieee.std_logic_1164.all;
Entity half_adder is Port( x,y : in std_logic;sum,carry : out hlf_adder); End half_adder;
(4)CONFIGURATION定义区
一个完整VHDL电路设计必须有一个实体 和对应的结构体,即实体和结构体对构成一个 完整的VHDL设计。

VHDL语言教程

VHDL语言教程
SIGNAL a:Bit_Vector(0 TO 7); SI精G选N版课A件Lppta:Bit_Vector ( 7 DOWNTO 0) 10
字符:(Character)
TYPE CHARACTER IS (NUL, SOH,STX, …, ‘ ’, ‘!’,…); --通常用‘’引起
字符串:(String)
精选版课件ppt
14
3.1.3 数据类型转换
VHDL为强定义类型语言,不同类型的数据不能进行运算和直接赋值。 类型标记法
Variable A: integer; Variable B: real; A= integer (B); B=real (A);
函数法
Conv_interger (A);--由std_logic转换为integer型,在std_logic_unsigned包。
上升沿:Clock’ EVENT AND Clock=‘1’
’range:生成一个限制性数组对象的范围
’range: “0 to n” ;
’reverse_range:“n downto 0”
’left:生成数据类型或数据子类型的左边界值; ’right , ’high, ’low, ’length
常用的HDL语言:VHDL 、Verilog HDL
精选版课件ppt
2
VHDL 概述:
VHDL VHSIC
VHSIC Hardwarter Description Language Very High speed integrated circuit
➢ VHDL是美国国防部在20世纪80年代初为实现其高速集成电路 硬件VHSIC计划提出的描述语言;
常数转换法 / 常量转换法
Type conv_table is array(std_logic) of bit;

VHDL语言的基本知识点罗列

VHDL语言的基本知识点罗列

VHDL语言的基本知识点罗列1 VHDL语言的标识符VHDL中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。

使用标识符要遵守如下法则:a)标识符由字母(A…Z;a…z)、数字和下划线字符组成。

任何标识符必须以英文字母开头。

λ末字符不能为下划线。

λb)不允许出现两个连续下划线。

标识符中不区分大小写字母。

λVHDL定义的保留子或称关键字,不能用作标识符。

λc) VHDL中的注释由两个连续的短线(--)开始,直到行尾。

以下是非法标识符:-Decoder —起始不能为非英文字母3DOP —起始不能为数字Large#number —“#”不能成为标识符的构成符号Data__bus —不能有双下划线Copper_ —最后字符不能为下划线On —关键字不能用作标识符。

注:在AHDL语言中标识符要区分大小写,但在VHDL语言中不区分大小写。

所以写程序时,一定要养成良好的书写习惯,应用关键字时用大写,自己定义的标识符用小写。

标识符表示的几种数据对象的详细说明如下:1) 常数(Constant )常数是一个固定的值,主要是为了使设计实体中的常数更容易阅读和修改。

常数一被赋值就不能在改变。

一般格式:CONSTANT 常数名:数据类型:=表达式;例:CONSTANT Vcc: REAL: =5.0;—设计实体的电源电压指定常数所赋得值应与定义的数据类型一致。

常量的使用范围取决于它被定义的位置。

程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;设计实体中某一结构体中定义的常量只能用于此结构体;结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。

2) 变量(Variable)变量是一个局部变量,它只能在进程语句、函数语句和进程语句结构中使用。

用作局部数据存储。

在仿真过程中。

它不像信号那样,到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。

变量常用在实现某种算法的赋值语句中。

第VHDL快速入门PPT课件

第VHDL快速入门PPT课件

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY DFFl IS
PORT(D,CLK: IN STD_LOGIC;
【例3.1】
第3页/共65页
3.1 VHDL体系结构
【例3.1】
第4页/共65页
3.1 VHDL体系结构
需要说明的是,以上例子的实体和结 构体分别是以“END ENTITY xxx”和 “END ARCHITECTURE xxx”语句结 尾的,这是符合VHDL的IEEE STD l076-1993版的语法要求的。若根据 VHDL’87版本,即IEEE STD l0761987的语法要求,这两条结尾语句只 需写成“END;”或"END xxx;”。
3.1 VHDL体系结构
结构体的语法格式如下: ARCHITECTURE 结构体名 OF 实体名 IS [说明语句] BEGIN 功能描述语句;--并行处理语句; END 结构体名;--结构体名可以任意,但当 一个实体具有多个结构体时,取名不可重复。
第18页/共65页
3.1 VHDL体系结构
例3.1中计数器的结构体如下:
3.3 触发器的VHDL描述
信号属性函数描述时序逻辑电路是一种 常用的方法,本例中的CLK’EVENT AND CLK=‘1’是用于检测时钟信号的 上升沿,即如果检测到CLK的上升沿,此 表达式将输出为真。关键词EVENT是信 号属性函数,用来获得信号行为信息的函 数称为信号属性函数。
在VHDL中,用表达式 <信号名 >’EVENT来测定某个信号的跳变情况。
例3.1中计数器的实体对应的原理图符 号如图3.2所示。
图3.2 实体对应的原理图符号

VHDL基础快速入门教程

VHDL基础快速入门教程

16
⑶ 实数数据类型(Real) VHDL的实数数据类型(Real)与数学中的实数浮 点数相似,只是范围限定为:-1.0E38~1.0E38,并 且在书写时一定要有小数。如下程序段所示: ARCHITECTURE a OF Test IS SIGNAL A,B,C : Real ; BEGIN A <= 1.5 ; --带小数点 B <= 5.0 ; C <= 3.0E8; --科学计数 END a;
--(1) --(2) --(3) --(4) --(5) --(6) --(7) --(8) --(9)
因为A中的内容是3(11)2,B中的内容是2(10)2,故: ① E <=Unsigned (A) 后, E=3 (11)2 ; ② F <= B 后, F=2 (10)2 ;
10
BEGIN E <= Unsigned (A); F <= B; H(1 DOWNTO 0) <= E+F; H(3 DOWNTO 2) <= E-F; H(7 DOWNTO 4) <= E*F; G(0) <= E(0) AND F(0); G(1) <= E(1) OR F(1); C <= H; D <= Std_Logic_Vector (G); END a;
19
2.2.2 信号 (Signal) 信号 (Signal) 是VHDL中的一种重要的数据对 象。主要用于描述硬件电路中的一条硬件连接线或 指定电路内部的某一节点(补充的端口)。 其语法格式为: Signal 信号名[,信号名…] : 数据类型 [:=表达式] ; 注意: ⑴ 在VHDL语言程序中,信号赋值的符号与上面不同, 不能用“:=‖运算符,应为 “<=‖运算符。

VHDL入门易懂教程

VHDL入门易懂教程

VHDL入门易懂教程VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述数字系统的行为,结构和时序。

它是一种用于设计和开发数字电路的语言,比如FPGA(Field-Programmable Gate Array)和ASIC (Application-Specific Integrated Circuit)。

本文将提供一个易懂的VHDL入门教程,以帮助初学者快速了解并上手VHDL语言。

一、VHDL概述VHDL最初是为了满足军事和航空航天领域的需求而开发的,目前已经成为了一种广泛使用的硬件描述语言。

它不仅可以用于系统级的设计,还可以用于模块级和门级的设计。

VHDL的设计思想是从高级抽象开始,逐步转化为底层的物理设计,这使得VHDL非常适合大型和复杂的设计项目。

二、VHDL语法1.声明语句在VHDL中,首先需要声明各种信号和变量,以便在后续的代码中使用。

声明语句的语法如下:```signal signal_name : signal_type := initial_value;variable variable_name : variable_type := initial_value;```其中,signal_name和variable_name为信号和变量的名称,signal_type和variable_type分别为信号和变量的类型,initial_value为信号和变量的初始值。

2.过程语句VHDL中的过程类似于程序中的函数,用于执行一系列的操作。

过程语句的语法如下:```process (sensitivity_list)begin-- codeend process;```sensitivity_list是一个由信号组成的列表,当列表中的任意一个信号发生变化时,过程会被触发执行。

过程中的代码为具体的操作。

3.结构语句VHDL中的结构语句用于描述数字系统的结构,也就是各个模块之间的连接关系。

(完整word版)vhdl基本语法

(完整word版)vhdl基本语法

VHDL 基础语法篇——VHDLVHDL硬件描述语言1。

1 VHDL概述1。

1。

1 VHDL的特点VHDL语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点,由于VHDL语言来源于C、Fortran等计算机高级语言,在VHDL语言中保留了部分高级语言的原语句,如if语句、子程序和函数等,便于阅读和应用。

具体特点如下:1。

支持从系统级到门级电路的描述,既支持自底向上(bottom-up)的设计也支持从顶向下(top—down)的设计,同时也支持结构、行为和数据流三种形式的混合描述。

2. VHDL的设计单元的基本组成部分是实体(entity)和结构体(architecture),实体包含设计系统单元的输入和输出端口信息,结构体描述设计单元的组成和行为,便于各模块之间数据传送.利用单元(componet)、块(block)、过程(procure)和函数(function)等语句,用结构化层次化的描述方法,使复杂电路的设计更加简便。

采用包的概念,便于标准设计文档资料的保存和广泛使用。

3. VHDL语言有常数、信号和变量三种数据对象,每一个数据对象都要指定数据类型,VHDL的数据类型丰富,有数值数据类型和逻辑数据类型,有位型和位向量型。

既支持预定义的数据类型,又支持自定义的数据类型,其定义的数据类型具有明确的物理意义,VHDL是强类型语言。

4. 数字系统有组合电路和时序电路,时序电路又分为同步和异步,电路的动作行为有并行和串行动作,VHDL语言常用语句分为并行语句和顺序语句,完全能够描述复杂的电路结构和行为状态。

1.1.2 VHDL语言的基本结构VHDL语言是数字电路的硬件描述语言,在语句结构上吸取了Fortran和C等计算机高级语言的语句,如IF语句、循环语句、函数和子程序等,只要具备高级语言的编程技能和数字逻辑电路的设计基础,就可以在较短的时间内学会VHDL语言。

但是VHDL毕竟是一种描述数字电路的工业标准语言,该种语言的标识符号、数据类型、数据对象以及描述各种电路的语句形式和程序结构等方面具有特殊的规定,如果一开始就介绍它的语法规定,会使初学者感到枯燥无味,不得要领.较好的办法是选取几个具有代表性的VHDL程序实例,先介绍整体的程序结构,再逐步介绍程序中的语法概念。

第3章 VHDL语言基础

第3章 VHDL语言基础
超高速集成电路硬件描述语言
Verilog:Cadence公司开发
ABEL(Advanced Boolean Hardware Description, 高级布尔方程语言) :Lattice公司 AHDL(Analog模拟硬件描述语言): Altera公司
第二节
VHDL的基本结构
通过与非门的逻辑描述,阐述VHDL的基本结构
第三节 VHDL结构体的子结构
4位计数器
module count4(out,reset,clk);
output[3:0] out;
input reset,clk; reg[3:0] out; always @(posedge clk) begin if(reset) out<=0; //同步复位 else end endmodule out<=out+1; //计数
Nand_2实体说明

结构体
BEGIN y <= NOT (a AND b);
END rtl;
1. 库说明
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
语法: library 库名
use 库名.程序包名.项目名:
库是用VHDL语言编写的源程序及其通过编译 的数据集合,它由各种程序包组成,程序包提供了 各种数据类型、函数的定义以及各种类型转换函数 及运算等,以供给设计者使用。
库序项库是用vhdl语言编写的源程序及其通过编译的数据集合它由各种程序包组成程序包提供了各种数据类型函数的定义以及各种类型转换函数及运算等以供给设计者使用
第三章 硬件描述语言HDL Hardware Description Language

新的硬件描述语言VHDL编程基础课件

新的硬件描述语言VHDL编程基础课件

(1)常量声明
常量是全局量,在结构描述、程序包说明、 实体说明、过程说明、函数调用说明和进程说 明中使用。 例: constant WIDTH :INTEGER := 8; constant X :NEW_BIT := ′X′;
(2)变量声明
定义了给定类型的变量名称。 例:
variable A,B :BIT; variable INIT :NEW_BIT
信号为器件内部节点信号,数据的进出不像端口 信号那样受限制,不必定义其端口模式。
定义信号的目的是为了在设计电路时使用该信号。 用“<=”来给信号赋值
例:
signal A,B :BIT;
signal INIT :INTEGE: = -1
信号赋值
SIGNAL temp : Std_Logic_Vector (7
支持大规模设计的分解和已有设计的再利用功能。
VHDL的优点
5. 对设计的描述具有相对独立性,与硬件的结构无关 6.可以利用EDA工具进行逻辑综合和优化,并自动将
VHDL描述转化为门级网表。 7. 具有可移植性,可以在不同的设计环境和系统平台
中使用。 8. 具有良好的可读性。
三、VHDL与高级语言的区别
INOUT(双向端口) 、 BUFFER(输出并向内部反 馈)
数据类型:VHDL作为一种强类型语言,必须对数据对 象(常量、变量、信号)规定取值范围,即对传输或 存储数据的类型作明确的界定。
实体举例
ENTITY black_box IS Generic ( constant width : integer := 7;);
Structure描述
architecture one of mux21 is signal d,e:bit; begin d<=a and (not)s; e<=b and s; y<=d or e;

VHDL语言快速入门必读

VHDL语言快速入门必读

一·1。

数据类型BIT与STD_LOGIC有什么区别。

BIT类型的取值只能是0或1,没有不定状态X,也没有高阻态。

STD_LOGIC类型可以有9种不同的值,包括U—初始值,X-不定,0-0,1—1,Z—高阻态,W—弱信号不定,L—弱信号0,H弱信号1。

‘—’不可能情况.2.信号和变量的异同。

信号是全局量,只要在结构体中已经定义,就可以在结构体中的所有地方使用,信号的赋值符号是”〈=”,信号带入时可以附加延时,信号实际带入过程和带入语句的处理时分开进行的。

变量是局部量,只能在进程,子程序内部定义和使用,变量的赋值符号是“:=",变量的赋值是立即执行的,不能附加延时。

3.VHDL语言的基本顺序语句和并行语句有哪些?双性语句:信号带入语句顺序语句:WHAT语句,断言语句,变量赋值语句,IF语句,CASE语句,LOOP语句,NEXT语句,EXIT语句,过程调用语句,NULL语句。

并行语句:进程(PROCESS)语句,条件带入语句,选择信号带入语句,并发过程调用语句,块语句。

4.用VHDL语言进行硬件设计的流程是什么?1。

分析实际的需求2确定芯片的功能3。

用VHDL 语言描述改元件4.编译,如果有错误修改后再编译直至编译通过。

5。

仿真,如果仿真不符合设计要求,修改程序直至仿真通过。

6。

测试7.综合,8.下载到实际的芯片上。

5.基本的硬件描述语言的种类有哪些?美国国防部开发的VHDL。

Verilog公司开发的Verilog-HDL.日本电子工业振兴协会开发的UDL/I语言。

6.VHDL语言中包含的库的种类有哪些?库:是经编译后的数据的集合,它存放包集合定义,实体定义,构造体定义,和配置定义。

库的种类:1.IEEE库,2。

STD库,3。

面向ASIC 的库,4.WORK库,5。

用户定义库7.IEEE库中所包含的基本类型转换函数有1。

包含程序所用的库LIBRARY IEEE;USE IEEE.STD_LOGIC_1164。

VHDL基础1

VHDL基础1

VHDL基础1Description Structure⼀个可综合的VHDL描述中⼀般由3部分组成:LIBRARY declarations、ENTITY、ARCHITECTURELibrary(库)⽤来设计重⽤和代码共享,使代码结构更清晰1LIBRARY library_name;2USE library_name.package_name.package_parts;常⽤的三个Libray:ieee、std、work其中std、work是默认可见的,不需声明,ieee需要明确的声明Entity(实体)描述电路的输⼊/输出引脚ENTITY entity_name ISGENERIC(参数名:数据类型:=设定值...);PORT (port_name1: port_mode data_type;port_name2: port_mode data_type;...);END entity_name;GENERIC类属性为可选,⽤来指定诸如数据总线宽度、延时时间等参数singal_mode 可以是 4 种类型:in out inout bufferOUT模式⽆法回读到电路内部,Buffer模式可以,但是 buffer 不能连接到其他类型的端⼝,即不能把该模块作为⼦模块例化,⼀般使⽤中间缓冲信号,解决回读问题。

Architecture(结构体)描述电路的⾏为和实现的功能Architecture 包含两个部分:声明部分和代码部分声明部分(可选)⽤来声明数据类型、常量、信号、⼦程序、元件等代码部分(begin...end)描述电路⾏为1ARCHITECTURE结构体名OF实体名IS2说明语句3BEGIN4功能描述语句5 ......6END结构体名;注释⽤ -- 开始VHDL不区分⼤⼩写Data Types三种数据对象,声明信号signal1signal name : type [range] [:= initial_vaule];还有常量constant声明:1constant name : type := value;还有变量variable声明1variable name : type [range] [:= initial_vaule];Pre-defined Data Typesbit & bit_vector⽤'0'、'1'赋值1signal x : bit;2signal y : bit_vector (3DOWNTO0);34 x<='1';5 y<="0011"std_logic & std_logic_vector不同于bit类型,可取9种逻辑数据类型,但只有0、1、X、Z可综合std_logic 是 std_ulogic的⼦集Boolean两种取值:true、falseTIME1CONSTANT t_delay:TIME:=30 ns数值部分和单位之间有个空格fs、ps、ns、us、ms、sec、min、hr 103关系integer32位表⽰的整数范围-(231-1)~(231-1)其他进制整数先写进制数,再⽤#括起来16#1F#real⼩数表⽰、科学计数表⽰character & string使⽤字符串的可以是常量和变量User-defined Data Types1 --integer range2TYPE student IS RANGE0TO100;34 --enumerated(枚举)5TYPE state IS (state0,state1,state2,state3);67 --Array8TYPE matrix IS ARRAY (0TO3) OF std_loogic_vector;Port Array有时在定义端⼝时,需要把端⼝定义为⽮量阵列。

第3部分VHDL基本知识共152页文档

第3部分VHDL基本知识共152页文档
17
数字逻辑
3.2 VHDL程序的基本结构
3.2.1 实体说明 实体说明部分的一般结构: ENTITY 实体名 IS [GENERIC (类属表);] [PORT (端口表);] END [ENTITY] 实体名;
18
数字逻辑
3.2 VHDL程序的基本结构
1. 实体名 实体说明部分以“ENTITY 实体名 IS”开始,以 “END [ENTITY] 实体名”结束。其中实体名由 设计者自定义,一般根据所设计实体的功能来取 名,“ENTITY”是VHDL语法规定中的保留关键 字。大多数EDA软件中的编译器和适配器是不区 分VHDL语言大小写的,但为了保持良好的设计 风格和便于阅读,通常将VHDL语言的标识符和 保留关键字以大写表示,设计者自定义符号小写 表示,如实体名、结构体名、变量名等。
5
数字逻辑
3.1 硬件描述语言VHDL介绍
2019年,我国国家技术监督局制定的《CAD通用技术规 范》推荐VHDL作为我国电子设计自动化硬件描述语言 国家标准。从此,VHDL语言在我国迅速普及,成为广 大硬件工程师必须掌握的一项技术。
VHDL语言能够成为标准化的硬件描述语言并获得广泛 应用,是因为有其它硬件描述语言不具备的有点:
13
数字逻ary)、 程序包(package)、实体 (entity declaration)、结构 体(architecture body)、配 置(configuration)五部分组 成。设计实体结构结构图如 图3-2所示,其中设计实体 必须有实体和结构体,其它 部分根据设计需要来添加。

端口名2 :通信模式 数据类型;
……
端口名n :通信模式 数据类型;
);

三、VHDL语言基础

三、VHDL语言基础

第三章VHDL语言基础本章介绍VHDL语言的基础知识,具体内容包括:1、概述2、VHDL程序的基本结构库、程序包、实体说明、结构体、配置3、VHDL的语言要素语法规则、数据对象、数据类型、运算操作符4、VHDL的描述语句并行语句、顺序语句、子程序、属性语句5、VHDL的描述方式行为描述方式、寄存器传输级描述方式、结构描述方式第一节概述HDL(Hardware Description Language):硬件描述语言,描述数字电路和系统的语言。

具体来说,用于描述数字系统的结构、行为、功能和接口。

在EDA设计中,设计者利用硬件描述语言,可以描述自己的设计思想,完成设计输入的步骤。

设计输入共有三种方法——原理图、文本、波形输入,其中,文本输入方式就是用硬件描述语言跟计算机交流,让计算机读懂设计者的设计。

VHDL的全称是V ery-High-Speed Integrated Circuit Hardware Description Language,译作甚高速集成电路硬件描述语言,是当前广泛使用的HDL语言之一,并被IEEE和美国国防部采用为标准的HDL语言。

1、发展历程:美国国防部1982年开发VHDL语言,在1987年被IEEE采用为标准硬件描述语言。

在实际使用过程中,发现1987年版本的缺陷,并于1993年对87版进行了修订。

因此,现在有两个版本的VHDL语言。

1)1987年的IEEE 1076(VHDL87)2)1993年进行了修正(VHDL93)VHDL语言目前已成为,开发设计可编程逻辑器件的重要工具。

2、优点:VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。

归纳起来,VHDL 语言主要具有以下优点:功能强大,设计方式多样VHDL具有功能强大的语言结构, 可用简洁明确的代码来描述十分复杂的硬件电路。

VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。

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

在结构体中定义信号
y <= a WHEN s=‘0’ ELSE b;
结构体中的语句是并行语句。 无论有多少行语句,都是同时执行,与语句的先后顺序无关。
综合适配后,选择菜单 Tools->Netlist Viewers->RTL Viewer 可 观察所生成的电路示意图。
ARCHITECTURE one OF mux21a IS BEGIN y <= a WHEN s=‘0’ ELSE b; END ARCHITECTURE one ;
3.2 VHDL基本语法
CASE语句 一定要包含所有的选择情况; 小心WHEN OTHERS条件下的赋值;
3.2 VHDL基本语法
IF语句
ARCHITECTURE one OF ex38 IS BEGIN PROCESS(sel,a,b,c,d) BEGIN IF sel=“1110” THEN ELSIF sel=“1101” THEN …… ELSE y<='0'; END IF; END PROCESS; END ARCHITECTURE one;
: OUT STD_LOGIC );
3.2 VHDL基本语法
ARCHITECTURE one OF mux41a IS BEGIN PROCESS(sel,i0,i1,i2,i3) BEGIN CASE sel IS WHEN “00” WHEN “01” WHEN “10” WHEN “11” END CASE; END PROCESS; END ARCHITECTURE one;
例:教材P93,3-8。 Sel(3 DOWNTO 0) 1110 1101 1011 0111 Others 输出y a b c d 0
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ex38 IS PORT( a,b,c,d : IN STD_LOGIC; sel : IN STD_LOGIC_VECTOR(3 DOWNTO 0); y : OUT STD_LOGIC ); END ENTITY ex38; ARCHITECTURE one OF ex38 IS BEGIN PROCESS(sel,a,b,c,d) BEGIN CASE sel IS WHEN "1110" => y<=a; WHEN "1101" => y<=b; WHEN "1011" => y<=c; WHEN "0111" => y<=d; WHEN OTHERS => y<=‘0'; END CASE; END PROCESS; END ARCHITECTURE one;
3.1 EDA开发流程
步骤3:新建输入文件(File -> new)。
原理图:Block Diagram/Schematic File;
VHDL程序:VHDL File。
3.1 EDA开发流程
步骤4:选择电路元件,画出原理图。 新建了原理图文件后,出现网格画布,在网格画布上双击鼠标左 键,会弹出Symbol窗口。
设计输入
原理图,或VHDL程序。
综合适配 仿真
时序仿真
下载
分配引脚,通过JTAG或AS下载。
硬件测试
3.1 EDA开发流程
例:实现二选一多路开关。 以原理图输入,完成电路设计。 电路元件图 逻辑电路图
3.1 EDA开发流程
步骤1:创建一个新的项目(File -> new project wizard)。 通常为每个项目建立一个文件夹,该项目所有的文件都存放在这 个文件夹下。
Sel(3 DOWNTO 0) 1110 1101 1011 0111 Others
输出y a b c d 0
CASE sel IS WHEN "1110" => y<=a; ……. WHEN OTHERS => y<=‘0'; END CASE;
CASE sel IS WHEN "1110" => y<=a; ……. WHEN OTHERS => y<=‘X'; END CASE;
3.2 VHDL基本语法
• 进程
xxx : PROCESS (n1,n2,n3) BEGIN …… END PROCESS; xxx为进程名,注意用冒号隔开。PROCESS旁的(n1,n2,n3)称 为进程的敏感信号表,通常要求将进程的所有的输入信号都放在敏感 信号表中。任一敏感信号发生变化,就执行一次进程。 一个结构体中可以包含多个进程,进程之间是并行的。 进程中的语句是顺序语句。
描述外部引脚信号的性质
功能描述语句
结 构 体ห้องสมุดไป่ตู้
ARCHITECTURE one OF mux21a IS BEGIN y <= (a AND (NOT s)) OR (s AND b); END ARCHITECTURE one ;
VHDL语言不区分大小写。
d e
结 构 体
ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGIN d <= a AND (NOT S) ; 等效于 e <= b AND s ; y <= d OR e ; END ARCHITECTURE one ;
3.2 VHDL基本语法
例:用VHDL程序完成二选一电路的设计。 电路元件图 逻辑电路图
定义mux21a实体(ENTITY)
为mux21a定义结构体(ARCHITECTURE)
一个VHDL文件中只能有一个实体,并且文件名必须与实体名相同。 VHDL文件后缀为.vhd。
实 体
ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a;
然后选择菜单项Processing -> Start Simulation 进行仿真, 仿真波形如下图所示。
默认的仿真波形文件是与项目同名的仿真文件。
3.1 EDA开发流程
步骤7:分配引脚。 选择菜单项Assignment -> Pin Planner,为实体的输入输出信 号分配引脚。 FPGA芯片中所有I/O引脚都可使用,将鼠标放在图的引脚上,会 显示提示信息。下图为将元件的a、b、s和y分别分配为芯片的 Pin32~Pin35后的情况。
选中某一信号时,窗口左边的工具条变为有效,可设置输入信号 状态,可将信号设置为0、1或指定周期的时钟信号。保存文件,文件 名随意,文件后缀为.vwf,如下图所示。
在Settings对话框中,选择Simulator Settings 选项,将 Simulation mode设置为Timing,Simulation input 设置为所存的波 形文件。
CASE语句必须包含所有可 能的情况。
‘X’ 强未知; ‘Z’ 高阻。
<= i0; <= i1; <= i2;
WHEN OTHERS => q <= ‘X’; END CASE; END PROCESS; END ARCHITECTURE one;
3.2 VHDL基本语法
3.2 VHDL基本语法
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 ARCHITECTURE one ;
定义进程,括号中说明 敏感信号。
3.2 VHDL基本语法
例:设计一个四选一多路开关。
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41a IS PORT( i0,i1,i2,i3 : IN sel : IN q END ENTITY mux41a; STD_LOGIC; STD_LOGIC_VECTOR(1 DOWNTO 0);
Create\Update -> Create Symbol Files for Current File将
mux21a封装成一个元件。 原理图文件名就是元件的类型名。如同and2一样,在symbol 对话框中可以看到mux21a元件。
3.1 EDA开发流程
常用工具按钮如下图所示。
阅读安排:阅读教材4.1、4.2节。 练习:从网上下载练习1.doc和mux21a.zip,完成练习1。 项目mux21a中已经实现了二选一电路,并进行了时序仿真。 熟悉Quartus的开发环境; 以mux21a为基本元件,以原理图方式实现四选一电路。
3.1 EDA开发流程
可直接在Name栏中输入想要元件的类型,例如input、output、 and2、or2、not等。也可在Libraries栏中查看和选择选择想要的元 件。然后单击OK键,将元件放在画布上即可。
画布上的元件可以复制粘贴。双击输入/输出引脚,修改引脚名。 用鼠标左键拖动将元件连接起来,形成如下电路图。
存盘,文件名随意,原理图的文件后缀为.bdf,文件会添加到项 目中。在Quartus窗口左边的Project Navigator中会列出项目中所有 文件。 选中该bdf文件,单击右键弹出快捷菜单,选择菜单项Set as Top-Level Entity选项,将文件设置为项目的顶层实体。 默认的顶层实体为与项目同名的设计文件。
下载成功后,断电拔掉下载头,重新上电程序自动运行。
3.1 EDA开发流程
例:以已完成的二选一多路开关为元件,实现四选一电路。 s1=‘0’, s0=‘0’时输出y=ain; s1=’0’, s0=‘1’时输出y=bin; s1=‘1’ , s0=‘0’时输出y=cin; s1=‘1’ , s0=‘1’时输出y=din; 打开mux21a.bdf原理图设计文件,选择菜单项File ->
相关文档
最新文档