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的编写和仿真流程。
第一部分VHDL语言基础知识
第1部分VHDL语言基础知识第1章概述1.1 电子器件的发展和现状电子技术的发展总是同电子器件的发展密切相关的,由于电子器件的不断更新换代,电子技术得到了飞速发展,当今信息技术被广泛应用在国民经济的方方面面。
多媒体技术的普及、高速宽带网络的建设、数字电视的出现以及与我们日常生活息息相关的各种家用电器,都离不开微处理器、存储器和一些采用行业标准的专用芯片。
这些电子器件的发展经历了从电子管、晶体管、小规模集成电路、中规模集成电路到大规模集成电路和超大规模集成电路几个阶段,其发展趋势是体积越来越小,集成度越来越高。
随着半导体技术的迅速发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担,系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好在自己的实验室里就能设计并制造出适用的ASIC芯片,并且能够得到实际的应用。
使用ASIC完成电子系统的设计,其优点是集成度高、保密性强、可大幅度地减少印刷电路板的面积和接插件、电路性能好并能降低装配和调试费用、更适合较大规模批量生产、降低生产成本。
例如,现在微机中使用的显卡、网卡、数字电视等都是专用的ASIC芯片。
采用ASIC设计的不足之处是一次性的投资大,设计周期一般比较长,不便于以后修改设计,因而近几年在ASIC领域出现了一种半定制电路,即现场可编程逻辑器件FPLD。
目前使用较多的可编程逻辑器是现场可编程门阵列FPGA(field programmable gate array)和复杂可编程逻辑器件CPLD(complex programmable gate array)。
早期使用的可编程器件有PROM、EPROM、E2PROM、PAL、GAL等,这些芯片的容量一般比较小,只能完成简单的数字逻辑功能,这些器件基本上是使用专用的编程器进行装载。
CPLD和FPGA的芯片是在早期使用的PAL和GAL基础上发展起来的,相比早期的可编程器件,现场可编程逻辑器件FPLD的容量大,器件的容量远远大于PAL和GAL,更适合做时序和组合逻辑电路的设计,不但集成度高,而且逐渐向低功耗发展,芯片的使用电压有+5V、+3.3V和+2.5 V几种,有的芯片外部是+5V而内部的工作电压则是+3.3V或+2.5V。
第1章VHDL语言基础
位矢量(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语言特点 四、VHDL语言特点
1、VHDL具有强大的语言结构,系统硬件描述能 力强、设计效率高;具有较高的抽象描述能力。 如:一个可置数的16位计数器的电原理图:
6
用VHDL描述的可置数16位计数器:
7
2、VHDL语言可读性强,易于修改和发现错误。 3、VHDL具有丰富的仿真语句和库函数,可对 VHDL源代码进行早期功能仿真,有利于大 系统的设计与验证。 4、VHDL设计与硬件电路关系不大。 5、VHDL设计不依赖于器件,与工艺无关 。 6、移植性好。 7、VHDL体系符合TOP-DOWN和CE(并行工程)设计 思想。 8、VHDL设计效率高,产品上市时间快,成本低。 9、易于ASIC实现。
3
三、VHDL的作用 VHDL的作用
1、VHDL打破软、硬件的界限 传统的数字系统设计分为: 硬件设计(硬件设计人员) 软件设计(软件设计人员) VHDL是电子系统设计者和 EDA工具之 间的界面。 EDA工具及 HDL的流行,使电子系统向集 成化、大规模和高速度等方向发展。 美国硅谷约有80%的 ASIC和 FPGA/CPLD 已采用 HDL进行设计。
配置(Configuration)
16
实体(说明) 一、实体(说明)
实体(说明): 定义系统的输入输出端口 语法:
ENTITY <entity_name> IS Generic Declarations Port Declarations END <entity_name>; (1076-1987 version) END ENTITY <entity_name> ; ( 1076-1993 version)
80年代初由美国国防部在实施超高速集成电 路(VHSIC)项目时开发的。 1987年由 IEEE 协会批准为 IEEE 工业标准, 称为 IEEE1076-1987。 各EDA公司相继推出支持VHDL的设计环境。 1993年被更新为 93 标准,即IEEE1076-1993。 进一步提高抽象描述层次,扩展系统描述能力。
VHDL入门
元件声明
y1 : OUT BIT);
END COMPONENT;
1
COMPONENT or_2
位
PORT( i3, i4 : IN BIT;
全
y2 : OUT BIT); END COMPONENT;
加
COMPONENT xor_2
器
PORT( a, b : IN BIT;
c : OUT BIT);
END adder;
2、结构体
ARCHITECTURE <结构体名> OF <实体名> IS
[结构体说明部分]; BEGIN <并行处理语句>; END结构体名;
•ARCHITECTURE a OF adder IS •BEGIN •s<=a XOR b XOR cin; •co<=((a XOR b) AND cin) OR (a AND b); •END a;
体
说
s ,co : OUT BIT);
明
图二 实体说明的描述
u2
cin
=1
s
u1
u3 tmp
END adder; ARCHITECTURE a OF adder IS BEGIN
a
&2
b
=1 tmp
1 u4
u5
结
&
≥1
co
s<=a XOR b XOR cin;
构 体
图三 1位全加器的逻辑图
co<=((a XOR b) AND cin) OR (a AND b);
中,通过调用库 中的元件或已设 计好的模块来对 当前的设计进行
u5:or_2 PORT MAP (tmp2,tmp3,co); 描述。
VHDL经典教程(精简快速入门版)
3 VHDL语言VHDL: VHSIC Hardware Description Language.3.1 VHDL语言基础3.2 VHDL基本结构3.3 VHDL语句3.4 状态机在VHDL中的实现3.5 常用电路VHDL程序3.6 VHDL仿真3.7 VHDL综合HDL----Hardware Description Language一种用于描述数字电路的功能或行为的语言。
目的是提为电路设计效率,缩短设计周期,减小设计成本,可在芯片制造前进行有效的仿真和错误检测。
优点:HDL设计的电路能获得非常抽象级的描述。
如基于RTL(Register Transfer Level)描述的IC,可用于不同的工艺。
HDL设计的电路,在设计的前期,就可以完成电路的功能级的验证。
HDL设计的电路类似于计算机编程。
常用的HDL语言:VHDL 、Verilog HDLØVHDL 是美国国防部在20世纪80年代初为实现其高速集成电路硬件VHSIC 计划提出的描述语言;ØIEEE 从1986年开始致力于VHDL 标准化工作,融合了其它ASIC 芯片制造商开发的硬件描述语言的优点,于93年形成了标准版本(IEEE.std_1164)。
Ø1995年,我国国家技术监督局推荐VHDL 做为电子设计自动化硬件描述语言的国家标准。
VHDL 概述:VHDLVHSIC Hardwarter Description Language Very High speed integrated circuit VHSICVHDL优点:Ø覆盖面广,系统硬件描述能力强,是一个多层次的硬件描述语言;ØVHDL语言具有良好的可读性,既可以被计算机接受,也容易被人们所理解;ØVHDL语言可以与工艺无关编程;ØVHDL语言已做为一种IEEE的工业标准,便于使用、交流和推广。
VHDL语言的不足之处:设计的最终实现取决于针对目标器件的编程器,工具的不同会导致综合质量不一样。
VHDL语言教程
VHDL语言教程VHDL是一种硬件描述语言,用于描述数字电路和系统,并进行硬件的设计和仿真。
它被广泛应用于数字电路设计、嵌入式系统开发和可编程逻辑控制器等领域。
本教程将介绍VHDL语言的基本概念和语法,帮助您了解和学习这门强大的硬件描述语言。
一、VHDL概述VHDL是Very High Speed Integrated Circuit Hardware Description Language的缩写,意为高速集成电路硬件描述语言。
它是一种硬件描述语言,用于描述数字电路和系统。
与传统的电路设计方法相比,使用VHDL可以更加方便、高效地进行电路设计和测试。
1.VHDL的起源和发展VHDL最早由美国国防部为了解决数字电路设计复杂、效率低下的问题而研发。
后来,VHDL成为了一种IEEE标准(IEEE1076)并被广泛应用于数字电路设计和仿真。
2.VHDL的优点VHDL具有以下几个优点:-高级抽象:VHDL提供了一种高级描述电路的方法,使得设计者能够更加方便地表达复杂的电路结构和行为。
-可重用性:VHDL支持模块化设计,使得设计者可以将电路的不同部分进行抽象和封装,提高了电路的可重用性。
-高效仿真:VHDL可以进行高效的电路仿真和测试,有助于验证电路设计的正确性和可靠性。
-灵活性:VHDL可以应用于各种不同类型和规模的电路设计,从小规模的数字逻辑电路到大规模的系统级设计。
二、VHDL语法和基本概念1.VHDL的结构VHDL程序由程序单元(unit)组成,程序单元是VHDL描述的最小单元。
程序单元包括实体(entity)、结构(architecture)、过程(process)和包(package)等。
2. 实体(entity)实体是VHDL描述电路模块的一个部分,包括输入输出端口、信号声明和实体标识符等。
3. 结构(architecture)结构描述了实体的具体电路结构和行为,包括组件声明、信号赋值和行为描述等。
VHDL 入门
第 6 章 VHDL 入门
结构体由结构体名称、信号定义语句、结构和功能描述语 句构成,一般有如下两种格式。
格式1: ARCHITECTURE 结构体名 OF 实体名 IS
说明语句 BEGIN
结构描述语句 END ARCHITECTURE [结构体名]; 格式2: ARCHITECTURE 结构体名 OF 实体名 IS
第 6 章 VHD为 “datawidth”的二输入与门实体定义。
[例6.3] ENTITY bus_and IS GENERIC (datawidth:INTEGER:=8);
PORT ( bus_a:IN BIT_VECTOR(datawidth-1 DOWNTO 0); bus_b:IN BIT_VECTOR(datawidth-1 DOWNTO 0); bus_c:OUT BIT_VECTOR(datawidth-1 DOWNTO 0)
或者 ENTITY [实体名] IS [GENERIC(类属参数说明)]; [PORT(端口说明)]; END [实体名];
第 6 章 VHDL 入门
以上所示的格式中,前者为IEEE VHDL’93标准,后者为 IEEE VHDL’87标准,建议采用IEEE VHDL’93标准的实体定 义格式。
实体定义中“ENTITY”、“IS”、“GENERIC”、“PORT” 和“END ENTITY”是定义实体的关键词,实体定义从 “ENTITY [实体名] IS”开始,至“END ENTITY [实体名];” 结束。“;”符号表示一句语句的结束,是不可缺少和省略的, 否则在编译时会报错,导致编译失败。VHDL对字母不区分大 小写,即“ENTITY”与“entity”是完全一样的。例6.2是一个简 单实体定义的例子。
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语言基础
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设计。
第3章 VHDL快速入门
3.1 VHDL体系结构 体系结构
库的格式如下: LIBRARY 〈设计库名〉; USE 〈设计库名〉·〈程序包名〉 · ALL;---打开某库 USE语句的使用有两种常用格式: 1)Use库名·程序包名·项目名; 这种方式使用库中某个程序包中某个具体的项目。 2)Use库名.程序包名.ALL; 使用库中某个程序包中所有的项目
3.1 VHDL体系结构 体系结构
各种端口模式可用图3.3表示。
端口类型:定义端口的数据类型。 常用的有integer、std_logic和 std_logic_vector等。
3.1 VHDL体系结构 体系结构
3.1.4 结构体部分 所有能被仿真的实体都由结构体 (ARCHITECTURE)描述,即结构体描述实 体的结构或行为。—个实体可以有多个结构 体,每个结构体分别代表该实体功能的不同 实现方案。 结构体一般由图3.4所示各子部分构成。
3.2 数据选择器的 数据选择器的VHDL描述 描述
例3.2
2选1多路选择器的仿真波形
3.2 数据选择器的 数据选择器的VHDL描述 描述
3.2.2 2选1数据选择器的 选 数据选择器的 数据选择器的VHDL相关语法分析 相关语法分析 1.实体 实体 实体描述的是电路器件的端口构成和信号属性,它 的最简表达式如下: ENTITY 实体名 IS PORT (端口名:端口模式 数据类型; 端口名: 数据类型; 端口名 … 端口名: 数据类型); 端口名:端口模式 数据类型 ; END ENTITY实体名; 实体名; 实体名
第3章 VHDL快速入门 章 快速入门
【学习目标】 学习目标】 通过本章学习应掌握VHDL体系结构、库 与程序包、实体部分结构、结构体部分结构; 数据选择器的VHDL描述中的相关语法现象; 触发器的VHDL描述中的时钟信号的不同描述 方法和相关语法现象。
第3章VHDL语法基础
--设初始值
FOR I IN 1 DOWNTO 0 LOOP
IF (A(I)=‘1’ AND B(I)=‘0’) THEN
A_LESS _B<=FALSE;
EXIT;
ELSIF (A(I)=‘0’ AND B(I)=‘1’) THEN
A_LESS _B<=TRUE;
--A<B
EXIT;
ELSE NULL;
PROCESS(A) IS
BEGIN TMP <=‘0’;
FOR N IN 0 TO 7 LOOP
TMP <=TMP XOR A(N);
END LOOP; Y<= TMP;
结果:
END PROCESS;
Y=‘0’— A含偶数个‘1’,
END ARCHITECTURE ART;
Y=‘1’— A含奇数个‘1’。
BEGIN
PROCESS(A,B,C) IS
VARIABLE N: BOOLEAN;
BEGIN
C
IF A THEN N:=B;
ELSE N:=C; END IF; OUTPUT <=N; END PROCESS;
A
OUTPUT
B
对应的硬件电路
END ARCHITECTURE ART;
例3: 由两个2选1多路选择器构成的电路逻辑描述如图所示, 其中,当P1和P2为高电平时下端的通道接通。
A
S2 S1
D C
Z B A
ARCHITECTURE ART OF MUX41 IS
SIGNA S :STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
S<=S1 & S2;
VHDL语言入门教程
VHDL语言入门教程VHDL是一种硬件描述语言,主要用于设计数字电路和系统。
它是由美国国防部门于1980年代初开发的,目的是为了改进电子设计自动化(EDA)工具的开发效率和设计文档的可重复性。
VHDL广泛应用于数字信号处理(DSP)、嵌入式系统、通信系统和各种ASIC(专用集成电路)和FPGA(现场可编程门阵列)的设计。
本教程将介绍VHDL的基础知识,包括语法、数据类型和常见的建模技术。
一、VHDL的语法VHDL的语法由标识符、关键字、运算符和分隔符组成。
其中,标识符用于给变量、信号和实体命名,关键字用于定义语言特定的操作,运算符用于数学和逻辑运算,分隔符用于分隔语句。
VHDL中的代码以一个实体(entity)的声明开始,然后是体(architecture)的声明,最后是信号声明和进程(process)的描述。
以下是一个简单的例子:```vhdlentity AND_gate isportA, B: in std_logic;C: out std_logicend entity AND_gate;architecture Behavior of AND_gate isbeginC <= A and B;end architecture Behavior;```在这个例子中,我们声明了一个名为AND_gate的实体,它有两个输入信号A和B,一个输出信号C。
然后我们定义了一个名为Behavior的体,它描述了AND门的行为:C等于A与B的逻辑与运算结果。
二、VHDL的数据类型VHDL支持许多数据类型,包括标量类型、数据类型、自定义类型和引用类型。
标量类型包括bit、bit_vector、integer、real、std_logic和std_ulogic等。
其中,bit_vector是一组连续的位,std_logic和std_ulogic用于表示单个信号。
数据类型是由标量类型和数组类型组成的。
数组类型可以是一维、二维或更高维的,用于存储多个数据。
vhdl入门
2.2.1 VHDL 预定义数据类型
1.布尔数据类型 值范围true(1)、false (0) 用于逻辑关系 2. 位数据类型 Bit 0 ,1
3. 位矢量数据类型 位矢量基于位的数组
Bit_vector(0 to n); Bit_vector(n downto 0); 关键字 TO 表示数组从左到右升序排列 关键字 downto 表示数组从右到左降序排列 使用downto
+, *,/ **,MOD,REM,ABS +,-,* 可以综合,但不推荐用*,如果用乘法,选 用库函数 / 只有除数是2的N次幂才能综合,不用 如果用的话,选用库函数 其他不能综合。
2.4.2 并置运算符
& 用于多个元素或矢量连接成新的矢量
例
2.4.3 关系运算符
= 、/=、 <、<=、>、>=
2.1.2 结构体
注意:
⑴声明语句用于说明和定义内部信号、常量、 数据类型、子过程、元件等 ⑵内部说明信号不必规定信号方向 ⑶功能描述语句允许信号赋值、块、进程、 子程序调用、生成、元件例示等语句
功能描述语句主要用到 1.进程语句 2. 信号赋值语句 3.元件例化语句
例
2.1.3 库和包的调用
2.3.3 常数
书写格式: constant 常量名 :数据类型 [:= <表达式>]; 作用: 1.保证常数描述的数据在程序中不会因误操作被改变 2.对程序中某些关键数据值命名,可以提高程序的可 读性 3.将出现次数多的关键数值用数值表示,易于修改
例
2.4 VHDL运算符
2.4.1 算术运算符
1.1.1 VHDL特点
1.支持“自顶向下”的设计方法
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(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中的结构语句用于描述数字系统的结构,也就是各个模块之间的连接关系。
第1章 VHDL语言基础
说明:根据图b右侧的MY74LS00原理图,实体MY74LS00定 义了引脚的端口信号属性和数据类型。
--实体MY74LS00的结构体ART2的说明 ARCHITECTURE ART2 OF MY74LS00 IS --元件调用声明 COMPONENT NAND2 IS PORT(A,B:IN STD_LOGIC; Y:OUT STD_LOGIC); END COMPONENT NAND2; --元件连接说明 BEGIN U1:NAND2 PORT MAP(A=>A1,B=>B1,Y=>Y1); U2:NAND2 PORT MAP(A=>A2,B=>B2,Y=>Y2); U3:NAND2 PORT MAP(A3, B3, Y3); U4:NAND2 PORT MAP(A4, B4, Y4); END ARCHITECTURE ART2;
① 规范范围,亦即此设计符合某个设计规范,能得到大家的认可, 这就是库、程序包使用说明。 ② 硬件电路与外界的接口信号,这就是设计实体的说明。 ③ 硬件电路其内部各组成部分的逻辑关系以及整个系统的逻辑 功能,这就是该设计实体对应的结构体说明。
1.设计思路 74LS00芯片由四个2输入与非门组成。因此设计时可先设计 一个2输入与非门(图a所示),再由四个2输入与非门构成一个 整体—MY74LS00(图b所示)。
第1章 VHDL语言基础
1.1 VHDL程序基本结构 1.2 VHDL程序的实体 1.3 VHDL程序的结构体
1.1 VHDL程序基本结构
一、VHDL程序设计约定 语句结构描述中方括号“[ ]”内的内容为可选内容。 对于VHDL的编译器和综合器来说,程序文字的大小写是不 加区分的。 程序中的注释使用双横线“- -”。 源程序命名与实体同名(MAX+plus Ⅱ要求)。
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语言设计入门
常用的4种语句
二、if 语句 6、例子4—时钟下降沿触发的16位寄存器
--Signal reset, clk, wen :std_logic;
--Signal d, q :std_logic_vector(15 downto -- 0); If reset = ‘0’ then
四、层次结构的设计
掌握元件(component)语句和端口映射(port
map)语句。
五、库(library)和程序包(pachage)的基本使用。
有了上述的入门知识,一般的设计没有什么问题。
第1页,共80页。
信号和变量
信号(signal)是硬件中连线的抽象描 述,信号在元件的端口连接元件。
变量(varable)在硬件中没有类似的对 应关系,它们主要用于硬件特性的高层次建 模所需的计算中。
pc_proc: process(pc, zjmp_pc, cjmp_pc, t, zj_flag, cj_flag, dw_flag,reset)
begin if reset = ‘0’ then pc <= x”0000”; elsif t’event and t= ‘1’ then if zj_flag = ‘1’ then pc <= zjmp_pc; elsif cj_flag = ‘1’ then pc <= cjmp_pc; elsif dw_flag = ‘1’ then pc <= pc + “10”; else pc <= pc + ‘1’; end if; end if;
第7页,共80页。
算术运算符
常用的算术运算符有:+ Signal a,b :std_logic_vector(15 downto
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一·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.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;2.实体声明ENTITY fp ISPORT();END ENTITY fp;3.结构体,具体功能的实现ARCHITECTURE a OF fp ISBEGINEND ARCHITECTURE a;9.VHDL的程序子结构有哪些?进程(PROCESS)顺序语句,块(BLOCK)并行语句,过程(PROCEDURE)顺序语句,函数(顺序语句)。
10.简述when-else和if-else的区别?If-else是顺序语句所以只能在进程内部使用,可以没有else语句,可以进行嵌套。
有自身值带入的描述,能组成锁存电路。
When-else是并行语句,在结构体内使用,必须要有else语句,不能进行嵌套,没有自身值带入的描述,不能组成锁存电路。
11.什么是ASIC,ASIC的特点是什么?ASIC是Application Specific Integrated Circuit 的英文缩写,在集成电路界被认为是一种为专门目的而设计的集成电路。
ASIC的特点是面向特定用户的需求,ASIC在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。
12.逻辑电平有哪些?逻辑电平:有TTL、CMOS、LVTTL、ECL、PECL、GTL;RS232、RS422、LVDS等。
·其中TTL和CMOS的逻辑电平按典型电压可分为四类:5V系列(5V TTL和5V CMOS)、3.3V 系列,2.5V系列和1.8V系列。
·5V TTL和5V CMOS逻辑电平是通用的逻辑电平。
13.TTL电平和CMOS电平可以互联吗?数字电路中TTL电平是个电压范围,规定输出高电平>2.4V,输出低电平<0.4V。
在室温下,一般输出高电平是3.5V,输出低电平是0.2V。
CMOS电平在不同的电路中是0v-5v或者0v-12v。
所以可以用CMOS电平驱动TTL电平器件,但是TTL 电平驱动CMOS电平器件时须加上拉电阻。
二·用VHDL语言描述给定电路,或写出给定电路的功能或输出。
三.程序改错。
四.注释程序。
五.程序同功能语句替换。
六.元件例化连接器件。
程序例子:IF语句:(1)IF(sel=’0’)THENy<=’1’;END IF;(2)IF (sel=’0’)THENy<=’0’;ELSEy<=’1’;END IF;(3)IF(sel=”00”)THENy<=”01”;ELSIF(sel=”01”)THENy<=”10”……ELSEy<=”11;END IF;CASE语句:CASE sel ISWHEN “00”=>y<=”00”;WHEN “01”=>y<=”10”;WHEN “11”=>y<=”11”;END CASE;FOR语句:FOR i IN 0 TO 7 LOOPtmp:=tmpXORa(i);END LOOP; WHILE语句:WHILE(i<8)LOOPtmp:=tmpXORa(i);i:=i+1;END LOOP;WHEN-ELSE语句(类似if-else):q<=i0 WHEN sel=”00” ELSEi1WHEN sel=”01” ELSEi2WHEN sel=”10” ELSEi3 WHEN sel=”11” ELSE‘X’;WITH-SELECT语句:(类似CASE语句)WITH sel SELECTq<=i0 WHEN “00” ,i1 WHEN “01” ,i2 WHEN “10” ,i3 WHEN “11” ,‘X’WHEN OTHERS ;分频器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fp ISPORT(clk: IN STD_LOGIC;fp1024,fp512,fp64,fp4,fp1: OUT STD_LOGIC); END ENTITY fp;ARCHITECTURE a OF fp ISSIGNAL buf:STD_LOGIC_VECTOR(9 DOWNTO 0); BEGINfp1<=buf(9);fp4<=buf(7);fp64<=buf(3);fp512<=buf(0);fp1024<=clk;PROCESS(clk) ISBEGINIF(clk'EVENT AND clk='1') THENIF(buf="1111111111") THEN LIBRARY IEEE;报时电路USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY bs ISPORT(min,sin: IN STD_LOGIC_VECTOR(7 DOWNTO 0); clk,bs512,bs1024: IN STD_LOGIC;bsout: OUT STD_LOGIC);END ENTITY bs;ARCHITECTURE a OF bs ISBEGINPROCESS(clk) ISBEGINIF(clk'EVENT AND clk='1') THENIF(min="01011001") THENCASE sin ISWHEN "01010000"=>bsout<=bs512;WHEN "01010010"=>bsout<=bs512;WHEN "01010100"=>bsout<=bs512;WHEN "01010110"=>bsout<=bs512;WHEN "01011000"=>bsout<=bs512;WHEN "01011001"=>bsout<=bs1024;WHEN OTHERS=>bsout<='0';END CASE;END IF;END IF;END PROCESS; END ARCHITECTURE a;buf<="0000000000";ELSEbuf<=buf+'1';END IF;END IF;END PROCESS;END ARCHITECTURE a;元件例化LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count60 ISPORT(clkin,en,res: IN STD_LOGIC;bs0,bs1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);cyout: OUT STD_LOGIC);END ENTITY count60;ARCHITECTURE count OF count60 ISCOMPONENT count10 ISPORT(clk,enable,reset: IN STD_LOGIC;b0: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);cy: OUT STD_LOGIC);END COMPONENT;SIGNAL count4:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL clk1,cy1:STD_LOGIC;BEGINbs1<=count4;cyout<=cy1;u0:count10 PORTMAP(clk=>clkin,cy=>clk1,reset=>res,enable=>en,b0=>bs0) ;PROCESS(clk1,res,en) ISBEGINIF(res='0') THENcount4<="0000";ELSIF (clk1'EVENT AND clk1='1') THENIF(en)='1' THENIF(count4="0110") THENcount4<="0000";cy1<='1';ELSEcount4<=count4+'1';cy1<='0';END IF;END IF;END IF;END PROCESS;END ARCHITECTURE count;。