基于Verilog HDL的数字系统设计快速入门(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-29 17:22:40

点击下载

作者:高敬鹏

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

基于Verilog HDL的数字系统设计快速入门

基于Verilog HDL的数字系统设计快速入门试读:

前言

当今社会是数字化的社会,数字集成电路得到广泛应用。作为全球领先的可编程逻辑器件供应商的Altera,不仅创造了复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)和现场可编程门阵列(Field Programmable Gate Array,FPGA)技术,也一直致力于CPLD与FPGA技术的开发及应用。科技的不断创新及中国半导体工业的发展,促使我们将可编程逻辑器件的技术应用到越来越多的行业,如航空、航天、汽车、造船、通用机械和电子等领域。科技的运用,将使我们的生活更加精彩。

本书结合Verilog HDL硬件描述语言,以Altera公司的Quartus Ⅱ软件作为CPLD/FPGA软件设计工具,详细介绍了CPLD/FPGA软/硬件系统的设计方法和开发过程。

本书以Quartus Ⅱ软件开发环境为背景,介绍CPLD/FPGA产品开发的完整解决方案。本书共11章,分别从FPGA硬件设计、Quartus Ⅱ软件设计和硬件描述语言设计等三个方面进行阐述,主要内容包括可编程逻辑器件基础、Quartus Ⅱ基本设计操作、Quartus Ⅱ软件进阶设计、Verilog HDL语言概述、面向综合的行为描述语句、Verilog HDL语言基础程序设计、基于QuartusⅡ的ModelSim仿真、面向验证与仿真的行为描述语句、系统任务、编译预处理与仿真激励、外设接口设计和综合系统设计等,最后通过丰富的工程实例,将CPLD/FPGA开发语言、开发思想与工程实现完美结合。

为了帮助初学者迅速入门,提高对电子系统设计的兴趣与爱好,并能在短时间内掌握电子系统设计开发的要点,作者在编写过程中注重内容的侧重,使本书具有以下特点。

由浅入深,循序渐进。本书在内容编排上遵循由浅入深、由易到难的原则,基础知识与大量实例相结合,边学边练。

兼顾原理,注重实用。本书侧重于实际应用,精炼理论讲解内容。

实例丰富,涉及面广。本书提供了丰富的FPGA程序设计实例,内容涉及电子系统的各个领域。

本书由高敬鹏、武超群、左伟平编著。其中,第1~5章由哈尔滨工程大学高敬鹏编写,第7~11章由黑龙江工程学院武超群编写,第6章由左伟平编写。另外,参加本书编写的还有管殿柱、管玥、宋一兵、付本国、赵景伟、赵景波、张洪信、王献红、魏代善、谈世哲、李文秋和初航。

感谢您选择了本书,希望我们的努力对您的工作和学习有所帮助,也希望您将对本书的意见和建议告诉我们。编著者第1章可编程逻辑器件基础

20世纪80年代中期,Altera 公司推出了类似于可编程阵列逻辑(Programmable Array Logic,PAL)结构的扩展型复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)和与标准门阵列类似的现场可编程门阵列(Field Programmable Gate Array,FPGA),它们都具有体系结构和逻辑单元灵活、集成度高及适用范围等特点。这两种器件兼容了可编程逻辑器件(Programmable Logic Device,PLD)和通用门阵列的优点,可实现较大规模的电路设计,编程也很灵活。与门阵列等其他专用集成电路(Application Specific Integrated Circuits,ASIC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无须测试、质量稳定及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。1.1 可编程逻辑器件

可编程逻辑器件起源于20世纪70年代,是在专用集成电路的基础上发展起来的一种新型逻辑器件,是当今数字系统设计的主要硬件平台,其主要特点就是完全由用户通过软件进行配置和编程,从而完成某种特定的功能,且可以反复擦写。在修改和升级PLD时,不需额外地改变PCB设计,仅需在计算机上修改和更新程序,使硬件设计工作转变为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本,因此获得了广大硬件工程师的青睐,形成了巨大的PLD产业规模。

可编程逻辑器件的分类

目前常见的PLD产品分为编程只读存储器(Programmable Read Only Memory,PROM)、现场可编程逻辑阵列(Field Programmable Logic Array,FPLA)、可编程阵列逻辑(Programmable Array Logic,PAL)、通用阵列逻辑(Generic Array Logic,GAL)、可擦除的可编程逻辑器件(Erasable Programmable Logic Array,EPLA)、复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)等类型。本节详细介绍复杂可编程逻辑器件和现场可编程门阵列

PLD器件从规模上又可以细分为简单PLD(SPLD)、复杂PLD(CPLD)和FPGA。

PLD器件内部结构的实现方法各不相同。PLD器件按照颗粒度可以分为三类,即小颗粒度PLD、中等颗粒度PLD和大颗粒度PLD。

PLD器件按照编程工艺可以分为熔丝(Fuse)和反熔丝(Antifuse)编程器件,可擦除的可编程只读存储器(UEPROM)编程器件,电信号可擦除的可编程只读存储器(EEPROM)编程器件(如CPLD),SRAM编程器件(如FPGA)。前三类为非易失性器件,编程后,配置数据保留在器件上;第四类为易失性器件,掉电后配置数据会丢失,因此在每次上电后需要重新进行数据配置。

1.复杂可编程逻辑器件

复杂可编程逻辑器件(CPLD)是从PAL 和GAL 器件基础上发展出来的,相对而言,其规模大、结构复杂,属于大规模集成电路范围,是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆将代码传送到目标芯片中,从而实现设计的数字系统。

CPLD主要由可编程逻辑宏单元(Macro Cell,MC)围绕中心的可编程互连矩阵单元组成。其中,MC结构较复杂,且具有复杂的I/O单元互连结构,可由用户根据需要生成特定的电路结构,并完成一定的功能。由于CPLD内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全可预测的缺点。

