目录
可编程逻辑器件 CPLD/FPGA
基于查找表结构的FPGA
硬件描述语言
EDA软件
EDA技术的 应用领域
电子系统的设计方法
EDA (Electronic Design Automation,电子设计自动化) 以可编程逻辑器件 (Programmable Logic Device,简称PLD)为实现载体、以硬件描述语言 (Hardware Description Language,简称HDL)为主要设计手段、以EDA软件为设计平台、以ASIC (Application Specific Integrated Circuits,专用集成电路)或者SoC (System on- Chip,片上系统)为目标器件,面向电子系统设计和集成电路设计的一门新技术。
◆ 不用动手-用软件方式设计硬件电路,从软件设计到硬件实现的转换是由EDA软件自动完成的;
◆ 设计灵活-应用HDL描述数字电路和系统。
◆ 设计与测试一体化-在设计过程中可以很方便进行仿真分析和在线测试,以验证设计的正确性; ◆ 有丰富的设计资源-IP:乘法器/除法器、ROM/RAM、DSP、锁相环等;
◆ SOPC-使得系统体积更小、功耗更低、可靠性更高。
Intel SoC FPGA: 集成双核ARM/四核ARM RISC-V:基于精简指令集(RISC)原则的 开源指令集架构(ISA)ex: NIOS V
可编程逻辑器件 CPLD/FPGA
EDA以可编程逻辑器件(Programmable Logic Device)为实现载体、以硬件描述语言(HDL)为主要设计手段、以EDA软件为设计平台、以ASIC或者 SoC为目标器件,面向电子系统设计和集成电路设计的一门新技术。
可编程逻辑器件经历了从 PROM、EPROM、E2PROM 到 FPLA、PAL、GAL、EPLD 以及目前广泛应用的 CPLD 和 FPGA 的发展历程,在结构、工艺、功耗、规模和速度等方面都得到了重大的发展。
第一阶段从20世纪70年代初到70年代中期,主要有PROM、EPROM和E2PROM三类。这些器件结构简单、规模小,主要作为存储器件(Memory)使用,只能够实现一些简单的组合逻辑电路。
第二阶段从20世纪70年代中期到80年代中期,出现了PAL和GAL器件。这类器件内部由“与-或阵列”组成,同时又集成了少量的触发器,能够实现较为复杂的功能电路,并正式命名为PLD。
第三阶段从20世纪80年代中期到90年代末期,Altera公司和Xilinx 公司分别推出了CPLD (Complex PLD,复杂可编程逻辑器件)和 FPGA (Field Programmable Gate Array,现场可编程门阵列)。其中FPGA具有结构灵活、集成度高等优点,成为产品原型设计的首选。
第四阶段从20世纪90年代末至今,随着半导体制造工艺达到了纳米级,可编程逻辑器件的密度越来越大,出现百万门至上千万门的 FPGA。
目前,许多FPGA产品系列内嵌了硬件乘法器、硬核处理器和Gbits差分串行接口等,超越了ASIC的规模和性能,同时也超越了传统意义上FPGA的概念,不仅能够支持软硬件协同设计,而且还能够实现高速与灵活性的完美结合,使可编程逻辑器件的应用范围扩展到系统级,出现了SOPC (System On Programmable-Chip,在系统可编程)技术。
乘积项结构的PLD一般采用熔丝、E2PROM 或者Flash等ROM工艺制造的,加电后就能工作,断电后信息也不会丢失。另外,由于乘积项结构的PLD采用结构规整的与-或阵列结构,从输入到输出的传输延迟时间是可预期的,因此不易产生竞争-冒险,常用于接口电路设计中。
基于查找表结构的FPGA
FPGA的内部不再是由“与阵列”和“或阵列”构成,其基本逻辑单元称为查找表 (Look-Up-Table,简称 LUT),用户通过配置查找表对其逻辑功能进行定义。
基于查找表实现逻辑电路的原理是: 任意 n 变量逻辑函数共有 2n个取值组合,如果将 n 变量逻辑函数的函数值预先存放在一个 2n ×1 位的RAM中,然后根据输入变量的取值组合查找RAM中相应存储单元中的函数值,就可以实现任意 n 变量逻辑函数。用户通过配置 FPGA 查找表中RAM的数据,就可以用相同的电路结构实现不同的逻辑函数。
变量LUT的基本公式为 Y=D0m0+D1m1+D2m2+D3m3+..... +D14m14+D15m15 其中m0,...,m15为4变量逻辑函数的全部最小项。
要实现三变量逻辑函数 Y1=AB'+A'B+BC'+B'C 时,由于Y1可表示为 Y1=m1+m2+m3+m4+m5+m6 因此将16×1位的RAM中的数据配置成“0111_1110_0000_0000”即可。
若要实现四变量逻辑函数 Y2=A'B'C'D+A'BD'+ACD+AB' 时,由于Y2可表示为 Y2=m1+m4+m6+m8+m9+m10+m11+m15 因此,将16×1位的存储器中的数据配置成“0100_1010_1111_0001”即可。
FPGA内部包含以下三种基本资源:
(1) 可编程逻辑阵列块(LB);
(2)可编程输入/输出块(IOB/IOE);
(3)可编程内部互连网络。
由于LUT占用芯片的面积很小,因此 FPGA 具有很高的集成度,目前单芯片FPGA 的规模从几十万门到上千万门。 同时,基于 LUT 结构的 FPGA 比基于“与-或阵列”结构的 CPLD 具有更高的资源利用率,所以特别适合于实现大规模和超大规模数字系统。
FPGA 作为 ASIC 领域中的一种半定制电路出现的,既克服了 ASIC 的不足,又克服了 “与-或阵列”结构 PLD 资源利用率低的缺点。 FPGA 将 ASIC 集成度高和可编程逻辑器件使用灵活、重构方便的优点结合在一起,特别适合于产品原型设计或者小批量产品研发。
但是,由于 FPGA 基于查找表、采用“滚雪球”的方式实现逻辑函数,因此对于多输入-多输出的逻辑电路,从输入到输出的传输延迟时间是不可预期的,所以基于 FPGA 实现 的数字系统时容易产生竞争-冒险现象,设计时尽量采用同步时序电路以避免竞争-冒险。
Intel可编程逻辑器件, Intel公司还提供了EPCS系列串行Flash 存储器,用于固化FPGA的配置信息, 因此,习惯上称为EPCS配置器件。
MAX系列是业界突破性的、基于查找表结构的低成本CPLD。 MAX 系列CPLD用于替代由 FPGA、ASSP和标准逻辑器件所实现的多种应用,适合于接口桥接、电平转换、I/O 扩展和模拟 I/O 管理等应用场合。
硬件描述语言
EDA以可编程逻辑器件 (PLD)为实现载体、以硬件描述语言(Hardware Description Language)为主要设计手段、以EDA软件为设计平台、以ASIC 或者SoC为目标器件,面向电子系统设计和集成电路设计的一门新技术。
常用的硬件描述语言:
1. Verilog HDL;
2. VHDL;
3. SystemVerilog;
4. SystemC。
硬件描述语言 (Hardware Description Language,简称为HDL) 是用形式化方法来描述数字电路行为或者结构的计算机语言。
Verilog HDL 和 VHDL共同的特点:
(1)能够形式化抽象地描述电路的行为和结构;
(2)支持层次化描述;
(3)借用高级语言来描述电路的行为;
(4)具有电路仿真与验证机制以测试设计的正确性;
(5)支持电路描述由高层次到低层次的综合转换;
(6)硬件描述和实现工艺无关;
(7)便于文档管理;
(8)易于理解和重用。
Verilog HDL语法相对自由,而VHDL基于ADA语言开发,语法严谨
module MUX4to1(d0,d1,d2,d3,a,y);
input wire d0,d1,d2,d3;
input wire [1:0] a;
output reg y;
always @(d0,d1,d2,d3,a)
case (a)
2'b00: y = d0;
2'b01: y = d1;
2'b10: y = d2;
2:b11: y = d3;
default: y = d0;
endcase
endmodule
Verilog HDL是易学易用,具有广泛的设计群体
Verilog HDL在系统级描述方面比VHDL 略差一些,而在门级、开关级电路描述方面强得多。但是,随着 SystemVerilog 产生和发展,Verilog HDL 在系统级描述方面的能力大大增强。
SystemVerilog 在Verilog HDL的基础上,进一步扩展了Verilog HDL语言的功能,提高了Verilog的抽象建模的能力。 SystemVerilog的另一个显著特点是能够和芯片验证方法学结合在一起, 作为实现方法学的一种语言工具,大大增强模块复用性、提高芯片开发效率,缩短开发周期。
EDA软件
集成开发环境(IDE): Quartus II/Prime
集成开发环境(Integrated Development Environment,简称IDE)是可编程逻辑器件厂商,如Intel、Xilinx、Lattice和Actel等,针对自己公司的器件提供的集成开发环境,支持从设计输入,编译、综合与适配,以及编程与配置等开发流程的全部工作。
Intel公司的集成开发环境有原 Altera 公司早期的MAX+plus II和目前广泛使用的 Quartus II/Prime。
Xilinx 公司的集成开发环境有广泛使用的 ISE 和支持“All Programmable”概念的新版软件Vivado。
仿真软件:Modelsim
仿真软件用于对 HDL 设计进行仿真测试,以检查逻辑设计的正确性,包括布局布线前 的功能仿真和布局布线后的、包含了门延时和布线延时等信息的时序仿真。目前广泛应用的仿真软件有Mentor公司的 Modelsim 和 Aldec 公司的 Active-HDL 等。
Intel公司的 Quartus II 10.0及以上/Prime 集成开发环境中,均调用Modelsim等仿真软件进行仿真分析。
Mentor Technology公司还专门为Intel和Xilinx等公司提供了OEM (Original Equipment Manufacturer)版ModelSim,包含相应公司产品的库文件。因此,应用OEM版ModelSim时不需要编译库文件了,但OEM版Modelsim的性能低于SE/DE/PE版软件。
综合软件:synplify pro
综合工具用于将 HDL 或者其它方式描述的设计电路转换成能够在可编程逻辑器件或者 ASIC 中实现的网表文件,是由软件设计转换成硬件实现的关键环节。
目前,业界流行的 FPGA 综合工具有 Synplicity 公司(已经被 Synopsys 公司收购)的 Synplify Pro 以及 Altera 公司的 Quartus II/Prime和 Xilinx公司的 XST,ASIC 综合工具有Synopsys公司的 Design Compiler II 和Candence 公司的RTL Compiler。
EDA技术的 应用领域
(1) 通信行业 (移动通信+网络通信):主要用于信号处理和高速接口电路设计, 完成高速数据的收发和交换。这些应用通常需要采用具有高速收发接口的FPGA。
(2) 数字信号处理领域:FPGA支持并行计算,具有高速并行数据处理能力。随着 FPGA 密度和性能的不断提高,已经在很多领域替代了传统的多DSP解决方案。
(3) 高速数据采集:对于低速的A/D转换器,可以采用标准的SPI或者I2C接口进行通信和数据交换。但是,对于高速A/D转换芯片,就需要应用FPGA 做为数据采集接口,以满足高速性的需要。
(4) 在逻辑接口中的应用: 采用FPGA 实现,将接口逻辑设计在FPGA内部,因而能够大大简化系统外围电路设计。
电子系统的设计方法
(1) 自底向上 (Bottom-Up) 的设计方法
设计者从现有的元件库中选择适合的元器件来设 计功能模块,然后由功能模块组成子系统,再由子系统构成更高一级的子系统,逐级向上直到实现整个系统。
(2) 自顶向下 (Top-Down) 的设计方法
从系统顶层开始,把系统分解为功能模块,然后把 每个功能模块再分解为下一层次的模块,用一系列分层次的模块来表示复杂的数字系统,逐 层描述设计思想并进行仿真验证,直到可以用元件库中的元器件实现为止。
在复杂数字系统设计过程中,通常是将以上两种设计方法相结合,兼有以上两种方法的优点。在高层系统中用自顶而下的设计方法实现,而使用自底而上的方法从库元件或以往设计库中调用已有的单元电路来设计功能模块。