EDA技术与应用教程全套ppt完整版课件整本书电子教案最全教学教程(最新).ppt
EDA技术与应用教程技术与应用教程1EDA技术与应用教程第1章 EDA技术概述 第2章 可编程逻辑器件 第3章 QUARTUS II应用基础 第4章 硬件描述语言VHDL 第5章 基本数字单元设计 第6章 EDA技术综合应用 EDA技术与应用教程技术与应用教程2第1章 EDA技术概述1.1 EDA技术及其发展1.2 EDA技术的主要内容1.3 EDA的设计流程1.4 常用EDA工具EDA技术与应用教程技术与应用教程31.1 EDA技术及其发展技术及其发展 EDA技术的涵义技术的涵义 EDA技术的发展技术的发展 EDA技术的特点与发展趋势技术的特点与发展趋势 EDA技术应用前景展望技术应用前景展望 EDA技术将广泛应用于高校电类专业的实践教学和科研工作技术将广泛应用于高校电类专业的实践教学和科研工作 EDA技术将广泛应用于专用集成电路的设计和新产品的开发技术将广泛应用于专用集成电路的设计和新产品的开发 EDA技术将广泛应用于传统机电设备的升级换代和技术改进技术将广泛应用于传统机电设备的升级换代和技术改进EDA技术与应用教程技术与应用教程41.2 EDA技术的主要内容 可编程逻辑器件可编程逻辑器件 硬件描述语言硬件描述语言 EDA工具软件工具软件EDA技术与应用教程技术与应用教程51.2 EDA技术的主要内容EDA技术与应用教程技术与应用教程61.3 EDA的设计流程 设计准备设计准备 设计输入设计输入 设计处理设计处理 设计校验设计校验 器件编程器件编程 测试验证测试验证图 1-1 EDA的设计流程 图形输入方式图形输入方式 文本输入方式文本输入方式 编译和检查编译和检查 优化和综合优化和综合 适配和分割适配和分割 布局和布线布局和布线 生成编程数据文件生成编程数据文件EDA技术与应用教程技术与应用教程71.4 常用EDA工具 编辑器编辑器 仿真器仿真器 综合器综合器 适配器适配器 下载器下载器EDA技术与应用教程技术与应用教程8思考练习 何谓EDA技术?EDA技术的核心内容是什么?简述EDA技术的发展历程。简述用EDA技术设计电路的基本流程。什么是硬件描述语言?常见的硬件描述语言有哪些?与软件描述语言相比,HDL有什么特点?EDA技术与ASIC设计和FPGA开发有何关系?EDA技术与应用教程技术与应用教程9第2章 可编程逻辑器件2.1 可编程逻辑器件概述2.2 CPLD的实现原理与典型结构2.3 FPGA的实现原理与典型结构2.4 FPGA/CPLD产品概述2.5 FPGA/CPLD器件的配置与编程EDA技术与应用教程技术与应用教程102.1 可编程逻辑器件概述2.1.1 可编程逻辑器件的基本结构2.1.2 可编程逻辑器件的发展历程 PLD诞生及简单诞生及简单PLD发展阶段发展阶段 乘积项可编程结构乘积项可编程结构PLD发展与成熟阶段发展与成熟阶段 复杂可编程器件发展与成熟阶段复杂可编程器件发展与成熟阶段图 2-1 基本PLD的原理结构框图EDA技术与应用教程技术与应用教程112.1 可编程逻辑器件概述2.1.3 可编程逻辑器件的分类 按规模大小分类按规模大小分类 按结构特点分类按结构特点分类 按编程方式分类按编程方式分类 按编程工艺分类按编程工艺分类图 2-2 可编程逻辑器件按规模分类EDA技术与应用教程技术与应用教程122.1 可编程逻辑器件概述表 2-2 CPLD与FPGA的区别 2.1.4 CPLD与FPGA比较EDA技术与应用教程技术与应用教程132.2 CPLD的实现原理与典型结构2.2.1 CPLD的逻辑实现原理图 2-3 乘积项结构示例电路图 2-4 CPLD的实现方式EDA技术与应用教程技术与应用教程142.2 CPLD的实现原理与典型结构2.2.2 典型CPLD器件简介MAX 3000A MAX 3000A系列器件概览系列器件概览 MAX 3000A器件结构组成器件结构组成图 2-5 MAX 3000A的整体结构EDA技术与应用教程技术与应用教程152.2 CPLD的实现原理与典型结构图 2-6 MAX 3000A的宏单元结构 MAX3000A系列系列CPLD的特性的特性 MAX 3000A系列器件的性能参数系列器件的性能参数EDA技术与应用教程技术与应用教程162.3 FPGA的实现原理与典型结构2.3.1 FPGA的逻辑实现原理(a)实际逻辑电路 (b)LUT的实现方式图 2-7 FPGA的逻辑实现原理图 2-8 FPGA查找表内部结构EDA技术与应用教程技术与应用教程172.3 FPGA的实现原理与典型结构 Cyclone系列器件概览系列器件概览 Cyclone系列系列FPGA结构组成结构组成图 2-9 Altera Cyclone系列FPGA整体结构图 2-10 Cyclone器件的LE结构2.3.2 典型FPGA器件简介CycloneEDA技术与应用教程技术与应用教程182.3 FPGA的实现原理与典型结构 Cyclone系列系列FPGA的特性的特性 Cyclone系列系列FPGA的性能参数的性能参数EDA技术与应用教程技术与应用教程192.4 FPGA/CPLD产品概述2.4.1 FPGA/CPLD产品主要厂商 Altera公司公司图 2-11 Altera公司的主要产品 Xilinx公司公司 Lattice公司公司 Actel公司公司 Atmel公司公司EDA技术与应用教程技术与应用教程202.4 FPGA/CPLD产品概述 Altera公司成熟器件公司成熟器件表 2-8 Altera的成熟器件2.4.2 Altera公司的可编程逻辑器件EDA技术与应用教程技术与应用教程212.4 FPGA/CPLD产品概述 Altera新型系列器件简介新型系列器件简介 Stratix系列高端系列高端FPGA Arria系列中端系列中端FPGA Cyclone系列低成本系列低成本FPGA MAX系列低成本系列低成本CPLD HardCopy系列系列ASIC Altera配置器件简介配置器件简介 标准型配置器件标准型配置器件 增强型配置器件增强型配置器件(3)串行配置器件)串行配置器件 Altera可编程逻辑器件命名规则可编程逻辑器件命名规则EDA技术与应用教程技术与应用教程222.4 FPGA/CPLD产品概述 Xilinx的主流的主流FPGA器件器件 Xilinx的主流的主流CPLD器件器件 Xilinx公司公司FPGA配置器件配置器件 Lattice的的FPGA器件器件 Lattice的的CPLD和和SPLD器件器件Lattice的最新FPGA产品包括低成本、非易失和系统级三大类。Lattice的ispLSI、ispMACH和GAL产品系列是其CPLD和SPLD器件的代表。2.4.4 Lattice公司的可编程逻辑器件2.4.3 Xilinx公司的可编程逻辑器件EDA技术与应用教程技术与应用教程232.4 FPGA/CPLD产品概述 器件类型的选择器件类型的选择 器件系列的选择器件系列的选择 器件型号的选择器件型号的选择 外围器件的选择外围器件的选择2.4.5 FPGA/CPLD的开发应用选择EDA技术与应用教程技术与应用教程242.5 FPGA/CPLD器件的配置与编程 将PLD焊在PCB板上 接好编程电缆 现场烧写PLD芯片图 2-13 PLD编程操作过程示意图2.5.1 配置与编程工艺配置与编程工艺目前常见的大规模可编程逻辑器件的编程和配置工艺有三种:基于电可擦除存储单元的EEPROM或Flash技术。基于SRAM查找表的编程单元。基于反熔丝编程单元。EDA技术与应用教程技术与应用教程252.5 FPGA/CPLD器件的配置与编程(a)并口下载方式(b)USB口下载方式 图 2-14 并口/USB口下载电缆连接示意图 图 2-15 目标板上的10针下载接口表 2-24 10针插座的在不同模式下对应的信号2.5.2 下载电缆与接口EDA技术与应用教程技术与应用教程262.5 FPGA/CPLD器件的配置与编程 FPGA的的PS模式配置模式配置图 2-16 PS模式下对FPGA器件的配置 FPGA的的JTAG模式配置模式配置图 2-17 JTAG模式下对FPGA器件的配置2.5.3 编程与配置模式EDA技术与应用教程技术与应用教程272.5 FPGA/CPLD器件的配置与编程 CPLD的的ISP模式编程模式编程图 2-18 JTAG模式下对CPLD器件的编程EDA技术与应用教程技术与应用教程282.5 FPGA/CPLD器件的配置与编程 使用专用配置器件配置使用专用配置器件配置FPGA图 2-19 EPCS器件对FPGA器件的配置电路 利用微处理器配置利用微处理器配置FPGA图 2-20 PS模式下微处理器对FPGA器件的配置电路2.5.4 FPGA的配置方式EDA技术与应用教程技术与应用教程29思考练习 什么是基于乘积项的可编程逻辑结构?什么是基于查找表的可编程逻辑结构?CPLD和FPGA有什么差异?在实际应用中各有什么特点?解释编程与配置这两个概念。目前比较知名的CPLD/FPGA厂商有Altera、Xilinx和Lattice,请写出你对这几家公司及其PLD产品的了解。根据本章介绍的各厂商FPGA/CPLD产品系列及你对新产品的了解,请思考选用PLD器件时应考虑哪些方面的问题?EDA技术与应用教程技术与应用教程30实训项目1上网查阅资料,了解主流PLD厂商新型CPLD/FPGA器件的性能特点。2试根据图 2-21 所示ByteBlaster MV变换电路原理图制作 如图 2-22 所示的ByteBlaster MV下载电缆。图 2-21 Byte Blaster MV变换电路原理图图 2-22 Byte Blaster MV 下载电缆 EDA技术与应用教程技术与应用教程31第3章 QUARTUS II应用基础o3.1 QUARTUS II软件概述o3.2 QUARTUS II设计流程o3.3 Quartus II设计实例EDA技术与应用教程技术与应用教程323.1 QUARTUS II软件概述3.1.1 QUARTUS II软件简介 Quartus II是Altera公司提供的综合性PLD开发工具,可以完成从设计输入、HDL综合、布线布局(适配)、仿真到硬件下载及测试的完整PLD设计流程,同时也是单芯片可编程系统(SoPC)设计的综合性环境。图 3-1 Quartus II设计软件的主要功能EDA技术与应用教程技术与应用教程333.1 QUARTUS II软件概述 图 3-2 Quartus II编译器的主控界面 Quartus II包括模块化的编译器。图 3-2是Quartus II编译器的主控界面,它显示了Quartus II进行自动化设计的主要处理环节,包括分析与综合(Analysis&Synthesis)、适配(Filter)、装配(Assembler)及、时序分析(Classic Timing Analyzer)。EDA技术与应用教程技术与应用教程343.1 QUARTUS II软件概述3.1.2 QUARTUS II功能特点2009年3月Altera公司发布了Quartus II 9.0,新增特性有以下几方面:SignalTape II嵌入式逻辑分析器。增强的SoPC Builder工具。新的操作系统支持。增强第三方仿真接口。新的引脚顾问。Real Intent验证支持。新的增强IP内核和宏功能。物理综合引擎增强。EDA技术与应用教程技术与应用教程353.1 QUARTUS II软件概述3.1.3 QUARTUS II界面预览工具栏菜单栏标题栏工程导航器状态窗口任务窗口工作区消息窗口3.1.3 QUARTUS II界面预览图 3-3 Quartus II初始用户界面EDA技术与应用教程技术与应用教程363.1 QUARTUS II软件概述3.1.4 QUARTUS II授权许可图 3-4 许可文件设置对话框图 3-5 许可文件设置完成对话框EDA技术与应用教程技术与应用教程373.2 QUARTUS II设计流程图 3-6 Quartus II设计的基本流程 设计输入设计输入 Quartus II支持多种设计输入方式,如原理图输入、文本输入、波形输入等。设计编译设计编译 设计仿真设计仿真 根据设计要求事先设定编译参数,如器件类型、逻辑综合方式的选择等,然后进行编译,包括分析综合、适配、装配及时序分析,并产生相应的报告文件、延时信息文件及编程文件等,供仿真分析和下载编程使用。仿真用来验证设计项目的逻辑功能是否正确,包括功能仿真、时序仿真和定时分析。引脚锁定引脚锁定 为了将设计结果下载到CPLD/FPGA芯片中进行测试验证,必须根据具体EDA开发系统或实验板硬件的要求对设计项目的输入输出信号赋予特定的引脚,以便能够对其进行实测。编程配置与测试验证编程配置与测试验证 在成功编译工程并锁定引脚之后,就可以使用Quartus II的编程器(Programmer)对PLD器件进行编程或配置,然后在实验开发系统上测试验证其实际运行性能。EDA技术与应用教程技术与应用教程383.3 Quartus II设计实例 本节将以3人表决器电路为例,详细介绍基于原理图输入和文本输入的Quartus II工程设计过程,主要包括建立工程文件、编辑设计文件、编译综合、仿真测试、引脚锁定、编程下载和硬件测试等基本过程。s1s2s3L1L20000100101010010111010001101101101011110表 3-1 三人表决电路真值表EDA技术与应用教程技术与应用教程393.3 Quartus II设计实例3.3.1 建立工程文件 指定工程文件名称指定工程文件名称 选择添加的文件和库选择添加的文件和库图 3-8 新建工程对话框图 3-7 新建工程菜单选项图 3-9 添加文件或者库对话框EDA技术与应用教程技术与应用教程403.3 Quartus II设计实例图 3-12 工程创建完成对话框 选择第三方选择第三方EDA工具工具 选择目标器件选择目标器件图 3-10 目标器件选择对话框图 3-11 第三方EDA工具选择对话框EDA技术与应用教程技术与应用教程413.3 Quartus II设计实例 完成创建工程完成创建工程图 3-13 工程建立完成后的界面3.4.2 设计文件输入 原理图输入方法原理图输入方法 建立原理图建立原理图图 3-14 New对话框图 3-15 空白图形编辑窗口EDA技术与应用教程技术与应用教程423.3 Quartus II设计实例 放置元器件符号放置元器件符号图 3-16 选择电路元器件符号对话框图 3-17 正在放置元器件符号图 3-18 元器件符号放置完成EDA技术与应用教程技术与应用教程433.3 Quartus II设计实例 命名和连接各元器件命名和连接各元器件图 3-19 符号属性对话框图 3-20 表决器的电路原理图 保存文件保存文件图 3-21另存为对话框EDA技术与应用教程技术与应用教程443.3 Quartus II设计实例 文本输入方法文本输入方法 建立文件建立文件图 3-22 Quartus II文本编辑窗口 输入输入VHDL语言程序代码语言程序代码 图3-23 Insert Template对话框图 3-24 表决器的VHDL程序代码EDA技术与应用教程技术与应用教程453.3 Quartus II设计实例图 3-25 编译结果 保存程序保存程序3.4.3 编译工程文件无论是采用原理图输入还是文本输入,在完成输入并保存文件后,即可开始编译。执行【Processing】【Start Compilation】菜单命令或单击工具栏中的编译按钮,开始编译并伴随着进度不断变化,完成后弹出编译完成提示对话框,EDA技术与应用教程技术与应用教程463.3 Quartus II设计实例3.4.4 建立仿真测试的矢量波形文件 建立波形文件建立波形文件图 3-26 New对话框 添加引脚和节点添加引脚和节点图3-27波形编辑窗口图3-28Insert Node or Bus对话框EDA技术与应用教程技术与应用教程473.3 Quartus II设计实例图 3-29 Node Finder对话框图 3-30 选择输入、输出引脚图 3-31 查找节点后的添加节点对话框图 3-32 添加节点后的波形编辑窗口EDA技术与应用教程技术与应用教程483.3 Quartus II设计实例 编辑波形编辑波形图 3-33 End Time对话框图 3-34 时钟设置对话框图 3-35 对输入波形进行编辑后的波形编辑窗口 保存波形文件保存波形文件EDA技术与应用教程技术与应用教程493.3 Quartus II设计实例3.4.5 仿真并观察RTL电路图 3-36 Quartus II软件仿真设置界面 功能仿真功能仿真图 3-37 Quartus II中表决器功能仿真结果EDA技术与应用教程技术与应用教程503.3 Quartus II设计实例 时序仿真时序仿真图 3-38 Quartus II中表决器时序仿真结果 观察观察RTL电路电路图 3-39 表决器的RTL电路EDA技术与应用教程技术与应用教程513.3 Quartus II设计实例3.4.6 分配引脚图 3-40 引脚和引脚组分配窗口图 3-41 引脚属性对话框窗口 图 3-42 Tc1 Script对话框EDA技术与应用教程技术与应用教程523.3 Quartus II设计实例 配置下载线缆配置下载线缆3.4.7 编程下载与硬件测试 再编译再编译 连接下载电缆连接下载电缆图 3-43 编程配置下载窗口图 3-44 硬件设置对话框 配置文件下载配置文件下载EDA技术与应用教程技术与应用教程533.3 Quartus II设计实例 硬件测试硬件测试图 3-45 配置完成窗口图 3-46 JTAG模式下载完成窗口EDA技术与应用教程技术与应用教程54思考练习 说明原理图输入法设计电路的详细流程。指出功能仿真和时序仿真的区别。用原理图输入法设计8进制的加法计数器。用文本输入法设计4变量的多数表决器。EDA技术与应用教程技术与应用教程55实训项目2参照3.3节通过Quartus II设计实现三人表决器,并下载到CPLD/FPGA芯片中在实验开发系统上进行测试验证。1下载Quartus II网络版并上机练习安装、加载受权文件,熟悉QUARTUS II的界面。EDA技术与应用教程技术与应用教程56第4章 硬件描述语言VHDLo4.1 VHDL语言概述o4.2 VHDL程序结构o4.3 VHDL语言要素o4.4 VHDL描述语句o4.5 VHDL描述风格o4.6 VHDL设计方法EDA技术与应用教程技术与应用教程574.1 VHDL语言概述4.1.1 VHDL简介 VHDL(VHSIC Hardware Description Language,VHSIC硬件描述语言)是电子工程师用来设计硬件系统与电路的高级语言。目前,流行的EDA工具软件全部支持VHDL,它在EDA领域的学术交流、电子设计的存档以及ASIC设计等方面担当着不可缺少的角色。显然,VHDL是现代电子设计人员必须掌握的硬件设计语言。4.1.2 VHDL优点 VHDL语言具有很强的电路描述和建模能力。VHDL有良好的可读性。VHDL具有良好的可移植性。使用VHDL可以延长设计的生命周期。VHDL支持对大规模设计的分解和已有设计的再利用。VHDL有利于保护知识产权。EDA技术与应用教程技术与应用教程584.1 VHDL语言概述4.1.3 VHDL实例图 4-1 2选1选择器【例4-1】:2选1数据选择器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 IS PORT(a,b:IN STD_LOGIC;s:IN STD_LOGIC;y:OUT STD_LOGIC);END mux21;ARCHITECTURE rtl OF mux21 ISBEGIN y=a WHEN s=0 ELSE b;END ARCHITECTURE rtl;库说明库说明 实体说明实体说明 结构体说明结构体说明EDA技术与应用教程技术与应用教程594.2 VHDL程序结构图 4-2 VHDL程序的基本结构 一个相对完整的VHDL程序称为设计实体,通常都具有比较固定的结构,即由实体(Entity)、结构体(Architecture)、配置(Configuration)、库(Library)和程序包(Package)五大部分构成(见图 4-2)。4.2.1 实体 实体由实体声明部分和结构体组成,实体声明部分指定了设计单元完整的接口信息,基本格式如下:ENTITY 实体名 IS GENERIC(类属参数声明);PORT(端口表);END ENTITY 实体名;实体名实体名一个设计实体无论多大和多复杂,在实体中定义的实体名即为这个设计实体的名称。类属参数声明类属参数声明 类属参数声明必须放在端口声明之前,用于指定如端口中矢量位数、器件延迟时间参数等。EDA技术与应用教程技术与应用教程604.2 VHDL程序结构 端口声明端口声明 端口声明是对基本设计实体与外部接口的描述,也可以说是对外部引脚信号的名称、数据类型和输入/输出方向的描述。PORT(端口名,端口名:端口模式 数据类型;端口名,端口名:端口模式 数据类型);端口名端口名 端口名是赋予每个外部引脚的名称,即该端口的标识符,通常用一个或几个英文字母,或者英文字加数字命名。端口模式端口模式表 4-1 端口模式说明端口模式端口模式含义含义IN输入OUT输出(结构体内部不可再用)INOUT双向BUFFER输出(结构体内部可利用该输出信号)LINKAGE不指定方向,任何方向均可连接 数据类型数据类型 VHDL提供10种标准数据类型,但在实际使用时,端口描述中的数据类型只有两类,即位(BIT)和位矢量(BIT_VECTOR)。EDA技术与应用教程技术与应用教程614.2 VHDL程序结构【例4-2】:端口说明之一PORT(clk,clr:IN BIT;sec0,sec1:OUT BIT_VECTOR(3 DOWNTO 0);【例4-3】:端口说明之二LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY cnt60 IS PORT(clk,clr:IN STD_LOGIC;sec0,sec1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END cnt60;EDA技术与应用教程技术与应用教程624.2 VHDL程序结构4.2.2 结构体 结构体具体描述了该基本设计单元的行为、元件及内部的连接关系,也就是定义了ARCHITECTURE 结构体名 OF 实体名 IS 说明语句 BEGIN 功能描述语句 END ARCHITECTURE 结构体名;设计单元的具体功能。一般格式如下:图 4-3 结构体构造图 结构体说明语句结构体说明语句 结构体中的说明语句是对结构体的功能描述,语句中将要用到SIGNAL、数据类型(Type)、常量(Constant)、元件(Component)、函数(Function)和过程(Procedure)等进行说明。EDA技术与应用教程技术与应用教程634.2 VHDL程序结构 功能描述语句功能描述语句 功能描述语句可以含有5种不同类型的、以并行方式工作的语句结构,这可以看成是结构体的5个子结构 块语句 进程语句 信号赋值语句 子程序调用语句 元件例化语句 VHDL语言子结构描述语言子结构描述 一个结构体可以用几个子结构即几个相对比较独立的子模块来实现。以下重点介绍 块语句(BLOCK)、进程语句(PROCESS)两种形式的子结构描述语句。块语句块语句EDA技术与应用教程技术与应用教程644.2 VHDL程序结构块标号:BLOCK(块保护表达式)接口说明 类属说明 BEGIN 并行语句 END BLOCK 块标号;【例4-4】:用BLOCK语句描述的2选1电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 IS GENERIC(m:TIME:=1ns);PORT(a,b,s:IN STD_LOGIC;q:OUT STD_LOGIC);END mux21;EDA技术与应用教程技术与应用教程654.2 VHDL程序结构ARCHITECTURE rtl OF mux21 IS SIGNAL tmp1,tmp2,tmp3:STD_LOGIC;-定义信号量BEGIN cale:BLOCK BEGIN tmp1=a AND s;tmp2=b AND(NOT S);tmp3=tmp1 OR tmp2;q=TMP3 AFTER m;END BLOCK cale;END rtl;EDA技术与应用教程技术与应用教程664.2 VHDL程序结构 进程语句进程语句 进程语句格式进程语句PROCESS的一般表达格式如下:进程标号:PROCESS(敏感信号参数表)IS 进程说明部分 BEGIN 顺序描述语句 END PROCESS进程标号;进程的组成进程由进程说明部分、顺序描述语句和敏感信号参数表三个部分组成。例4-5是一个用进程语句描述的2选1选择器,其中a、b、s均是敏感信号,当其中有任何一个值发生变化时,进程都会被启动。EDA技术与应用教程技术与应用教程674.2 VHDL程序结构LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 IS PORT(a,b,s:IN STD_LOGIC;y:OUT STD_LOGIC);END mux21;ARCHITECTURE rtl OF mux21 ISBEGIN PROCESS(a,b,s)VARIABLE tmp1,tmp2,tmp3:STD_LOGIC;-定义变量 BEGIN tmp1:=a AND s;tmp2:=b AND(NOT S);tmp3:=tmp1 OR tmp2;y=tmp3;END PROCESS;END rtl;EDA技术与应用教程技术与应用教程684.2 VHDL程序结构【例4-6】:用进程语句描述的24进制计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt24 IS PORT(clk,clr:IN STD_LOGIC;dec0,dec1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END cnt24;ARCHITECTURE rtl OF cnt24 IS SIGNAL bcd1,bcd10:STD_LOGIC_VECTOR(3 DOWNTO 0);-定义信号量BEGIN dec0=bcd1;dec1=bcd10;EDA技术与应用教程技术与应用教程694.2 VHDL程序结构 U1:PROCESS(clk,clr)BEGIN IF clr=1 THEN bcd1=0000;-清零信号有效,启动进程 ELSIF clkEVENT AND clk=1 THEN -时钟上升沿有效 IF bcd1=1001 THEN bcd1=0000;-计数器个位为9时,个位输出为0 ELSIF bcd1=0011AND bcd10=0010 THEN -计数器输出为23时,个位输出为0 bcd1=0000;ELSE bcd1=bcd1+1;END IF;END IF;END PROCESS U1;EDA技术与应用教程技术与应用教程70U2:PROCESS(clk,clr)BEGIN IF clr=1THEN bcd10=0000;-清零信号有效 ELSIF clkEVENT AND clk=1THEN IF bcd1=1001THEN -计数器个位为9,十位数累加1 bcd10=bcd10+1;ELSIF bcd1=0011AND bcd10=0010 THEN -计数器输出为23时,个位输出为0 bcd10=0000;END IF;END IF;END PROCESS U2;END rtl;4.2 VHDL程序结构EDA技术与应用教程技术与应用教程714.2 VHDL程序结构 进程语句应该注意的问题 PROCESS语句为无限循环语句。在同一结构体中的进程是一个独立的无限循环 程序结构,但进程的返回是自动的,不必加返回语句。进程只有执行和等待两种状态。进程必须有敏感信号的变化来启动。进程语句本身是并行语句,同一结构体中的不同进程语句是并行执行的。信号是多个进程间的通信线。EDA技术与应用教程技术与应用教程724.2 VHDL程序结构4.2.3 库 库是经过编译后的数据集合,其目的为了使设计遵循某些统一的语言标准或数据格式,同时便于利用已有的设计成果,以提高设计效率。库的语句格式库的语句格式 库的种类库的种类 IEEE库库 STD库库 面向面向ASIC库库 WORK库库 用户自定义库用户自定义库 库的使用库的使用EDA技术与应用教程技术与应用教程734.2 VHDL程序结构 USE语句的使用有两种常用格式:USE 库名.程序包名.项目名;USE 库名.程序包名.ALL;例如语句:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;【例4-7】:库说明语句的应用LIBRARY IEEE;-库说明语句USE IEEE.STD_LOGIC_1164.ALL;ENTITY inv IS -第1个实体 PORT(a:IN STD_LOGIC;b:OUT STD_LOGIC);END inv;EDA技术与应用教程技术与应用教程74ARCHITECTURE behav OF inv ISBEGIN b=NOT a;END behav;LIBRARY IEEE;-库说明语句(重新使用)USE IEEE.STD_LOGIC_1164.ALL;ENTITY ad3 IS -第2个实体 PORT(a1,a2,a3:IN STD_LOGIC;co:OUT STD_LOGIC);END ad3;ARCHITECTURE behav OF ad3 ISBEGIN co=a1 AND a2 AND a3;END behav;4.2 VHDL程序结构EDA技术与应用教程技术与应用教程754.2 VHDL程序结构4.2.4 程序包程序包的一般语句格式如下:PACKAGE 程序包名 IS 程序包首说明部分 END 程序包名;PACKAGE BODY 程序包名 IS 程序包体说明部分以及包体内容 END 程序包名;程序包首 程序包体 4.2.5 配置配置语句的一般格式如下:CONFIGURATION 配置名 OF 实体名 IS 配置说END 配置名;EDA技术与应用教程技术与应用教程764.3 VHDL语言要素4.3.1 VHDL的文字规则 注释注释:注释以“-”开头直到本行末尾(出现回车或换行符)的一段文字。数字数字:整数整数 实数实数 以数制基数表示的数以数制基数表示的数 物理量文字物理量文字:综合器不支持物理量文字的综合,如:30s(秒)、10m (米)、2.5A(安培)等。字符与字符串字符与字符串 关键字关键字:关键字是VHDL预先定义的保留字,它们在程序中有不同的目的和作用。标识符标识符:标识符是用户编程时为常量、变量、信号、端口、子程序或参数等定义的 名字。下标名下标名:下下标名用于指示数组型变量或信号的某一元素。EDA技术与应用教程技术与应用教程774.3 VHDL语言要素4.3.2 VHDL的数据对象在VHDL语言中,数据对象主要包括3种:常量、变量和信号。表 4-2 VHDL数据对象及说明场合数据对象数据对象含义含义说明场合说明场合信号(Signal)说明全局量ARCHITECTURE,PACKAGE,ENTITY变量(Variable)说明局部量PROCESS,FUNCTION,PROCEDURE常量(Constant)说明全局量以上所述场合都可以存在EDA技术与应用教程技术与应用教程78 常量常量常量是一个固定的值,定义和设置常量主要是为了程序更容易阅读和理解。变量变量变量一个局部量,只能在进程和子程序中使用。信号信号信号在硬件电路设计中相当于是连线。4.3 VHDL语言要素EDA技术与应用教程技术与应用教程794.3 VHDL语言要素 信号和变量的区别信号和变量的区别 信号用于电路中的信号连线,变量用于进程中局部数据存储单元;信号的使用和定义范围在结构体、程序包和实体中,不能在进程、函数和子程序中使用,而变量只能在进程、函数和子程序中使用;变量在赋值时不能产生附加延时,信号代入时可以附加延时。变量用“:=”赋值,信号用“=”代入。变量赋值语句一旦被执行,其值立即被赋予变量。信号实际代入过程和代入语句的处理是分开进行的。VHDL中的标准数据类型都是在VHDL标准程序包中预定义的,总共有104.3.3 VHDL的数据类型 标准数据类型标准数据类型种如表 4-3所示。EDA技术与应用教程技术与应用教程804.3 VHDL语言要素表 4-3 标准的数据类型数据类型数据类型含义含义整数(Integer)整数32位,-2147483647+2147483647实数(Real)浮点数,-1.0E+38+1.0E+38位(Bit)逻辑量“0”或“1”位矢量(Bit_Vector)位矢量布尔量(Boolean)逻辑“真”或逻辑“假”字符(Charactor)ASC字符时间(Time)时间单位fs,ps,ns,us,ms,sec,min,hr错误等级(Severity Level)NOTE,WARNING,ERROR,FAILURE自然数、正整数(Natual&Positive)整数的子集字符串(String)字符矢量EDA技术与应用教程技术与应用教程814.3 VHDL语言要素 用户定义的子类型用户定义的子类型 数据类型的转换数据类型的转换表 4-4 数据类型变换函数函数名函数名功能功能STD_LOGIC_1164程序包:TO_STDLOGICVECTOR(A)TO_BITVECTOR(A)TO_STDLOGIC(A)TO_BIT(A)由BITVECTOR转换为STDLOGICVECTOR由STDLOGICVECTOR转换为BITVECTOR由BIT转换为STDLOGIC由STDLOGIC转换为BITSTD_LOGIC_ARITH程序包:CONV_STD_LOGIC_VECTOR(A,位长)CONV_INTEGER(A)由INTEGER,UNSIGNED,SIGNED转换成STD_LOGIC_VECTOR由UNSIGNED,SIGNED转换成INTEGERSTD_LOGIC_UNSIGNED程序包:CONV_INTEGER(A)由STD_LOGIC_VECTOR转换成INTEGER 用户定义的数据类型用户定义的数据类型 枚举类型枚举类型 整数类型、实数类型整数类型、实数类型 数组数组 记录类型记录类型EDA技术与应用教程技术与应用教程82【例4-10】:数据类型转换示例LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY dec3to8 IS PORT(input:IN STD_LOGIC_VECTOR(2 DOWNTO 0);output:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END dec3to8;ARCHITECTURE behav OF dec3to8 ISBEGIN PROCESS(input)BEGIN output0);EDA技术与应用教程技术与应用教程834.3 VHDL语言要素4.3.4 VHDL的操作符 逻辑操作符逻辑操作符 VHDL共有7种基本逻辑操作符,它们是AND(与),OR(或),NAND(与非),NOR(