20世纪70年代,最早的可编程逻辑器件诞生了。其输出结构是可编程的逻辑宏单元,由于硬件结构设计可由软件完成,因此其设计过程比纯硬件的数字电路具有更强的灵活性,但只能实现规模较小的电路。为弥补这一缺陷,20世纪80年代中期,复杂可编程逻辑器件CPLD应运而生。目前,CPLD的应用已深入网络、仪器仪表、汽车电子、数控机床、航天测控设备等领域。

CPLD具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无须测试、保密性强、价格大众化等特点,可实现较大规模的电路设计,因此被广泛应用于产品的原型设计和产品生产中。几乎所有应用中小规模通用数字集成电路的场合均可应用CPLD器件。CPLD器件已成为电子产品中不可缺少的组成部分,它的设计和应用成为电子工程师必备的技能。【说明】 Altera公司的MAX Ⅱ系列CPLD是功耗较低、成本较低的CPLD。常用的Al⁃tera MAX Ⅱ系列为EPM240T100C5N,其拥有240个逻辑单元、192个宏单元、80个最大用户I/O引脚、8192bits用户FLASH存储量。

2.现场可编程门阵列

现场可编程门阵列(Field Programmable Gate Array,FPGA)是在PAL、GAL、CPLD等基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

相对于CPLD而言,FPGA中的寄存器资源比较丰富,更适合同步时序电路较多的数字系统。在这两类可编程逻辑器件中,CPLD提供的逻辑资源较少,而FPGA提供了较高的逻辑密度、较丰富的特性和极高的性能。FPGA已经在通信、消费电子、医疗、工业和军事等应用领域中占据了重要地位。

专用集成电路(ASIC)是指应特定用户要求或特定电子系统的需要而设计、制造的集成电路。ASIC分为全定制设计和半定制设计。全定制设计需要设计者完成所有电路的设计,因此需要大量人力、物力,这种设计方法灵活性好但开发效率低下。如果设计较为理想,全定制的ASIC芯片能够比半定制的ASIC芯片运行速度更快。半定制设计使用库里的标准逻辑单元(Standard Cell,SC),设计时可以从标准逻辑单元库中选择 SSI(门电路)、MSI(如加法器、比较器等)、数据通路(如ALU、存储器、总线等)、存储器,甚至系统级模块(如乘法器、微控制器等)和IP核,这些逻辑单元已经布局完毕,而且设计得较为可靠,设计者可以较方便地完成系统设计。

相对于ASIC而言,FPGA是半定制的通用器件。如果需要改变电路功能,不需要花费重新设计ASIC的时间。使用FPGA设计电路有以下五个优点。

电路执行速度快:FPGA内部是通过对电路编程生成逻辑电路来实现功能的,这与处理器编程是不同的。处理器是串行执行的,但FPGA是通过电路实现功能的,是并行执行的。因此FPGA的运行速度远高于通用处理器或DSP。

上市时间短:由于FPGA的在线可编程特性,设计者不需要进行ASIC设计的冗长构建过程;而且由于设计软件性能不断提高,设计者可以在更高的抽象层级进行设计;不同的FPGA生产厂商还提供了大量的IP Core,这些都使FPGA设计更快、更方便。

成本低廉:随着电子技术的发展,基于电子技术的各种应用也在改变。使用FPGA可以在不修改PCB的前提下修改电路实现,而且FPGA相对ASIC重新开发的费用非常低廉,所以使用FPGA进行设计的成本相对较低。

可靠性高:FPGA都是经过专门验证的半定制通用器件,因而具有较高的可靠性。

易于维护升级:FPGA芯片具有即时升级(Field Upgradable)特性,而且可以通过在FPGA配置芯片中存储多个配置文件来实现多种电路功能,还可以通过网络进行远程配置。这些特性使得FPGA易于维护和升级。

FPGA是由存放在片内RAM中的程序来设置其工作状态的。因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中的数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,故FPGA能够反复使用同一片FPGA,不同的编程数据可以产生不同的电路功能。可见,FPGA的使用非常灵活。1.2 Altera公司的CPLD产品

早期Altera公司的CPLD有Classic系列和MAX系列。MAX系列产品采用的是乘积项阵列结构,分为MAX3000A系列、MAX5000系列、MAX7000系列和MAX9000系列。Altera公司在近15年CPLD的领导地位和创新的基础上,推出了业界成本最低的CPLD MAXⅡ系列。MAX Ⅱ系列产品基于突破性体系结构,充分利用了4 输入查找表(Look Up Table,LUT)体系结构的性能和密度优势,并且融合了性价比很高的非易失特性。作为同类最佳的产品,其创新的体系结构为CPLD设立了成本、功耗、性能和密度新标准。

1)Classic系列 这是Altera公司最早的产品系列、其集成度可达900个可用门,引脚可达68个。工业标准的Classic系列由一个具有公共互连逻辑的阵列构成,适合集成度低、价格便宜的场合。该系列具有独特的“零”功耗模式,维持状态的电流只有微安量级,这对于低功耗的应用非常理想。该系列基于EPROM工艺,编程信息不易丢失。

2)MAX系列 Altera领先于市场的MAX系列CPLD是世界一流的低成本器件,几乎可以实现所有的数字控制和某些模拟控制功能。作为非易失单芯片解决方案,MAX系列很容易集成到用户的系统中。采用这些器件后,可以解决板级问题,如处理器I/O引脚不够用,灯光、音响和移动模拟输入/输出管理,组件间采用电平转换信号或总线等问题;还能够以低成本与其他接口兼容。MAX系列可以使设计人员的主要精力集中在更复杂的设计难题上。MAX系列的主要特征包括低成本、“零”功耗、超小型封装、瞬时接通和非易失、在线系统可编程支持、免费的Quartus Ⅱ软件支持和免费的Modelsim-Altera软件支持。

MAX3000A系列是Altera的第一代MAX器件,其采用0.30μm四层金属生产工艺,由先进的CMOS技术焊接。基于 EEPROM 的 MAX3000A 器件的供电电压为3.3V,它提供600 ~10000个可用门,还提供 ISP、快达 4.5ns 的 pin-to-pin 延迟,其计数器速度高达227.3MHz。MAX3000A系列提供商业和工业级的常用速度等级和封装,是对应成本敏感、大批量应用的理想解决方案。

