PLD简介及设计流程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PLD简介及设计流程
一、PLD简介
PLD(Programmable Logic Device,缩写为PLD)种类繁多,国际著名的PLD生产厂家有ALTERA、XILINX、Lattice及AMD等。
各厂家还有多种不同型号,不同厂商生产的PLD器件结构差别也较大。
但是,由于PLD的设计并不需要了解过多的PLD的内部结构,对于有数字电路基础的PLD初学者,甚至可以不需要了解PLD结构就可以进行初步设计。
因此,高密度可编程逻辑器件近年来发展很快,目前已有集成度高达300万门以上、系统频率为100MHz 以上的密度可编程逻辑器件(HDPLD)供用户使用。
高密度可编程逻辑器件的使用,使得现代数字系统的设计方法和设计过程发生了很大的变化,现在一个数字系统已经可以装配在一块芯片上,即所谓的片上系统(System On Chip,简称SOC)、这样制成的设备体积小、重量轻、可靠性高、成本低,维修也更加方便。
FPGA(Field Programmable Gates Array,现场可编程门阵列)与CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)都是一种用户可编程逻辑器件(统称为PLD),它们是在PAL、GAL等逻辑器件的基础上发展起来的。
同以往的PAL和GAL相比,FPGA/CPLD规模比较大,适合于时序、组合逻辑电路应用场合,它以其编程方便、集成度高、开发周期短、速度快、价格合理等特点越来越受到广大电子设计人员的青睐。
FPGA与CPLD的区别主要是其结构特点和工作原理,通常的分类方法是:
●将基于乘积项可编程结构(即可编程的与阵列和固定的或阵列结构)的器件称为
CPLD,如Lattice的ispLSI系列、Xilinx的XC9500系列、Altera的MAX系列等。
●将基于SRAM查表法结构方式的器件称为FPGA,如Xilinx的SPARTAN系列、
Altera的Stratix、ACEX、APEX和FLEX系列等。
随着百万门级的FPGA的推出,单片系统成为可能,Altera提出的概念为SOPC(System on Programmable Chip),即可编程片上系统,将一个完整的系统计成在一个可编程逻辑器件中。
为了支持SOPC的实现,方便用户开发与应用,Altera提供了众多性能优良的宏功能模块、IP(Intellectual Property,即知识产权)核以及系统集成等完整的解决方案。
这些宏功能模块和IP核都经过了严格的测试,使用这些模块可以大大减小设计风险,缩短开发周期。
Altera能够提供的宏功能模块和IP核包括了数字信号处理(如FIR、FFT及乘法器等)、图像处理(如旋转、压缩和过滤等)、通信(如信道解码、Viterbi编解码和Turbo编解码等)、接口(如PCI、USB和CAN等总线接口)、处理器及外围功能模块(如Nios嵌入式处理器、微控制器、CPU核、UART和中断控制器等)。
由于PLD的发展和广泛应用,以及半导体技术、集成技术和计算机技术的发展,电子系统的设计方法和设计手段发生了很大的变化,特别是电子设计自动化EDA(Electrical Design Automation)技术的发展和普及给电子系统设计带来了革命性的变化。
传统的“固定功能集成块+连线”的设计方法逐步地退出历史舞台,而基于芯片(可编程逻辑芯片)地设计方法正在成为现代电子系统设计的主流。
只要拥有一台计算机、一套相应的EDA软件和一片可编程逻辑器件,在实验室就可以完成数字系统的设计和实现。
二、PLD设计流程
图A1.1 Top -Down 设计 现代的数字系统设计普遍使用自顶向下(Top —Down)的设计方法,这里的“顶”就是指系统的功能;“向下”就是指将系统由大到小、由粗到精进行分解,直至可用基本模块实现。
自顶向下设计方法的一般过程大致上可以分为四步,如图A1.1所
示。
明确系统功能:对要设计的系统的任务、要求、原理以及使用
环境等进行充分调研,进而明确设计目标、确定系统功能,是一件
至关重要的事。
因为只有把它做好了,后面的设计工作才有意义,
才有效率。
俗话说,磨刀不误砍柴工,就是这个道理。
确定总体方
案:明确了设计目标、确定系统功能之后,接下来要做的工作就是
根据系统功能确定出系统设计的总体方案。
采用什么原理和方法来
实现预定功能,是这一步中必须认真考虑的事。
因为同一功能的系
统有多种工作原理和实现方法可供选择,方案的优劣直接关系到所
设计的整个数字系统的质量,所以必须周密思考、反复比较和慎重
选择。
总的原则是,所选择的方案既要能满足系统的要求,又要具
有较高的性能价格比。
可以毫不夸张地说,这一步是整个设计工作中最为困难也最体现设计者创造性的一个环节。
系统具体实现:系统方案确定以后.再从结构上对系统进行逻辑划分,导出系统的结构框图。
一般把系统从逻辑上划分为数据子系统和控制子系统两部分。
然后,再将各自划分为多个子系统模块,各模块的输入、输出信号要明确,有利于团队工作。
这些子系统就可以依据基础的数字设计确定具体电路实现。
系统如果有控制算法也包括选择控制算法及实现。
系统仿真实现:系统设计完成之后,最好先采用EDA 软什对所设计的系统进行仿真后再用具体器件搭电路.以保证系统设计的正确性和可靠性。
电路实现时,一般按自底向上的顺序进行。
这样做不仅行利于单个电路的调试,而且也利于整个系统的联调。
因此,严格地讲,数字系统的完整设计过程应该是“自顶向下设计。
自底向上集成”。
当各个子系统确定后,就需要借助于EDA 软件进行系统设计实现。
图A1.2是基于EDA 软件的PLD 开发流程框图,由框图可见设计主要包括设计输入、设计处理、功能仿真和时序仿真、器件编程或下载和系统测试五个部分,以下分别介绍各部分的功能特点。
图A1.2 FPGA / CPLD 设计流程
1.设计输入
设计输入是在EDA 平台上对PLD 开发的最初步骤。
使用较多的输入方式有两种类型:图形输入和硬件描述语言(Hardware Description Language ,缩写为HDL )输入。
图形输入通常包括原理图输入、状态图输入和波形图输入三种,其中原理图输入是一种类似于传统设计的原理图输入方式,即在EDA 软件的图形编辑器界面上绘制已设计好的能完成特定功能的电路原理图,方法与用PROTEL 作图类似,具体方法在MAX +PLUS Ⅱ设计向导中介绍。
HDL 输入方式是文本格式,所以比原理图输入简单,使用EDA 的文本编辑器即可完成。
有些编辑器还带有语法提示功能。
硬件描述语言(HDL )顾名思义是用语言描述电路,直接用于电路的设计,推动了电子设计自动化EDA 进入了电子系统设计自动化时代。
目前,国际上越来越多的EDA 工具接受HDL 语言作为设计输入,如Mentor Graphics 的Autologic Ⅱ、Candence 的SPW 和Altera 的MAX +PLUS Ⅱ等都可以解决从系统的高层次行为描述直接生成ASIC 器件的一系列技术问题。
目前广泛应用的有AHDL (Altera Hardware Description Language )、VHDL (Very High Speed Integrated Circuit Hardware Description Language ,V 为VHSIC 的缩写)和Verilog HDL ,其中VHDL 和Verilog HDL 都是IEEE 标准的硬件描述语言。
VHDL 语言的语法严谨,适合复杂系统的设计。
Verilog HDL 的语法近似C 语言,可读性强、容易掌握,对底层电路的描述功能更强,适合ASIC 设计。
使用HDL 进行电路设计与传统的计算机软件编程十分类似,都是在编辑器下输入原始程序设计,通过工具将设计“翻译”、“装配”产生最后执行文件。
通过以下的对比的可以帮助理解使用HDL 的电路设计。
2.设计处理
设计输入后,MAX +PLUS Ⅱ对设计的处理是通过Compiler 命令,Compiler 从设计文件中读取信息并产生编译网表文件、适配器Fitter 产生报告文件(*.rpt )、时序仿真文件(Simulation Netlist File ,缩写为SNF )、Assembler 生成一个或多个目标文件及设计输入存在的错误报告。
自动错误定位
MAX +PLUS Ⅱ对设计Compiler 处理后,如果设计有错误或警告信息,则给出Messages -Compiler 窗口,列出所有信息,双击每条信息则会在原始设计文件上高亮度显示错误位置,同时可以使用信息在线帮助(Help on Message )了解引起该错误信息的原因(CAUSE )以及解决的方法(ACTION )。
输出执行文件
产生的中间文档输入命令软件命令软件件创建一个或多个目标文(产生网表文件)
和或输出、或流程对比:
描述与熟悉的软件设计Compiler PLUS M AX Compiler PLUS M AX Assembler Fitter ).*(*.)(*.ker )
.*().*(*.HDL )(++⇒⇒⇒Netlist Synthesuze Logic hdl v Editor exe Lin obj Assembler Compiler asm c Editor
新的EDA 应用软件不断涌现,大家在使用这些软件时,要充分利用软件提供的Help 信息。
比如,使用MAXPLUS Ⅱ软件编译工程时出现问题,则会弹出图A1.3所示的Messages -Compiler 窗口,其中会罗列编译出现的所有问题,该例子中只有一个问题(Message 0 of
1),鼠标选中某错误信息,然后点击Help on Message 按钮,则可以查看引起该Messages 的原因(CAUSE )和处理方法(ACTION )。
也可以求助于MAXPLUS Ⅱ软件的提供的Help ,在Help/Messages 中按字母顺序列举了所有的信息,右键点击要查找的Messages 的第一个字母(比如,该图中信息的第一个字母为U )则直接跳到该字母开头的所有信息处,这样就很容易地发现问题和解决问题。
介绍这一段内容是希望大家学习任何一种软件时,应该充分发挥其在线帮助(Help )的作用,它是最方便、全面的教师。
逻辑综合与适配
逻辑综合(Logic Synthesize )器是目标器件结构细节、数字电路设计技术、化简优化算法以及计算机软件的复杂结合体。
HDL 综合器是将软件设计的HDL 描述与硬件结构挂钩,是将软件转换为硬件的关键一步,它将电路的高级语言描述转换成可与FPGA/CPLD 的基本结构相映射的网表文件或程序。
整个综合过程就是将设计者的文本或图形设计,依据给定的硬件器件结构和约束控制条件进行编译、优化、转换和综合,最终获得门级甚至更底层电路的描述网表文件(.edf )。
比较常用的性能良好的FPGA/CPLD 设计的HDL 综合器主要有:Synopsys 公司的FPGA Compiler 、FPGA Express ;Synplicity 公司的Synplify Pro ;Mentor 子公司Exemplar Logic 的LeonardoSpectrum 综合器。
多数EDA 软件都有内置的逻辑综合器。
适配器也称为结构综合器,它包括底层器件配置、逻辑分割、逻辑优化、布局与布线等。
它的功能是将综合器产生的网表文件配置于指定的目标器件并产生多种用途的文件,比如,对CPLD 编程的POF 、ISP 、JEDEC 等格式的文件;对FPGA 配置的SOF 、JAM 、BIT 等文件;面向第三方EDA 工具的输出文件EDIF 、VHDL 或V erilog 格式文件;适配技术报告文件(.rpt )及用于作精确的时序仿真文件SCF 等,其中报告文件展示设计的具体实现以及器件中未使用的资源。
适配器通常由FPGA/CPLD 供应商提供,因为适配器直接与器件的结构细节对应。
多器件划分
如果设计太复杂无法装入一个PLD 器件,Compiler 的Partitioner 模块可以将设计进行划分以装入同一个器件系列的多个器件中。
3.功能仿真和时序仿真
功能仿真是直接对VHDL
、原理图描述或其他描述形式的逻辑功能进行测试模拟,以
图A1.3 编译出错信息窗口
了解其实现的功能是否满足原设计要求的过程,仿真过程不涉及任何具体器件的硬件特性。
在设计项目编辑编译后即可进入门级仿真器进行模拟测试。
直接进行功能仿真的好处是设计耗时短,对硬件库、综合器等没有任何要求。
时序仿真是接近真实器件运行特性的仿真,仿真文件中包含了器件硬件特性参数,比如,硬件延迟信息。
因而仿真精度高。
通常首先进行功能仿真,待确认设计文件所表达的功能满足设计者原有意图时,即逻辑功能满足要求后,再进行综合、适配和时序仿真,以便把握设计项目再硬件条件下的运行情况。
4.器件编程或下载
编程是将适配后生成的下载或配置文件,通过编程器或下载电缆向CPLD或FPGA进行编程,即将设计下载到对应的实际PLD,以便进行硬件测试和验证。
通常将对FPGA中的SRAM进行直接下载的方法称为配置(Configure),对CPLD、OTP FPGA及FPGA的专用配置ROM的下载称为编程(Program)。
5.系统测试
将含有载入了设计的FPGA或CPLD硬件系统进行统一调试,验证设计项目在目标系统上的实际工作情况,排除错误,改进和完善设计。
参考文献
[1] 潘松,黄继业编著.EDA技术实用教程.北京:科学出版社.2002
[2] 邓元庆主编.数字电路与逻辑设计.北京:电子工业出版社.2001
[3] 宋万杰等编著.CPLD技术及其应用.西安:西安电子科技大学出版社.2000
[4] 潘松等编著.现代DSP技术.西安:西安电子科技大学出版社.2003
[5] 胡师贤著.IC设计入门.台湾.学贯行销股份有限公司.2002。