电子设计自动化(全套课件393P)

上传人:痛*** 文档编号:241535298 上传时间:2024-07-02 格式:PPT 页数:393 大小:15.49MB
返回 下载 相关 举报
电子设计自动化(全套课件393P)_第1页
第1页 / 共393页
电子设计自动化(全套课件393P)_第2页
第2页 / 共393页
电子设计自动化(全套课件393P)_第3页
第3页 / 共393页
点击查看更多>>
资源描述
电电子子设计设计自自动动化化上节回顾上节回顾集成电路与EDA发展史EDA的目标-集成电路的种类Top-down设计思想VHDL简介电子与通信工程系电子与通信工程系3第1章 PLD的原理与应用1.1、SPLD的原理与组成的原理与组成1.2、CPLD的结构与工作原理的结构与工作原理1.3、FPGA的结构与工作原理的结构与工作原理1.4、CPLD/FPGA生产商生产商1.5、CPLD与与FPGA的编程与配置的编程与配置1.6、CPLD/FPGA的开发工具的开发工具1.7、FPGACPLD设计流程设计流程1.8、ALTERA开发工具开发工具QUARTUS II电子与通信工程系电子与通信工程系41.1、SPLDSPLD的原理与组成的原理与组成 PLDPLD的核心结构的核心结构 1.1.1 PLD的基本结构的基本结构数据输入输入电路与门阵列或门阵列输出电路数据输出互补输入与项与或式缓冲互补缓冲提供不同输出结构(课本P27)电子与通信工程系电子与通信工程系可编程逻辑器件发展历程可编程逻辑器件发展历程电子与通信工程系电子与通信工程系6可编程逻辑器件(可编程逻辑器件(PLDPLD)简单PLD复杂PLDPROMPLAPALGALCPLDFPGAPLDPLD特点特点:高密度高密度、高速度高速度、高开发效率高开发效率可编程逻辑器件分类可编程逻辑器件分类-规模规模电子与通信工程系电子与通信工程系7乘积项结构器件乘积项结构器件-简单简单PLDPLD,CPLDCPLD查找表结构器件查找表结构器件-FPGA-FPGA可编程逻辑器件分类可编程逻辑器件分类-结构结构电子与通信工程系电子与通信工程系编程工艺编程工艺熔丝熔丝(Fuse)型器件。型器件。反熔丝反熔丝(Antifuse)型器件。型器件。EPROM型器件。型器件。EEPROM型器件。型器件。SRAM型器件。型器件。Flash型器件。型器件。可编程逻辑器件分类可编程逻辑器件分类-编程工艺编程工艺电子与通信工程系电子与通信工程系91.1.2 PLD内部电路的表示方法内部电路的表示方法常用逻辑门符号与现有国标符号的对照常用逻辑门符号与现有国标符号的对照电子与通信工程系电子与通信工程系10PLD的互补缓冲器的互补缓冲器 PLD的互补输入的互补输入 PLD中与阵列表示中与阵列表示PLD中或阵列的表示中或阵列的表示 阵列线连接表示阵列线连接表示 PLD中的逻辑符号表示方法中的逻辑符号表示方法电子与通信工程系电子与通信工程系11PROM基本结构基本结构:地址译码器输出地址译码器输出逻辑函数是:逻辑函数是:1.1.3 PROM电子与通信工程系电子与通信工程系12存储单元存储单元逻辑函数表示:逻辑函数表示:电子与通信工程系电子与通信工程系13PROM的逻辑阵列结构的逻辑阵列结构:电子与通信工程系电子与通信工程系14PROM表达的表达的PLD阵列图阵列图用用PROM完成半加器逻辑阵列完成半加器逻辑阵列电子与通信工程系电子与通信工程系15PLA逻辑阵列示意图逻辑阵列示意图1.1.4 PLA电子与通信工程系电子与通信工程系16PLA与与 PROM的比较的比较电子与通信工程系电子与通信工程系17PAL结构:结构:PAL的常用表示形式:的常用表示形式:1.1.5 PAL电子与通信工程系电子与通信工程系18一种一种PAL16V8的部分结构图的部分结构图电子与通信工程系电子与通信工程系191.1.6 GAL19GAL16V8的结构图的结构图输入口可编程与阵列19时钟信号输入输入/输出口输出逻辑宏单元三态控制固定或阵列电子与通信工程系电子与通信工程系20OLMC的内部结构图的内部结构图电子与通信工程系电子与通信工程系21寄存器输出结构寄存器输出结构寄存器模式组合输出双向口寄存器模式组合输出双向口电子与通信工程系电子与通信工程系22组合输出双向口组合输出双向口组合输出结构组合输出结构电子与通信工程系电子与通信工程系23输出反馈结构输出反馈结构简单模式输出结构简单模式输出结构反馈输入结构反馈输入结构电子与通信工程系电子与通信工程系电子与通信工程系电子与通信工程系251.2、CPLDCPLD的结构与工作原理的结构与工作原理SPLDSPLD器件基本上已被淘汰,只有器件基本上已被淘汰,只有GALGAL还在应用。原因:还在应用。原因:1.阵列规模小,资源不够用于设计数字系统。阵列规模小,资源不够用于设计数字系统。2.片内寄存器资源不足,难以构成丰富的时序电路。片内寄存器资源不足,难以构成丰富的时序电路。3.I/O不够灵活,限制了片内资源的利用率。不够灵活,限制了片内资源的利用率。4.编程不便,需用专用的编程工具。编程不便,需用专用的编程工具。所以:所以:GALCPLD典型典型CPLDCPLD:ALTERA MAX7000ALTERA MAX7000系列系列电子与通信工程系电子与通信工程系26 MAX7000 MAX7000包含包含3232到到256256个宏单元,每个宏单元,每1616个宏单元组个宏单元组成一个逻辑阵列块(成一个逻辑阵列块(Logic Array Block,LAB)。)。MAX7000 MAX7000结构中包含结构中包含5 5部分:部分:1.逻辑阵列块逻辑阵列块2.宏单元宏单元3.扩展乘积项(共享和并联)扩展乘积项(共享和并联)4.可编程连线阵列可编程连线阵列(PIA)5.I/O控制块控制块MAX7000基本结构电子与通信工程系电子与通信工程系27(1)(1)逻辑阵列块逻辑阵列块(LAB)(LAB)EPM7256S的的LAB结构结构电子与通信工程系电子与通信工程系28MAX7000MAX7000系列的单个宏单元结构系列的单个宏单元结构PRNCLRNENA1.逻辑阵列全局清零共享逻辑扩展项清零时钟清零选择寄 存 器旁路并行扩展项通往 I/O模块通往 PIA2.乘积项选择矩阵来自 I/O引脚全局时钟QDEN来自来自 PIA的的 36个信号个信号快速输入选择快速输入选择2(2)(2)宏单元宏单元VCC3.可编程寄存器电子与通信工程系电子与通信工程系29(3)(3)扩展乘积项扩展乘积项共享扩展乘积项结构共享扩展乘积项结构每个每个LABLAB有有1616个共享扩展项,个共享扩展项,每一个共享乘积项可以被每一个共享乘积项可以被LABLAB内任何一个或全部宏单内任何一个或全部宏单元使用和共享,以便实现复元使用和共享,以便实现复杂的逻辑函数。杂的逻辑函数。电子与通信工程系电子与通信工程系30电子与通信工程系电子与通信工程系31并联扩展项馈送方式并联扩展项馈送方式最多允许最多允许2020个个乘积项直接传乘积项直接传送到逻辑宏单送到逻辑宏单元的元的“或或”逻逻辑中,其中辑中,其中5 5个乘积项是由个乘积项是由宏单元本身提宏单元本身提供的,供的,1515个并个并联扩展项是从联扩展项是从同一个同一个LABLAB中中相邻宏单元借相邻宏单元借用的。用的。电子与通信工程系电子与通信工程系32电子与通信工程系电子与通信工程系33(4)(4)可编程连线阵列可编程连线阵列 不同的不同的LAB通过在通过在可编程连线阵列可编程连线阵列(PIA)上布线,以相互连上布线,以相互连接构成所需的逻辑。接构成所需的逻辑。专用输入、专用输入、I/O引脚以及宏单元输出都连接到引脚以及宏单元输出都连接到PIAPIA信号布线到信号布线到LAB的方式的方式电子与通信工程系电子与通信工程系34(4)(4)可编程连线阵列可编程连线阵列 不同的不同的LAB通过在通过在可编程连线阵列可编程连线阵列(PIA)上布线,以相互连上布线,以相互连接构成所需的逻辑。接构成所需的逻辑。PIA信号布线到信号布线到LAB的方式的方式电子与通信工程系电子与通信工程系35(5)I/O(5)I/O控制块控制块电子与通信工程系电子与通信工程系361.3.1 查找表查找表1.3、FPGAFPGA的结构与工作原理的结构与工作原理FPGA:现场可编程门阵列:现场可编程门阵列(Field Programmable Gate Array)查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16x1的RAM。电子与通信工程系电子与通信工程系37FPGA查找表单元内部结构查找表单元内部结构MUX电子与通信工程系电子与通信工程系381.3.2 Cyclone/CycloneII系列器件的结构与原理系列器件的结构与原理 Cyclone/Cyclone系列器件是Altera公司的一款低成本的、高性价比的FPGA,它的结构和工作原理在FPGA中具有典型性。Cyclone与Cyclone系列器件的基本结构、原理类似。Cyclone系列器件主要有以下部分组成:逻辑阵列块LAB、嵌入式存储器块、I/O单元、嵌入式硬件乘法器、锁相环PLL等。电子与通信工程系电子与通信工程系39Cyclone LE结构图结构图查找表查找表进位链进位链寄存器寄存器电子与通信工程系电子与通信工程系40电子与通信工程系电子与通信工程系41Cyclone LE普通模式普通模式 适用于普通组合逻辑适用于普通组合逻辑电子与通信工程系电子与通信工程系42电子与通信工程系电子与通信工程系43Cyclone LE动态算术模式动态算术模式 适用于实现加法器、适用于实现加法器、计数器等运算部件计数器等运算部件电子与通信工程系电子与通信工程系44电子与通信工程系电子与通信工程系进位链进位链电子与通信工程系电子与通信工程系46Cyclone LAB结构结构 局部互联:连接同局部互联:连接同一个一个LAB内的内的LE左侧左侧LAB,PLL M4KRAM块,块,IO也可驱动也可驱动电子与通信工程系电子与通信工程系47电子与通信工程系电子与通信工程系48LAB阵列阵列 电子与通信工程系电子与通信工程系49电子与通信工程系电子与通信工程系50LAB控制信号生成控制信号生成 电子与通信工程系电子与通信工程系51电子与通信工程系电子与通信工程系52快速进位选择链快速进位选择链 电子与通信工程系电子与通信工程系53电子与通信工程系电子与通信工程系54LUT链和寄存器链的使用链和寄存器链的使用 电子与通信工程系电子与通信工程系55LVDS连接连接 Low-Voltage Differential Signaling 低压差分信号 电子与通信工程系电子与通信工程系FPGA与与CPLD对比对比电子与通信工程系电子与通信工程系571.4、CPLD/FPGACPLD/FPGA生产商生产商ALTERACPLD:MAX7000/S/A/B系列:EPM7128SMAX9000/A系列MAX3000系列:MAXII系列:EPM240(570,1270,2210)/GMAXIII系列:EPM240(570,1270,2210)/GFPGA:FLEX系列:10K、10A、10KE,EPF10K30EAPEX系列:20K、20KE EP20K200EACEX系列:1K系列 EP1K30、EP1K100STRATIX系列:EP1S10(20,25,30,40,50,60,80,120)CYCLONE系列:EP1C3(4,6,12,20)StratixGX系列CYCLONEII系列:EP2C5(8,20,35,50,70)STRATIXII系列:EP2S15(30,60,90,130,180)CYCLONEIII系列:EP3C5(10,16,25,40,55,80,120)STRATIXIII系列:EP3SL15(50,70,110,150,200,340)电子与通信工程系电子与通信工程系58XILINXCPLD:FPGA:XC9500系列:XC95108、XC95256XC3000系列,XC4000系列,XC5000系列Virtex系列,VirtexII系列SPARTAN系列:XCS10、XCS20、XCS30SPARTANII系列LATTICECPLD:FPGA:ispMACH4000V/B/C/Z系列MachX0系列ispLSI系列LatticeEC/ECP系列LatticeXP系列电子与通信工程系电子与通信工程系59其他其他PLD公司:公司:ACTEL公司:公司:ACT1/2/3、40MXATMEL公司:公司:ATF1500AS系列、系列、40MXCYPRESS公司公司QUIKLOGIC公司公司 SO MUCH IC!FPGA CPLD电子与通信工程系电子与通信工程系601.5、CPLDCPLD与与FPGAFPGA的编程与配置的编程与配置ALTERA ByteBlaster(MV)下载接口此接口既可作编此接口既可作编程下载口,也可作程下载口,也可作JTAG接口接口JTAG:Joint Test Action Group电子与通信工程系电子与通信工程系61此接口既可作编此接口既可作编程下载口,也可作程下载口,也可作JTAG接口接口ALTERA USB Blaster下载接口电子与通信工程系电子与通信工程系621.6、CPLD/FPGACPLD/FPGA的开发工具的开发工具集成的FPGACPLD开发环境:MAXPLUS II II 10.23QUARTUS II II 10.0ALTERA:XILINX:FOUNDATION 3.1ISE 10.1iISE Design Suite 12.1 LATTICE:ispEXPERT 7.01 ispLEVER 7.2 PAC Designer ispLEVER Classic 1.4 由PLD/FPGA芯片厂家提供,基本都可以完成所有的设计输入(原理图或HDL),仿真,综合,布线,下载等工作。电子与通信工程系电子与通信工程系63HDL逻辑综合软件(FPGA):这类软件将把HDL语言翻译成最基本的与或非门的连接关系(网表),输出edif(Electronic Design Interchange Format)文件,导给PLD/FPGA厂家的软件进行适配和布线。为了优化结果,在进行复杂HDL设计时,基本上都会使用这些专业的逻辑综合软件,而不使用PLD/FPGA厂家的集成开发软件中自带的逻辑综合功能。Synplify/Synplify ProLeonardoSpectrumSynplicity:Mentor:FPGA Complier IISynopsys:电子与通信工程系电子与通信工程系64MentorModelsimCadence:NC-Verlog/NC-VHDL/NC-SIMHDL仿真软件 对设计进行校验仿真,包括布线以前的功能仿真(前仿真)和布线以后包含延时的时序仿真(后仿真),对于一些复杂的HDL设计可能需要这些软件专业的仿真功能。SYNOPSYSVCSAldec:ActiveHDL电子与通信工程系电子与通信工程系上节回顾上节回顾FPGA设计流程使用Quartus II进行原理图设计VHDL电子与通信工程系电子与通信工程系66第2章 VHDL程序编程基础2.1、VHDL特点2.2、VHDL语言程序的基本结构 2.3、VHDL语言的数据类型及运算操作符 2.4、VHDL语法基础 2.5、属性的描述与定义 电子与通信工程系电子与通信工程系67VHDL的优点:v用于设计复杂的、多层次的设计。支持设计库和设计的重复使用v与硬件独立,一个设计可用于不同的硬件结构,而且设计时不必了解过多的硬件细节。v有丰富的软件支持VHDL的综合和仿真,从而能在设计阶段就能发现设计中的Bug,缩短设计时间,降低成本。vVHDL有良好的可读性,容易理解。电子与通信工程系电子与通信工程系68硬件描述语言(HDL)与计算机语言的区别运行的基础 计算机语言是在CPURAM构建的平台上运行 HDL设计的结果是由具体的逻辑、触发器组成的数字电路执行方式 计算机语言基本上以串行的方式执行 HDL在总体上是以并行方式工作验证方式 计算机语言主要关注于变量值的变化 HDL要实现严格的时序逻辑关系电子与通信工程系电子与通信工程系69-eqcomp4 is a four bit equality comparatorLibrary IEEE;use IEEE.std_logic_1164.all;entity eqcomp4 isport(a,b:in std_logic_vector(3 downto 0);equal:out std_logic);end eqcomp4;architecture dataflow of eqcomp4 isbegin equal=1 when a=b else 0;End dataflow;VHDL 大小写大小写不敏感不敏感eqcomp4.vhd包实体结构体文件名和实体名一致每行;结尾关键字begin关键字end后跟实体名关键字end后跟结构体名库类型类型设计实体设计实体电子与通信工程系电子与通信工程系702.2、VHDLVHDL语言程序的基本结构语言程序的基本结构 一个完整的VHDL语言程序通常包含五个部分:实体(Entity)结构体(Architecture)配置(Configuration)包集合(Package)库(Library)(课本P225)电子与通信工程系电子与通信工程系库(库(library)use声明声明实体(实体(entity)结构体结构体(architecture)beginendData Flow 描述描述Behavior 描述描述Structure 描述描述配置配置(Configuration)(package)程序包声明程序包声明所用定义、程序所在的库所用定义、程序所在的库程序包所用的自定义还是程序包所用的自定义还是额外定义、程序、元件额外定义、程序、元件电路框图的电路框图的I/O接口接口描述或设计硬件电路的区域描述或设计硬件电路的区域选择采用的结构体和实体选择采用的结构体和实体数据流描述数据流描述行为描述行为描述结构描述结构描述不不可可视视部部分分可视部分可视部分和端口和端口2.2、VHDLVHDL语言程序的基本结构语言程序的基本结构 (课本P225)电子与通信工程系电子与通信工程系72前面的例子 设计实体是VHDL语言设计的基本单元,是最重要的系统抽象。设计实体由实体说明和结构体两部分组成定义了设计单元的具体构造和操作 规定了设计单元的输入输出接口信号或引脚Entity DeclarationArchitecture Body2.2.1 设计实体设计实体(design entity)电子与通信工程系电子与通信工程系73实体说明的一般格式如下:文件名和实体名一致!ENTITY 实体名 IS GENERIC(参数传递说明语句);PORT(端口说明);实体说明部分;END ENTITY 实体名;2.2.2 实体说明实体说明 电子与通信工程系电子与通信工程系74端口说明端口说明 端口为设计实体和其外部环境的动态通信提供通道,是对基本设计实体与外部接口的描述。PORT(端口名:端口模式 数据类型);(1)端口名 端口名是赋予每个外部引脚的名称 常用书写格式为:电子与通信工程系电子与通信工程系75(2)端口模式 端口模式用来说明数据、信号通过该端口的方向。LINKAGE(不指定方向,无论哪个方向都可连接)。日常设计请不要使用BUFFER和LINKAGEVHDL语言提供了下述端口模式:IN (流入实体),OUT (流出实体),INOUT (双向端口:既可流入,又可流出),BUFFER(信号输出到外部,但同时也可在实体内部反馈),(课本P67)电子与通信工程系电子与通信工程系76(3)数据类型 VHDL语言中有10种数据类型,IEEE1076/93标准规定,EDA综合工具提供的数据类型为布尔型(Boolean)、位型(Bit)、位矢量型(Bit_vector)和整数型(Integer)。实际中,常用的数据类型为:STD_LOGIC STD_LOGIC_VECTOR(课本P71)电子与通信工程系电子与通信工程系77LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY deco ISPORT(clock:IN STD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);END deco;clock为输入,STD_LOGIC型q为输出,STD_LOGIC_VECTOR型8位总线,最高位q7,最低位q0也可以q:OUTSTD_LOGIC_VECTOR(0 TO 7)前面的例子无;电子与通信工程系电子与通信工程系78结构体描述一个设计的结构或行为 用VHDL语言描述结构体功能有3种方法:(1)行为描述法(behavioral):(2)数据流描述法(RTL or dataflow):(3)结构描述法(structural):2.2.3 结构体结构体(课本P68、P229)电子与通信工程系电子与通信工程系79例如:ARCHITECTURE mux21_arch OF mux21 ISBEGIN y=a when s=0 else b;END ARCHITECTURE mux21_arch;结构体的常用书写格式为:ARCHITECTURE 结构体名 OF 实体名 IS -说明语句(用于对信号和常量进行声明)BEGIN -功能描述语句END ARCHITECTURE 结构体名;电子与通信工程系电子与通信工程系80ARCHITECTURE deco_arch OF deco ISBEGIN WITH num SELECTq=00111111 WHEN 0000,00000110 WHEN 0001,01011011 WHEN 0010,01001111 WHEN 0011,01100110 WHEN 0100,01101101 WHEN 0101,01111101 WHEN 0110,00100111 WHEN 0111,01111111 WHEN 1000,01101111 WHEN 1001,00000000 WHEN OTHERS;END deco_arch;电子与通信工程系电子与通信工程系811结构体名称的命名结构体名称的命名 结构体的名称可自由命名,但通常命名为behavioral 行为描述(数学模型描述);dataflow(RTL)数据流描述(寄存器传输描述);structural 结构描述(逻辑元件单元连接描述)。ARCHITECTURE behavioral OF mux IS 用结构体行为命名ARCHITECTURE dataflow OF mux IS 用结构体的数据流命名ARCHITECTURE structural OF mux IS 用结构体的组织结构命名 2定义语句定义语句 用于对结构体内部所使用的信号、常数、数据类型和函数进行定义。电子与通信工程系电子与通信工程系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;实体说明结构体设计实体与结构体的关系设计实体与结构体的关系图图4-1 mux21a实体实体图图4-2 mux21a结构体结构体2选选1多路选择器的多路选择器的VHDL描述描述电子与通信工程系电子与通信工程系832.3、VHDLVHDL语言的数据类型及运算操作符语言的数据类型及运算操作符 VHDL语言的标识符是遵守以下规则的字符序列:(1)有效字符:)有效字符:(AZ,az)、()、(09)和()和(_)。)。(2)必须以英文字母打头。)必须以英文字母打头。(3)下划线前后必须都有英文字母或数字。)下划线前后必须都有英文字母或数字。(4)标识符不区分大小写。)标识符不区分大小写。下面是合法的标识符:pulse_100ms Pulse_100ms PULSE_100MS 下面是不合法的标识符:pulse-100ms 2pulse_100ms _pulse_100ms pulse_100ms_ 2.3.1 标识符标识符(课本P247)电子与通信工程系电子与通信工程系84 在VHDL语言中对象包括以下3种:信号(Signal)、变量(Variable)和常数(Constant)。(课本P127)1.常数(常数(Constant)CONSTANT 常数名:数据类型:=表达式;例如:CONSTANT DELAY:time:=100ns;常数说明的一般格式如下:固定值,不能在程序中被改变增强程序的可读性,便于修改程常数是一个全局量。2.3.2 VHDL语言的对象及其分类语言的对象及其分类 SYNconstant writeDDRAM:std_logic_vector(4 downto 0):=10001;电子与通信工程系电子与通信工程系2.信号(Signals)代表连线,Port也是一种信号也是一种信号 没有方向性,可给它赋值,也可当作输入 在Package、Entity、Architecture中定义用 =进行赋值目标信号名=表达式AFTER 时间量;用 :=进行初始化设定的初始值在综合时没有用,只是在仿真时在开始设定一个起始值。signal count:bit_vector(3 downto 0):=“0011”;电子与通信工程系电子与通信工程系3.变量(Variable)临时数据,没有物理意义 只能在Process、Function、Procedure中定义,并只在其内部有效,要使其全局有效,先转换为Signal。用 :=进行赋值 用 :=进行初始化 variable result:std_logic:=0;电子与通信工程系电子与通信工程系变量与信号的区别变量与信号的区别电子与通信工程系电子与通信工程系882.信号(信号(Signal)SIGNAL 信号名:数据类型 约束条件:=表达式;例如:SIGNAL ground:std_logic:=;信号说明语句的一般格式为:用于VHDL中元件之间的通讯通常对应实际系统中的连线端口也是一种特殊的信号信号赋值需要 延时周期后才生效在Package、Entity、Architecture中定义,不能在process内声明信号是一个全局量电子与通信工程系电子与通信工程系893.变量(变量(Variable)VARIABLE 变量名:数据类型 约束条件:=表达式;例如:VARIABLE x,y,z:INTEGER;变量说明语句的一般格式为:变量只能在进程语句、函数语句和过程语句结构中使用,是一个局部量。变量在赋值时不能产生附加延时。通常暂存一些信号。要使其全局有效,先转换为Signal。variable count:integer range 0 to 255:=10;SYN电子与通信工程系电子与通信工程系信号与变量赋值信号与变量赋值【例6-1】.ARCHITECTURE bhv OF DFF3 ISBEGINPROCESS(CLK)VARIABLE QQ:STD_LOGIC;BEGINIF CLKEVENT AND CLK=1 THEN QQ:=D1;END IF;END PROCESS;Q1=QQ;END;电子与通信工程系电子与通信工程系信号与变量赋值信号与变量赋值【例6-2】.ARCHITECTURE bhv OF DFF3 ISSIGNAL QQ:STD_LOGIC;BEGINPROCESS(CLK)BEGINIF CLKEVENT AND CLK=1 THEN QQ=D1;END IF;END PROCESS;Q1=QQ;END;电子与通信工程系电子与通信工程系信号与变量赋值(差异)信号与变量赋值(差异)【例6-3】ARCHITECTURE bhv OF DFF3 ISSIGNAL A,B:STD_LOGIC;BEGINPROCESS(CLK)BEGINIF CLKEVENT AND CLK=1 THENA=D1;B=A;Q1=B;END IF;END PROCESS;END;电子与通信工程系电子与通信工程系信号与变量赋值(差异)信号与变量赋值(差异)【例6-4】.ARCHITECTURE bhv OF DFF3 ISBEGINPROCESS(CLK)VARIABLE A,B:STD_LOGIC;BEGINIF CLKEVENT AND CLK=1 THENA:=D1;B:=A;Q1=B;END IF;END PROCESS;END;电子与通信工程系电子与通信工程系942.3.3 VHDL语言的数据类型语言的数据类型 VHDL语言标准定义了10种标准的数据类型还可以由用户自定义数据类型 VHDL语言的数据类型的定义相当严格,不同类型之间的数据不能直接代入,数据类型相同,而位长不同时也不能直接代入。1VHDL语言标准所定义的标准数据类型语言标准所定义的标准数据类型 整数(Integer)实数(Real)位(Bit)位矢量(Bit_Vector)布尔量(Boolean)(课本P249)电子与通信工程系电子与通信工程系95字符(Character)字符串(String)时间(Time)错误等级(Severity Level)自然数(Natural)、正整数(Positive)(1)整数(Integer)整数的表示范围从(2311)到(2311)VARIABLE A:INTEGER RANGE 127 TO 127;(2)实数(Real)定义值范围为-1.0E+38到+1.0E+38 例如:+2.0,-2.5,+1.0E38 SYN例子电子与通信工程系电子与通信工程系96(3)位(Bit)位值的表示方法是,用字符 0 或者 1(将值放在单引号中)表示(4)位矢量(Bit_Vector)位矢量是用双引号括起来的一组位数据。例如:001010(5)布尔量(Boolean)它能进行关系运算。一个布尔量常用来表示信号的状态或者总线上的情况。一般这一类型的数据的初始值总为FALSE。SYNSYNSYN电子与通信工程系电子与通信工程系97(6)字符(Character)字符量通常用单引号括起来,如 T,I。(7)字符串(String)字符串是由双引号括起来的一个字符序列,也称字符矢量或字符串数组 例如:“STRING”,“INTEGER RANGE”(8)时间(Time)时间是一个物理量数据。时间类型一般用于仿真,而不用于逻辑综合。例如:55 sec,2 min SYNSYN电子与通信工程系电子与通信工程系98 错误等级类型数据用来表示系统的状态。它分为四种:NOTE(注意)、WARNING(警告)、ERROR(出错)、FAILURE(失败)。在仿真过程中可以用这四种状态来提示系统当前的工作情况。(9)错误等级(Severity Level)(10)自然数(Natural)、正整数(Positive)自然数和正整数是整数的子类,Natural类数据只能取值0和0以上的正整数,Positive只能为正整数。SYN电子与通信工程系电子与通信工程系1.标准逻辑位(STG_LOGIC)2.标准逻辑矢量数据类型(STG_LOGIC_VECTOR)U UninitializedX Forcing Unknown0 Forcing 01 Forcing 1Z High ImpedanceW Weak UnknownL Weak 0H Weak 1-Dont care须在程序开始加入以下两语句:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;2.IEEE预定义数据类型电子与通信工程系电子与通信工程系3.其他预定义标准数据类型其他预定义标准数据类型1.无符号数据类型(UNSIGNED TYPE)UNSIGNED(“1000”)代表8VARIABLE var:UNSIGNED(0 TO 10);SIGNAL sig:UNSIGNED(5 DOWNTO 0);2.有符号数据类型(SIGNED TYPE)SIGNED(0101)代表+5,5SIGNED(1011)代表5VARIABLE var:SIGNED(0 TO 10);需加入:LIBRARY IEEE;USE IEEE.STD_LOGIC_ARITH.ALL电子与通信工程系电子与通信工程系4.数组类型数组类型限定性数组限定性数组限定性数组定义语句格式如下:TYPE TYPE 数组名数组名IS ARRAY(IS ARRAY(数组范围数组范围)OF OF 数据类型数据类型 ;如:如:type word is array(0 to 7)of std_logic;type word is array(0 to 7)of std_logic;非限定性数组非限定性数组非限制性数组的定义语句格式如下:TYPE TYPE 数组名数组名IS ARRAY(IS ARRAY(数组下标名数组下标名RANGE RANGE)OF)OF 数据类型数据类型;如:如:type word is array(natural range)of bit;type word is array(natural range)of bit;电子与通信工程系电子与通信工程系 数数组组的的元元素素可可以以是是任任何何一一种种数数据据类类型型,用用以以定定义义数数组组元元素素的的下下标标范范围围子子句句决决定定了了数数组组中中元元素素的的个个数数,以以及及元元素素的的排排序序方方向向,既既下下标标数数是是由由高高到到低低,或或是是由由低低到高。到高。如子句如子句“0 0 TO 7TO 7”是是由低到高由低到高排序的排序的8 8个元素;个元素;即:即:a(0)a(1)a(2)a(0)a(1)a(2)a(7)a(7)。“15 15 DOWNTO 0DOWNTO 0”是是由高到低由高到低排序的排序的1616个元素个元素;即:即:a(15)a(14)a(13)a(15)a(14)a(13)a(0)a(0)。电子与通信工程系电子与通信工程系1032用户定义的数据类型用户定义的数据类型 TYPE 数据类型名,数据类型名 数据类型定义;可由用户定义的数据类型有:枚举(Enumerated)类型整数(Integer)类型实数(Real)、浮点数(Floating)类型数组(Array)类型存取(Access)类型文件(File)类型记录(Record)类型时间(Time)类型(物理类型)书写格式为:电子与通信工程系电子与通信工程系104(1)枚举(Enumerated)类型 格式:TYPE 数据类型名 IS(元素,元素,);例如:TYPE Boolean IS(false,true);SYN(2)整数(Integer)类型格式:TYPE 数据类型名 IS 数据类型定义 约束范围;例如:TYPE digit IS INTEGER range 0 TO 9;SYN(3)数组(Array)类型 格式:TYPE 数据类型名 IS ARRAY 范围 OF 原数据类型名;例如:TYPE word IS ARRAY(1 TO 16)OF STD_LOGIC;SYN(一维一维)电子与通信工程系电子与通信工程系105(4)实数(Real)、浮点数(Floating)类型(5)存取(Access)类型(6)文件(File)类型(7)记录(Record)类型 SYN(8)时间(Time)类型(物理类型)电子与通信工程系电子与通信工程系106 在VHDL语言中,不同类型的数据是不能进行运算和代入的。为了实现正确的代入操作,必须要将代入的数据进行类型转换。一般是用函数转换法实现类型转换。例如:2.3.4 类型转换类型转换 STD_LOGIC_VECTOR 与INTEGER 相互转换的函数,其对应的转换函数在程序包IEEE.STD_LOGIC_UNSIGNED和IEEE.STD_LOGIC_ARITH中定义。function conv_integer(arg:std_logic_vector)return integer;function conv_std_logic_vector(arg:integer;size:integer)return std_logic_vector;例子(课本P254,例9-18,例9-19)电子与通信工程系电子与通信工程系例9-19LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-必须声明这个包集ENTITY decoder3to8 ISPORT(input:IN STD_LOGIC_VECTOR(2 DOWNTO 0);output:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END decoder3to8;ARCHITECTURE behave OF decoder3to8 ISBEGINPROCESS(input)BEGINoutput 0);output(CONV_INTEGER(input)=1;END PROCESS;END behave;电子与通信工程系电子与通信工程系上节回顾VHDL数据对象 信号-重要 变量-重要 常量VHDL数据类型上节回顾上节回顾-信号(信号(Signals)代表连线,Port也是一种信号也是一种信号没有方向性,可给它赋值,也可当作输入在Package、Entity、Architecture中定义用=进行赋值目标信号名=表达式AFTER 时间量;用 :=进行初始化设定的初始值不可综合,用于仿真signal count:bit_vector(3 downto 0):=“0011”;3.变量(变量(Variable)临时数据,没有物理意义只能在Process、Function、Procedure中定义,并只在其内部有效,要使其全局有效,先转换为Signal。用 :=进行赋值用 :=进行初始化 variable result:std_logic:=0;信号与变量赋值(差异)【例6-3】ARCHITECTURE bhv OF DFF3 ISSIGNAL A,B:STD_LOGIC;BEGINPROCESS(CLK)BEGINIF CLKEVENT AND CLK=1 THENA=D1;B=A;Q1=B;END IF;END PROCESS;END;信号与变量赋值(差异)【例6-4】.ARCHITECTURE bhv OF DFF3 ISBEGINPROCESS(CLK)VARIABLE A,B:STD_LOGIC;BEGINIF CLKEVENT AND CLK=1 THENA:=D1;B:=A;Q1=B;END IF;END PROCESS;END;数据类型1142.3.5 词词 法法1程序注释程序注释 注释从“-”符号开始,到该行末尾结束。2数字数字 VHDL语言数字表示法有十进制表示法、二进制表示法和八进制表示法。(课本P247)115整数举例:010,1,345_67,3e8浮点数举例:10.0,3.1415,1.2E-3,2.1e+5 其中:整数:=数字或下划线连接的数字 指数:=E +整数或E -整数(1)十进制数表示法 书写格式为:十进制文字:=整数.整数 指数(2)基表示二、八、十六进制数的方法 用“基”表示数的书写格式为:116举例:2#10110101#-二进制表示法 8#267#-八进制表示法 16#8F#-十六进制表示法 30=3E1=16#1E#=2#11_11#E1 30.0=300.0e-1=16#1E.0#=2#11.11#E+3上式中:基:=整数 基于基的整数:=扩展数字 下划线 扩展数字 扩展数字:=数字/字母 以基表示的数:=基#基于基的整数.基于基的整数#指数1173字符字符 VHDL中的字符为被单引号括起来的ASCII字符。其书写格式为:字符文字:=图形字符 例如:A *1184字符串字符串 VHDL中的字符串为被双引号括起来的图形字符序列,可以为空。其书写格式为:字符串:=“图形字符”例如:“A”“”“string”119 位串是被双引号括起来的扩展数字序列,在数字序列前冠以基数说明符。其书写格式为:位串文字:=基数说明符“位值”B为二进制基说明符,O为八进制基说明符,X为十六进制基说明符 例如:B“1111_1101”X“FD”O“375”5数字位字符串(位矢量)数字位字符串(位矢量)位串的长度等价于二进制数的长度。位值:=扩展数字 或下划线扩展数字1202.3.6 运算操作符运算操作符 VHDL语言的操作符有5种:逻辑运算符(LOGICAL)关系运算符(RELATIONAL)算术运算符(ARITHMETIC)并置运算符(CONCATENATION)1逻辑运算符逻辑运算符 在VHDL语言中,逻辑运算符有7种:(课本P256)移位运算符(SHIFT)SYN适用于BIT、BOOLEAN、STD_LOGIC或BIT_VECTOR,STD_LOGIC_VECTOR121 NOT 取反 AND 与 OR 或 NAND 与非 NOR 或非 XOR 异或 XNOR 同或 在一个VHDL语句中存在两个逻辑表达式时,左右没有优先级差别(不包括NOT)。一个逻辑式中,先做括号里的运算,再做括号外运算。逻辑运算符的书写格式为:(1)a=b AND c AND d AND e;运算符相同,且是AND,OR,XOR中的一种 (2)a=(b AND c)OR(d AND e);【例9-219-21】SIGNAL a SIGNAL a,b b,c:STD_LOGIC_VECTOR(3 DOWNTO 0)c:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL dSIGNAL d,e e,f f,g:STD_LOGIC_VECTOR(1 DOWNTO 0)g:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL hSIGNAL h,I I,j j,k:STD_LOGIC k:STD_LOGIC;SIGNAL lSIGNAL l,m m,n n,o o,p:BOOLEAN p:BOOLEAN;.a=b AND c;-ba=b AND c;-b、c c 相与后向a a赋值,a a、b b、c c的数据类型同属4 4位长的位矢量d=e OR f OR g;-d=e OR f OR g;-两个操作符OROR相同,不需括号h=(i NAND h=(i NAND j)NANDj)NAND k k;-NAND-NAND不属上述三种算符中的一种,必须加括号l=(m XOR l=(m XOR n)AND(on)AND(o XOR p);-XOR p);-操作符不同,必须加括号h=i AND j AND k;-h=i AND j AND k;-两个操作符都是ANDAND,不必加括号h=i AND j OR k;-h=i AND j OR k;-两个操作符不同,未加括号,表达错误a=b AND e;-a=b AND e;-操作数b b 与e e的位矢长度不一致,表达错误h=I OR L;-I h=I OR L;-I 的数据类型是位STD_LOGICSTD_LOGIC,而L L的数据类型是.-.-布尔量BOOLEANBOOLEAN,因而不能相互作用,表达错误。1232关系运算符关系运算符 VHDL语言中6种关系运算:(1)等于(2)不等于(3)小于(4)小于等于(5)大于(6)大于等于 在VHDL程序设计中运算符有如下规则:SYN124等号“”和不等号“”可以适用所有类型的数据。小于“”、小于等于“”、大于“”、大于等于“”适用于整数、实数、位矢量及数组类型的比较。两个位矢量类型的对象比较时,自左至右,按位比较。小于等于“”和代入(信号赋值)“”是相同的,在读VHDL语言的语句时,要根据上下文关系来判断。在进行关系运算时,左右两边的操作数的数据类型必须相同1253算术运算符算术运算符 VHDL语言有10种算术运算符:+加运算-减运算*乘运算/除运算 REM 取余运算 MOD 求模运算+正-负*指数运算 ABS 取绝对值 SYN126算术运算符的使用规则如下:一元运算的操作数(正、负)可以是任何数值类型(整数、实数、物理量)。加减运算的操作数可以是整数、实数。对于加、减运算的两个操作数必须类型相同。乘除的操作数可以同为整数和实数,物理量乘或除以整数仍为物理量,物理量除以同一类型的物理量即可得到一个整数量。求模和取余的操作数必须是同一整数类型数据。一个指数的运算符的左操作数可以是任意整数或实数,而右操作数应为一整数。1274并置运算符并置运算符 并置运算符“”用于位的连接。并置运算符有如下使用规则:并置运算符可用于位的连接,形成位矢量并置运算符可用于两位矢量的连接构成更大的位矢量位的连接也可以用集合体的方法,即将并置符换成逗号 例如:DATA_C D0&D1&D2&D3;DATA_C(D0,D1,D2,D3);SYN1285移位运算符移位运算符(1)SLL逻辑左移(2)SRL逻辑右移(3)SLA算术左移(4)SRA算术右移(5)ROL循环左移(6)ROR循环右移 SYN数据类型为 BIT,BIT_VECTOR,BOOLEAN 条件:1296操作符的运算优先级操作符的运算优先级 NOT ABS */MOD REM+(positive)-(negative)+-&SLL SRL SLA SRA ROL ROR=/=AND OR NAND NOR XOR XNOR高高低低130 类似于C语言,VHDL中的顺序语句执行顺序与书写顺序一致 赋值语句赋值语句 IFIF语句语句 CASECASE语句语句 LOOPLOOP语句语句 NEXTNEXT语句语句 EXITEXIT语句语句 WAITWAIT语句语句 子程序调用语句子程序调用语句 RETURNRETURN语句语句 NULLNULL语句语句2.4.1 顺序语句顺序语句 Sequential Statements(课本P276)2.4、VHDLVHDL语法基础语法基础 131顺序语句具有如下特征:J顺序语句的功能操作有算术、逻辑运算,信号、变量的赋值,子程序调用等。J顺序语句只能出现在进程process或子程序中。J顺序语句描述的系统行为有时序流、控制流、条件分 支和迭代算法等。J顺序语句用于定义进程、子程序等的算法。J顺序语句是按出现的次序加以执行的。1 顺序赋值语句顺序赋值语句信号赋值语句信号赋值语句变量赋值语句变量赋值语句赋值目标赋值符号赋值源信号或变量=:=数值、逻辑或运算表达式 IF THEN ;ELSIF THEN ;ELSIF THEN ;ELSE ;END IF;IF语句的一般形式为:语句的一般形式为:2.IF 语句语句 IF THEN ;END IF;IF THEN ;ELSE ;END IF;134(1)完整IF语句:architecture dataflow of mux4 isbegin process(s,a0,a1,a2,a3)begin if s=00 then y=a0;elsif s=01 then y=a1;elsif s=10 then y=a2;else y=a3;end if;end process;end dataflow;135136(2)不完整IF语句:library ieee;use ieee.std_logic_1164.all;entity dff_2 is port(clk:in std_logic;d:in std_logic;q:out std_logic);end dff_2;(课本P74)137architecture behavioral of dff_2 issignal q1:std_logic;-在芯片内部定义一个数据的暂存节点在芯片内部定义一个数据的暂存节点begin process(clk)begin if clkevent and clk=1 then q1=d;end if;q=q1;-将内部的暂存数据向端口输出将内部的暂存数据向端
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!