MAX5000 系列是基于Altera MAX结构的低功耗、高性能器件,广泛用于需要高级组合逻辑而成本又较低的场合。这类器件的集成度为600 ~3750 个可用门,有28 ~100 个引脚。基于EPROM的MAX5000 器件的编程信息不易丢失,同时这些编程信息是可紫外光擦除的。由于该系列已经很成熟,且 Altera 公司对其不断地改进并采用更先进的工艺,使得MAX5000 器件每个宏单元的价格可与大批量生产的ASIC和门阵列相近。

MAX7000系列是目前工业界中速度最快且高度集成的可编程器件系列。MAX7000 系列的集成度为600 ~5000 个可用门,有32 ~256 个宏单元和32 ~155 个用户 I/O 引脚。这些基于EEPROM的器件能够使组合传输延迟短至5.0ns,16 位计数器的频率为178MHz。此外,其输入寄存器的建立时间非常短,能提供多个系统时钟且有可编程的速度、功率控制。MAX70000E器件具有较高集成度,是 MAX7000 系列的增强型。MAX7000S 器件也具有MAX7000E器件的增强型特性,是通过工业标准4 引脚JTAG接口实现在线可编程的。

MAX9000 系列将MAX7000 的有效宏单元结构与高性能FLEX器件的可预测FastTrack互联结合成一体,能够适合于多系统级功能的集成。它采用的是 EEPROM 技术。MAX9000 器件的集成度为 6000 ~12000 个可用门,320 ~560 个宏单元和多达 216 个用户 I/O 引脚。MAX9000 器件是利用 PLD 的高性能和 ISP 的灵活性进行门阵列设计的理想选择。MAX9000器件是通过工业标准4 引脚JTAG接口实现在线可编程的。

3)MAX Ⅱ系列 MAX Ⅱ系列基于突破性体系结构,结合了 FPGA 和 CPLD 的优点。它充分利用了4 输入查找表(LUT)体系结构的性能和密度优势,且融合了性价比很高的非易失特性。作为同类最佳产品,其创新的体系结构为CPLD设立了成本、功耗、性能和密度新标准。

MAX Ⅱ器件的成本是与其竞争的 CPLD 的50%,它摒弃了传统的宏单元体系,采用了查找表(LUT)结构从而满足CPLD设计者的需求。基于 LUT 的体系采用 TSMC 的0.18μm嵌入FLASH工艺,使其裸片尺寸是同样工艺下竞争器件的1/4,其成本比上一代 MAX 降低了50%。新的体系采用了优化的交错环形I/O引脚,进一步降低了成本。

MAX Ⅱ系列和上一代MAX 产品相比,其成本降低了50%,功耗只有原来的1/10,同时保持MAX系列原有的即用性、单芯片、非易失性和易用性。

利用MAX Ⅱ系列CPLD,设计人员可将大量控制逻辑集成在单个器件中,从而降低了系统的成本。这一瞬时启动的非易失器件系列主要针对通用控制逻辑应用,提供了三种型号,即MAX Ⅱ、MAX Ⅱ G和MAX Ⅱ Z。“零”功耗MAX Ⅱ Z系列CPLD是该系列中最新的器件。

无论是在通信、消费电子、计算还是工业领域,MAX Ⅱ系列 CPLD 都是进行控制路径应用最好的选择,这些应用都受成本和功耗预算的约束。MAX Ⅱ器件提供更低的架构、更低的功耗、更高的密度,使之成为复杂控制应用的最理想的解决方案,包括那些以前不可能采用CPLD的应用。MAX Ⅱ Z器件是便携式和其他功耗、体积和价格受限等应用的理想选择,与相同封装的传统宏单元CPLD相比,其超小型封装中容纳了更多的逻辑和I/O资源。1.3 Altera公司的典型FPGA产品

目前市场上FPGA芯片主要来自Altera公司。Altera公司的FPGA器件大致分三个系列,即低端的Cyclone系列、高端的Stratix系列和介于二者间可以方便ASIC化的Arriva系列。

1.面向高性能的Stratix系列FPGA

Stratix系列FPGA能够帮助用户以更低的风险和更高的效能尽快推出更先进的高性能产品。结合了高密度、高性能及丰富的特性,Stratix系列FPGA能够集成更多的功能,提高系统带宽。Stratix系列产品代的特性是革命性的,而且还在不断发展。Stratix系列FPGA的推出时间和工艺技术见表1-1。表1-1 Stratix系列表

Stratix FPGA和Stratix GX型号是Altera公司Stratix FPGA系列中最早的型号产品。这一高性能FPGA系列引入了DSP硬核知识产权(IP)模块,以及Altera应用广泛的TriMatrix片内存储器和灵活的I/O结构。

Stratix Ⅱ FPGA和Stratix Ⅱ GX型号引入了自适应逻辑模块(ALM)体系结构,采用高性能8输入分段式查找表(LUT)替代了4输入LUT。Altera最新的高端FPGA使用了这一创新的ALM逻辑结构,可批量提供Stratix Ⅱ和Stratix ⅡGX FPGA,强烈建议设计者在新的设计中使用它们。

Stratix Ⅲ FPGA是业界功耗较低的高性能65nm FPGA。Stratix Ⅲ FPGA系列提供逻辑型(L)FPGA系列、存储器增强型(E)FPGA系列和数字信号处理型(DSP)FPGA系列,用户可以综合考虑设计资源要求,以满足设计中常采用资源比实际需求大得多的器件进行设计的需求,从而节省了PCB空间,缩短了设计时间,降低了成本。StratixⅢFPGA主要面向高端内核系统处理设计应用。

