常用逻辑电路的VHDL描述
第五章 组合逻辑电路的VHDL语言描述
BEGIN
PROCESS ( a, datain ) BEGIN IF ( datain = '1' ) THEN dataout <= '0' ; ELSE dataout <= '1' ; END IF ; END PROCESS ; END ARCHITECTURE behavioral_2 ; --RTL描述方式 ,MAX中需要加入时钟a
第5章
组合逻辑电路的VHDL描述
仿真波形
第5章
组合逻辑电路的VHDL描述
5.1.5 2输入同或门电路
LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY cynxor2 IS PORT ( datain1, datain2 : IN STD_LOGIC ; dataout : OUT STD_LOGIC ) ; END ENTITY cynxor2 ; ARCHITECTURE behavioral OF cynxor2 IS BEGIN
END ENTITY cyxor2 ;
ARCHITECTURE behavioral OF cyxor2 IS BEGIN dataout <= datain1 XOR datain2 ; END ARCHITECTURE behavioral ;
第5章
组合逻辑电路的VHDL描述
LIBRARY IEEE ;
第5章
组合逻辑电路的VHDL描述
LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY cynot IS
PORT ( a, datain : IN STD_LOGIC ; END ENTITY cynot ; ARCHITECTURE behavioral_2 OF cynot IS dataout : OUT STD_LOGIC ) ;
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)结构描述了实体的具体电路结构和行为,包括组件声明、信号赋值和行为描述等。
第11章++硬件描述语言VHDL简介
实体部分最核心的内容是由关键字port引导的端口说明。A和B是输入引脚,使 用了关键字in来描述。Bit的意思是指A和B的数据类型是位类型。位类型数据只可取 0和1这两个数值。S和CO是输出信号,用out来描述,数据类型也是bit型。 实体说明的是部件的名称和端口信号类型,它可以描述小至一个门,大到一个复杂 的CPU芯片、一块印制电路板甚至整个系统。实体的电路意义相当于器件,在电路 原理图上相当于元件符号,它是一个完整的、独立的语言模块,并给出了设计模块 和外部接口。 具体语法如下: entity 实体名 is ——实体名自选,通常用反映模块功能特征的名称 port(端口名称1:端口方式1 端口类型1; 端口名称2:端口方式2 端口类型2;…); end 实体名; ——这里的实体名要和开始的实体名一致 其中端口方式可以有5种,分别是: in:输入端口,信号从该端口进入实体。 out:输出端口,信号从实体内部经该端口输出。 inout:输入输出(双向)端口,信号既可从该端口输入也可从该端口输出。 buffer:缓冲端口,工作于缓冲模式。 Linkage:无指定方向,可与任何方向的信号连接。
(2)用户自定义的数据类型 VHDL语言允许用户自定义数据类型。其书写格式为: type 数据类型名 is 数据类型定义; 例如: type digit is integer range 0 to 9; ——定义digit的数据类型是0~9的整 数 可由用户定义的数据类型有: 枚举(Enumerated)类型; 整数(Integer)类型; 实数(Real)、浮点数(Floating)类型; 数组(Array)类型; 存取(Access)类型; 文件(File)类型; 记录(Record)类型; 时间(Time)类型(物理类型)。
11.1 VHDL语言基础
VHDL的三种描述方式
END ARCHITECTURE example2;
5.3
结构描述
结构描述方式是用在多层次的设计中,高层次的设计 模块调用低层次的设计模块,或者直接用门电路设计单元 来构成一个复杂的逻辑电路的描述方法。结构描述一般用 元件例化语句和生成语句实现。
例如
LIBRARY IEEE;
USE IEEE.STDபைடு நூலகம்LOGIC 1164.ALL ENTITY nd2 IS PORT( a,b:IN STD LOGIC; c:OUT STD LOGIC);
ARCHITECTURE ord41behv OF ord41 IS
BEGIN CONPONENT nd2
PORT(a,b:IN STD LOGIC;c:OUT STD LOGIC);
END CONPONET; SIGANL x,y:STD LOGIC; BEGIN U1:nd2 PORT MAP(a1,b1,x); U2:nd2 PORT MAP(c1,d1,y); U3:nd2 PORT MAP(x,y,z1); END ARCHITECTURE ord41behv;
ARCHITECTURE mode1 OF \74LS18\ IS O_A<=NOT(I0_A AND I1_A AND I2_A AND I3_A) AFTER 55ns; O_B<=NOT(I0_B AND I1_B AND I2_B AND I3_B)
AFTER 55ns;
END mode1;
END nd2 ;
ARCHITECTURE nd2behv OF nd2 IS
BEGIN c<=a NAND b END ARCHITECTURE nd2behv; LIBRARY IEEE;
vhdl 组合逻辑电路
vhdl 组合逻辑电路VHDL组合逻辑电路VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述数字电路和系统级电路的行为和结构。
VHDL可以用于设计、仿真和验证电子系统。
在数字电路设计中,组合逻辑电路是一种重要的电路类型,本文将重点介绍VHDL中的组合逻辑电路。
一、组合逻辑电路简介组合逻辑电路是由输入端、输出端和逻辑门构成的电路。
它的输出仅取决于当前的输入,而与过去的输入无关。
组合逻辑电路的主要特点是没有存储元件,也就是说输出只与输入有关,不受时间的影响。
二、VHDL语言描述组合逻辑电路1. 实体声明在VHDL中,组合逻辑电路可以通过实体声明来描述。
实体声明包括实体头和实体体两部分。
实体头部分定义了实体名称、输入端口和输出端口,并且可以定义参数和模式等信息。
例如:实体名称:AND2输入端口:A, B输出端口:Y实体体部分定义了实体的行为,使用逻辑表达式来描述输出与输入之间的关系。
例如:实体体部分:Y <= A AND B;2. 架构声明架构声明用于描述实体的具体实现。
在架构声明中,可以使用信号、变量、常数、函数等来描述电路的行为。
例如:架构声明:架构 Behavioral of AND2 is开始信号 temp: bit;开始temp <= A AND B;Y <= temp;结束 Behavioral;三、VHDL组合逻辑电路的应用举例1. 与门(AND)与门是最基本的逻辑门之一,它的输出为输入信号的逻辑与运算结果。
在VHDL中,可以通过以下代码来实现一个2输入与门:实体声明:实体名称:AND2输入端口:A, B输出端口:Y实体体部分:Y <= A AND B;2. 或门(OR)或门是另一种基本的逻辑门,它的输出为输入信号的逻辑或运算结果。
在VHDL中,可以通过以下代码来实现一个2输入或门:实体声明:实体名称:OR2输入端口:A, B输出端口:Y实体体部分:Y <= A OR B;3. 非门(NOT)非门是最简单的逻辑门,它的输出为输入信号的逻辑非运算结果。
vhdl语言
VHDL语言简介VHDL(VHSIC Hardware Description Language)即可高速集成电路硬件描述语言,是一种用于描述数字系统和电路的硬件描述语言。
它在1981年由美国国防部的高速集成电路联合委员会(VHSIC)开发,用于设计大规模集成电路。
VHDL是一种面向对象的语言,可以用于描述各种数字系统,从简单的逻辑门到复杂的处理器。
它提供了丰富的语法和语义,使得设计人员可以准确地描述他们的电路和系统。
VHDL的优势VHDL作为一种硬件描述语言,在数字系统设计中具有许多优势。
1.可重用性:VHDL允许设计人员创建可重用的模块和子系统,这些模块和子系统可以在不同的项目中重复使用,提高了设计效率和可维护性。
2.仿真和验证:VHDL具有强大的仿真和验证能力,可以在设计之前对系统进行全面的仿真和验证。
这有助于检测和纠正潜在的问题,并确保系统在硬件实现之前达到预期的功能。
3.抽象级别:VHDL允许设计人员在不同的抽象级别上描述系统,从高级的行为级别到底层的结构级别。
这使得设计人员可以根据需要在不同的级别上工作,并且可以更容易地进行系统级别的优化。
4.灵活性和可扩展性:VHDL支持灵活的设计方法和工作流程,并允许设计人员在设计过程中进行迭代和修改。
它还可以与其他常用的设计工具和方法集成,以满足特定的需求。
VHDL语言的基本结构VHDL语言由模块、实体、架构以及信号和过程等基本元素组成。
模块(Module)模块是VHDL中描述数字系统的最基本单位。
一个模块可以包含多个实体和架构,并通过连接信号进行通信。
每个模块都有一个顶层实体和一个或多个架构。
实体(Entity)实体是描述模块的接口和行为的抽象。
它定义了输入输出端口,以及模块对外部环境的接口。
一个实体可以有一个或多个架构。
架构(Architecture)架构描述模块的具体行为和内部结构。
它定义了模块的内部信号和过程,以及对外部信号和过程的接口。
VHDL的主要描述语句
CASE语句。
使用CASE语句需注意以下几点:
· CASE语句中每一条语句的选择值只能出现一次,即不能有相同选择值 的条件语句出现。
· CASE 语句执行中必须选中,且只能选中所列条件语句中的一条,即 CASE语句至少包含一个条件语句。 · 除非所有条件语句中的选择值能完全覆盖CASE语句中表达式的取值, 否则最末一个条件语句中的选择必须用“OTHERS”表示,它代表已给 出的所有条件语句中未能列出的其他可能的取值。关键词OTHERS只能 出现一次,且只能作为最后一种条件取值。使用OTHERS是为了使条件 语句中的所有选择值能覆盖表达式的所有取值,以免综合过程中插入 不必要的锁存器。这一点对于定义为STD_LOGIC和STD_LOGIC_VECTOR 数据类型的值尤为重要,因为这些数据对象的取值除了1、0之外,还 可能出现输入高阻态Z,不定态X等取值。
&
减
并置
VHDL语言运算符号(二)
优先级顺序 操作符类型 操作符
+ 正负运算符 * 乘法运算符 负 乘法
功能
正
/
MOD REM ** ABS
除法
求模 取余 指数 取绝对值
NOT
取反
INDEX
数据类型及运算符
顺序语句
并行语句 其它语句
VHDL顺序语句
顺序语句是指完全按照程序中书写的顺序执行各语 句,并且在结构层次中前面的语句执行结果会直接影 响后面各语句的执行结果。顺序描述语句只能出现在 进程或子程序中,用来定义进程或子程序的算法。顺 序语句可以用来进行算术运算、逻辑运算、信号和变 量的赋值、子程序调用等,还可以进行条件控制和迭 代。 注意,这里的顺序是从仿真软件的运行和顺应VHDL语 法的编程逻辑思路而言的,其相应的硬件逻辑工作方 式未必如此。应该注意区分VHDL语言的软件行为与描 述综合后的硬件行为的差异。
VHDL与硬件描述语言
VHDL与硬件描述语言VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,被广泛应用于数字电路和系统的设计、仿真和验证中。
本文将介绍VHDL的基本概念、语法和应用,以及其在硬件设计中的重要性和优势。
一、VHDL的基本概念与语法VHDL是由美国国防部下属的VHSIC(Very High Speed Integrated Circuits)计划发起的硬件描述语言标准化工作中发展起来的,它源于Ada语言,并在此基础上进行了修改和扩展。
VHDL采用了面向对象的设计思想,通过描述硬件的结构和行为,实现了对数字系统的高层次抽象。
VHDL的基本元素包括实体(entity)、结构(architecture)和配置(configuration)。
实体定义了模块的接口和信号,结构描述了模块内部的组织和连接关系,配置用于将不同实体和结构进行绑定。
此外,VHDL还提供了丰富的数据类型、控制结构和函数库,以支持复杂的逻辑运算和算术操作。
VHDL代码的编写需要遵循一定的语法规则,如正确使用关键字、语句结束符号等。
此外,注释和缩进等规范的使用可以提高代码的可读性和可维护性。
二、VHDL的应用1. 数字电路设计VHDL在数字电路设计中被广泛应用,通过使用VHDL语言,设计人员可以描述和验证各种数字逻辑电路,包括组合逻辑电路和时序逻辑电路。
借助VHDL仿真工具,可以进行功能仿真、时序仿真和行为仿真,验证设计的正确性和性能。
2. 系统级设计除了用于电路级设计,VHDL还可以用于系统级设计。
通过对模块的整合和功能描述,可以搭建更为复杂的系统,并在此基础上进行仿真和验证。
VHDL支持高级抽象和层次化设计,使得系统级设计更加灵活和可重用。
3. ASIC和FPGA设计VHDL在应用特定的集成电路(ASIC)和现场可编程门阵列(FPGA)的设计中,具有非常重要的地位。
ASIC是在集成电路制造厂中进行定制化设计和生产的芯片,而FPGA则是可以在现场进行编程和配置的可重构芯片。
vhdl语法
在VHDL语言里,不同类型的数据信号之间不能互 相赋值。当需要不同类型数据之间传递信息时,就需 要类型转换函数将其中的一种类型数据转换为另一中 数据类型后,再进行信号的传递。
• 1999年,IEEE又将数字模拟混合VHDL的版本作为工业标准, 即IEEE1076.3;
一、VHDL概述
VHDL与电路图设计电路的方式不同:
和电路图设计方式相比: (1)易于修改;
(2)设计能力更强;
(3)VHDL语言很方便:独立于器件设计;相同的程
序代码可以用于不同厂家生产的器件。
一、VHDL概述
设计范例:2输入与门
a b
c
电路真值表
a 0 1 0 1
b 0 0 1 1
c 0 0 0 1
一、VHDL 概述 IEEE; LIBRARY
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; Entity and2 is Port( a : in bit; 双减号--为VHDL程序的 b : in bit; 注释符,类似C语言中的 //注释符。 c : out bit); End and2; --实体定义结束。
端口名
端口模式
数据类型
一、VHDL概述
端口模式(MODE)有以下几种类型: IN ;OUT;INOUT ;BUFFER
端口模式可用下图说明:(黑框代表一个设计或模块)
IN
OUT
BUFFER
INOUT
(3)ARCHITECTURE定义区
实体的实现。即说明电路执行什么动作或实现功能。 定义格式: Architecture 结构体名 of 实体名 is
(完整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描述组合逻辑电路
VHDL描述组合逻辑电路
规律电路由于只分高、低电平,抗干扰力强,精度和保密性佳。
广泛应用于计算机、数字掌握、通信、自动化和仪表等方面。
最基本的有与电路或电路和非电路。
还有异或门,与非门。
“规律电路”在汉英词典中的解释(a logical circuit 简洁的规律电路通常是由门电路构成,也可以用三极管来制作,例如,一个NPN三极管的集电极和另一个NPN三极管的放射极连接,这就可以看作是一个简洁的与门电路,即:当两个三极管的基极都接高电平的时候,电路导通,而只要有一个不接高电平,电路就不导通…… 规律电路分为3类:非门,与门,或门。
非门:利用内部结构,使输入的电势变成相反的电势,高电势变低电势,低电势变高电势。
与门:又称“与电路”。
执行“与”运算的基本门电路。
有几个输入端,只有一个输出端。
当全部的输入同时为“1”电平常,输出才为“1”电高,否则输出为“0”电平。
与的含义是∶只有当打算一件事的全部条件都具备时,这个大事才会发生。
规律与也称规律乘。
又称“或电路”。
执行“或”运算的基本门电路。
有几个输入端,只有一个输出端。
只要输入中有一个为“1”电平常,输出就为“1”电平,只有当全部的输入全为“0”电平常,输出才为“0”电平。
非门的电路状态表:
AF1001
与门的电路状态表:
ABZ000010100111 或门的电路状态表:ABF000011101111。
简单数字逻辑电路的设计
其VHDL语言描述可以如下:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL ENTITY logic_gate IS PORT(a,b : IN STD_LOGIC; y1,y2,y3 : OUT STD_LOGIC);
E1 1 0 0 0 0 0 0 0 0 0
D0 x 1 x x x x x x x 0
D1 x 1 x 0 1 1
D3 x 1 x x x x 0 1 1 1
D0 D1 D2 D3 D4 D5 D6 D7 E1
D4 x 1 x x x 0 1 1 1 1
Q0 Q1 Q2
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY encoder8_3 IS PORT(d : IN STD_LOGIC_VECTOR(7 DOWNTO 0); q : OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END encoder8_3; ARCHITECTURE rtl OF encoder8_3 IS BEGIN encoder_process:PROCESS(d) BEGIN CASE d IS WHEN "01111111"=>q<="111"; WHEN "10111111"=>q<="110"; WHEN "11011111"=>q<="101"; WHEN "11101111"=>q<="100"; WHEN "11110111"=>q<="011"; WHEN "11111011"=>q<="010"; WHEN "11111101"=>q<="001"; WHEN "11111110"=>q<="000"; when others=>q<="XXX"; END CASE; END PROCESS encoder_process; END rtl;
vhdl硬件描述语言与数字逻辑电路设计
VHDL (VHSIC Hardware Description Language) is like the architect's blueprint for digital systems. It's a language that hardware engineers use to paint a vivid picture of how these systems are structured and how they behave. Think of it as a virtual playground where designers can play around with digital logic circuits before they bring them to life. With VHDL, they can test and verify their creations, ensuring that everything runs smoothly before it's time to hit the hardware. In other words, VHDL is the ultimate tool for digital wizards to work their magic and bring their ideas to life!VHDL(VHSIC硬件描述语言)就像建筑师的数字系统蓝图。
这种语言是硬件工程师用来描绘这些系统的结构及其表现的生动画面。
把它当作一个虚拟游乐场,设计者可以在带他们复活前用数字逻辑电路来游玩。
通过VHDL,他们可以测试和验证他们的创造,确保一切在击中硬件之前顺利运行。
VHDL是数位魔法师运用魔法,将想法带入生命的终极工具!One of the coolest things about VHDL is that it lets you test out your digital creations virtually before you actually build them. It's like a digital playground where you can play around with your ideas and see how they behave without spending a ton of money on physical prototypes. And the best part? You cancatch any design boo-boos early on and make sure everything is working smoothly. Not only that, VHDL also lets you create these little building blocks, kind of like digital Legos, that you can easily snap together to make bigger and better designs. It's like having a superpower for makingplex digital systems with lots of parts moving at the same time. So basically, VHDL is like the superhero of digital design – making things faster, cheaper, and a whole lot more fun!VHDL最酷的一件事就是它让你在实际建造之前测试你的数字创造。
VHDL语言描述语句
PROCESS(a,b,en) BEGIN IF (en='1') THEN c<=a; ELSE c<=b; END IF; END PROCESS;
(3)用作多选择控制时的IF语句书写格式为 IF 条件1 THEN 顺序处理语句1; ELSIF 条件2 THEN 顺序处理语句2; ┆ ELSIF 条件N-1 THEN 顺序处理语句N-1; ELSE 顺序处理语句N; END IF;
• 语法说明:
进程当中的赋值: 变量:立即更新。 信号:process执行完毕赋值才生效。同时,进程中的信号赋值语句允许 有多个不同的赋值驱动源,但仅最后 一个驱动源有效
3、IF语句
IF语句 IF语句是根据所指定的条件来确定执行哪些语句,适用于比较器、 译码器等需要条件控制的逻辑电路设计,通常有以下三种类型。 (1)用作门阀控制时的IF语句书写格式为 IF (条件) THEN 顺序处理语句; END IF;
LIBRARY IEEE; USE IEEE.Sቤተ መጻሕፍቲ ባይዱD_LOGIC_1164.ALL; ENTITY mux4 IS PORT( input:IN STD_LOGIC_VECTOR(3 DOWNTO 0); en:IN STD_LOGIC_VECTOR(1 DOWNTO 0); y:OUT STD_LOGIC); END mux4; ARCHITECTURE aa OF mux4 IS BEGIN PROCESS(input,en) BEGIN IF (en="00") THEN y<=input(0); ELSIF (en="01") THEN y<=input(1); 例2(例5-9)四选一数据选择器 ELSIF (en="10") THEN y<=input(2); ELSE y<=input(3); END IF; END PROCESS; END aa;
VHDL描述逻辑门电路
end behave;
注意
•端口名称: 对端口的命名,是端口的标识符。 •端口模式: 说明端口信号的流动方向。
其中端口名是设计者为实体的每一个对外 通道所取的名字,通常为英文字母加数字 ,名字的定义有一定的惯例,如Clk 表示 时钟,D开头的端口名表示数据,A开头的 端口名表示地址。 Clk Data Address 端口类别是指这些通道上的数据流动的方 式,如输入或输出等。端口模式有以下几 种类型:
实体名: 对实体的命名,要求实体名必须 与存盘文件名相同。
•ENTITY adder IS
•PORT( • • a, b, cin : IN BIT; s ,co : OUT BIT);
在电脑中必须存储为 addervhd,并且所存 . 储的目录不允许有中 文。例如: d : / 程序/addervhd, . 错误。
结构体是对实体功能的具体描述,因此它一 定要跟在实体的后面 。
(三)结构体
ENTITY nand2 IS
PORT( a, b : IN p END nand2; ARCHITECTURE behave OF nand2 IS BEGIN p<=a nand b; BIT;
: OUT BIT);
END behave;
端口的五种模式
① 输入模式(IN) ② 输出模式(OUT) ③ 双向模式(INOUT) ④ 缓冲模式(BUFFER)
端口的五种模式
1.输入(IN) 允许信号进入实体,主要用于时钟输 入、控制输入(如load、reset、enable 、clk)和单向的数据输入(如地址数据 信号address)等。
IN
OUT
INOUT
BUFFER
Out与Buffer的区别
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
时序逻辑电路的VHDL语言描述
时钟边沿的描述: 时钟信号的边沿分为上升言和下降沿;上升沿指时钟信号的值从“0”电平 变化到”1”电平的过程;对应的VHDL语言描述上升沿的程序语句: clk-=„1‟ and clk‟last_value=„0‟ and clk‟event 实际应用中用clk-=„1‟ and clk‟event来描述上升沿。 时钟下降沿指的是时钟信号的值从‘1‟电平变化到‘0‟电平的过程;用 VHDl语言描述clk-=„0‟ and clk‟event来描述下降沿 1、锁存器 它是时序逻辑电路中用来锁存数据的逻辑单元,它类似与触发器。分为: 电平锁存器、同步锁存器、异步锁存器 (1)电平锁存器: 单输入电平锁存器的VHDL描述
加法器
半加器电路的VHDL示例程序: LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY half_adder IS PORT( dataA, dataB : IN STD_LOGIC ; sum : OUT STD_LOGIC ; carry : OUT STD_LOGIC ) ; END ENTITY half_adder ; ARCHITECTURE dataflow OF half_adder IS BEGIN sum <= dataA XOR dataB ; -- 和数满足逻辑异或关系 carry <= dataA AND dataB ; -- 进位位满足逻辑与关系 END ARCHITECTURE dataflow ;
ELSIF ( datain (7) = '0' ) THEN dataout <= "1000" ; ELSIF ( datain (6) = '0' ) THEN dataout <= "1001" ; ELSIF ( datain (5) = '0' ) THEN dataout <= "1010" ; ELSIF ( datain (4) = '0' ) THEN dataout <= "1011" ; ELSIF ( datain (3) = '0' ) THEN dataout <= "1100" ; ELSIF ( datain (2) = '0' ) THEN dataout <= "1101" ; ELSIF ( datain (1) = '0' ) THEN dataout <= "1110" ; ELSE dataout <= “1111” ; --取反就是I0 END IF ; END IF ; END PROCESS ; END ARCHITECTURE rtl ;
LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY single_latch IS PORT ( reset : IN STD_LOGIC ; datain : IN STD_LOGIC ; lock : IN STD_LOGIC ; dataout : OUT STD_LOGIC ) ; END ENTITY single_latch ; ARCHITECTURE rtl OF single_latch IS BEGIN single_latch_inst : PROCESS ( reset, datain, lock ) BEGIN IF ( reset = '1' ) THEN -- 复位信号 dataout <= '0' ; ELSIF ( lock = '1' ) THEN -- 锁存信号 dataout <= datain ; END IF ; END PROCESS single_latch_inst ; END ARCHITECTURE rtl ; 单输入电平锁存器不存在时钟信号CLK,其复位信号RESET是最高优先级的信号。当 复位信号为高电平时,锁存器被立即复位,输出为‘0‟;当复位信号为低时,若锁存 器的锁存控制信号LOCK是高电平,则输出DATAIN,实现锁存功能,LOCK锁存信号 为低时,输出不变。 多输入电平锁存器VHDL的描述:
2、编码器和译码器 编码器可以对一组输入信号进行编码,不同的输入信号对应不同的码值,这样在电 路系统中就可以分辨出哪个是输入信号 采用IF-ELSE语句实现BCD输出的10线-4线优先级编码器电路的示例程序。 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY cypriority_encoder IS PORT ( datain : IN STD_LOGIC_VECTOR ( 1 TO 9 ) ; dataout : OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 ) ); END ENTITY cypriority_encoder ; ARCHITECTURE rtl OF cypriority_encoder IS BEGIN PROCESS ( datain ) BEGIN IF ( datain = “111111111” ) THEN --if 嵌套语句 dataout <= "1111" ; ELSE IF ( datain (9) = '0' ) THEN dataout <= “0110” ; --反码输出 ELSIF ( datain (8) = „0‟ ) THEN --多选择的IF语句 dataout <= "0111" ;
直接根据真值表设计的全加器电路的VHDL示例程序。 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY full_adder IS PORT ( dataA, dataB, carryin : IN STD_LOGIC ; sum : OUT STD_LOGIC ; carryout : OUT STD_LOGIC ) ; END ENTITY full_adder ; ARCHITECTURE rtl OF full_adder IS BEGIN sum <= dataA XOR dataB XOR carryin ; -- 和数满足逻辑异或关系 carryout <= ( dataA AND dataB ) OR ( dataA AND carryin ) OR ( dataB AND carryin ) ; END ARCHITECTURE rtl ;
常用逻辑电路的VHDL描述
组合逻辑电路的VHDL描述
时序逻辑电路的VHDL描述
有限状态机的VHDL描述
组合逻辑电路的VHDL语言描述
1、数据选择器 多路输入信号中,选择一路输出;有2选1,4选1,8选1,16选1等
采用IF-ELSE语句实现2选1选择器的示例程序。 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY cy2_1mux IS PORT ( datain1, datain2 : IN STD_LOGIC ; sel : IN STD_LOGIC ; dataout : OUT STD_LOGIC ) ; END ENTITY cy2_1mux ; ARCHITECTURE rtl OF cy2_1mux IS BEGIN cy21mux_inst : PROCESS ( datain1, datain2, sel ) BEGIN -- 采用IF-ELSE语句描述2选1电路的选通控制信号 IF ( sel = '1' ) THEN -- 2选择的IF-ELSE语句 dataout <= datain1 ; ELSE dataout <= datain2 ; END IF ; END PROCESS cy21mux_inst ; END ARCHITECTURE rtl ;
采用CASE语句实现2选1选择器的示例程序。 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY cy2_1mux IS PORT ( datain1, datain2 : IN STD_LOGIC ; sel : IN STD_LOGIC ; dataout : OUT STD_LOGIC ) ; END ENTITY cy2_1mux ;
译码器是对一个有效的编码方式进行解码,不同的编码值对应不同的输出信号,这样在 电路系统中就可以根据不同的输出信号确定当前是哪个编码值。
4线-16线译码器电路的示例程序。 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY cydecoder_4_16 IS PORT ( D, C, B, A : IN STD_LOGIC ; G1N, G2N : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR ( 15 DOWNTO 0 ) ) ; END ENTITY cydecoder_4_16 ; ARCHITECTURE rtl OF cydecoder_4_16 IS SIGNAL temp_datain : STD_LOGIC_VECTOR ( 3 DOWNTO 0 ) ; BEGIN temp_datain <= D & C & B & A ; PROCESS ( D, C, B, A, G1N, G2N ) BEGIN IF ( G1N = '0' AND G2N ='0') THEN -- 译码器的选通信号低电平有效 -- 采用CASE语句描述4-16译码电路 CASE temp_datain IS -- CASE语句的条件表达式是位矢量 temp_datain