2.28k likes | 2.52k Views
可编程数字系统设计. -- CPLD 和 FPGA 应用. 主讲人:徐莹隽. 可编程数字系统设计. 可编程器件概述 常用的可编程数字系统的设计输入方式 常用 CPLD 和 FPGA 硬件结构 可编程数字系统设计中的几个基本概念 可编程数字系统设计中的组合逻辑设计 可编程数字系统设计中的时序逻辑设计 状态机的设计 VHDL 语言. 第一部分. 可编程器件概述. 常见术语. EDA ( Electronic Design Automatic )
E N D
可编程数字系统设计 --CPLD和FPGA应用 主讲人:徐莹隽
可编程数字系统设计 • 可编程器件概述 • 常用的可编程数字系统的设计输入方式 • 常用CPLD和FPGA硬件结构 • 可编程数字系统设计中的几个基本概念 • 可编程数字系统设计中的组合逻辑设计 • 可编程数字系统设计中的时序逻辑设计 • 状态机的设计 • VHDL语言
第一部分 可编程器件概述
常见术语 • EDA (Electronic Design Automatic ) 电子设计自动化技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子CAD通用软件包,它根据硬件描述语言HDL完成的设计文件,自动完成逻辑、化简、分割、综合、优化、布局布线及仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。 EDA主要辅助进行三个方面的设计工作: ♣ IC设计 ♠ 电子电路设计 ♥ PCB设计
常见术语 ESDA Electronic System Design Automatic 电子系统设计自动化 90年代,开始追求贯彻整个设计过程的自动化 FPGA(Field Programmable Gate Array) 现场可编程门阵列 CPLD (Complex Programmable Logic Device) 复杂可编程逻辑器件
常见术语 • HDL (Hardware Description Language) 硬件描述语言VHDL VerilogHDL 两种语言作为IEEE的标准支持从算法级到门级多种抽象设计层次数字系统建模。VerilogHDL语言最初起源于美国业界 ,从C语言中继承了多种操作符和结构 ,比VHDL更简练 ,并且由于VerilogHDL支持晶体管级设计层次 ,在进行ASIC设计时更为灵活。 VHDL语言最初是美国国防部资助的VHSIC项目开发的产品 , VHDL语言更为严谨 ,更易于被其他人理解 ,在较高抽象设计层次上比VerilogHDL更能准确快速地对数字系统建模
Input1…N IF input1 THEN FOR j IN high DOWNTO low LOOP shift(j) := shift(j); END LOOP; output1 <= shift AFTER 5ns 常见术语 • 行为描述模型 用输入/输出响应来描述器件的模型。其只描述电路的功能,而不是结构。同时不针对专门的硬件,用于综合和仿真
Input 1 Output 1 底层元件 底层元件 Input n Output n 常见术语 • 结构描述模型 用更低层次的器件的互连来描述器件的模型。它描述电路的功能和结构。
常见术语 • 寄存器传输级(RTL)用于综合的一种行为描述模型 • 综合(Synthesis) 将HDL转换为电路并对该电路进行一定的优化 • RTL Synthesis 将硬件的RTL模型转化为某种优化的特殊的门级电路来具体实现
RTL Synthesis A B C D Sel 等效 MUX_Out 2 a a d 转换 优化 d Process (a, b, c, d, sel) begin case (sel) is when “00” => mux_out <= a; when “01” => mux_out <= b; when “10” => mux_out <= c; when “11” => mux_out <= d; end case;
FPGA vs CPLD FPGA 是一种高密度的可编程逻辑器件,自从Xilinx公司1985年推出第一片FPGA以来,FPGA的集成密度和性能提高很快,其集成密度最高达1000万门/片以上,系统性能可达300MHz。由于FPGA器件集成度高,方便易用,开发和上市周期短,在数字设计和电子生产中得到迅速普及和应用。
FPGA vs CPLD CPLD 是由 GAL发展起来的 ,其主体结构仍是与或阵列 ,自从 90年代初 Lattice公司高性能的具有在系统可编程 ISP(In System Programmable)功能的 CPLD以来 ,CPLD发展迅速。具有 ISP功能的 CPLD器件由于具有同 FPGA器件相似的集成度和易用性 ,在速度上还有一定的优势
FPGA、CPLD的结构 FPGA器件 在结构上 ,由逻辑功能块排列为阵列 ,并由可编程的内部连线连接这些功能块来实现一定的逻辑功能
FPGA、CPLD的结构 CPLD 是将多个可编程阵列逻辑 (PAL)器件集成到一个芯片 ,具有类似 PAL的结构。一般情况下CPLD器件中至少包含三种结构 :可编程逻辑功能块 (FB);可编程 I/ O单元 ;可编程内部连线
FPGA vs CPLD • 集成度 FPGA可以达到比 CPLD更高的集成度 ,同时也具有更复杂的布线结构和逻辑实现 • 适合结构 FPGA更适合于触发器丰富的结构 ,而 CPLD更适合于触发器有限而积项丰富的结构 • 编程 CPLD通过修改具有固定内连电路的逻辑功能来编程 ,FPGA主要通过改变内部连线的布线来编程 ;FPGA可在逻辑门下编程 ,而 CPLD是在逻辑块下编程 ,在编程上 FPGA比 CPLD具有更大的灵活性
FPGA vs CPLD • 功率消耗 CPLD的缺点比较突出。一般情况下 ,CPLD功耗要比 FPGA大 ,且集成度越高越明显 • 速度 CPLD优于 FPGA。由于 FPGA是门级编程 ,且 CLB之间是采用分布式互连 ;而 CPLD是逻辑块级编程 ,且其逻辑块互连是集总式的。因此 ,CPLD比 FPGA有较高的速度和较大的时间可预测性 ,产品可以给出引腿到引腿的最大延迟时间
FPGA vs CPLD • 编程方式 目前的 CPLD主要是基于E2 PROM或 FLASH存储器编程 ,编程次数达 1万次。其优点是在系统断电后 ,编程信息不丢失。CPLD又可分为在编程器上编程和在系统编程 (ISP) CPLD两种。 FPGA大部分是基于 SRAM编程 ,其缺点是编程数据信息在系统断电时丢失 ,每次上电时 ,需从器件的外部存储器或计算机中将编程数据写入 SRAM中。其优点是可进行任意次数的编程 ,并可在工作中快速编程 ,实现板级和系统级的动态配置 ,因此可称为在线重配置的 PLD或可重配置硬件
FPGA vs CPLD • 使用方便性 CPLD比 FPGA要好。 CPLD的编程工艺采用 E2 CPLD的编程工艺采用 E2 CPLD的编程工艺采用 E2 PROM或FASTFLASH技术 ,无需外部存储器芯片 ,使用简单 ,保密性好。而基于 SRAM编程的FPGA,其编程信息需存放在外部存储器上 ,需外部存储器芯片 ,且使用方法复杂 ,保密性差
可编程器件选择 多片方案: 优点:每个芯片内功能相对单一,单片内逻辑设计和调试相对容易,简化系统实现的复杂度。 缺点:在整个系统调试时,不同子系统之间的信号调式较困难,在高速设计中存在明显缺陷。 单片方案: 优点:提高了系统的集成度,减少了故障点,降低系统时延,降低PCB布线复杂度 缺点:片内逻辑复杂度大,仿真激励波形和测试文件编写复杂,对设计人员要求较高 从系统设计的角度选择目标器件的基本原则 • 电磁兼容设计的原则能选用低速器件的不选择高速器件,以降低成本,减少电磁干扰 • 主流芯片原则要尽量选择厂家的主流推广器件,以降低成本,缩短供货周期 • 多片系统原则不一味追求单片化,可根据系统的实际情况适当选择多器件的结构,以加快设计过程,提高系统稳定性
可编程器件选择 引脚的绑定原则 1、尽量避免人为固定I/O引脚,除非是多次实现过程中可能存在的不固定I/O引脚 2、在FPGA中尽量避免将相关的引脚集中固定在相互靠近的位置,在CPLD中则根据器件实际情况具体分析 3、适当考虑或禁止使用双功能脚,若必须使用,应对引脚加接上拉或下拉电阻 4、在FPGA设计实现中,I/O脚一般从左向右,从上到下设定。 从器件资源的角度选择目标器件的原则 • 器件的逻辑资源和系统的逻辑要求相匹配特征单元评估法 • 器件的I/O脚的数目满足目标系统的要求专用功能脚用户功能脚双功能脚
部分FPGA厂家 Altera http://www.altera.com/ 九十年代以后发展很快,是最大可编程逻辑器件供应商之一。主要产品有:MAX3000/7000,FELX6K/10K, APEX20K,ACEX1K。 普遍认为其开发工具—MaxplusII是较成功的PLD开发平台。新近推出的新一代完全集成设计环境Quartus提供了对APEX20K系列芯片的最好支持,弥补了MaxplusII某些功能的不足。
部分FPGA厂家 Lattice http://www.latticesemi.com/ Lattice是ISP技术的发明者,ISP技术极大的促进了PLD产品的发展,与ALTERA和XILINX相比,其开发工具比ALTERA和XILINX略逊一筹。中小规模PLD比较有特色,而且参考书较多,不过其大规模PLD的竞争力还不够强(Lattice没有基于查找表技术的大规模FPGA) 1999年推出可编程模拟器件。99年收购Vantis(原AMD子公司),成为第三大可编程逻辑器件供应商。主要产品有ispLSI2000/5000/8000, MACH4/5
部分FPGA厂家 Xilinx http://www.xilinx.com/ FPGA的发明者,老牌PLD公司,是最大可编程逻辑器件供应商之一。产品种类较全,主要有:XC9500/4000,Coolrunner(XPLA3) ,Spartan, Vertex 。开发软件为:Foundition3.1i 。通常来说,在欧洲用Xilinx的人多,在日本和亚太地区用ALTERA的人多,在美国则是平分秋色。全球PLD/FPGA产品60%以上是由Altera和Xilinx提供的。可以讲Altera和Xilinx共同决定了PLD技术的发展方向。
部分FPGA厂家 Actel http://www.actel.com/ 反熔丝(一次性烧写)PLD的领导者,由于反熔丝PLD抗辐射,耐高低温,功耗低,速度快,所以在军品和宇航级上有较大优势。ALTERA和XILINX则一般不涉足军品和宇航级市场。
第二部分 常用的可编程数字系统设计方法
可编程数字系统设计流程 设计输入 HDL综合 布线前仿真 目标编译 布线后仿真 在系统编程
自顶向下设计法 • 采用可完全独立于芯片厂商及其产品结构的描述语言,在功能级对设计产品进行定义 • 利用功能仿真技术,以确保设计的正确性 • 利用逻辑综合技术,把功能描述转换成某一具体结构芯片的网表文件,输出给厂商的布局布线器进行布局布线。 • 布局布线结果反标回同一仿真器,进行包括功能和时序的后验证,以保证布局布线所带来的门延时和线延时不会影响设计的性能。
自顶向下设计法优点 • 大大缩短了设计周期由于功能描述可完全独立于芯片结构在设计的最初阶段,设计师可不受芯片结构的约束,集中精力进行产品设计,进而避免了传统设计方法所带来的重新再设计风险,大大缩短了设计周期。 • 设计的再利用得到保证目前的电子产品正向模块化发展,所谓模块化就是对以往设计成果进行修改,组合和再利用,产生全新的或派生设计,而自顶向下设计方法的功能描述可与芯片结构无关。因此可以以一种IP的方式进行存档,以便将来的重新利用。
自顶向下设计法优点 • 设计规模大大提高简单的语言描述即可完成复杂的功能,而不需要手工绘图。 • 芯片选择更加灵活设计师可在较短的时间内采用各种结构芯片来完成同一功能描述,从而在设计规模、速度、芯片价格及系统性能要求等方面进行平衡,选择最佳结果。
层次化设计方法分层原则 • 将所有的算术运算安排在同一层中,状态机、随机逻辑、数据路径等逻辑类型作为独立的模块设计 • 模块的输入尽量不要悬空,输出应尽量寄存。 • 单个功能块应保持在3000~6000门之间,HDL语言的行数不超过400行 • 尽量采用专用的IP核进行设计
HDL • VHDL具有强大的行为描述能力,丰富的仿真语句和库函数,对设计的描述也具有相对独立性 • Verilog 最大特点就是易学易用,语法比较自由 • ABEL一种早期的硬件描述语言支持逻辑电路的多种表达形式,其中包括逻辑方程,真值表和状态图。 • AHDL(Altera HHDL) 是ALTERA公司发明的HDL,特点是非常易学易用,学过高级语言的人可以在很短的时间(如几周)内掌握AHDL。它的缺点是移植性不好,通常只用于ALTERA自己的开发系统。
VHDL • VHDL语言最初于1981年由美国国防部为解决所有电子产品存档而提出的一种统一标准语言,1983年至1985年,由IBM、TI等公司对VHDL进行细致开发,1987年成为IEEE 1076’87标准。1993年,修订版IEEE 1076’93出台。随后,IEEE分别提出IEEE 1076 3(可综合标准)和IEEE 1076.4(VITAL标准),以解决可综合VHDL描述在不同EDA厂商之间的移植问题,以及ASIC/FPGA的门级库描述问题。
VERILOG • VERILOG语言最早由GATEWAY设计自动化公司于1981年提出,并提供相应的VERILOG仿真器。1985年,仿真器增强版VERILOG-XL推出。CADENCE公司于1989年收购GATEWAY公司,并于1990年把VERILOG语言推向市场,而保留了VERILOG-XL的所有权。1995年, VERILOG成为IEEE 1364标准。
VHDL & VERILOG • 描述能力 两种语言均可有效地描述RTL级, 在行为/系统级,Verilog需要PLI的支持,门级及以下级Verilog则有较大的优势。 • 数据类型VHDL提供大量的数据类型,设计者还可自定义一些数据类型。很多数据类型对于设计描述是非常方便的,如枚举型等。 Verilog的数据类型相对比较简单,所有数据类型由语言定义,设计者不可自定义数据类型。 由于VHDL语法非常严格,数据操作必须在相同数据类型之间进行,优点是设计明了,不易产生设计错误;缺点是需要使用数据类型转换函数进行不同类型数据之间的运算操作。 Verilog可在不同字长数据间进行操作,语句比较简单,但设计者必须掌握尺度,否则可能产生不可预料的综合结果。
VHDL & VERILOG • 运算操作 两种语言比较相似。例外是Verilog中无求幂运算、与非、或非、算术左/右移、循环左/右移等。但有非常有用的约简运算,在VHDL中则可通过循环语句完成这一算法。 • 结构描述VHDL语言中有丰富的语法定义来帮助设计者进行高层次结构管理、参数化设计和处理较大规模的电路。如Package,Configuration,Generate,Generic等,并可运用于逻辑综合。Verilog除参数化设计外,则无相应的语法定义,但在门级描述方面有较大的优势,被广泛采用进行ASIC和FPGA库的开发。这与Verilog语言本身最初的设计思想有关。目前,IEEE 1076.4标准解决了VHDL门级描述的问题。
VHDL & VERILOG • 库VHDL可通过库的方式来管理和存储编译后的设计数据,过程和函数可写在Package中,以便不同设计的调用。 Verilog没有Package和库的概念,过程和函数的再利用需通过Include语句。 • 易用性VHDL是语法非常严格的语言,同时,对于同一功能模块,描述方法可以有各种形式,因此,VHDL对于初学者较为困难,但对高级用户来说,却是强有力的编程语言。 如果不考虑PLI以及仿真编译的指令集部分,Verilog要比VHDL容易得多,但一旦考虑这些因素,设计者相当于需要学习三种语言。
VHDL & VERILOG • 市场份额 在国内,目前FPGA设计者多采用VHDL,日本市场Verilog一统天下,欧洲市场VHDL占主流,而在美洲市场,两种语言平分秋色。 • 结论 就标准而言,两种语言并无优劣、先后可言。至于设计者采用哪种语言,与设计者的习惯、喜好以及目前EDA、FPGA行业的支持有关。由于VHDL在系统设计方面的语法支持,各FPGA厂商对VHDL语言的支持明显多于Verilog,这可从各厂商所提供的设计开发包中得到明证。而Verilog由于在门级描述上的优势,从而被众多的IC设计人员所采用。
设计工具的选择—输入方法 • 图形化设计输入方法: 以方框图、真值表、状态图或流程图的方式进行功能描述,工具本身可自动生成HDL描述。 这种方法有利于HDL语言初学者, 更贴切于设计人员的思维方式, 易于设计数据管理,设计师的经验交流,以及设计产品的存档、再利用等。
设计工具的选择—输入方法 • HDL语言标准的支持 工具应当充分支持VHDL IEEE 1076’87及93标准,充分支持Verilog IEEE 1364标准。 • VHDL/Verilog混合描述环境支持HDL语言有两种国际标准,不同设计人员、设计小组、设计单位间可能采用不同的语言环境。设计工具必须做到支持混合语言环境。 • IP支持支持对设计成果的调用。
设计工具的选择—输入方法 • 差错定位能力 设计过程中不可避免地会产生各种错误,包括输入错误、语法错误、编译错误等。设计工具必须具备自动定位错误的能力,而无需人工查找,这对于较大的设计是非常有用的。 • 设计调试能力 以各种生动形象的方式进行设计调试(如状态图的动画调试),检查设计本身的功能错误。
设计工具的选择—输入方法 • 设计数据管理 当设计规模增大后,设计数据也随之增加,设计工具应能自动管理设计数据,特别是设计过程中不可避免需要对设计进行修改,能否自动识别修改与未修改数据,直接影响设计者的效率。工具还应当支持小组设计,数据版本管理等。 • 即插即用能力 即工具的开放性,工具应当具有开放的数据结构,能够与目前EDA业界最优秀的工具结合使用,保护用户投资。 • 易用性工具应有友好的用户界面,完整的在线文档帮助。设计结果文档的生成,不同平台的支持,以及各平台间的数据统一等。
设计工具的选择—仿真工具 由于设计规模的增加以及设计复杂度的提高,仿真器的仿真速度和仿真容量成为衡量仿真器的最重要因素,这包括行为级、RTL级和门级,其它考虑因素包括: • HDL语言标准支持包括对VHDL IEEE1076’87、IEEE1076’93、IEEE1076.4和Verilog IEEE1364标准的完全支持 • VHDL / Verilog混合仿真环境支持 • 仿真调试能力
设计工具的选择—仿真工具 • FPGA厂商的支持 • 系统仿真能力主要是对外部模块的调用仿真能力,如C语言等 • 易用性如友好的用户界面、在线文档帮助、数据管理、平台支持、平台间的数据统一等
设计工具的选择—逻辑综合工具 逻辑综合是自顶向下设计方法过程中的最重要环节。逻辑综合工具的好坏直接影响设计产品的性能。在选择逻辑综合工具时,应当考虑以下因素: • 不同厂商及其芯片系列的支持 目前FPGA厂商众多,给设计师提供了广泛的选择空间,综合工具应当最大程度地支持不同厂商。同时应当保证对各厂商最新芯片的快速响应。
设计工具的选择—逻辑综合工具 • 针对不同厂商芯片结构的算法支持FPGA综合不同于ASIC,对于ASIC而言,其结构无非包括门阵列和标准单元两种,差别在于所选择的工艺不同。而不同厂商的FPGA,甚至同一厂商不同系列的产品,都存在结构上的差别,是否考虑不同的芯片结构,采用不同的优化算法,以便得到相应的最优结果,成为考查综合工具的最关键因素。
设计工具的选择—逻辑综合工具 • 综合结果性能 逻辑综合的目的不仅是简单地用某一芯片完成设计功能,更重要的是在于在满足设计功能和性能要求的同时,以尽量较低档次(门数和速度)的芯片来实现设计要求。这样就可以降低设计者在芯片上的开销。 • 设计的再利用 设计师以往的设计大多采用原理图的方法进行描述,并生成一些特定的网表文件,如EDIF,XNF等。逻辑综合工具应当支持对这些网表文件的读入能力,以便保护设计者以往的设计成果。
设计工具的选择—逻辑综合工具 • 综合速度即综合工具的运算速度。 • 设计规模 对大规模设计的支持能力,能否支持设计的层次结构管理。 • 设计的调试、错误定位能力 能够很好地在HDL语言和综合电路之间建立数据联系,便于设计调试、查错以及对综合结果的理解。 • 时序优化能力 不仅可以做到面积和延时的优化,还应当具有基于设计者时序约束(如时钟周期,信号的时序要求等)的时序优化能力。
设计工具的选择—逻辑综合工具 • 芯片的重映射 支持不同结构的FPGA之间的相互映射,FPGA到ASIC以及ASIC到FPGA的重映射。 • VHDL/Verilog语言的标准支持 • VHDL/Verilog混合描述环境支持 • 与后端工具的集成能力 即与各FPGA厂家布局布线器的无缝连接,支持厂商的特定网表格式,综合约束条件到布局布线器的传递等。 • 易用性
常见的HDL工具 • FPGAExpress:VHDL/VerilogHDL综合软件,简单易用,但有人反映其对VerilogHDL的支持不够强, Synopsys公司出品。 • FPGA CompilerIIVHDL/VerilogHDL综合软件,Synopsys公司出品 • Leonardo.Spectrum:VHDL/VerilogHDL综合软件,可以加比较多的约束条件。可控性较强。Exemplar Logic公司出品(Mentor子公司)。
常见的HDL工具 • Synplify : VHDL/VerilogHDL综合软件。Synplicity公司出品。 • Active HDLVHDL/VerilogHDL仿真软件,简单易用。Aldec公司出品 • Modelsim: VHDL/VerilogHDL仿真软件,功能比ActiveHDL强大,使用比ActiveHDL复杂。Mentor公司出品。