Stratix Ⅳ FPGA在目前任何40nm FPGA 中都是密度较大、性能较好、功耗较低的。Stratix Ⅳ FPGA系列提供增强型(E)和带有收/发器的增强型器件(GX和GT),满足了无线和固网通信、军事、广播等众多市场和应用的需求。这一高性能40nm FPGA系列包括同类最佳的11.3Gbit/s收发器。

在所有28nm FPGA中,Stratix Ⅴ FPGA实现了最大带宽和最高系统集成度,非常灵活。该系列包括兼容背板、芯片至芯片和芯片至模块功能的14.1Gbit/s(GS和GX)型号,以及支持芯片至芯片和芯片至模块的28Gbit/s(GT)收/发器型号,具有一百多万LE,以及4096个精度可调的DSP模块。

采用了Intel 14nm 三栅极技术的Altera Stratix 10 FPGA 是器件具有56Gbit/s 收/发器、28Gbit/s背板、浮点数字信号处理(DSP)性能,支持增强IEEE 754 单精度浮点,单片管芯中有400多万逻辑单元(LE),支持多管芯3D解决方案,包括SRAM、DRAM和ASIC。Stratix 10 SOC是Intel 14nm三栅极晶体管技术的第一款高端SOC系列,具有针对每瓦最佳性能进行优化的下一代硬核处理器系统。

2.面向低成本的Cyclone系列FPGA

Cyclone系列FPGA可以满足用户对低功耗、低成本设计的需求,帮助用户更迅速地将产品推向市场。每一代Cyclone系列FPGA都致力于解决提高集成度和性能的技术挑战,降低功耗、产品及上市时间的问题,同时满足用户的低成本要求。

Cyclone系列FPGA的推出时间和工艺技术见表1-2。表1-2 Cyclone系列表

Cyclone FPGA是第一款低成本FPGA。对于当今需要高级功能及极低功耗的设计,可以考虑密度更高的Cyclone Ⅳ和Cyclone Ⅲ FPGA。这些更新的Cyclone系列将继续为用户的大批量、低成本应用提供业界最好的解决方案。

Cyclone Ⅱ FPGA从根本上针对低成本进行设计,为大批量低成本应用提供用户需要的各种功能。

Cyclone Ⅲ FPGA系列采用台积电(TSMC)的低功耗工艺技术制造,以相当于ASIC的价格实现了高性能和低功耗。

Cyclone Ⅳ FPGA是市场上成本低、功耗低的FPGA,现在还提供收/发器型号产品。Cyclone Ⅳ FPGA系列面向对成本敏感的大批量应用,满足用户越来越大的带宽需求,同时降低了成本。

Cyclone Ⅴ FPGA为工业、无线、固网、广播和消费类应用提供市场上系统成本较低、功耗较低的FPGA解决方案。该系列集成了丰富的硬核知识产权(IP)模块,以更低的系统总成本和更短的设计时间完成更多的工作。Cyclone Ⅴ系列中的SoC FPGA实现了独特的创新技术。例如,以硬核处理器系统(HPS)为中心,采用双核 ARM CortexTM- A9 MPCoreTM处理器以及丰富的硬件外设,降低了系统功耗和成本,减小了PCB面积。1.4 FPGA的工艺结构

随着FPGA的生产工艺不断提高,各种新技术被广泛应用到FPGA芯片设计生产的各个环节。其中,生产工艺结构决定了FPGA芯片的特性和应用场合。

1.基于SRAM结构的FPGA

目前最大的两个FPGA厂商——Altera公司和Xilinx公司的FPGA产品都是基于SRAM工艺来实现的。这种工艺的优点是可以用较低的成本来实现较高的密度和较高的性能;其缺点是掉电后SRAM会失去所有配置,导致每次上电时都需要重新加载。

重新加载需要外部器件来实现,不仅增加了整个系统的成本,而且引入了不稳定的因素。加载的过程容易受到外界干扰而导致加载失败,也容易受到“监听”导致加载文件的比特流被破解。

虽然基于SRAM结构的FPGA存在这些缺点,但是由于其实现成本低,仍被广泛应用于各个领域,尤其是民用产品方面。

2.基于反熔丝结构的FPGA

目前FPGA厂商Actel公司的FPGA产品都是基于反熔丝结构的工艺来实现的。这种结构的FPGA只能编程一次,编程后和ASIC一样成为固定逻辑器件。Quick Logic公司也有类似的FPGA器件,主要面向军品级应用市场。

这样的FPGA失去了反复可编程的灵活性,但是大大提高了系统的稳定性。这种结构的FPGA 比较适合应用于环境苛刻的场合,如高振动、强电磁辐射等航空航天领域。同时,系统的保密性也得到了提高。这类FPGA因为上电后不需要从外部加载配置,所以上电后可以很快进入工作状态,即“瞬间上电”。这个特性可以满足一些对上电时间要求苛刻的系统。由于是固定逻辑,这种器件的功耗和体积也要小于SRAM结构的FPGA。

3.基于FLASH结构的FPGA

FLASH具备反复擦写和掉电后内容非易失的特性,因而基于FLASH结构的FPGA同时具备了SRAM 结构的灵活性和反熔丝结构的可靠性。这种技术是近些年发展起来的新型FPGA实现工艺,目前实现的成本还偏高,没有得到大规模应用。

从系统安全的角度来看,基于FLASH结构的FPGA具有更高的安全性,硬件出错的几率更小,并能够通过公共网络实现安全性远程升级,经过现场处理即可实现产品的升级换代。这种性能减少了现场解决问题所需的昂贵开销。

基于FLASH结构的FPGA在加电时没有像基于SRAM结构的FPGA那样大的瞬间高峰电流,并且基于 SRAM 结构的 FPGA 通常具有较高的静态功耗和动态功耗。因此,基于SRAM结构的FPGA的功耗问题往往迫使系统设计者不得不增大系统供电电流,并使得整个设计变得更加复杂。1.5 FPGA技术的发展方向

FPGA技术之所以具有巨大的市场吸引力,其根本原因在于FPGA不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、投入少,芯片价格不断下降。随着芯片设计工艺水平的不断提高,FPGA技术呈现出了以下三个主要的发展动向。

