VHDL入门教程
- 格式:docx
- 大小:37.89 KB
- 文档页数:6
第2章VHDL 入门2.1VHDL 程序结构一个完整的VHDL 程序的结构以及各如图2-1所示。
•图2-1VHDL 程序结构并非所有VHDL 程序都具有图2-1的语法结构。
理论上,只有ENTITY 和ARCHITECTURE 是程序所必备的;而在实际应用中,我们常常需要在定义ENITY 之前调用库和库中相应的程序包(只是“调用”,而不是“编写”程序包)。
因此,图2-2所示的这个VHDL 程序结构,是实际应用中最基本、最常见的程序结构,也是本书中大部分例程所用的结构。
•图2-2VHDL 程序基本结构例程2-1为2分频电路的VHDL程序,读者可以通过此程序的说明加深对VHDL程序基本结构的了解。
例程2-12分频电路LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY FreDevider ISPORT(Clock:IN Std_Logic;Clkout:OUT Std_Logic);END;ARCHITECTURE Behavior OF FreDevider IS SIGNAL Clk:Std_Logic;BEGINPROCESS(Clock)BEGINIF rising_edge(Clock)THENClk<=NOT Clk;END IF; END PROCESS; Clkout<=Clk; END;实体声明(Entity Declaration)结构体定义(Architecture Definition)库、程序包调用例程2-1的功能与例程1-1完全相同,只是程序中多了一行注释。
VHDL中的注释以双连字号“--”标识,类似于C语言中的“//”。
注释对程序结果无任何响应,但可以增加程序的可读性和可维护性。
需要注意的是,在MAX+plusII中,编辑汉字很容易出现乱码,不但影响程序的可读性,而且常常会影响整个程序的编译。
因此,建议读者在写程序注释的时候,尽量用英文(本书中所有例程的注释原为英文,考虑到读者的习惯,所以在编入书中时都译成中文)。
VHDL入门教程VHDL学习(本学习以MAXPLUS10为工具软件)第一章、 VHDL程序的组成一个完整的VHDL程序是以下五部分组成的:库(LIBRARY):储存预先已经写好的程序和数据的集合程序包(PACKAGE):声明在设计中将用到的常数、数据类型、元件及子程序实体(ENTITY):声明到其他实体或其他设计的接口,即定义本定义的输入输出端口构造体(ARCHITECTUR):定义实体的实现,电路的具体描述配置(CONFIGURATION):一个实体可以有多个构造体,可以通过配置来为实体选择其中一个构造体1.1库库用于存放预先编译好的程序包(PACKAGE)和数据集合体,可以用USE语句调用库中不同的程序包,以便不同的VHDL设计使用。
库调用的格式:LIRARY 库名USE 库名.所要调用的程序包名.ALL可以这样理解,库在硬盘上的存在形式是一个文件夹,比如库IEEE,就是一个IEEE的文件夹,可以打开MAX PLUSR安装源文件夹,进入VHDL93的文件夹,就可以看到一个IEEE的文件夹,这就是IEEE 库,而里面的文件就是一个个对程序包或是数据的描述文件,可以用文本打开来查看文件的内容。
例如在VHDL程序里面经常可以看到“USEIEEE.STD_LOGIC_1164”,可以这样解释这句话,本序里要用到IEEE 文件夹下程序包STD_LOGIC_1164,而STD_LOGIC_1164是可以在IEEE文件夹的STD1164.vhd文件里面看到的,用文本打开STD1164.vhd,可以看到有一名为“IEEE.STD_LOGIC_1164”PAKAGE定义。
简单的来说,库相当于文件夹,而程序包和数据就相当于文件夹里面的文件的内容(注意:不是相当于文件,因为程序包和数据都是在文件里面定义的,而文件名是和实体名相同的,可以说实体相当于文件)。
到了这里就可以考虑一个问题,“在安装MAX PLUS时有多少个库已经存在的呢”,要得到这个问题的答案,可以打开安装目录下的“VHDL93”文件夹,就可以看到里面有五个文件夹,分别是ATERA、IEEE、LPM、STD、VITAL,也就是说你看到了五个库,分别是ATERA功能库:增强型功能部件,即IP核,包括数字信号处理、通信、PCI和其他总线接口、处理器和外设及外设的功能。
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`。
第一章第一章 VHDL 设计初步第一节 2选1多路选择器的VHDL 描述例1-1是2选1多路选择器的VHDL 完整描述,即可以直接综合出实现相应功能的逻辑电路及其功能器件。
图1-1是此描述对应的逻辑图或者器件图,图中,a 和b 分别是两个数据输入端的端口名,s 为通道选择控制信号输入端的端口名,y 为输出端的端口名。
“mux21a ”是此器件的名称,这类似于“74LS138”、“CD4013”等器件的名称。
电路图图1-2是例1-1综合后获得的电路,因而可以认为是多路选择器“mux21a ”内部电路结构。
由例1-1可见,此电路的VHDL 描述由两大部分组成: 1、由关键词ENTITY 引导,以 END ENTITY mux21a 结尾的语句部分,称为实体。
实体描述电路器件的外部情况及各信号端口的基本性质。
图1-1可以认为是实体的图形表达。
【例1-2】 【例1-4】ENTITY mux21a IS ENTITY mux21a ISPORT ( a, b : IN BIT; PORT ( a, b : IN BIT;s : IN BIT; s : IN BIT;y : OUT BIT ); y : OUT BIT );END ENTITY mux21a; END ENTITY mux21a;ARCHITECTURE one OF mux21a IS ARCHITECTURE one OF mux21a ISSIGNAL d,e : BIT; BEGINBEGIN IF s = '0' THENd <= a AND (NOT S) ; y <= a ; ELSEe <= b AND s ; y <= b ; y <= d OR e ; END IF;END ARCHITECTURE one ; END PROCESS;【例1-3】 END ARCHITECTURE one ;. . .ARCHITECTURE one OF mux21a ISBEGINy<=(a AND(NOT s)) OR (b AND s);END ARCHITECTURE one ;【例1-1】 ENTITY 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 ;图1-1 mux21a 实体 图1-2 mux21a 结构体2、由关键词ARCHITECTURE引导,以END ARCHITECTURE one结尾的语句部分,称为结构体。
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.三输入与非门在数字电路设计中,门电路是最基本的电路单元。
在这里我们挑选了比较典型的三输入的与非门,完成我们的第一个设计。
三输入与非门的逻辑表达式:F ABC逻辑符号为:源代码:逐行解释:1:库声明。
告诉编译器,我要使用这个库里的内容。
语法是:LIBRARY 库名;(结束有个分号的,别丢了,这个分号是每条语句的结束标志,每条语句最后都是要有分号的,这是它们的标配)。
2~4:声明所选择的程序包名称,ALL就是打开整个程序包。
一个库里当然有很多的程序包了,给编译器指明一下那个包要用,好缩小它的搜寻范围。
别让它满库的找,怪费俺们的CPU的。
语法:USE 库名.程序包.程序包的组成部分;。
一句话总结:1和2两句其实相当于C中的“#include<>”,使被声明的库和库中的元件对当前设计项目可见。
发散:IEEE库是最重要的资源库,我们经常使用其中的一些信号定义和数据的定义。
列举一下其中比较重要的几个程序包:(1)STD_LOGIC_1164:指定了STD_LOGIC和STD_ULOGIC逻辑系统(2)STD_LOGIC_ARITH:包含SIGNED和UNSIGNED数据类型定义和相应的算术和比较操作还包含了几个数据转换函数,允许数据从一个类型转换为另一个类型。
(3)STD_LOGIC_UNSIGNED:CONV_INTEGER(A)由INTEGER,UNSDGNED,SIGNED转换成STD_LOGIC_VECTOR由UNSIGNED,SIGNED转换成INTEGER(4)STD_LOGIC_SIGNED:包含了STD_LOGIC和STD_LOGIC_VECTOR其中,在一个程序中只要包含(1),(2),(3)就足够能应付绝大多的应用了。
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(Very High-speed Integrated Circuit Hardware
Description 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 is
port ( port_list );
end entity_name;
```
其中,entity_name是实体的名称,port_list是实体的输入、输出和内部信号。
2.架构声明语法:
```
architecture architecture_name of entity_name is
signal signal_list;
begin
process (sensitivity_list)
begin
--逻辑行为描述
end process;
end architecture_name;
```
其中,architecture_name是架构的名称,entity_name是实体的名称,signal_list是架构的内部信号,sensitivity_list是触发事件的信号列表。
三、VHDL的基本例子
下面以一个简单的4位加法器为例介绍VHDL的编写和仿真流程。
1.编写VHDL代码
```vhdl
library IEEE;
use IEEE.std_logic_1164.all;
entity adder_4bit is
port
A, B : in std_logic_vector(3 downto 0);
SUM : out std_logic_vector(3 downto 0);
CARRY_OUT : out std_logic
end adder_4bit;
architecture Behavioral of adder_4bit is
signal CARRY : std_logic;
begin
process(A, B, CARRY)
begin
SUM<=A+B+CARRY;
CARRY_OUT<=CARRY;
end process;
end Behavioral;
```
2.编写测试台代码
```vhdl
library IEEE;
use IEEE.std_logic_1164.all;
entity testbench is
end testbench;
architecture Behavioral of testbench is signal A, B : std_logic_vector(3 downto 0); signal SUM : std_logic_vector(3 downto 0); signal CARRY_OUT : std_logic;
begin
uut: entity work.adder_4bit
port map
A=>A,
B=>B,
SUM=>SUM,
CARRY_OUT=>CARRY_OUT
process
begin
A<="0000";
B<="0001";
wait for 10 ns;
assert (SUM = "0001") report "Fail" severity error;
assert (CARRY_OUT = '0') report "Fail" severity error;
wait;
end process;
end Behavioral;
```
3.仿真与验证
在VHDL环境中,通过仿真工具(如ModelSim)对测试台进行编译和仿真,可以验证设计的正确性。
四、VHDL的进阶知识
1.组合逻辑与时序逻辑
VHDL支持两种逻辑描述方法:组合逻辑和时序逻辑。
组合逻辑描述的是输入信号与输出信号之间的简单关系,而时序逻辑描述的是时间和状态之间的复杂关系。
2.复杂数据类型
VHDL支持多种数据类型,包括标量类型、数组类型、记录类型等。
这些类型可以用于描述模块的输入、输出和内部信号的数据。
3.仿真与综合
VHDL可以通过仿真工具进行功能验证,还可以通过综合工具将VHDL 代码转化为硬件描述语言,用于实际的电路设计。
4.子程序和函数
VHDL支持子程序和函数,可以将复杂的逻辑划分为多个模块,提高代码的重用性和可读性。
五、总结
本文介绍了VHDL的基本概念、语法和例子,还简要介绍了VHDL的进阶知识。
通过学习VHDL,可以掌握数字电路设计的基本技能,为后续的电路设计工作打下坚实的基础。
希望本文对您有所帮助!。