EDA技术概述.docx
《EDA技术概述.docx》由会员分享,可在线阅读,更多相关《EDA技术概述.docx(30页珍藏版)》请在冰豆网上搜索。
EDA技术概述
第1章EDA技术概述
当今数字电子技术得到了飞速发展,有力地推动和促进了社会生产力和社会信息化的提高。
数字电子技术逐步渗透到人类生活的各个领域。
从消费电子产品、工业自动化设备到航天技术都能看到数字电子技术的身影。
在技术发展的同时,电子产品的设计方式也发生了巨大的改变,采用EDA(电子设计自动化)技术成为数字电子设计的主要方式。
1.1EDA技术及发展
数字电子技术工程师现在正面临着前所未有的挑战。
一方面,电子公司要求工程师在更短的时间里,使用更少的资源来设计新产品,而且性能要比竞争产品好。
另一方面,技术变化非常快,不同的客户有完全不同的需求,要求有更具个性化的产品。
因此,EDA技术应运而生,成为解决以上“所有”问题的很好的技术选择。
1.1.1何谓EDA技术
EDA技术是一门迅速发展的新技术。
它以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具。
它能用软件的方式设计电子系统,自动完成硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,最后在特定的目标芯片中完成适配编译、逻辑映射、编程下载等工作,形成集成电子系统或专用集成芯片。
利用EDA技术进行电子系统的设计具有以下几个特点。
用软件的方式设计硬件。
用软件的方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的。
设计过程中可用有关软件进行各种仿真。
系统可现场编程,在线升级。
整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。
因此,EDA技术是现代电子设计的发展趋势。
EDA技术是数字系统设计的核心技术,是电子类专业技术人员必须掌握的基本技能之
一。
目前的大规模可编程逻辑器件是CPLD(复杂可编程逻辑器件)和FPGA(可编程逻辑阵列)。
1.1.2基于大规模可编程逻辑器件的数字系统设计
现代数字系统设计相当大一部分是基于大规模可编程逻辑器件的,这是因为基于大规
模可编程逻辑器件的设计拥有面市时间快、灵活性大、可定制解决方案、开发成本低和具有现场更新能力等优点。
工程师首先对系统或者设计进行构思,然后在计算机上采用高级语言(VerilogHDL语言或者VHDL语言)来描述这一构思,设计出软件代码。
最重要的是,可以使用设计工具软件检查设计中有没有错误。
确定设计适合目标的可编程逻辑器件后,检查设计是否达到了性能要求,可以把设计下载到目标器件中,直接在硬件中调试功能。
本书讨论的大规模可编程逻辑器件是FPGA。
现在的FPGA设计与几年前的FPGA设
计有很大不同,它具有全功能,可以实现电路板级的集成,同时降低了成本。
例如,一个典型的系统设计如图1.1所示。
这块电路板上有很多芯片,诸如CPU、I/O单元、小规模的FPGA、闪存和SDRAM
存储器及一个DSP模块。
该系统需要的电路板比较大,这样才能容纳这些芯片。
这提高了设计成本和复杂度。
但是,现在能够把CPU、I/O和DSP都放在一个可编程逻辑芯片中,
如图1.2所示。
采用一片FPGA,可以从系统中去掉很多硬件,从而降低了成本和功耗。
FPGA器件
汞強处理器
ITGA
闪存
SDRAM
乖统处理器
数字逻辑单元
闪存
SDRAM
图1.2集成后的系统
图1.1典型的系统设计框图
现在可编程逻辑几乎无处不在。
从家里的HDTV到附近的蜂窝电话发射塔,直至银行
的ATM,这些都含有可编程逻辑器件形式的数字逻辑,它实现了从控制系统怎样工作的CPU到网络和通信应用中高速交换流量管理等方方面面的功能。
1.2可编程逻辑器件的发展简介
在早期的数字逻辑设计中,设计人员在电路板或者面包板上把多个芯片连在一起构成系统。
每个芯片包括一个或者多个逻辑门(如NAND、AND、OR或者非门),或者简单逻辑结构(如触发器和复用器等)。
20世纪60和70年代的很多设计都采用美国德州仪器
公司的7400系列TTL,即晶体管-晶体管逻辑器件。
设计TTL时,其目的一般是以尽量少的芯片来实现设计,以降低成本,减小电路板面积。
而且,还需要尽量采用已有的器件来进行设计。
1.2.1逻辑设计基本流程
在实现逻辑功能时,首先要建立真值表,如表1.1所示。
真值表列出了逻辑所有可能
的输入及输入组合可能产生的相关输出。
对于n输入,有2n种可能的输入组合,这些都需
要进行考虑。
根据真值表,我们可以建立卡诺图,如图1.3所示。
用卡诺图很容易建立简
单的逻辑表达式。
表1.1真值表
A
B
C
D
Y
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
1
1
1
0
1
0
0
0
0
1
0
1
1
0
1
1
0
1
0
1
1
1
1
1
0
0
0
0
1
0
0
1
1
1
0
1
0
1
1
0
1
1
1
1
1
0
0
1
1
1
0
1
1
1
1
1
0
1
1
1
1
1
1
X
DO0111
10
00
00]
0
01
011
1
11
11]
1
10
011
I
图1.3根据真值表建立的卡诺图
根据卡诺图中含有1的每个框,结合每个框的公共输入,我们可以建立函数的一个“乘积和”式的逻辑表达式,如公式1所示。
Y二ABCDBDBCADAC(公式1)
表达式由6个乘积项组成,每个乘积项对应一个与门。
要在硬件中直接实现这一功能,需要6个2输入与门,1个6输入或门,如果希望同步输出,还需要一个输出寄存器或者触发器。
6输入或门不支持TTL,因此,需要级联更小的或门,这增加了延时和元件数量。
为解决这些问题,TTL设计人员使用与非逻辑重写公式,如公式2所示。
(公式2)
Y=ABLCD_BD_BC」AD」AC
这样,使用7400系列标准元件来最终实现这些逻辑,如图1.4所示。
图1.4实现逻辑的电路图
这一实现方案只使用了两级逻辑来产生乘积和,使用一个寄存器来建立同步输出。
总体上,可以使用这一例子中介绍的方法把大部分数字电路的逻辑功能简化为乘积和。
使用两个组合逻辑级来实现这些功能,与门建立乘积项,或门对乘积求和。
在输入上可以采用非门来置反输入,以产生所需的功能。
为了存储输出,或者使输出与其他输出同步,需要寄存器形式的同步逻辑。
如果不需要存储器或者同步,可以旁路输出寄存器。
采用TTL逻辑器件,在实验面包板或者印刷电路板上,用铜线把这些分立元件连在一起。
1.2.2可编程逻辑器件PAL
思考一下逻辑功能实现的共性,如果把这些逻辑门和寄存器组合到一个器件中会怎样?
从与门到或门,从或门到寄存器有固定的连接会怎样呢?
更进一步,如果有一种方法来设置输入和与门之间的连接,以确定应使用哪些输入,以及在哪里使用,又会怎样呢?
这方面的思考导致了第一款可编程阵列逻辑器件PAL的产生,如图1.5所示。
将逻辑门和输出寄存器固定为通用逻辑后,选择使用逻辑输入及其互补逻辑,就可以
建立任何逻辑功能。
PAL主要由图1.5中的三部分构成,多次复制这三部分就可以形成复杂PAL器件。
这里显示的可编程阵列是所选择的输入,将其连接到需要的与门。
在输入和
进入与门的线之间进行连接,可实现线与操作。
与门输出构成乘积项。
乘积项通过或门完成乘积和,从而产生最终函数输出。
AB]
图1.5可编程阵列逻辑示意图
然后,将其送入寄存器进行存储或者同步。
这一部分PAL通常被称为宏单元。
某些
PAL包括了阵列反馈选项,以实现更复杂的逻辑功能,还可以完全旁路输出寄存器,以建立异步输出。
需要指出的是,在目前的大部分器件中,所有这三部分共同构成了宏单元。
这就是CPLD器件的情况。
这类器件的优点非常明显。
一个器件中的逻辑越多,电路板上需要的器件就越少。
器件越少,意味着占用更少的电路板来实现逻辑,空出的电路板可以用于放置其他元件。
更少的器件还意味着较低的总成本及功耗。
逻辑功能连接不必跨过多个器件,避免了连接错误,也简化了逻辑功能的测试和调试。
PAL还可以实现设计安全性。
PAL在设计上还非常灵活,设计人员采用一类器件就能够建立很多不同的设计,不用担心逻辑的可用性。
这种灵活性使可编程逻辑设计实现起来更复杂,但与PAL配套产生了
很多自动设计工具,它们简化了设计过程,缩短了设计时间。
PAL最强的功能在于它可以
支持在系统编程和重新编程,很容易修复故障或者更新设计,而不需要替换电路板元件。
早期PAL器件编程甚至当前闪存技术的关键都在于编程阵列中跨线连接所使用的特殊晶体管。
这些特殊晶体管被称为浮栅晶体管,因为它们含有第二个栅极,浮在标准选择栅极和器件基底其他部分之间。
两类最典型的浮栅晶体管是FAMOS(浮栅雪崩注入MOS
晶体管)和FLOTOX(浮栅沟道氧化晶体管)。
如果不进行任何设置,这两类晶体管都可以用做标准n型晶体管:
当电压加在栅极上
时,晶体管源极和漏极之间导通。
两类晶体管都可以采用相似的方法进行设置来改变这种工作方式。
漏极和栅极之间加上足够的设置电压后,电子被“限制”在浮栅上,即使在所选栅极上加上标准工作电压,晶体管也不会导通。
这样,设置浮栅晶体管使之总是“关断”,这实际上是一个开关。
FLOTOX晶体管还
需要一个额外的选择晶体管,这是因为未设置的FLOTOX晶体管有时像p型晶体管,栅极接地时导通。
选择晶体管防止了这一现象的发生。
这两类浮栅晶体管的主要不同点在于它们重新编程的方式。
FAMOS晶体管需要用紫
外强光迫使被俘获的电子回到基底。
使用FAMOS晶体管的器件是可擦除可编程ROM,即
EPROMS。
简单的置反漏极-栅极编程电压就可以擦除FLOTOX晶体管。
由于用电就可以
擦除FLOTOX晶体管,用于实现电擦除可编程ROM,即EEPROM,它们非常适合在系统
编程。
1.2.3从PAL到PLD到复杂可编程逻辑器件CPLD
PAL之后是PLD,PLD和PAL器件非常相似,但是加入了一些其他特性,成为真正的可编程器件,而且更实用。
该器件区别于简单PAL器件的主要进步是它含有全面可编程宏单元,以及可变乘积项分配。
宏单元提供多种可编程选择,实现乘积和输出。
可编程宏单元还能够反馈至阵列或者使用输出引脚作为输入。
灵活的PLD宏单元成为实现逻辑功能真正实用的器件,第一款
12
14
:
8一===-==_=_===三_=--■!
=・,■・・・・・・・・!
-■・,an・!
■■!
・・・・.—■・■*・■■・_
=====
E---Eb
_
PLD如图1.6所示。
图1.7CPLD结构图
图1.6第一款PLD示意图
PLD理念进一步扩展便产生了CPLD。
与由多个PAL和宏单元构成的PLD相似,CPLD
包含多个和I/O引脚连接的PLD逻辑模块,彼此之间通过可编程互连架构进行连接,如图1.7所示。
这种措施可在一个器件中提高逻辑数量。
CPLD中的逻辑模块通常被称为逻辑阵列模块(LAB),每个LAB就像一个PLD。
CPLDLAB一般含有4到20个宏单元。
LAB中的可编程阵列非常类似于PAL或者PLD阵列。
然而,CPLD和PLD中的可变乘积项分配不同,CPLDLAB中的宏单元通常包括额外
的与门逻辑,这些逻辑直接反馈回阵列。
这一额外的逻辑可用于形成额外的乘积项,名为扩展项。
扩展逻辑产生的额外乘积项可用于当前的宏单元中,以扩展逻辑功能。
其他宏单元还可以共享使用扩展项。
这样,对于需要乘积项的宏单元而言,只建立一次乘积项即可,而不必每次都建立。
这是减少逻辑浪费更高效的方法,如图1.8所示。
ASBB
人人人只旷瞩乘枳商
AA■AA
AB
图1.8CPLDLAB中的宏单元
注意:
使用扩展项逻辑的缺点是由扩展乘积项导致的额外时延,而使用扩展项逻辑的时
延是已知的。
因此,放置逻辑和进行时序分析时,应对此进行考虑。
除了LAB,CPLD中的其他结构与PAL和PLD相似,但配置更高级。
LAB之间的互
连被称为可编程互连阵列,即PI或者PIA。
PI与PAL和PLD中的可编程阵列相似,使用
了相同的编程技术。
而PI提供了LAB之间以及LAB和I/O引脚之间数据传送需要的所有走线。
通过PI,任何LAB的输入和输出都可以连接至任一其他LAB或者I/O。
这是实现非
常灵活的可编程器件的关键。
CPLD相对于PLD的另一改进是加入了单独的I/O控制模块。
在PLD中,I/O引脚直接连接至逻辑。
在CPLD中,PI将I/O引脚和器件的主要逻辑分开。
I/O引脚有自己的控制逻辑来实现多种特性,任一引脚有多种I/O标准,输入、输出,或者
双向工作,并不需要迫使某些引脚只能用做输入。
CPLD相对于PLD最大的优点在于逻辑数量及布线选择。
LAB逻辑和PI是全面可编
程的,在单片器件中具有很大的设计灵活性。
CPLD的I/O特性和功能远远超出了PLD的
简单I/O,在I/O怎样工作上提供更多的选项和控制功能。
与PAL和PLD一样,CPLD在电路板上电时即可瞬时接通工作。
它们具有很低的成本,占用了很少的电路板面积。
非易失EEPROM编程体系结构使其非常适合使用在系统
编程方法进行测试和调试,不需要在电路板上电时对其进行重新编程。
目前的AlteraCPLD
包括MAX3000和7000系列器件,以及MAXII和MAXIIZ系列。
1.2.4从CPLD至UFPGA的产生
CPLD相对于老的PLD器件的最大进步在于它能够在单个器件中容纳大量的逻辑。
理
论上,可以不断在CPLD中加入LAB,继续增加逻辑数量。
但是,这样做需要有额外的PI布线,实现所有这些LAB的连接,其连接数量会呈指数增长,直到芯片管芯的连线数量超过逻辑数量,这限制了容量的扩展。
解决方法是把LAB排列在网格中,从而产生了现场可编程门阵列FPGA的概念,LAB
都被排列在大型阵列中,器件可以现场编程或者重新编程,和CPLD一样。
没有采用中心
全局器件互连,而是把布线放置在LAB之间的空格上,就像大城市的街道。
这种布线被排列成行列互连的形式。
它可以跨过器件的整个长度和宽度,或者器件的一小部分,只覆盖行列中的几个LAB,如图1.9所示。
列耳连■
、仃互连
分段互连
图1.9FPGA互连结构图
FPGALAB和CPLD的LAB设计不同。
CPLDLAB由宏单元构成,包括自己的本地可编程阵列,而FPGALAB由大量的逻辑模块构成,这些模块被称为逻辑单元,即LE,
而且本地互连和逻辑分开。
LE看起来可能和CPLD宏单元相似,但更容易配置,有更丰
富的特性来提高性能,减少逻辑资源的浪费。
1.2.5在系统编程问题的解决
由于可编程逻辑器件越来越大,越来越复杂,器件本身编程也越来越复杂。
对前面介绍的浮栅晶体管器件进行编程时,PAL或者PLD必须放在特殊的自动编程单元中,在正
确的I/O弓I脚上加上正确的编程电压。
这基本违背了在系统编程的理念,因为它需要把器件从电路板上拿下来,放在编程单元中重新编程,或者在电路板上放一些特殊装置来进行编程。
为了实现在系统编程,CPLD和FPGA增加了和设计I/O分开的编程接口。
这就是几
乎所有CPLD和FPGA都采用的一种流行接口一一JTAG接口,如图1.10所示。
JTAG接口是简单的4线或者5线串行接口,器件上的JTAG接口一般作为器件自测试的一部分来保证器件制造合格、正常工作。
数据在TDI输入上移入,在TDO输出上移
出。
如果输出和输入相匹配,则器件通过测试。
如果PLD本身可以产生编程所需要的电压,那么JTAG接口能够控制并指导芯片,在
PLD的编程。
器件的哪一部分加上编程电压。
这就简化了在实验室或者电路板产品线上对JTAG是业界标准,因此,任何JTAG接口器件都可以进行器件自测试。
I岱
TCK
USB-BlEisler“
BvtcBlasier[I
或其他
JTAGF戟
电纜
TMS
TCK
TDITDO
FI[)1
I—r-THS
—TCK
PI.DI
—^TDIIDO
IMS
TCK
PI.DI
TDITDO
TDO
图1.10JTAG接口示意图
然而,通常需要特殊控制器才能通过链接和供应商的器件进行编程。
例如,Altera器
件需要使用Altera编程电缆,USB-Blaster或者ByteBlasterII下载电缆等。
JTAG编程非常适合应用在EEPROM器件上,这是因为编程是非易失的。
1.3FPGA系统结构和资源
由于技术的进步,产生了百万级的FPGA,同时为了照顾用户的特殊需求,现在包含
了4种可编程资源,即位于芯片内部的可编程逻辑单元(LE)、位于芯片四周的可编程I/O、
分布在芯片各处的可编程布线资源和片内嵌入式存储器块RAM。
也增加了嵌入式乘法器、
锁相环的资源,如图1.11所示。
逻辑单止
一用户町选【心
图1.11FPGA内部资源结构图
F面将对FPGA内部资源进行简单介绍。
1.3.1可编程逻辑单元(LE)
图1.12所示是一个典型的LE的结构图。
LE包括3个主要部分:
查找表(LUT)、进位逻辑和输出寄存器逻辑。
LE
图1.12典型的LE的结构图
其中,FPGA用查找表(LUT)替代了CPLD中的乘积项阵列,它是FPGA中组合逻辑输出乘积和的关键。
大部分器件使用4输入LUT,而有些器件提供输入数量更大的LUT,以建立更复杂的功能。
LUT由一系列级联复用器构成,如图1.13所示。
I.IIKUMnJcSRAM
图1.13查找表(LUT)结构示意图
复用器输入可以被设置为高或者低逻辑电平。
逻辑之所以被称为查找表,是因为通过“查找”正确的编程级来选择输出,并根据LUT输入信号通过复用器将输出送到正确的地方。
LUT本质上就是一个RAM。
对于4输入的LUT,每一个LUT可以看成一个有4位地址线的16X1的RAM。
当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM。
这
样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
注意:
相对于CPLD宏单元,产生LUT输出可能需要更多的逻辑级。
但是,它能够灵活地建立函数和LE链,从而提高了性能,有助于减少资源的浪费。
LE的同步部分来自可编程寄存器,非常灵活,通常由全局器件时钟来驱动它,而任何
时钟域都可以驱动任何LE。
寄存器的异步控制信号,如清位、复位或者预设等,都可以由
其他逻辑产生,也可以来自I/O引脚。
寄存器输出通过LE后驱动至器件布线通道,还可以反馈回LUT。
可以把寄存器旁路,产生严格的组合逻辑功能,也可以完全旁路LUT,只使用寄存器用于存储或者同步。
这种
灵活的LE输出级使其非常适合所有类型的逻辑操作。
FPGALE含有专门的进位逻辑和LAB中的寄存器链布线,为这些信号提供最短链接。
进位比特可以来自LAB中的其他LE,也可以来自器件中的其他LAB。
产生的进位比特可以输出到其他LE,或者器件互连中。
LAB中的LUT和进位逻辑可以被完全旁路,链接LAB中的所有LE寄存器,把它们
变成移位寄存器,这适合DSP工作。
和CPLD相比,进位逻辑和寄存器链布线的通用性进一步提高了性能,增强了对资源的管理。
注意:
由于LUT和寄存器都能够输出至器件中的任一位置,不论是位于相同的LAB中,
还是通过器件的布线通道。
因此,FPGALE可以配置完成寄存器封装功能。
采用
寄存器封装,一个LE可以输出两路不同的函数,一路来自LUT和进位链逻辑,
另一路来自输出寄存器。
只使用模块的组合逻辑部分,完全不相关的寄存器函数可以封装到一个LE中。
因此,这有助于节省器件资源。
目前为止,所讨论的FPGALE的确要比CPLD宏单元在设计上更加灵活,但还是需
要LE级联和反馈才能产生具有较多输入的函数。
为解决这个问题,一些高级FPGA使用
自适应逻辑模块(ALM)。
ALM和LE相似,但有一些重要优势。
首先,ALM包括两个输出寄存器,为逻辑链和寄存器封装提供更多的选项,在一个逻
辑模块中生成多个函数。
ALM还具有内置硬件加法器模块。
ALM中的加法器是专用资源,完成标准算术操作,不需要在LUT或者在DSP中生成这些数学函数。
这提高了数学性能,简化了LUT逻辑。
ALM中的LUT和LE的主要不同点是ALM中的LUT是自适应LUT,即ALUT°ALUT与LUT相似,但可以对它进行划分,配置为大小不同的LUT,以适应两种类型不同的函
数,包括最简单到非常复杂的函数。
所有8个输入都可以用于完成复杂算术函数,而ALUT
可以按照不同的方式来进行划分,实现简单函数。
例如,两个LUT,一个是3输入,一个是5输入。
还可以划分ALUT以支持更复杂的7输入函数,其额外的输入用于寄存器封装。
分成两个4输入LUT,使ALUT后向兼容标
准LE中的4输入LUT技术。
最后,如果两个函数之间可以共享输入,还能够进行其他方式的划分。
基于ALM的FPGA使用较少的资源和智能资源管理技术,大大提高了逻辑工作的性能。
1.3.2可编程布线
FPGA器件中的布线通道看起来简单,但实际上提供更多的功能和互连。
FPGA布线
通道使器件资源能够与芯片任何地方的所有其他资源进行通信。
老款的非FPGA器件是无
法实现的。
曼哈顿型布线通道及大小不同的固定长度逻辑段,大大简化了通过布线调整来达到设
计时序要求。
随着器件资源的增加,布线通道数量线性增长就可以连接所有的器件资源。
FPGA布线通道可以分成两类:
本地互连及行列互连。
本地互连直接连接LE或者LAB中的ALM,邻近LAB之间进行最短连接,称为直接链路。
另一类互连是行列互连。
这类互连的长度固定,跨过一定数量的LAB,或者整个器件。
LABI/O可以连接到本地互连,
实现高速本地操作,或者直接连接至行列互连,向芯片的其他部分发送数据。
1.3.3可编程I/O
FPGAI/O控制功能含在阵列边沿的模块中,所有器件资源都可以通过FPGA布线通道
使用该功能。
FPGA中的I/O模块通常被称为I/O单元。
I/O单元含有和老款CPLDI/O控制模块相同的基本功能,但是功能更丰富,使FPGAI/O单元非常适合用于所有类型的设
计。
除了基本输入、输出及双向信号,I/O引脚还支持多种I/O标准,包括多种最新的低电
压高速标准。
其他特性包括可变电流驱动能力和摆率控制等,以提高电路板级信号完整性。
上拉电阻形式的片内匹配功能有助于减少电路板上的匹配元件数量。
有些器件的I/O单元还含有
钳位二极管,使能后可以用做PCI总线的I/O。
根据设计需要