1.基于IP库的设计方案

未来的FPGA芯片密度不断提高,传统的基于HDL 的代码设计方法很难满足超大规模FPGA的设计需要。随着专业IP库设计公司的不断增多,商业化的IP库种类会越来越全面,支持的FPGA器件也会越来越广泛。

作为FPGA 的设计者,主要的工作是找到适合项目需要的IP库资源,然后将这些IP 整合起来,完成顶层模块设计。由于商业的IP库都是通过验证的,因此整个项目的仿真和验证工作主要就是验证IP库的接口逻辑设计的正确性。

目前,由于国内知识产权保护的相关法律法规还不尽完善,基于IP库的设计方法还没有得到广泛应用。但是随着FPGA密度不断提高和IP库的价格逐渐趋于合理化,这种设计方案将会成为主流的FPGA设计技术。

2.基于FPGA的嵌入式系统(SOPC)技术正在成熟

片上系统(System On Chip,SOC)技术是指将一个完整产品的功能集成在一个芯片上或芯片组上。SOC从系统的整体角度出发,以IP核为基础,以硬件描述语言作为系统功能和结构的描述手段,借助于以计算机为平台的EDA工具进行开发。由于SOC 设计能够综合、全盘考虑整个系统的情况,因而可以实现更高的系统性能。SOC的出现是电子系统设计领域内的一场革命,其影响将是深远而广泛的。

片上可编程系统(System On a Programmable Chip,SOPC)是一种灵活、高效的SOC解决方案。它将处理器、存储器、I/O口、LVDS等系统需要的功能模块集成到一个FPGA中,构成一个可编程的片上系统。由于它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软/硬件可编程的功能。

SOPC保持了SOC以系统为中心、基于IP模块多层次、高度复用的特点,而且具有设计周期短、风险投资小和设计成本低的优势,通过设计软件的综合、分析和裁减,可灵活地重构所需要的嵌入式系统。

这种技术的核心是在FPGA芯片内部构建处理器。Xilinx公司主要提供基于Power PC的硬核解决方案,而Altera提供的是基于NIOS Ⅱ的软核解决方案。Altera公司为NIOS Ⅱ软核处理器提供了完整的软/硬件解决方案,可以让客户在短时间内完成SOPC系统的构建和调试工作。

3.FPGA芯片向高性能、高密度、低电压和低功耗的方向发展

随着芯片生产工艺不断提高,FPGA芯片的性能和密度都在不断提高。早期的FPGA 主要是完成接口逻辑设计,如A-D/D-A和DSP的黏合逻辑。现在的FPGA正在成为电路的核心部件,完成关键功能。

在高性能计算和高吞吐量I/O应用方面,FPGA已经取代了专用的DSP芯片,成为最佳的实现方案。因此,高性能和高密度也成为衡量FPGA芯片厂家设计能力的重要指标。

随着FPGA性能和密度的提高,功耗也逐渐成为FPGA应用的瓶颈。虽然FPGA的功耗比DSP等处理器的功耗低,但是要明显高于专用芯片(ASIC)的功耗。FPGA的厂家也在采用各种新工艺和技术来降低FPGA的功耗,并且已经取得了明显的效果。1.6 FPGA芯片的应用

FPGA可以实现各种复杂的逻辑功能,提供在线可编程特性,因而应用范围非常广。目前,FPGA广泛应用于通信、信号处理,嵌入式处理器,图像处理和工业控制等领域。

目前FPGA广泛应用于通信领域,可以使用FPGA实现数字调制解调、编码解码。因为FPGA中各种功能是用硬件并行执行,所以在实现调制解调和编解码时具有比软件更快的速度;可以使用FPGA实现通信系统中的各种接口,目前的FPGA接口中一般都有实现DDR的专用电路;可以使用FPGA实现DDR控制器;还可以使用FPGA实现PCI总线、SPI总线等。

FPGA在数字信号处理领域的应用也相当广泛。现在的FPGA内部都包含专门的乘法器电路、乘累加电路,这些电路都是实现数字信号处理功能必不可少的,而且都是以并行的方式运行的,所以特别适用于实现信号处理。在数字信号处理领域的应用包括频率合成、FIR滤波器、FFT、RS编解码等。

在图形处理应用中,FPGA可以用于实现JPEG图像处理,可以用于检测视频信号、图像数据采集等。

在Altera的器件中可以实现NIOS嵌入式处理器,所以可以使用FPGA实现片上系统。

使用FPGA实现的片上系统可以运行操作系统、用户的应用软件,省去了专用的处理器,大大减小了PCB的面积,降低了硬件电路的复杂性。1.7 FPGA的设计流程

一般来说,完整的FPGA设计流程包括电路设计与输入、功能仿真、综合优化、综合后仿真、布局/布线、布局/布线后仿真、板级仿真与验证、加载配置与在线调试等主要步骤。

1.电路设计与输入

电路设计与输入是指通过某些规范的描述方式,将电路构思输入给EDA工具。常用的设计输入方法有硬件描述语言和原理图设计输入方法等。原理图设计输入法在早期应用得比较广泛,它根据设计要求选用器件、绘制原理图、完成输入过程。这种方法的优点是直观、便于理解、元器件库资源丰富。但是在大型设计中,这种方法的可维护性较差,不利于模块构造与重用。

目前进行大型工程设计时,常用的设计方法是硬件描述语言设计输入法,其中影响最为广泛的HDL语言是VHDL和Verilog HDL。它们的共同特点是利于自顶向下设计,利于模块的划分与复用,可移植性好,通用性好,设计不因芯片的工艺与结构的不同而变化,更利于向ASIC移植。波形输入和状态机输入方法是两种常用的辅助设计输入方法。使用波形输入法时,只要绘制出激励波形和输出波形,EDA软件就能自动根据响应关系进行设计;使用状态机输入法时,设计者只需绘制出状态转移图,EDA软件就能生成相应的HDL代码或原理图,使用十分方便。

