《《微电子学》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《微电子学》PPT课件.ppt(98页珍藏版)》请在三一办公上搜索。
1、第五章 微电子系统设计,微电子系统设计就是将算法理论、体系结构、电路物理实现自上而下的集成到一个芯片上的过程。,高级语言的行为级描述,系统仿真,逻辑综合,物理层设计(版图设计),网表提取、仿真,投片试制,流程:,电子系统芯片,微电子系统设计把电子系统集中到一个芯片,包括软件和硬件。,微电子系统中物理层设计,逻辑单元电路单元双极型集成电路单元和MOS数字电路单元,逻辑电路-完成各种逻辑运算和变换的电路组成逻辑电路的基本单元是各种门电路晶体管-晶体管逻辑电路(TTL)集成注入逻辑电路(I2L)发射极耦合逻辑电路(ECL),双极数字电路单元设计,用数字信号完成对数字量进行算术运算和逻辑运算的电路称为
2、数字电路,1、TTL电路:,基本单元:与非门,特点:扇出系数较大,典型电路:74系列集成电路(民品)54系列集成电路(军品)相同的电路结构、逻辑功能,不同的工作环境温度和电源工作允许的范围。,2、ECL电路:,基本单元:或非门、或门,特点:速度快、逻辑功能、强扇出能力大,典型电路:高速和超高速集成电路,缺点:功耗大、抗干扰能力差,3、I2L电路:,基本单元:非门,特点:集成度高、功耗低、成本低,典型电路:VLSI,缺点:速度较低,二、MOS数字电路单元设计,1、NMOS电路:,基本单元:非门,特点:功耗低、速度快,典型电路:LSI和VLSI,2、CMOS电路:,特点:输入电阻高、功耗低、速度快
3、、抗噪 声能力强,第六章 集成电路计算机辅助设计,ICCAD就是将由人为主导,根据集成电路的指标要求进行总体设计,借助计算机帮助人工迅速而准确地完成设计任务。,ICCAD系统概述,ICCAD系统的发展第一代:60年代末:版图编辑和检查第二代:80年代初:原理图输入、逻辑模拟第三代:从RTL级输入,到包括行为仿真、行为综合、逻辑综合等功能流行的CAD系统:Cadence,Mentor Graphics,Viewlogic,Compass,Panda等ICCAD系统的理想作用:实现完全的自动化设计,设计出各种各样的电路,ICCAD系统的实际作用设计信息输入:语言输入编辑工具高层次描述的图形输入工具
4、:VHDL功能图输入、逻辑图/电路图输入编辑、版图输入编辑 设计实现:综合器 设计验证:验证系统(电路)功能、性能要求及设计规则要求 模拟器进行模拟(仿真)分析 设计规则的检查,整个设计过程就是把高层次的抽象描述逐级向下进行综合、验证、实现,直到物理级的低层次描述,即掩膜版图。各设计阶段相互联系,例如,寄存器传输级描述是逻辑综合的输入,逻辑综合的输出又可以是逻辑模拟和自动版图设计的输入,版图设计的结果则是版图验证的输入。ICCAD系统介入了包括系统功能设计、逻辑和电路设计以及版图设计等在内的集成电路设计的各个环节。,系统描述与模拟:VHDL语言,VHDL语言出现背景 一种硬件描述语言(hard
5、ware description language),广义地说,描述电子实体的语言:逻辑图,电路图。大规模电路的出现:逻辑图、布尔方程不太适用,需要在更高层次上描述系统,出现多种HDL语言,为便于信息交换和维护,出现工业标准。,通常指高层次设计阶段描述硬件HDL语言的特点 抽象地进行行为描述 结构化语言:可以描述电子实体的结构 多层次混合描述 既可被模拟,又可被综合能提供VHDL模拟器的公司:Cadence、Mentor Graphics、Viewlogic、Synopsys等大型EDA公司和CLSI、Model-Technology、Vantage等专门公司,VHDL语言,基本概念:描述硬件
6、电路,可以抽象地表示电路的行为和结构(完成什么功能,怎样组成)作用:对IC设计,支持从系统级到门和器件级的电路描述,并具有在不同设计层次上的模拟验证机制可作为综合软件的输入语言,支持电路描述由高层向低层的转换,VHDL语言的建模机制,一个硬件单元在VHDL中看作一个设计实体。实体外观实体说明:实体命名,实体与外部环境的接口描述,未涉及其内部行为及结构。实体功能 在结构体中实现 结构体:实体的输入-输出关系,实体的结构和行为描述。对应一个实体说明可以有多个结构体,不同的实现方案。,ENTITY count IS-设计实体countGENERIC(tpd:Time:=10ns);PORT(cloc
7、k:IN Bit;q1,q0:OUT Bit);END ENTITY count;ARCHITECTURE arch of count IS-count实体的结构体 BEGIN count_up:PROCESS(clock)-进程体count_upVARIABLE count_value:Natural:=0;BEGIN IF clock=1 THEN Count_value:=(count_value+1)MOD 4;q1=bitVal(count_value/2)AFTER tpd;q0=bitVal(count_value MOD 2)AFTER tpd;END IF;END PROCE
8、SS count_up;END ARCHITECTURE arch;,综合,概念:从设计的高层次向低层次转换的过程,是一种自动设计的过程,一种专家系统。分类:系统级综合高级综合RTL级综合:行为综合(软件:Synopsys,Ambit)逻辑综合物理综合(逻辑图或电路图到版图,严格说应该是同级驱动),逻辑模拟,逻辑模拟的基本概念:将逻辑设计输入到计算机,用软件方法形成硬件的模型,给定输入波形,利用模型算出各节点和输出端的波形,判断正确与否主要作用:验证逻辑功能和时序的正确性分类:根据所模拟逻辑单元规模的大小 寄存器传输级模拟:总体操作正确性功能块级模拟:加法器、计数器、存储器等 门级模拟:基本逻
9、辑单元:门、触发器等开关级模拟:晶体管:后仿真,电路模拟,电路设计:根据电路性能确定电路结构和元件参数,没有自动设计软件,设计人员根据电路性能要求,初步确定电路结构和元件参数,利用电路模拟软件进行模拟分析,判断修改。电路模拟:根据电路的拓扑结构和元件参数将电路问题转换成适当的数学方程并求解,根据计算结果检验电路设计的正确性。模拟对象:元件优点:不需实际元件、可作各种模拟甚至破坏性模拟,电路模拟(续),在集成电路设计中起的作用:版图设计前的电路设计,保证电路正确(包括电路结构和元件参数)后仿真:考虑了寄生参数,由电路模拟预测电路性能典型软件:SPICE、HSPICE,EDA工具,上世纪80年代,
10、EDA还只能代替手工,画原理图和流程图,设计生产机器可以读懂的印刷电路板图。到了90年代,出现了Altera公司的Maxplus 等CPLD/FPGA工具软件,人们可以用Maxplus 在PC机上设计由众多标准逻辑芯片(如74系列等)组成的电路原理图,然后再用它直接进行波形图仿真测试,观察验证电路在各种输入情况下的输出信号波形,及内部各点波形,并得到各点的延时信息,和电路“正常”,“警告”,“出错”等信息。,最后,将经过Maxplus 将验证无误的电路写入CPLD/FPGA芯片,放入电路板中进行整机测试,如发现问题,修改原理图,波形仿真后重写CPLD/FPGA,重新进行整机测试,直至完全正确为
11、止。整机中既可以使用CPLD/FPGA也可以制成ASIC芯片(视批量大小而定)。Maxplus 的出现,使电子设计自动化(EDA)技术大大向前推进了一步。Maxplus 不仅支持原理图输入,而且还支持VHDL、Verilog HDL、以及AHDL等文本输入方式,是目前应用比较广泛的可编程逻辑器件开发软件。,到了90年代后期,由于硬件描述语言的完善,尤其是相应的编译,测试,合成,布线等电子设计自动化(EDA)工具软件的发展与完善,硬件描述语言(HDL)终于进入了成熟实用阶段。这无疑是(数字)电路设计史上最具革命性的飞跃。自此,人们实现了用简明易懂的高级编程语言设计复杂硬件电路的梦想。只要具备一定
12、的硬件专门知识,就能随心所欲地设计出功能十分强大的专用智能电路,实现了“以软代硬”。,VHDL编程实例:以真值表为依据,采用数据流描述方式编写的BCD七段显示译码器的VHDL源代码如下所示,其按总线显示方式的仿真波形如图所示。,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder_se7v2 IS PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END decoder_se7v2;ARCHITECTURE behave OF decode
13、r_se7v2 IS,BEGIN PROCESS(A)BEGIN CASE A IS WHEN 0000=S S S S S S S S=1110000;,WHEN 1000=S S S S S S S S=0000000;END CASE;END PROCESS;END behave;,用VHDL编辑的七段译码器仿真波形,VHDL基础,一个完整的VHDL程序,或者说设计实体,通常要求最低能为VHDL综合器所支持,并能作为一个独立的设计单元,即元件的形式而存在的VHDL程序。在VHDL程序中,通常包含实体(ENTITY)、结构体(ARCHITECTURE)、配置(CONFIGURATION)、
14、包集合(PACKAGE)和库(LIBRARY)5个部分。其中实体和结构体这两个基本结构是必需的,他们可以构成最简单的VHDL程序。,1、实体 设计实体是VHDL语言设计的基本单元,简单的可以是一个与门,复杂的可以是一个微处理器或一个数字系统,其结构基本是一致的,都是由实体说明和结构体两部分组成。实体说明是对这个设计实体与外部电路进行接口的描述,它规定了设计单元的输入输出接口信号或引脚,是设计实体对外的一个通信界面。结构体用于描述此设计实体的逻辑结构和逻辑功能。,实体语句结构如下:ENTITY 实体名 IS GENERIC(类属表);PORT(端口表);END ENTITY 实体名;,例:ENT
15、ITY or2 IS PORT(a,b:IN STD_LOGIC;C:OUT STD_LOGIC);END ENTITY or2;,注意:实体应以语句“ENTITY 实体名 IS”开始,语句“END ENTITY 实体名;”结束。在层次化系统设计中,实体说明是整个模块或整个系统的输入输出(I/O)接口;在一个器件级的设计中,实体说明是一个芯片的输入输出(I/O)。,端口说明(PORT)端口为设计实体和其外部环境提供动态通信的通道,是对基本设计单元与外部接口的描述,其功能相当电路图符号的外部引脚。端口可以被赋值,也可以当做逻辑变量用在逻辑表达式中。其一般书写格式为:PORT(端口名:端口模式 数
16、据类型;端口名:端口模式 数据类型;);,其中端口名是设计者为实体的每一个对外通道所取的名字,通常为英文字母加数字,名字的定义有一定的惯例,如clk 表示时钟,D开头的端口名表示数据,A开头的端口名表示地址。端口模式是指这些通道上的数据流动的方式,如输入或输出等。端口模式有以下几种类型:(1)输入(IN)允许信号进入实体,主要用于时钟输入、控制输入(如load、reset、enable、clk)和单向的数据输入(如地址数据信号address)等。,(2)输出(OUT)输出模式只允许信号离开实体,常用于计数输出、单向数据输出、被设计实体产生的控制其他实体的信号等。注意:输出模式不能用于被设计实体
17、的内部反馈,因为输出端口在实体内不能看做是可读的。(3)双向模式(INOUT)双向模式允许信号双向传输(既可以进入实体,也可以离开实体),双向模式端口允许引入内部反馈。,(4)缓冲(BUFFER)缓冲模式允许信号输出到实体外部,但同时也可以在实体内部引用该端口的信号。缓冲端口既能用于输出也能用于反馈。缓冲模式用于在实体内部建立一个可读的输出端口,例如计数器输出、计数器的现态用来决定计数器的次态。端口模式可用下图说明,图中方框代表一个设计实体或模块。,在VHDL设计中,通常将输入信号端口指定为输入模式,输出信号端口指定为输出模式,而双向数据通信信号,如计算机PCI总线的地址/数据复用总线,DMA
18、控制器数据总线等纯双向的信号采用双向端口模式。从端口的名称、模式就能一目了然地指导信号的用途、性质、来源和去向。,2 结构体,结构体也叫构造体,结构体描述了基本设计单元(实体)的结构、行为、元件及内部连接关系,也就是说它定义了设计实体的功能,规定了设计实体的数据流程,制定了实体内部元件的连接关系。结构体对其基本设计单元的输入和输出关系可用以下三种方式进行描述,即行为描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)和结构描述(逻辑元件连接描述)。结构体是对实体功能的具体描述,因此它一定要跟在实体的后面。,结构体一般由两大部分组成:I对数据类型、常数、信号、子程序和元件等因素进行说
19、明的部分;II描述实体的逻辑行为、以各种不同的描述风格表达的功能描述语句,包括各种顺序语句和并行语句。,结构体的语句格式为:ARCHITECTURE 结构体名 OF 实体名 IS 定义语句 BEGIN 功能描述语句 END 结构体名;,(1)结构体名 结构体名由设计者自行定义,OF后面的实体名指明了该结构体所对应的是哪个实体。有些设计实体有多个结构体,这些结构体的结构体名不可相同,通常用dataflow(数据流)、behavior(行为)、structural(结构)命名。这3个名称体现了3种不同结构体的描述方式,使得阅读VHDL语言程序时,能直接了解设计者采用的描述方式。,(2)结构体信号定
20、义语句 结构体信号定义语句必须放在关键词ARCHITECTURE和BEGIN之间,用于对结构体内部将要使用的信号、常数、数据类型、元件、函数和过程加以说明。需要注意的是实体说明中定义的信号是外部信号,而结构体定义的信号为该结构体的内部信号,它只能用于这个结构体中。结构体中的信号定义和端口说明一样,应有信号名称和数据类型定义。因为它是内部连接用的信号,因此不需要方向说明。,例:结构体的信号定义实例。ARCHITECTURE rtl OF muj ISSIGNAL s1:BITSIGNAL s2,s3:STD_LOGIC_VECTOR(0 TO 3);BEGIN END rtl;,实体名,结构体名
21、,功能描述语句,结构体信号定义语句,(3)结构体功能描述语句 结构体功能描述语句位于BEGIN和END之间,具体地描述了构造体的行为及其连接关系。结构体的功能描述语句可以含有5种不同类型的并行语句,如图所示。每一语句结构内部可以使用并行语句,也可以是顺序语句。,结构体构造图:,图中5种功能描述语句的基本组成和功能分别是:块语句是由一系列并行语句构成的组合体,它的功能是将结构体中的并行语句组成一个或多个子模块。进程语句定义顺序语句模块,用以将从外部获得的信号值或内部运算数据向其他的信号进行赋值。信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值。子程序调用语句可以调用进程或参数,并
22、将获得的结果赋值于信号。元件例化语句对其他的设计实体做元件调用说明,并将此元件的端口与其他元件、信号或高层实体的界面端口进行连接。,例:2选1数据选择器ENTITY mux2 ISPORT(d0,d1:IN BIT;sel:IN BIT;s:OUT BIT);END mux2;ARCHITECTURE dataflow OF mux2 IS SIGNAL sig:BIT;BEGIN Sig=(d0 AND sel)OR(NOT sel AND d1);S=sig;END dataflow;,功能描述语句,信号定义语句(内部信号,无方向),3 块、子程序和进程,(1)块语句(BLOCK)在较大规
23、模的电子系统设计中,传统的硬件电路设计通常包括一张系统总电路原理图和若干张子原理图。在VHDL程序设计中,结构体是由多个BLOCK块构成的,如果将结构体比做总电路原理图,那么,每个BLOCK块则相当于一张子原理图。,BLOCK块语句的结构:块标号:BLOCK 接口说明 类属说明 BEGIN 并行块语句 END BLOCK(块标号);,例:B1:BLOCK SIGNAL s1:BIT;BEGIN s1=a AND b;B2:BLOCK SIGNAL s2:BIT;BEGIN s2=c AND d;B3:BLOCK BEGIN Z=s2;END BLOCK B3;END BLOCK B2;y=s1
24、;END BLOCK B1;,(2)进程(PROCESS)PROCESS结构是最能体现VHDL语言特色的语句。与BLOCK语句一样,利用PROCESS语句结构可以描述一个功能独立的电路。与BLOCK语句不同之处是,在系统仿真时,PROCESS结构中的语句是按顺序逐条向下执行的,而不像BLOCK语句那样并发执行。一个结构体中可以有多个并行运行的进程结构,每一个进程内部是由一系列顺序语句来构成的。,PROCESS语句的结构进程标号 PROCESS(敏感信号表)IS进程说明语句BEGIN 顺序描述语句 END PROCESS 进程标号;,注意:在多个进程的结构体描述中,进程标号是区分各个进程的标志。
25、但是进程标号并不是必需的。单进程以PROCESS开始,以END PROCESS结束。,例:两输入或非门LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY nor2_v2 IS PORT(a,b:IN STD_LOGIC;y:OUT STD_LOGIC);END nor2_v2;ARCHITECTURE behave OF nor2_v2 ISBEGIN PROCESS(a,b)VARIABLE comb:STD_LOGIC_VECTOR(1 DOWNTO 0);,-y=NOT(a OR b);,BEGIN comb:=a,-X:不定,(3)子程序(S
26、UBPROGRAM)VHDL程序与其他软件语言程序中应用子程序的目的是相似的,即能够更有效地完成重复性的工作。子程序模块是利用顺序语句定义和完成算法的,但子程序不能像进程那样可以从本结构体的其他块或进程结构中读取信号值或向信号赋值,只能通过子程序调用与子程序的界面端口进行通信。子程序被调用时,首先要初始化,执行处理功能后,将处理结果传递给主程序。子程序内部的值不能保持,子程序返回后才能被再次调用并初始化。,子程序有两种类型:过程(PROCEDURE)和函数(FUNCTION)。I过程(PROCEDURE)过程语句的书写格式为:PROCEDURE 过程名(参数表)IS 说明部分 BEGIN 过程
27、语句部分 END PROCEDURE 过程名;,例:用过程语句设计的子程序PROCEDURE vector_to_int(a:IN STD_LOGIC_VECTOR;x_flag:OUT BOOLEAN;q:INOUT INTEGER)ISBEGIN q:=0;x_flag:=FALSE;FOR i IN aRANGE LOOP q:=q*2;-*:乘,*:乘方 IF(a(i)=1)THEN q:=q+1;,-矢量转换成整数,ELSE(a(i)/=1)THEN-/=:不等 x_flag:=TRUE;END IF;END LOOP;END vector_to_int;,这个过程名为vector_
28、to_int实现将位矢量转换成整数的功能,在过程语句执行结束后,将输入值拷贝到调用者的OUT和INOUT所定义的变量中,完成子程序和主程序之间的数据传递。,II.函数 函数的语言书写格式为:FUNCTION 函数名(参数表)RETURN 数据类型 IS 说明部分;BEGIN 顺序语句;RETURN 返回变量名;END RETURN 函数名;,例:用VHDL构造的选择最大值的函数程序。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;PACKAGE bpac IS FUNCTION max(a:STD_LOGIC_VECTOR;b:STD_LOGIC_VECTOR
29、)RETURN STD_LOGIC_VECTOR;END bpac;PACKAGE BODY bpac IS FUNCTION max(a:STD_LOGIC_VECTOR;b:STD_LOGIC_VECTOR),RETURN STD_LOGIC_VECTOR ISVARIABLE tmp:STD_LOGIC_VECTOR(aRANGE);BEGIN IF(ab)THEN tmp:=a;ELSE tmp:=b;END IF;RETURN tmp;END;END bpac;,4 库和程序包,库和程序包用来描述和保留元件、类型说明函数、子程序等,以便在其它设计中可以随时引用这些信息,提高设计效率。
30、,(1)库(LIBRARY)库是经编译后的数据的集合,它存放包集合定义、实体定义、结构定义和配置定义。,库语句的格式为:LIBRARY 库名;,USE语句指明库中的程序包。一旦说明了库和程序包,整个设计实体都可以进入访问或调用,但其作用范围仅限于所说明的设计实体。USE语句的使用将使所说明的程序包对本设计实体部分或全部开放。,USE语句有以下两种常用的格式:USE 库名.程序包名.项目名;USE 库名.程序包名.ALL;,第一种语句格式的作用是向本设计实体开放指定库中的特定程序包内的所选定的项目。第二种语句格式的作用是向本设计实体开放指定库中的特定程序包内的所有内容。,例如:LIBRARY I
31、EEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.STD_ULOGIC;此例中,第一个USE语句表明打开IEEE库中的STD_LOGIC_1164程序包,并使程序包中的所有公共资源对本语句后面的VHDL设计实体程序全部开放,关键词ALL代表程序包中的所有资源。第二个USE语句开放了程序包STD_LOGIC_1164中的STD_ULOGIC数据类型。,STD_ULOGIC:可枚举数据类型,注意:库说明语句的作用范围从一个实体说明开始到它所属的结构体、配置为止,当一个源程序中出现两个以上实体时,两条作为使用库的说明语句应在每个设计实体说
32、明语句前重复书写。,例:LIBRARY IEEE;-库使用说明USE IEEE.STD_LOGIC_1164.ALL;ENTITY and IS END and;ARCHITECTURE dataflow OF and IS END dataflow;,CONFIGURATION c1 OF and IS-(配置)AND c1;LIBRARY IEEE;-库使用说明 USE IEEE.STD_LOGIC_1164.ALL;ENTITY or ISCONFIGURATION c2 OF and IS AND c2;,(2)程序包,程序包也叫包集合,主要用来存放各个设计都能共享的数据类型、子程序说
33、明、属性说明和元件说明等部分。设计者使用时只要用USE子句进行说明即可。程序包由两部分组成:程序包首和程序包体。,程序包的一般书写格式如下:PACKAGE 程序包名 ISEND PACKAGE 程序包名;-程序包首PACKAGE BODY 程序包名 IS-程序包体 END PACKAGE BODY 程序包名;,例:;PACKAGE math IS TYPE tw16 IS ARRAY(0 TO 15)OF T_WLOGIC;FUNCTION add(a,b:IN tw16)RETURN tw16;FUNCTION sub(a,b:IN tw16)RETURN tw16;END math;PAC
34、KAGE BODY math ISFUNCTION vect_to_int(s:tw16);RETURN INTEGER IS VARIBLE result:INTEGER:=0;,BEGIN FOR i IN 0 TO 7 LOOP result:=result*2;IF s(i)=1THEN result:=result+1 END IF;END LOOP;RETURN result;END vect_to_int;FUNCTION int_to_tw16(s:INTEGER);RETURN tw16 IS VARIBLE result:tw16;VARIBLE digit:INTEGER
35、:=2*15;VARIBLE local:INTEGER;,BEGIN local:=s;FOR i IN 15 DOWNTO 0 LOOP IF local/digit=1 THEN Local:=local-digit;ELSE result(i):=0;END IF;digit:=digit/2;END LOOP;RETURN result;END int_to_tw16;FUNCTION add(a,b:IN tw16);RETURN tw16 IS VARIBLE result:INTEGER;,BEGIN result:=vect_to_int(a)+vect_to_int(b);
36、RETURN int_to_tw16(result);END add;FUNCTION sub(a,b:IN tw16);RETURN tw16 IS VARIBLE result:INTEGER;BEGIN result:=vect_to_int(a)+vect_to_int(b);RETURN int_to_tw16(result);END sub;END math;,此例的程序包是由程序包首和程序包体两部分组成。程序包首定义了数据类型和函数的调用说明,程序包体中才具体描述实现该函数功能的语句和数据的赋值。这种分开描述的好处是,当函数的功能需要做某些调整或数据赋值需要变化时,只要改变程序包
37、体的相关语句就可以了,而无需改变程序包首的说明,这样就使得需要重新编译的单元数目尽可能的减少了。,5 配置,在用VHDL描述硬件电路时,常常采用结构描述方式和混合描述方式。在这两种描述方式中,常常需要将其他设计实体作为元件进行引用,这时就需要将不同元件通过配置安装到不同的设计实体中。VHDL提供了配置语句用于描述各种设计实体和元件之间连接关系以及设计实体和结构体之间的连接关系。,(1)默认配置,默认配置语句的基本格式为:CONFIGURATION 配置名 OF 实体名 IS FOR 选配结构体名 END FOREND 配置名;,LIBRARY IEEE;USE IEEE.STD_LOGIC_1
38、164.ALL;ENTITY example_v IS PORT(a:IN STD_LOGIC;b:IN STD_LOGIC;y:OUT STD_LOGIC);END example_v;ARCHITECTURE and2_arc OF example_v IS BEGIN y=a AND b;END and2_arc;,例:与、或、与非、或非、异或,5个结构体共用一个实体。,ARCHITECTURE or2_arc OF example_v IS BEGIN y=a OR b;END or2_arc;ARCHITECTURE nand2_arc OF example_v IS BEGIN y
39、=NOT(a AND b);END nand2_arc;ARCHITECTURE nor2_arc OF example_v IS BEGIN y=NOT(a OR b);END nor2_arc;,ARCHITECTURE xor2_arc OF example_v IS BEGIN y=a XOR b;END xor2_arc;CONFIGURATION cfg1 OF example_v IS FOR and2_arc END FOR;END cfg1;CONFIGURATION cfg2 OF example_v IS FOR or2_arc END FOR;END cfg2;,CON
40、FIGURATION cfg3 OF example_v IS FOR nand2_arc END FOR;END cfg3;CONFIGURATION cfg4 OF example_v IS FOR nor2_arc END FOR;END cfg4;CONFIGURATION cfg5 OF example_v IS FOR xor2_arc END FOR;END cfg5;,在上例(example_v)中,有5个不同的结构体,分别用来完成二输入的逻辑与、或、与非、或非和逻辑异或的运算操作。在程序中使用了5个默认配置语句来指明设计实体example_v和哪个结构体一起组成一个完整的设计
41、:配置语句cfg1将与逻辑结构体配置给实体;cfg2将或逻辑结构体配置给实体;cfg3将与非逻辑结构体配置给实体;cfg4将或非逻辑结构体配置给实体;cfg5将异或逻辑结构体配置给实体。在进行模拟的时候,将根据所编译的是上面的哪个配置来决定要进行模拟的结构体,也就是说最后一个被编译的结构体(异或逻辑)将被模拟,下图就是异或逻辑的仿真波形。,异或门仿真波形,(2)结构体的配置,结构体的配置主要是用来对结构体中引用的元件进行配置。,结构体的配置的书写格式:FOR:USE ENTITY.;,以1位全加器的构成为例说明结构体的配置的用法:,将两输入与门、或门、异或门设置成通用例化元件由结构体引用。,L
42、IBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY and2_v IS PORT(a:IN STD_LOGIC;b:IN STD_LOGIC;y:OUT STD_LOGIC);END and2_v;ARCHITECTURE and2_arc OF and2_v ISBEGIN y=a AND b;END and2_arc;CONFIGURATION and2_cfg OF and2_v IS FOR and2_arc END for;END and2_cfg;,二输入与门源代码:,与门and2_v仿真波形,LIBRARY IEEE;USE IEEE.S
43、TD_LOGIC_1164.ALL;ENTITY or2_v IS PORT(a:IN STD_LOGIC;b:IN STD_LOGIC;y:OUT STD_LOGIC);END or2_v;ARCHITECTURE or2_arc OF or2_v ISBEGIN y=a OR b;END or2_arc;CONFIGURATION or2_cfg OF or2_v IS FOR or2_arc END for;END or2_cfg;,二输入或门源代码:,或门or2_v仿真波形,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xor2_v I
44、S PORT(a:IN STD_LOGIC;b:IN STD_LOGIC;y:OUT STD_LOGIC);END xor2_v;ARCHITECTURE xor2_arc OF xor2_v ISBEGIN y=a XOR b;END xor2_arc;CONFIGURATION xor2_cfg OF xor2_v IS FOR xor2_arc END for;END xor2_cfg;,异或门源代码:,异或门xor2_v仿真波形,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY add1_v IS PORT(A:IN STD_LOGIC;B
45、:IN STD_LOGIC;Cin:IN STD_LOGIC;Co:OUT STD_LOGIC;S:OUT STD_LOGIC);END add1_v;ARCHITECTURE structure OF add1_v IS COMPONENT and2_v PORT(a:IN STD_LOGIC;b:IN STD_LOGIC;y:OUT STD_LOGIC);END COMPONENT;,全加器源代码:,COMPONENT or2_v PORT(a:IN STD_LOGIC;b:IN STD_LOGIC;y:OUT STD_LOGIC);END COMPONENT;COMPONENT xor2
46、_v PORT(a:IN STD_LOGIC;b:IN STD_LOGIC;y:OUT STD_LOGIC);END COMPONENT;SIGNAL tmp1,tmp2,tmp3:STD_LOGIC;FOR U1,U2:xor2_v USE ENTITY work.xor2_v(xor2_arc);FOR U3,U4:and2_v USE ENTITY work.and2_v(and2_arc);FOR U5:or2_v USE ENTITY work.or2_v(or2_arc);,BEGIN U1:xor2_v PORT MAP(A,B,tmp1);U2:xor2_v PORT MAP(
47、tmp1,Cin,S);U3:and2_v PORT MAP(tmp1,Cin,tmp2);U4:and2_v PORT MAP(A,B,tmp3);U5:or2_v PORT MAP(tmp2,tmp3,Co);END structure;,全加器add1_v仿真波形,实际上如果仅仅要构成1位全加器,采用行为描述方式只需几条逻辑语句即可。,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY add1_v IS PORT(A:IN STD_LOGIC;B:IN STD_LOGIC;Cin:IN STD_LOGIC;Co:OUT STD_LOGIC;S
48、:OUT STD_LOGIC);END add1_v;ARCHITECTURE structure OF add1_v IS BEGIN S=A XOR B XOR Cin;Co=(A XOR B)AND Cin OR(A AND B);END structure;,全加器add1_v仿真波形,MAXPLUSII基本操作,电路模拟,以SPICE为例 电路模拟的基本功能 软件基本结构 电路描述,电路模拟的基本功能,可处理的元器件:电阻、电容、电感、互感、独立电流源、电压源、传输线、四种受控源、四种器件(二极管、双极管、结型场效应管、MOS)等 可完成的分析功能:直流分析:典型的是求解直流转移特性
49、(.DC),输入加扫描电压或电流,求输出和其他节点(元件连接处)电压或支路电流;还有.TF、.OP、.SENSE交流分析(.AC):以频率为变量,在不同的频率上求出稳态下输出和其他节点电压或支路电流的幅值和相位。噪声分析和失真分析,瞬态分析(.TRAN):以时间为变量,输入加随时间变化的信号,计算输出和其节点电压或支路电流的瞬态值。温度特性分析(.TEMP):不同温度下进行上述分析,求出电路的温度特性电路模拟软件的基本结构 五部分组成:输入处理、元器件模型处理、建立电路方程、方程求解和输出处理,电路模拟软件的基本结构,输入处理:主要完成对输入文件进行编译,词法语法检查、存储输入数据、其他(元件
50、预处理等)模型处理:元器件的数学模型:用数学公式描述器件的电流电压特性、与物理参数和工艺参数的关系主要是非线性元件的模型:如MOS、BJT、二极管等这些模型编入模型库,可调用;也可自行定义后加入模型库,电路模拟软件的基本结构(续),建立电路方程根据电路结构、元件参数、分析要求,建立方程依据的基本原理是欧姆定律和基尔霍夫定律(解释)建立的方法很多,以节点法为例 方程求解数值解法:线性代数方程组解法、非线性方程组解法、常微分方程组解法线性电路的直流分析:选主元的高斯消去法或LU分解法非线性电路的直流分析:对非线性元件进行线性化处理,迭代方法交流分析:线性电路、非线性电路,处理同上瞬态分析:常微分方