1、第1章 现代数字系统设计技术概述1.1 概述概述 1.2 现代数字系统的设计流程现代数字系统的设计流程 1.3 EDA软件工具简介软件工具简介 1.4 现代数字系统设计的发展趋势现代数字系统设计的发展趋势小结小结1.1 概概 述述1.1.1 可编程逻辑器件可编程逻辑器件PLD概述概述随着科学技术的进步,电路系统的基本硬件已从电子管、晶体管、小规模集成电路SSI、中规模集成电路MSI,发展到了超大规模集成电路VLSI及巨大规模集成电路GSI,数字集成电路已得到非常广泛的应用,而微处理器和专用集成电路ASIC的广泛应用提高了系统的可靠性与通用性,它已逐渐取代了通用全硬件LSI电路。ASIC以其体积
2、小、重量轻、功耗低、速度快、成本低、保密性好等特点脱颖而出,占据了较大的市场份额。图1.1 数字系统中ASIC的分类 1全定制全定制ASIC全定制ASIC设计是基于晶体管级、手工设计版图的制造方法。设计人员从晶体管的版图尺寸、位置和互联线开始设计,以达到芯片面积利用率高、速度快、功耗低的最优化性能。设计者对于电路具有完全的控制权,各层掩模都是按照特定电路功能专门制造的,这种设计方式可以最大限度地实现电路性能的优化。全定制ASIC要求设计人员具有半导体材料和工艺技术知识,还具有完整的系统和电路设计的工程经验。全定制ASIC由于其设计周期很长,设计时间和成本非常高,市场风险非常大,因此多用于大批量
3、的ASIC产品,例如微处理器、高压器件、A/D转换器和传感器等专用芯片。2.半定制半定制ASIC半定制ASIC是一种约束性设计方法,它是在芯片上制作一些具有通用性的单元元件或元件组的半成品硬件,用户仅需考虑电路逻辑功能和各功能模块之间的合理连接即可。这种方法简化了版图设计,提高了设计效率和性价比。对于产量规模不大的器件,可以直接采用这种方式进行生产。半定制ASIC按照逻辑实现的方式不同可以分为门阵列、标准单元和可编程逻辑器件PLD(Programmable Logic Device)。门阵列是在硅片上按照某种规范的方式制造出大量的标准门(晶体管阵列),但没有进行相互的连接。用户在设计时,根据电
4、路的功能要求,将对应的逻辑关系表达为晶体管的互连关系,再将这种互连关系转换为连线版图,从而在门阵列基础上实现所设计的电路,它是较早使用的半定制ASIC 设计方法。与全定制ASIC设计相比,这种方式涉及工艺少、造价低,适合于小批量的ASIC设计。门阵列设计的缺点是芯片面积利用率低,灵活性差,对设计限制过多。标准单元是在外部尺度规范条件下对各种常用的逻辑功能单元(各种组合逻辑或时序逻辑单元)进行物理版图级的设计,形成标准单元,并创建版图单元库,包括SSI逻辑块、MSI逻辑块、数据通道模块、微处理器以及I/O电路的专用单元阵列,供用户调用以设计不同的芯片。在标准单元设计中,所有的连线、接触点、过孔、
5、通道已完全确定,设计者通常按照性能优化原则,根据特定的工艺条件,通过调整每个晶体管的宽度,可以在性能和面积上做到最大限度的优化。标准单元设计完毕后可以形成对应的工艺掩模文档,以便在以后的设计中重复使用。用标准单元设计ASIC比门阵列具有更加灵活的布图方式,可以根本解决布通率问题,是目前ASIC设计中应用广泛的设计方法之一。门阵列法和标准单元法设计的ASIC共有的缺点是与IC设计工艺密切相关的。一旦工艺发生变化,则标准门或标准单元库要随之更新,这是一项十分繁重的工作。另外,需要投入大量的成本和时间,才能制作出全套的工艺掩模和相关的工艺检测系统,一旦产品检验不合格,设计需要修改,将导致巨大的损失。
6、可编程逻辑器件实质上是门阵列及标准单元技术的延伸和发展。可编程逻辑器件是一种半定制的逻辑芯片,但与门阵列和标准单元不同,芯片内的硬件资源和连线资源是由厂家预先定制好的,可编程逻辑器件的逻辑功能由用户通过EDA软件和编程器对其逻辑结构进行重新设定,它既具有硬件电路的工作速度又具有软件可编程的灵活性。可编程器件设计不需要制作任何掩模,基本不考虑布局布线问题,设计成本低。它在设计中主要考虑逻辑功能的实现,不需要考虑具体单元器件的实现,设计周期短。由于可编程器件的编程工艺都可以反复写入和擦除,设计中存在任何问题可以马上进行修改,不需要付出硬件代价,所以设计的风险低。PLD从20世纪70年代发展到现在,
7、已形成了许多类型的产品,其结构、工艺、集成度、速度和性能都在不断地改进和提高。最早期的可编程逻辑器件有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM),其后出现了结构上稍复杂的可编程芯片,它能够完成各种数字逻辑功能,这一阶段的产品主要有可编程阵列逻辑(PAL)和通用阵列逻辑(GAL)。由于受到结构规模的限制,以上这些PLD只能完成简单的数字逻辑功能,称为简单低密度PLD器件。进入90年代后伴随着铜微处理器硅芯片技术的发展,可编程逻辑器件在体积与性能上得到了更良好的体现,出现了复杂高密度PLD器件,如1984年Xilinx公司发明的现场可编程
8、门阵列FPGA(Filed Programmable Gate Array)以及随后出现的复杂可编程逻辑器件CPLD(Complex Programmable Logic Device),它们直接面向用户,具有极大的灵活性和通用性、使用方便、开发效率高、成本低以及工作可靠性好等特点,因而很快得到普及和应用,发展非常迅速。近十余年来,FPGA/CPLD作为可编程逻辑器件的一个重要分支,其在结构、密度、功能、速度、性能等方面都取得了飞速的发展,如出现了集成度超过千万门、时钟频率超过千兆赫、数据传输位数达到每秒几十亿次的可编程逻辑器件。利用CPLD和FPGA来进行专用集成电路设计是目前最为流行的方式
9、之一。如今电子设计工程师只需一台计算机、一套与器件相应的开发软件和FPGA/CPLD芯片就能在实验室或家中通过对FPGA/CPLD编程实现各种复杂的专门用途的数字集成电路,即所谓的可编程ASIC。但是,由于FPGA/CPLD的硬件资源和连线资源是厂家预先定制好的,设计者对于可编程ASIC电路设计的控制权有限,从而使得全定制或标准单元设计的ASIC在性能、速度和单位成本方面不具有竞争性。此外,也不可能用可编程ASIC去取代通用产品,如CPU、存储器、A/D和D/A等的应用。为了避免设计的风险,在开发新的系统时通常采用FPGA/CPLD进行初步设计以验证系统设计的正确性,这已经成为一种标准的方法。
10、在设计过程中,往往先利用EDA工具完成软件仿真,再利用可编程ASIC器件FPGA/CPLD进行硬件仿真,在可编程ASIC器件实现设计后,通过版图设计、芯片测试、制版和流片转成ASIC电路。1.1.2 电子设计自动化技术概述电子设计自动化技术概述现代数字系统设计领域中的电子设计自动化EDA(Electronic Design Automation)技术是随着计算机辅助设计技术的提高和可编程专用集成电路FPGA/CPLD规模的扩大而产生,并不断完善的。由于可编程专用集成电路可以通过软件编程来对器件的硬件结构和工作方式进行重构,这一切极大地改变了传统的电子系统设计方法、设计过程,乃至设计观念。EDA
11、技术融合电子技术、集成电路制造技术、计算机技术和智能化技术等,以计算机为工作平台,以相关的EDA软件为开发工具,以大规模可编程逻辑器件为设计载体,以硬件描述语言(Hardware Description Language)为系统逻辑描述的主要方式,自动完成系统算法和电路设计。EDA技术已有30多年的发展历程,大致可分为20世纪70年代的计算机辅助设计(CAD)阶段、80年代的计算机辅助工程(CAE)阶段和90年代后的电子系统设计自动化(EDA)阶段。利用EDA技术进行电子系统的设计,具有以下几个特点:1)软件硬化,硬件软化软件硬化是指所有的软件设计最后转化成硬件来实现,用软件方式设计的系统到硬
12、件系统的转换是由EDA开发软件自动完成的;硬件软化是指硬件的设计使用软件编程的方式进行,尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效。现代的EDA软件配置了多种能兼用和混合使用的逻辑描述输入工具,例如既支持功能完善的硬件描述语言如VHDL、Verilog HDL等作为文本输入,又支持逻辑电路图、工作波形图等作为图形输入,具有从系统的数学模型直到门级电路多层次描述系统硬件功能的能力,而且可以将高层次的行为描述与低层次的寄存器传输级RTL(Register Transformation Level)描述和结构描述混合使用。EDA系统还配置了高性能的综合和优化工具,设计人员
13、只需将设计描述程序输入到计算机,设计综合工具便能自动将其转化为适当的物理硬件实现,从而提高了设计效率,缩短了设计周期。2)自顶向下(top-down)的设计方法传统的设计方法都是自底向上的,即首先确定可用的元器件,然后根据这些器件进行逻辑设计,完成各模块后进行连接,并形成系统,最后经调试、测量看整个系统是否达到规定的性能指标。这种“自下而上”的设计方法常常受到设计者的经验及市场器件情况等因素的限制,且没有明显的规律可循。另外,系统测试在系统硬件完成后进行,如果发现系统设计需要修改,则需要重新制作电路板,重新购买器件,重新调试与修改设计。整个修改过程需要花费大量的时间与经费。再者,传统的电路设计
14、方式是原理图设计方式,而原理图设计的电路对于复杂系统的设计、阅读、交流、修改、更新和保存都十分困难,不利于复杂系统的任务分解与综合。基于EDA技术的所谓“自顶向下”的设计方法正好相反,它主要采用并行工程和“自顶向下”的设计方法,使开发者从一开始就要考虑到产品生成周期的诸多方面,包括质量、成本、开发时间及用户的需求等。该设计方法首先从系统设计入手,在顶层进行功能划分和结构设计,由于采用高级语言描述,因此能在系统级采用仿真手段验证设计的正确性,然后再逐级设计底层的结构,用VHDL、Verilog HDL等硬件描述语言对高层次的系统行为进行电路描述,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网
15、表,其对应的物理实现级可以是印刷电路板或专用集成电路。“自顶向下”设计方法的特点表现在以下几个方面:(1)基于可编程逻辑器件PLD和EDA开发工具支撑。(2)采用系统级、电路级和门级的逐级仿真技术,以便及早发现问题,进而修改设计方案。(3)现代的电子应用系统正向模块化发展,或者说向软、硬核组合的方向发展。对于以往成功的设计成果稍作修改、组合就能投入再利用,从而产生全新的或派生的设计模块。(4)由于采用的是结构化开发手段,所以可实现多人多任务的并行工作方式,使复杂系统的设计规模和效率大幅度提高。(5)在选择器件的类型、规模、硬件结构等方面具有更大的自由度。3)集设计、仿真和测试于一体现代的EDA
16、软件平台集设计、仿真、测试于一体,配备了系统设计自动化的全部工具,这些工具包括:多种能兼容和混合使用的逻辑描述输入工具以及高性能的逻辑综合、优化和仿真测试工具。电子设计师可以从概念、算法、协议等开始设计电子系统,将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。EDA仿真测试技术极大地提高了大规模系统电子设计的自动化程度。在设计的各个阶段都能方便地进行仿真和测试。设计的输入、输出或中间变量之间的信号关系由计算机根据要求提供的设计方案,从各种不同层次的系统性能出发完成一系列准确的逻辑和时序仿真验证。该测试技术通过计算机就能对系统上的目标器件进行边界扫描测
17、试。目前大部分FPGA/CPLD芯片都支持边界扫描技术。边界扫描测试技术标准是由IEEE组织联合测试行动组(JTAG)在20世纪80年代提出的,用来解决高密度引线器件和高密度电路板上的元件的测试问题。它只需要四根信号线就能够对电路板上所有支持边界扫描的芯片内部逻辑和边界管脚进行测试。4)在系统可现场编程,在线升级编程是指把系统设计的程序化数据按一定的格式装入一个或多个可编程逻辑器件的编程存储单元,定义内部模块的逻辑功能以及它们的相互连接关系。早期的可编程逻辑器件需要将芯片从印制板上拆下,然后把它插在专用的编程器上进行编程,目前广泛采用的在系统可编程技术则克服了这一缺点。所谓在系统可编程是指可编
18、程逻辑器件不需要使用编程器,具有将器件插在系统内或电路板上仍然可以对其进行编程和再编程的能力。目前的FPGA/CPLD器件为设计者提供了系统内可再编程或可再配置能力,使得系统内硬件的功能可以像软件一样易于修改,这就为设计者进行电子系统设计和开发提供了可实现的最新手段。采用这种技术对系统的设计、制造、测试和维护也产生了重大的影响,给样机设计、电路板调试、系统制造和系统升级带来革命性的变化。5)设计工作标准化,模块可移置共享设计语言、EDA的底层技术及其接口的标准化能很好地对设计结果进行交换、共享及重用。EDA设计工作的重要设计语言硬件描述语言HDL已经逐步标准化。VHDL在1987年被IEEE采
19、纳为硬件描述语言标准(IEEE 1076-1987),VHDL同时也是军事标准(454)和ANSI标准。Verilog HDL在1995年成为IEEE标准(IEEE 1364-1995),2001年发布了IEEE 1364-2001。作为两大被国际IEEE组织认定的工业标准硬件描述语言,VHDL和Verilog HDL为众多的EDA厂商支持,且移植性好。数据格式的一致性通过标准来保证。EDA的底层技术、EDA软件之间的接口等则采用标准数据格式,这样各具特色的EDA工具都能被集成在易于管理的统一环境之下,并支持任务之间、项目之间、设计工程师之间的信息传输和工程数据共享,从而使EDA框架日趋标准化
20、。并行设计工作和“自顶向下”设计方法也是构建电子系统集成设计环境或集成设计平台的基本规范。目前,主要的EDA系统都建立了框架结构,并且都遵循国际计算机辅助设计框架结构组织CFI(CAD Framework International)的统一技术标准。因此,EDA技术代表了当今数字系统设计技术的最新发展方向。表 1.1 传统设计方法和 EDA 设计方法的不同 传统设计方法 EDA 设计方法 自底向上 自顶向下 手动设计 自动设计 硬、软件分离 打破硬、软件屏障 原理图方式设计 原理图、VHDL 语言等多种设计方式 系统功能固定 系统功能易变 不易仿真 易仿真 难测试修改 易测试修改 模块难移置共
21、享 设计工作标准化,模块可移置共享 设计周期长 设计周期短 1.2 现代数字系统的设计流程现代数字系统的设计流程 现代数字系统的设计流程是指利用EDA软件和编程工具对可编程逻辑器件进行开发的过程。在EDA软件平台上,利用硬件描述语言HDL等逻辑描述手段完成设计,然后结合多层次的仿真技术,在确保设计的可行性与正确性的前提下完成功能确认,接着利用EDA工具的逻辑综合功能,把功能描述转换成某一具体目标芯片的网表文件,输出给该器件厂商的布局布线适配器,进行逻辑化简及优化、逻辑映射及布局布线,再利用产生的仿真文件进行功能和时序等方面的验证,以确保实际系统的性能,最后,进行针对特定目标芯片的逻辑映射和编程
22、下载等工作。整个过程包括设计准备、设计输入、设计处理和器件编程四个步骤以及相应的功能仿真、时序仿真和器件测试三个设计校验过程。现代数字系统的设计流程如图1.2所示。图1.2 现代数字系统的设计流程 1.设计准备设计准备在设计之前,首先要进行方案论证、系统设计和器件选择等设计准备工作。设计者首先要根据任务要求,判明系统指标的可行性。系统的可行性要受到逻辑合理性、成本、开发条件、器件供应、设计员水平等方面的约束。若系统可行,则根据系统所完成的功能及复杂程度,对器件本身的资源和成本、工作速度及连线的可布性等方面进行权衡,选择合适的设计方案和合适的器件类型。2设计输入设计输入设计输入是设计者将所设计的
23、系统或电路以EDA开发软件要求的某种形式表示出来,并送入计算机的过程。它根据EDA开发系统提供的一个电路逻辑的输入环境(如原理图、硬件描述语言(HDL)等形式)进行输入,这些方法可以单独构成,也可将多种手段组合来生成一个完整的设计。输入软件在设计输入时,还会检查语法错误,并产生网表文件,供设计处理和设计校验使用。3设计处理设计处理设计处理是从设计输入文件到生成编程数据文件的编译过程,这是器件设计中的核心环节。设计处理是由编译软件自动完成的。设计处理的过程如下:(1)逻辑优化和综合。由软件化简逻辑,并把逻辑描述转变为最适合在器件中实现的形式。综合的目的是将多个模块化设计文件合并为一个网表文件,并
24、使层次设计平面化。逻辑综合应施加合理的用户约束,以满足设计的要求。(2)映射。把设计分为多个适合用具体PLD器件内部逻辑资源实现的逻辑小块的形式。映射工作可以全部自动实现,也可以部分由用户控制,还可以全部由用户控制进行。(3)布局和布线。布局和布线工作是在设计检验通过以后由软件自动完成的,它能以最优的方式对逻辑元件布局,并准确地实现PLD器件内部逻辑元件间的互连。(4)生成编程数据文件。设计处理的最后一步是产生可供器件编程使用的数据文件。对CPLD器件而言,产生熔丝图文件即JDEC文件,对FPGA器件则生成位流数据文件。4设计校验设计校验设计校验过程是使用EDA开发软件对设计进行分析,它包括功
25、能仿真、时序仿真和器件测试。功能仿真用于验证设计的逻辑功能,通常是在设计输入完成之后,选择具体器件进行编译之前进行的逻辑功能验证。功能仿真没有延时信息,对于初步的逻辑功能检测非常方便。仿真结果将会生成报告文件和信号波形输出,从中便可以观察到各个节点的信号变化。若发现错误,则可返回设计输入中修改逻辑设计。时序仿真是在选择了具体器件并完成布局、布线之后进行的快速时序检验,可对设计性能作整体上的分析,这也是与实际器件工作情况基本相同的仿真。由于不同器件的内部延时不一样,不同的布局、布线方案也给延时造成不同的影响,用户可以得到某一条或某一类路径的时延信息,时序仿真也可给出所有路径的延时信息(又称延时仿
26、真)。若设计的性能不能达到要求,需找出影响性能的关键路径,并返回延时信息,修改约束文件,对设计进行重新综合和布局布线,如此重复多次直到满足设计要求为止。因此时序仿真对于分析时序关系,评估设计的性能以及检查和消除竞争冒险等是非常有必要的。直接进行功能仿真的优点是设计耗时短,对硬件库和综合器没有任何要求,尤其对于规模比较大的设计项目,综合和布局布线在计算机运行耗时可观,若每次修改都进行时序仿真,显然会降低设计开发效率。通常的做法是:首先进行功能仿真,待确认设计文件满足设计要求的逻辑功能后再进行综合、布局布线和时序仿真,把握设计项目在实际器件的工作情况。5器件编程器件编程编程是把系统设计的下载或配置
27、文件,通过编程电缆按一定的格式装入一个或多个PLD的编程存储单元,用于定义PLD内部模块的逻辑功能以及它们的相互连接关系,以便进行硬件调试和器件测试。器件编程需要满足一定的条件,如编程电压、编程时序和编程算法等。随着PLD集成度的不断提高,PLD的编程日益复杂,PLD的编程必须在开发系统的支持下才能完成。器件在编程完毕之后,对于具有边界扫描测试能力和在系统编程能力的器件来说,系统测试起来就更加方便,它可通过下载电缆下载测试数据来探测芯片的内部逻辑以诊断设计,并能随时修改设计重新编程。1.3 EDA软件工具简介软件工具简介EDA软件在现代数字系统设计中占据了极其重要的位置。EDA的核心是利用计算
28、机完成电子设计全程自动化,因此,基于计算机环境的EDA软件的支持是必不可少的。由于EDA的整个流程涉及不同的技术环节,每一环节中必须有对应的软件包或专用EDA工具独立处理,因此单个EDA工具往往只涉及EDA设计流程中的某一步骤。这里就以EDA设计流程中涉及的主要软件为EDA工具分类,并加以简要介绍。EDA软件工具大致可以分为如下五个模块:模块一:设计输入编辑器。模块二:HDL综合器。模块三:仿真器。模块四:适配器(或称布局、布线器)。模块五:下载器(或称编程器)。现在也有将五个模块集成在一起的EDA开发软件,如Xilinx公司的ISE、Altera公司的Quartus软件。1设计输入编辑器设计
29、输入编辑器优秀的EDA软件平台不仅集成了多种输入编辑器的设计输入表达方式,如状态图输入方式、波形输入方式以及HDL的文本输入方式,而且还提供了不同的设计平台之间的信息交流接口和一定数量的功能模块库供设计人员直接选用。设计者可以根据功能模块的具体情况灵活选用。下面介绍几种设计输入编辑器中较常用和较成熟的设计输入方式。1)原理图输入原理图输入是EDA工具软件提供的最基本的设计方法。该方法是选用EDA软件提供的器件库资源,并利用电路作图的方法,进行相关的电气连接而构成相应的系统或满足某些特定功能的系统或新元件。这种方式大多用在对系统及各部分电路很熟悉的情况,或在系统对时间特性要求较高的场合,它的主要
30、优点是容易实现仿真,便于信号的观察和电路的调整。原理图设计方法直观、易学。但当系统功能较复杂时,原理图输入方式效率低,它适应于不太复杂的小系统和复杂系统的综合设计(与其它设计方法进行联合设计)。Xilinx ISE设计软件中原理图编辑器的窗口如图1.3所示。图1.3 原理图编辑器的窗口 2)程序设计法程序设计法是指使用硬件描述语言HDL进行电路设计。使用HDL语言描述硬件电路是解决复杂电路描述的重要手段,大规模和超大规模集成电路均要使用HDL进行设计。硬件描述语言种类较多,使用较多的主要有ABEL、VHDL和Verilog HDL。由于VHDL和Verilog HDL被国际IEEE组织认定为工
31、业标准硬件描述语言,目前这两种语言在电子设计领域得到了广泛的应用。由于HDL输入方式输入的是文本格式,所以它的输入实现要比原理图输入简单得多,用普通的文本编辑器即可完成。如果要求HDL输入时有语法色彩提示,可用带语法提示功能的通用文本编辑器,如UltraEdit、Vim、Xemacs等。当然EDA工具中提供的HDL文本编辑器会更好用一些,如Aldec公司的Active HDL的HDL文本编辑器。目前,各种EDA工具都集成了HDL编译与综合工具,它的出现为EDA的普及和发展奠定了良好的基础。3)状态机一些EDA设计输入工具提供状态机图形设计描述方法。用户可用可视化图形(状态图)来描述状态机,可以
32、绘画似地创建一定功能的状态机,最后生成HDL文本输出,如Mentor公司的FPGA advantage(含HDL designer series)、Active HDL中的Active State等。尤其是HDL designer series中的各种输入编辑器,可以接受诸如原理图、状态图、表格图等输入形式。在这种图形状态机设计中,设计者不必关心PLD内部结构和布尔表达式,只需考虑状态转移条件及各状态之间的关系,使用作图方法构成状态转移图,由计算机自动生成Verilog或VHDL语言描述的功能模块,从而很好地解决了通用性(HDL输入的优点)与易用性(图形法的优点)之间的矛盾。图1.4 图形状态
33、机的设计窗口 4)IP模块使用使用具有知识产权的IP模块是现代数字系统设计中最有效的方法之一。IP模块也称为IP Core(Intellectual Property Core),即知识产权芯核。IP模块或IP Core一般是比较复杂的模块,如中央处理器(CPU)、数字信号处理器(DSP)、外设接口(PCI)等,这类模块设计工作量大,设计者要在设计、仿真、优化、逻辑综合、测试等方面花费大量劳动。供应商在提供IP模块时,已经排除了语言描述的冗余性,并且经过了验证,所以系统设计者采用IP模块进行设计时,可以集中精力去解决系统中的重点课题,并可以将优化的IP模块合并到其核心电路中来进行逻辑合成。另外
34、,除了EDA软件工具提供大量IP Core以外,网络上也有丰富的各类IP Core出售,甚至提供成套解决方案,使设计者之间资源共享,从而缩短了产品设计周期,降低了产品设计风险。图1.5是Xilinx的ISE设计软件中实现二进制计数器IP模块的设计窗口,用户只需设置合理的参数即可得到相应的二进制计数器。图1.5 二进制计数器IP模块设计窗口 在设计输入过程中,往往分模块、分层次地进行设计描述。描述器件总功能的模块放置在最上层,称为顶层设计;描述器件最基本功能的模块放置在最下层,称为底层设计。层次化设计方法比较自由,可以在任何层次使用电路图或HDL进行描述。由于电路图的特点是适合描述连接关系和接口
35、关系,而描述逻辑功能则很繁琐;HDL语言正相反,逻辑描述能力强,但不适合描述连接和接口关系。一般常见的做法是:在顶层设计中,使用电路图描述模块连接关系和芯片内部逻辑到管脚的接口;在底层设计中,使用HDL硬件描述语言描述模块的逻辑功能。现代EDA软件为设计者提供了多种有效的设计入口,但各种设计方法都有其自身的优势和局限。合理选择和综合应用各种设计方法尤其是IP Core和网上资源常常会使设计工作事半功倍。2HDL综合器综合器 逻辑综合就是使用EDA综合工具,将用HDL语言描述的寄存器传输级电路转化成门级网表的过程。逻辑综合是一个中间过程,它生成的网表是由用导线相互连接的寄存器传输级功能块组成的,
36、HDL综合器则是用于逻辑综合的工具。在把可综合的VHDL/Verilog HDL转化成硬件电路时,包含了三个过程:(1)转化:综合工具读入电路系统的HDL描述,将其转化为各个功能单元连接的电路结构的门级网表。这是一个通用电路原理图形成的过程,不考虑实际器件的实现。(2)优化:根据设计者所施加的时序、面积等约束条件,针对实际实现的目标器件的结构将转化的门级网表按一定的算法进行逻辑重组和优化,并使之满足各种约束条件。(3)映射:根据面积和时序的约束条件,综合工具从目标器件的工艺库中搜索恰当的单元来构成电路。HDL综合器运行流程如图1.6所示。HDL综合器由寄存器传输级(RTL)代码、调用模块的接口
37、及用户设置的综合目标和约束条件共同参与完成。其中,调用模块的接口导入是由于RTL代码调用了一些外部模块,而这些外部模块不能被综合或无需综合,但逻辑综合器需要其接口的定义来检查逻辑并保留这些模块的接口。HDL综合器的输出文件一般是网表文件,如文件后缀.edf的EDIF格式文件,或是直接用VHDL/Verilog HDL表达的标准格式网表文件,或是对应FPGA器件厂商的网表文件,如Xilinx公司的XNF网表文件。图1.6 HDL综合器运行流程 EDA综合工具可以由FPGA/CPLD厂家提供,如Xilinx公司的XST,也可以由第三方公司提供,如Synopsys公司的FPGA Compiler I
38、I、Synplicity公司的Synplify。比较常用的、性能良好的FPGA/CPLD设计的HDL综合器有以下几种:Synplicity公司的Synplify pro综合器,Synopsys公司的FPGA compiler,FPGA express综合器以及Mentor Graphics公司的Leonardo spectrum综合器等。HDL综合器完成EDA设计流程中的一个独立设计步骤,它的调用方式一般有两种:一种是前台模式,在被调用时显示最常见的窗口界面;一种称为后台模式或控制台模式,在被调用时不出现图形界面,仅在后台运行。3仿真器仿真器仿真器有基于元件(逻辑门)的仿真器和HDL仿真器。基
39、于元件的仿真器缺乏HDL仿真器的灵活性和通用性,在此主要介绍HDL仿真器。在EDA设计技术中,仿真的地位十分重要。行为模型的表达、电子系统的建模、逻辑电路的验证乃至门级系统的测试,每一步都离不开仿真器的模拟检测,各设计环节的仿真仍然是整个EDA工程流程中最耗时间的一个步骤,因此HDL仿真器的仿真速度、仿真的准确性和易用性成为衡量仿真器的重要指标。HDL仿真器按对设计语言不同的处理方式分类,可分为编译型和解释型仿真器。编译型仿真器的仿真速度较快,但需要预处理,因此不便即时修改仿真环境和条件;解释型仿真器的仿真速度一般,可随时修改仿真环境和条件。按照处理的硬件描述语言类型不同,HDL仿真器可分为V
40、HDL仿真器、Verilog仿真器、Mixed HDL仿真器(同时处理Verilog HDL与VHDL)和其它HDL仿真器。按照仿真时是否考虑硬件延时分类,HDL仿真器可分为功能仿真器和时序仿真器。根据输入和仿真文件的不同,可以由不同的仿真器完成,也可由同一个仿真器完成。功能仿真器流程如图1.7所示。功能仿真是直接对HDL语言、原理图描述或其它描述形式描述的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求。它是由设计输入的行为级或RTL级代码、测试数据参与的测试程序以及调用模块的行为仿真模型共同参与完成逻辑功能的验证。功能仿真没有延时信息,仿真过程不涉及任何具体器件的硬件特性,对于
41、初步的逻辑功能检测非常方便。图1.7 功能仿真器流程 时序仿真器流程如图1.8所示。在选择了具体器件后,由适配器完成布局、布线并得到HDL网表和标准延时文件,以及FPGA基本单元仿真模型和测试程序,它们共同参与时序仿真。时序仿真包含了器件的硬件特性参数和内部连线时延的仿真,是接近真实器件运行特性的仿真,因而仿真精度高。图1.8 时序仿真器流程 按照仿真电路描述级别的不同,HDL仿真器可以单独或综合完成以下各仿真步骤:(1)系统级仿真。(2)行为级仿真。(3)RTL级仿真。(4)门级时序仿真。几乎所有的EDA都提供基于VHDL和Verilog的仿真器。常用的仿真器有Mentor Graphics
42、公司的Modelsim,Aldec公司的Active HDL,Cadence公司的NC-VHDL、NC-Verilog、Verilog-XL,SYNOPSYS公司的VCS、VSS以及Xilinx公司和Altera公司自带的仿真器等。4适配器适配器(或称布局、布线器或称布局、布线器)适配即结构综合,它的任务是完成目标系统在器件上的布局和布线,通常是由可编程逻辑器件生产厂商提供的专门针对器件开发的软件来完成。这些软件可以单独运行或嵌入到厂商提供的EDA集成开发软件中,如Altera公司的EDA集成开发环境Quartus 和Xilinx公司的ISE软件中都含有嵌入的适配器。适配器运行流程如图1.9所
43、示。图1.9 适配器运行流程 5下载器下载器(或称编程器或称编程器)下载是在功能仿真与时序仿真正确的前提下,将综合后形成的下载文件下载到具体的FPGA芯片中,实现硬件设计,也叫芯片的编程/配置。下载软件一般由可编程逻辑器件厂商提供,或嵌入到EDA开发软件中。1.4 现代数字系统设计的发展趋势现代数字系统设计的发展趋势1电子设计最优化电子设计最优化(EDO)在电子设计的前端和后端,传统EDA方法已经发生了若干变化,EDA已不能准确地反映出这一工业当前正在发生的巨大变化,更恰当的词将是电子设计最优化EDO(Electronic Design Optimization)。随着设计流程和各种设计工具的
44、自动化水平达到一个新的层次,设计工程师已能够将更多的时间花在设计创建和设计最优化上。快速增长的计算能力与设计自动化相结合,将使设计工程师能既快又好地设计出新的产品。为了同步提高设计效率和设计创造性,这些新的设计工具能够可靠地和最优化地实现设计目标。然而,向EDO转变将面临一系列新的挑战。旧的设计方法中的循序渐进法将不再有效。过去,大多数人使用一种工具创建电路图,接着用另一种工具放置元件,然后再用一种工具进行布线。为了发挥新流程的作用,设计管理人员和设计人员都必须认识到超越各自专业局限的必要性和具备较宽设计知识的重要性。例如,后端工作设计人员不但需要完成设计的布局和布线,而且要考虑物理设计问题,
45、诸如时钟、功率、时序分析、逻辑优化、抽取、物理验证等。要实现真正意义的优化,设计任务就不能由不同的设计人员独立开发然后再“拼积木”完成。深亚微米技术的出现使得这种工作传递方式难以为继,因为物理设计人员无法达到逻辑设计人员所要求的设计指标。为此设计公司正尝试以不同的方法将多种技术结合起来解决面临的问题,开发出具备更强功能的混合工具。基于综合的工具设计公司正尝试引入物理布版能力,以便更好地评估能一次性通过(one-pass)物理实现的解决方案。物理布版工具设计公司正尝试引入综合技术来改变逻辑结构以使物理实现能达到一次性通过的设计要求。FPGA平台可以按需求实现结构综合,从而实现电子设计最优化。传统
46、的系统设计技术是根据应用的要求把一个系统级的结构映射或分割成专门的硬件部件和软件部件,硬件部件由FPGA、ASIC和ASSP等构成,软件部件是运行在CPU、DSP、处理器和微控制器上的代码,所以系统级的结构映射或分割是固定的硬件/软件分割,但是这种分割不能达到性能和成本的最优化。新的系统分割方式应该是灵活的硬件、软件分割方式的取舍,它贯穿在设计的整个过程中,使得非传统的系统结构成为可能,即能够重新定义系统结构,使系统结构按照最佳的性能和成本进行调配:软件模块可以在硬件中实现,当由硬件实现系统功能时,具有速度快和成本高的特性;硬件模块可以移到软件中实现,当由软件实现系统功能时,相对来说速度慢和成
47、本低。为了使得最优的硬件/软件集成成为可能,要求有一个可伸缩的和灵活的平台,FPGA可再配置系统平台可以实现在设计的任何时间和阶段都允许设计的功能在硬件和软件之间移动,达到在模块级实现最优的映射。以Virtex-II Pro系列FPGA为例,它集成了可编程的硬件和处理器,通过直接存取数据到处理器局部总线和FPGA片内块RAM的特性来减少等待时间。可重配置平台的硬件资源与处理器之间有紧密的耦合,其有效性取决于硬件和/或软件的及时响应。要使真正的相互可操作性成为可能,数据带宽和等待时间是关键的系统参数,而外部接口和总线协议常常是其瓶颈。因此要使电子设计最优化(EDO),作为设计人员,将不得不学习如
48、何为设计工具提供更多关于设计的目标,此外还需要拓宽设计技能,不能再局限于特定的设计工具和工艺上。2在线可重构技术在线可重构技术在互联网时代,利用在线可重构技术设计一个可以远程修改和升级的“通用”硬件系统,可以满足未来不断发展的要求,同时为应用技术的发展开辟一个新领域。互联网时代的在线可重构技术已引发可编程片上系统设计的革命,FPGA的设计可以很容易地从网上下载和测试,并通过网络对安装好的应用进行维护、修改和更新升级,即“在线现场可更新应用”,这类应用系统的出现应归功于Xilinx等PLD公司的“互联网可重构逻辑”IRL(Internet Reconfigurable Logic)技术。随着IR
49、L技术的发展,IRL已被许多网络设备采用,如 ATM转发器、蜂窝基站、卫星通信系统,网络应用系统、多功能机顶盒和移动网络设备等,这项技术使得专用或公共网具备了现场更新、修复和修改的能力。IRL技术主要特点体现在以下几个方面:(1)器件结构的支持:例如Xilinx的最新产品Virtex系列除具有可编程逻辑功能块、可编程I/O和可编程布线资源等基本的功能之外,还为可编程片上系统增加了许多新功能,包括分布式RAM和块RAM构成的片上存储器。采用延时锁相环技术的先进时钟及对多种I/O接口的支持使得Virtex系列FPGA可通过内部嵌入式处理器内核(如MicroBlaze和PPC405)及其软件支持实现
50、对自身的远程升级和重构。(2)Java语言的使用:Java是一种易于使用的面向对象的编程语言,Java将语言编译成处理器的通用代码,可移植于多种平台。Java语言的使用使得在各种系统上运行和验证FPGA的设计成为可能,甚至可以将解释处理器代码的Java虚拟机也集成在FPGA中。采用Java开发平台的优点是可为TCP/IP、UDP以及一般的Socket接口提供协议支持。采用内置Java数据加密技术,还可以确保配置数据在互联网传输中的可靠性。在线可重构技术的推出,使得系统的远程升级和调试成为可能,因而优于常规的固定逻辑设计。当前工业界各种标准的竞争非常激烈,采用在线可重构技术可以抢占市场先机,并适