2.功能仿真

电路设计完成后,要用专用的仿真工具对设计进行功能仿真,验证电路功能是否符合设计要求。功能仿真有时也被称为前仿真。

3.综合优化

综合优化是指将HDL语言、原理图等设计输入翻译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接(网络表),并根据目标与要求(约束条件)优化所生成的逻辑连接,输出 edf 和 edn 等标准格式的网络表文件,供 FPGA 厂家的布局/布线器实现。

4.综合后仿真

综合完成后需要检查综合结果是否与原设计一致,做综合后仿真。在仿真时,把综合生成的标准延时文件反标注到综合仿真模型中,可估计门延时带来的影响。综合后仿真虽然比功能仿真精确一些,但也只能估计门延时,不能估计线延时,仿真结果与布线后的实际情况还有一定的差距,并不十分准确。这种仿真的主要目的是检查综合器的综合结果是否与设计输入一致。目前主流综合工具日益成熟,对于一般性设计,如果设计者确信自己表述明确,没有综合歧义发生,则可以省略综合后仿真步骤。但是,如果在布局/布线后仿真发现有电路结构与设计意图不符的现象,则常常需要回溯到综合后仿真以确认是否是由于综合歧义造成的问题。

5.布局/布线

综合结果的本质是一些由与门、或门、非门、触发器、RAM等基本逻辑单元组成的逻辑网络表,它与芯片实际的配置情况还有较大差距。此时应该使用FPGA厂商提供的软件工具,根据所选芯片的型号,将综合输出的逻辑网络表适配到具体的FPGA器件上,这个过程称为实现过程。因为只有器件开发商最了解器件的内部结构,所以实现步骤必须选用器件开发商提供的工具。在实现过程中,最主要的过程是布局/布线。所谓布局,是指将逻辑网络表中的硬件或底层单元合理地适配到FPGA内部的固有硬件结构上,布局的优劣对设计的最终实现结果影响很大。所谓布线,是指根据布局的拓扑结构,利用FPGA内部的各种连线资源,合理、正确地连接各个元件的过程。FPGA 的结构相对复杂,为了获得更好的实现结果,特别是保证能够满足设计的时序条件,一般采用时序驱动的引擎进行布局/布线。所以对于不同的设计输入,特别是不同的时序约束,获得的布局/布线结果一般有较大差异。一般情况下,用户可以通过设置参数指定布局/布线的优化准则,总的来说,优化目标主要有面积和速度两个方面。一般根据设计的主要矛盾,选择面积、速度或平衡二者的优化目标。但是当二者冲突时,一般满足时序约束要求更重要一些,此时选择速度或时序优化目标效果更好。

6.时序仿真与验证

将布局/布线的时延信息反标注到设计网络表中,所进行的仿真就称为时序仿真或布局/布线后仿真,简称后仿真。布局/布线后生成的仿真时延文件包含的时延信息较全,不仅包含门延时,还包含实际布线延时,所以布线后仿真较准确,能较好地反映芯片的实际工作情况。一般来说,布线后仿真步骤必须进行,通过布局/布线后仿真能检查设计时序与FPGA实际运行情况是否一致,确保设计的可靠性和稳定性。布局/布线后仿真的主要目的在于发现时序是否违规,即是否满足时序约束条件或器件固有时序规则。

7.板级仿真与验证

在有些高速设计中,还需要使用第三方的板级验证工具进行仿真与验证。

8.加载配置与在线调试

设计开发的最后步骤就是在线调试或将生成的配置文件写入芯片中进行测试。示波器和逻辑分析仪是逻辑设计的主要调试工具。传统的逻辑功能板级验证手段是用逻辑分析仪分析信号,设计时要求FPGA和PCB设计人员保留一定数量的FPGA引脚作为测试引脚,编写FPGA代码时需要观察的信号作为模块的输出信号,在综合实现时再将这些输出信号锁定到测试引脚上,然后将逻辑分析仪的探头连接到这些测试脚,设定触发条件,进行观测。逻辑分析仪的优点是专业、高速,触发逻辑可以相对复杂;其缺点是价格昂贵、灵活性差。PCB布线后测试脚的数量有限,不能灵活增加,当测试脚不够用时会影响测试,如果测试脚太多又影响PCB布局/布线。

对于相对简单的设计,使用QuartusⅡ内嵌的SignalTapⅡ工具,对设计进行在线逻辑分析可以较好地解决上述矛盾。其主要功能是通过JTAG口,在线、实时地读出FPGA的内部信号。其基本原理是利用FPGA中未使用的Block RAM,根据用户设定的触发条件将信号实时地保存到这些Block RAM中,然后通过JTAG口传送到计算机,最后在计算机屏幕上显示出时序波形。任何仿真或验证步骤出现问题时,就需要根据错误的定位返回到相应的步骤更改或重新设计。1.8 FPGA的设计开发工具

根据设计流程与功能划分,常用的FPGA开发工具主要分为硬件电路的设计、设计输入工具、综合工具、仿真工具、实现与优化工具、后端辅助工具,以及验证与调试工具等。

1)硬件电路的设计 硬件电路的设计是整个工程设计的第一步,设计过程包括了硬件原理图的设计和硬件印刷电路板(PCB)的设计。目前业界最流行的硬件电路设计软件是Altium公司的Altium Designer软件。

硬件电路原理图设计:在整个电子电路设计过程中,电路原理图的设计是最重要的基础性工作。同样,只有在设计好原理图的基础上才可以进行硬件PCB的设计和电路仿真等。

硬件PCB设计:硬件PCB的设计是整个硬件工程设计的最终目的。原理图设计得再完美,如果PCB设计得不合理,则性能也将大打折扣,严重时甚至不能正常工作。

制板商要参照用户所设计的PCB版图来进行PCB的生产。

2)设计输入工具 设计输入是工程设计的重要步骤,常用的设计输入方法有HDL语言输入、原理图输入、IP Core输入和其他输入方法。

HDL语言输入方法应用广泛,目前业界较流行的HDL语言是Verilog HDL和VHDL语言。一般来说,任何文本编辑器都可以用于HDL语言输入。

原理图设计输入方式在早期应用广泛,目前已经逐渐被HDL语言输入方式所取代,仅在有些设计的顶层描述时才会使用。

IP Core输入方式是FPGA设计中的一个重要设计输入方式。所谓IP Core,是指已经设计好且受知识产权保护的标准模块单元。Quartus Ⅱ的IP Core生成器是Megafunctions/MegaWizard,ISE的IP Core生成器是Core Generator。它们能生成功能繁多的IP Core,从简单的基本设计模块到复杂的处理器等一应俱全。适当地使用IP Core,能大幅度地减轻设计者的设计工作量,提高设计质量。

其他辅助性设计输入方法还有状态机输入、真值表输入和波形输入等。

3)综合工具 主流的综合工具主要有Synplicity公司的Synplify/Synplify Pro, Synopsys公司的FPGA Complier Ⅱ/Express, Exemplar Logic公司的LenonadoSpectrum。另外,QuartusⅡ和ISE还内嵌了自己的综合工具。

4)仿真工具 目前业界流行的仿真工具是ModelSim。另外,Aldec公司的Active HDL也有相当广泛的应用。其他如Cadencs Verilog-XL、NC-Verilog/VHDL、Synopsys VCS/VSS等仿真工具也有一定的影响力。还有一些小工具和仿真有关,如测试激励生成器。

5)实现与优化工具 实现与优化工具包含的范围比较广。如果能较好地掌握这些工具,将大幅度提高设计水平,使设计工作更加游刃有余。

6)后端辅助工具 Quartus Ⅱ内嵌的后端辅助工具主要有Assembler(编程文件生成工具)、Programmer(下载配置工具)和PowerGauge(功耗仿真器)。ISE 的后端辅助工具有Programming file generator(编程文件生成工具)和Impact(下载配置工具)等。

7)验证与调试工具 Quartus Ⅱ内嵌的调试工具有SingalTap Ⅱ(在线逻辑分析仪)和SingalProbe(信号探针)。ISE内嵌的调试工具有ChipScope和SingalProbe。常用的板级仿真验证工具还有Mentor Tau、Synopsys HSPICE和Innoveda BLAST等。1.9 Quartus Ⅱ软件简介

QuartusⅡ作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受数字系统设计者们的欢迎,它支持原理图、VHDL、Verilog HDL及AHDL等多种设计输入形式,内嵌自有的综合器及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

Quartus Ⅱ可以在Windows XP、Linux以及Unix上使用,除可以使用Tcl脚本完成设计流程外,还提供了完善的用户图形界面设计方式,具有运行速度快、界面统一、功能集中和易学易用等特点。

Quartus Ⅱ支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性,加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

此外,Quartus Ⅱ与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

1.Quartus Ⅱ软件的安装

随着FPGA和CPLD越来越广泛地使用,各种相应的开发工具软件被不断地研发和升级,Quartus Ⅱ可编程逻辑开发软件是Altera公司为其CPLD/FPGA芯片设计的集成化专用开发工具,用户可以通过Quartus Ⅱ完成从设计输入、编译、仿真、适配到编程下载等整个EDA设计过程,大大提高了设计效率。Quartus Ⅱ软件分为订购版和网络版,订购版需要付费获取软件许可(License),然后才可以使用,而网络版则是免费的。QuartusⅡ网络版软件包括了订购版软件的大部分功能,以及设计Altera最新CPLD和低成本FPGA系列所需的一切资料,它还支持Altera高密度系列中的入门级型号。用户可以到Altera公司的官方网站http://www.altera.com.cn下载免费的Quartus Ⅱ网络版软件。下载软件后,按照提示逐步执行下去即可安装成功。【例1-1】安装Quartus Ⅱ13.0软件(1)将Quartus Ⅱ设计软件的光盘放入计算机的光驱中,Quartus Ⅱ安装光盘将自动启动安装光盘节目,或者用鼠标左键双击setup.exe文件,弹出如图1-1所示的安装向导界面。(2)单击按钮,进入如图1-2所示的Quartus Ⅱ软件的License界面。图1-1 Quartus Ⅱ安装向导界面图1-2 Quartus Ⅱ软件的License界面(3)选中“I accept the agreement”选项,单击按钮,出现安装路径设置对话框,可以根据需要更改QuartusⅡ软件的安装路径(如d:\altera\13.0sp1),也可以直接使用默认安装路径,如图1-3所示。(4)单击按钮,进入选择安装部件界面,如图1-4所示。(5)选择所需的器件系列和要安装的EDA工具,单击按钮,若上一步已勾选安装DSP Builder组件,则弹出指定Matlab安装路径对话框,如图1-5所示。可使用安装向导检测出的安装路径,或者忽略Matlab的安装。(6)单击按钮,进入如图1-6所示的安装所需硬盘空间信息界面,给出了安装选定部件所需的硬盘空间,以及当前指定驱动器上的可用空间。图1-3 Quartus Ⅱ的安装路径图1-4 选择安装部件界面图1-5 安装DSP Builder需要选择Matlab路径(7)单击按钮,即可开始进行Quartus Ⅱ软件的安装。(8)单击按钮,即可完成Quartus Ⅱ软件的安装,如图1-7所示。图1-6 安装所需硬盘空间信息界面图1-7 Quartus Ⅱ软件安装完成界面【注意】 当Quartus Ⅱ软件安装完成后,将给出提示界面,并显示安装成功与否的信息,应当仔细阅读所提示的相关信息。

2.Quartus Ⅱ软件的启动

顺利安装Quartus Ⅱ软件后,系统会在Windows【开始】菜单栏中加入程序项,也可以在桌面上建立Quartus Ⅱ软件的快捷方式。【例1-2】启动Quartus Ⅱ并激活(1)在【开始】菜单栏中找到 Quartus Ⅱ 13.0.1.232 文件夹下的 Quartus Ⅱ图标,单击该图标,或者在桌面上双击快捷方式图标,即可初次启动Quar tus Ⅱ,启动画面如图1-8所示(此界面表示软件尚未被激活)。(2)选择【If you have a valid license file,specify the location of your license file】选项,单击按钮,进入【License Setup】选项界面,在【License file】栏中输入license文件的存放路径,如C:\license.dat,则【LicenseAMPP/MegaCore functions】列表框中出现产品授权信息,如图1-9所示。单击按钮,完成产品授权。图1-8 License安装界面图1-9 License Setup选项界面【注意】 Quartus Ⅱ软件安装完后,必须进行适当的设置和安装授权文件,Quartus Ⅱ软件才能够正常运行。Altera公司对Quartus Ⅱ软件的授权有两种形式,即单用户的授权和多用户的授权。不管是哪一种授权,Quartus Ⅱ都需要有一个有效的、未过期的授权文件License.dat。授权文件包括对Altera综合与仿真的授权。授权文件可以在Altera公司的官方网站http://www.altera.com.cn申请得到。

3.Quartus Ⅱ的主页界面管理

再次启动Quartus Ⅱ软件,Quarius Ⅱ图形用户界面如图1-10所示。Quartus Ⅱ设计环境界面主要由标题栏、菜单栏、工具栏、资源管理窗口、编译状态显示窗口、信息显示窗口和工程工作区等组成。

标题栏:显示当前工程的路径和工程名。

菜单栏:主要由文件(File)、编辑(Edit)、视图(View)、工程(Project)、资源分配(Assignments)、操作(Processing)、工具(Tools)、窗口(Window)和帮助(Help)等下拉菜单组成。

工具栏:包含常用命令的快捷图标。

资源管理窗口:用于显示当前工程中相关的资源文件。包括如下5个选项卡。

♢ Hierarchy:显示逻辑单元、寄存器及存储器资源使用等信息。

♢ Files和Design Units:提供工程文件和设计单元的列表。

♢ IP Components:显示工程中所用到的知识产权(IP)信息。

♢ Revisions:显示工程修订信息。

工程工作区:当QuartusⅡ实现不同的功能时,此区域将打开对应的操作窗口,显示不同的内容,以便进行不同的操作,如器件设置、定时约束设置、编译报告等均显示在此窗口中。图1-10 Quarius Ⅱ图形用户界面

编译状态显示窗口:主要显示模块综合、布局/布线过程及时间。

信息显示窗口:主要显示模块综合、布局/布线过程中的信息,如编译中出现的警告、错误等,同时给出警告和错误的具体原因。【说明】 所有子窗口均可以通过菜单命令“View”→“Utility Windows”进行显示和隐藏切换,也可以在“Status”等子窗口上单击鼠标右键,利用弹出的鼠标右键菜单进行显示切换。1.10 FPGA硬件最小系统

在整个FPGA开发过程中,硬件电路的设计是最重要的基础性工作。只有在设计好硬件电路的基础上,才可以进行软件仿真与下载等工作。FPGA硬件最小系统是可以使FPGA正常工作的最简单的系统,其外围电路尽量少,仅包括FPGA必要的控制电路。一般所说的FPGA的硬件最小系统主要包括FPGA芯片、下载电路、外部时钟、复位电路和电源。如果需要使用SOPC软嵌入式处理器,还要包括SDRAM和FLASH。本节以EP2C8Q208C8 为主芯片进行FPGA硬件最小系统的设计。

1.FPGA芯片引脚介绍

对于需要在PCB上使用大规模FPGA器件的设计人员来说,I/O引脚分配是必须面对的众多挑战之一。它既有可能帮助设计快速完成,也有可能造成设计失败。在此过程中必须平衡FPGA和PCB两方面的要求,同时还要并行完成两者的设计。如果仅针对PCB或FPGA进行引脚布局优化,那么可能在另一方面引起设计问题。因此,在设计FPGA电路前,需要认真地阅读相应的FPGA芯片手册。FPGA的引脚主要包括配置引脚、电源、时钟、用户I/O及特殊应用引脚等。

1)电源引脚

VCCINT:内核电压。通常与 FPGA 芯片所采用的工艺有关,如 130nm 工艺的为1.5V,90nm工艺的为1.2V。

VCCIO:端口电压。一般为3.3V,也支持选择多种电压,如5V、1.8V、1.5V等。

VREF:参考电压。

GND:信号地。

2)时钟引脚

VCC PLL:锁相环引脚电压,直接连VCCIO。

VCCA PLL:锁相环模拟电压,一般通过滤波器接到VCCINT上。

GNDA PLL:锁相环模拟地。

GNDD PLL:锁相环数字地。

CLK[n]:锁相环时钟输入(n表示锁相环序号)。

PLL[n] OUT:锁相环时钟输出(n表示锁相环序号)。

3)配置引脚

MSEL[1..0]:用于选择配置模式。FPGA 有多种配置模式,如主动、被动、快速、正常、串行、并行等,可以此引脚进行选择。

DATA0:FPGA串行数据输入,连接至配置器件的串行数据输出引脚。

DCLK:FPGA串行时钟输出,为配置器件提供串行时钟。

nCSO(I/O):FPGA片选信号输出,连接至配置器件的nCS引脚。

ASDO(I/O):FPGA串行数据输出,连接至配置器件的ASDI引脚。

nCEO:下载链器件使能输出。在一条下载链(Chain)中,当第一个器件配置完成后,此信号将使能下一个器件开始进行配置。下载链的最后一个器件的 nCEO 应悬空。

nCE:下载链器件使能输入,连接至上一个器件的nCEO。下载链第一个器件的nCE接地。

nCONFIG:用户模式配置起始信号。

nSTATUS:配置状态信号。

CONF DONE:配置结束信号。

4)用户I/O

I/O[n]:可作为输入口、输出口,或者双向口,同时可作为

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载