典型的FPGA设计开发流程
- 格式:docx
- 大小:38.74 KB
- 文档页数:5
HDLC的FPGA实现方法摘要:HDLC(高级数据链路控制)的一般实现方法为采用ASIC器件和软件编程等。
应用ASIC器件时设计简单,但灵活性较差;软件编程方法灵活,但占用处理器资源多,执行速度慢,实时性不易预测。
FPGA器件采用硬件处理技术,可以反复编程,能够兼顾速度和灵活性,并能多路并行处理,实时性能能够预测和仿真。
在中小批量通信产品的设计中,FPGA是取代ASIC实现HDLC功能的一种合适选择。
采用Altera公司的FPGA芯片,在MAX+plus II软件平台上实现了多路HDLC电路的设计,并已在某通信产品样机中应用成功。
关键词:数据通信; HDLC;CRC校验;FPGA;MAX+plus II1 引言HDLC(High-level Data Link Control Procedures, 高级数据链路控制规程)广泛应用于数据通信领域,是确保数据信息可靠互通的重要技术。
实施HDLC的一般方法通常是采用ASIC(Application Specific I ntegrated Circuit,特定用途集成电路)器件和软件编程等。
HDLC的ASIC芯片有Motorola公司的MC92460、ST公司的MK5025、Zarlink公司的MT8952B等。
这些集成电路使用简易,功能针对性强,性能可靠,适合应用于特定用途的大批量产品中。
但由于HDLC 标准的文本较多,ASIC芯片出于专用性的目的难以通用于不同版本,缺乏应用灵活性。
例如CCITT、A NSI、ISO/IEC等都有各种版本的HDLC标准,有的芯片公司还有自己的标准,对HDLC的CRC(Cycl ical Redundancy Check,循环冗余码校验)序列生成多项式等有不同的规定。
况且,专用于HDLC的A SIC芯片其片内数据存储器容量有限,通常只有不多字节的FIFO(先进先出存储器)可用。
对于某些应用来说,当需要扩大数据缓存的容量时,只能对ASIC芯片再外接存储器或其它电路,ASIC的简单易用性就被抵销掉了。
机密机密0目录0目录 (2)1概述 (4)1。
1硬件开发过程简介 (4)1。
1。
1硬件开发的基本过程 (4)1.1。
2硬件开发的规范化 (4)1.2硬件工程师职责与基本技能 (5)1.2.1硬件工程师职责 (5)1.2。
2硬件工程师基本素质与技术 (5)2软硬件开发规范化管理 (6)2。
1硬件开发流程 (6)2.1。
1硬件开发流程文件介绍 (6)2.1。
2硬件开发流程详解 (6)2.2硬件开发文档规范 (10)2.2.1硬件开发文档规范文件介绍 (10)2。
2.2硬件开发文档编制规范详解 (11)2.3与硬件开发相关的流程文件介绍 (13)2.3.1项目立项流程: (13)2.3.2项目实施管理流程: (14)2.3.3软件开发流程: (14)2.3。
4系统测试工作流程: (14)2.3。
5内部验收流程 (14)机密3附录一。
硬件设计流程图: (16)4附录二。
软件设计流程图: (18)5附录三。
编程规范 (19)机密1概述1.1 硬件开发过程简介1.1.1硬件开发的基本过程硬件开发的基本过程:1。
明确硬件总体需求情况,如CPU 处理能力、存储容量及速度,I/O 端口的分配、接口要求、电平要求、特殊电路(厚膜等)要求等等。
2.根据需求分析制定硬件总体方案,寻求关键器件及电路的技术资料、技术途径、技术支持,要比较充分地考虑技术可能性、可靠性以及成本控制,并对开发调试工具提出明确的要求。
关键器件索取样品。
3.总体方案确定后,作硬件和单板软件的详细设计,包括绘制硬件原理图、单板软件功能框图及编码、PCB 布线,同时完成发物料清单。
4.领回PCB 板及物料后由焊工焊好1~2 块单板,作单板调试,对原理设计中的各功能进行调测,必要时修改原理图并作记录。
5。
软硬件系统联调,一般的单板需硬件人员、单板软件人员的配合,特殊的单板(如主机板)需比较大型软件的开发,参与联调的软件人员更多。
一般地,经过单板调试后在原理及PCB布线方面有些调整,需第二次投板。
一、概述:EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。
EDA技术是以计算机为工具,根据硬件描述语言HDL(Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。
典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。
综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。
综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。
也就是说,综合器是软件描述与硬件实现的一座桥梁。
综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。
适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中,产生最终的下载文件,如JED文件。
适配所选定的目标器件(FPGA/CPLD芯片)必须属于在综合器中已指定的目标器件系列。
硬件描述语言HDL是相对于一般的计算机软件语言,如:C、PASCAL而言的。
HDL 语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。
设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。
目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。
二、基于EDA工具的FPGA/CPLD开发流程:开发步骤:1、文本/原理图编辑与修改。
深圳双恩科技有限公司产品使用说明书一、FPGA/PLD的基本概念:PLD是可编程逻辑器件(Programable Logic Device)的简称,FPGA是现场可编程门阵列(Field Programable Gate Array)的简称,两者的功能基本相同,只是实现原理略有不同,所以我们有时可以忽略这两者的区别,统称为可编程逻辑器件或PLD/FPGA。
PLD是电子设计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于70年代单片机的发明和使用。
单片机在时序和延迟方面优于FPGA/PLD,但在速度、芯片容量和数字逻辑方面不及FPGA/PLD。
PLD能做什么呢?可以毫不夸张的讲,PLD能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用PLD来实现。
PLD如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。
通过软件仿真,我们可以事先验证设计的正确性。
在PCB完成以后,还可以利用PLD的在线修改能力,随时修改设计而不必改动硬件电路。
使用PLD来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。
PLD的这些优点使得PLD技术在90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言(HDL)的进步。
1如何使用PLD呢?其实PLD的使用很简单,学习PLD比学习单片机要简单的多,有数字电路基础,会使用计算机,就可以进行PLD的开发。
开发PLD需要了解两个部分:1.PLD开发软件 2.PLD本身1.PLD开发软件由于PLD软件已经发展的相当完善,用户甚至可以不用详细了解PLD的内部结构,也可以用自己熟悉的方法:如原理图输入或HDL语言来完成相当优秀的PLD设计。
所以对初学者,首先应了解PLD开发软件和开发流程。
了解PLD的内部结构,将有助于提高我们设计的效率和可靠性。
如何获得PLD开发软件软件呢? 许多PLD公司都提供免费试用版或演示版(当然商业版大都是收费的),例如:可以免费从/上下载Altera公司的 Maxplus2 (Baseline版或E+MAX版),或向其代理商索取这套软件。
第一章前言20世纪末在计算机技术逐渐发展的情况写,电子技术得到了飞速的发展,现代电子产品已经渗透到了社会的各个领域,有力的推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品的性能进一步提高,产品更新换代的节奏也越来越快。
电子技术发展的根基是微电子技术的进步,它表现在大规模集成电路加工技术,即半导体工艺技术的发展上,表征半导体工艺水平的线宽已经达到60nm以下,并还在不断缩小;在硅片单位面积上集成了更多的晶体管,集成电路设计在不断地向超大规模,极低功耗和超高速的方向发展;专用集成电路ASIC (Application Specific Integrated Circuit)的设计成本不断降低,在功能上,现代的集成电路已能够实现单片电子系统SOC(System on a chip)的功能。
另外集成电路(IC)技术在微电子领域中占有重要的地位。
且伴随着IC技术的发展,电子设计自动(Electronic Design Automation,EDA)已经逐渐成为重要的设计手段,其广泛应用于模拟与数字电路系统等许多领域。
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、电流、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
fpga工程师年终总结篇一:FPGA研发牛人心得总结FPGA研发之道FPGA是个什么玩意? FPGA是个什么玩意?首先来说:FPGA是一种器件。
其英文名 feild programable gate arry 。
很长,但不通俗。
通俗来说,是一种功能强大似乎无所不能的器件。
通常用于通信、络、图像处理、工业控制等不同领域的器件。
就像ARM、DSP等嵌入式器件一样,成为无数码农码工们情感倾泻而出的代码真正获得生命的地方。
只不过,一样的编程,却是不一样的思想。
嵌入式软件人员看到的是C。
而FPGA工程师看到是硬件描述语言,verilog或VHDL。
软件看到是函数、对象、重构。
FPGA工程师则是模块、流水、复用。
从现象上看,都是代码到下载程序再到硬件上运行。
不能只看现象而忽略本质。
FPGA 开发本质上是设计一颗IC,“**的身子,丫鬟的命”不是所有verilog/VHDL代码,都能获得青睐去流片成为真正的芯片,而更多的则成为运行在FPGA器件上,成为完成相同功能的替代品。
其实现的功能却一点也不逊色于百万身价流片的近亲。
从而成为独树一帜的行业。
FPGA开发的流程,是通过verilog/VHDL等硬件描述语言通过EDA工具编译、综合、布局布线成为下载文件,最终加载到FPGA器件中去,完成所实现的功能。
那硬件描述语言描述的是什么?这里描述的就是组合逻辑电路和时序逻辑电路。
组合逻辑电路就是大家所熟知的与门、或门、非门。
时序逻辑电路则是触发器。
数字芯片上绝大部分逻辑都是这两种逻辑实现的。
也就是基本上每个电子行业的人所学过的数字电路。
顺便说一下,感谢香农大师,在其硕士毕业论文就奠定了数字电路的的根基。
只不过在FPGA中,与或非的操作变成了查找表的操作。
于是所有的数字电路变成了查找表和寄存器,这就构成了FPGA的基础。
查找表负责逻辑实现,寄存器存储电路状态。
二者配合,双剑合璧,天衣无缝。
这是最初的FPGA的雏形。
现代FPGA内部出了查找表和寄存器之外,还有RAM块,用于存储大量的数据块,这是因为RAM块较寄存器来存储大量数据更能节省芯片实现的面积。
CYUSB3014型USB3.0+FPGA 电路设计详解小梅哥2016年12月29日星期四芯航线AC6102开发板上,使用了一片Cypress 的USB3.0全协议芯片CYUSB3014作为FPGA 与PC 机的高速通信桥梁。
关于CYUSB3014的各项性能和参数介绍,请参考AC6102 USB3.0开发教程中相关介绍。
本节主要介绍AC6102开发板上USB3.0电路的设计细节,方便大家在使用的时候快速核对理解。
以下为AC6102开发板上的USB3.0电路整体框图说明为了充分发挥USB3.0芯片的特性,特将CYUSB3014芯片的所有数字IO 与FPGA 连接,包括32根数据线,13根控制线、4根I2S 信号线以及UART 线等。
复位CYUSB3014有一个复位输入接口,当复位输入为低电平时,芯片处于复位状态。
只有当该引脚为高电平时,芯片才能正常工作,AC6102开发板在设计时,充分考虑了实际应用和系统调试时的情况,给CYUSB3014设计了两种复位方式,分别为FPGA控制复位和上电自动复位。
默认使用上电自动复位方式,该方式非常适合我们调试系统原型时使用,这样不必担心因为重新下载FPGA 的sof固件而导致USB芯片复位,影响USB3.0芯片的正常运行。
增加调试时候的工作量。
(如果使用fpga控制复位,那么每次下载完fpga的sof后,都会对USB芯片执行一次复位操作,从而使芯片内烧写的固件丢失,那么用户只能再烧写一次usb 芯片固件,从而增加了调试时候的工作量)。
如下图,R64默认没有焊接,即断开了CYUSB 芯片与FPGA芯片的连接,从而避免受到FPGA固件的影响,如果产品最终定型需要测试使用FPGA直接控制USB芯片复位,给R64安装100R左右的电阻即可。
时钟晶振CYUSB3014支持外部晶振提供时钟信号,支持19.2、26、38.4和52MHz的时钟频率,AC6102开发板上使用19.2MHz的晶振为CYUSB3014提供时钟源。
AN 563:Arria II GX设计指南导言本应用手册介绍了一套易于掌握使用的指导原则,并列出了Arria® II GX设计中需要考虑的一些因素。
在整个设计过程中,遵循Altera建议非常重要。
Altera® Arria II GX FPGA专为易用、低成本和低功耗而设计,并支持管线收发器和I/O常见(常见I/O)接口。
在设计过程早期规划FPGA和系统是您成功的关键。
本文档讨论了Arria II GX器件构架,以及您在设计中可能使用的一些Quartus® II软件和第三方工具相关事项。
本文档并不包括产品的所有详情。
本应用手册同时参考了其它文献,您可以在其中找到详细的规范、器件特性描述和其它指导原则。
本应用手册中介绍的一些指导原则可提高生产效率,并避免犯一些常见的设计错误。
本应用手册以完成每个阶段的典型顺序来讨论设计流程的各个阶段,如表1所示。
您可以利用第53页的“设计清单”,来帮助验证您是否遵循了每一条指导原则。
表1、设计流程阶段和指导内容汇总表如欲了解Arria II GX器件构架的更多详情,请参见“Arria II GX文献”页面。
如欲了解Arria II GX FPGA相关最新已知问题,请参见“知识数据库”。
系统规范在一些包含Arria II GX器件的系统中,FPGA一般在整个系统中扮演一种非常重要的角色,并影响系统设计的其它部分。
通过给系统和FPGA创建详细的设计规范,并确定连接系统其它部分的FPGA输入和输出接口,以此来开始设计过程非常重要。
创建设计规范在您创建逻辑设计或者完成系统设计以前,详尽的设计规范应该定义系统,规定FPGA的I/O接口,识别不同的时钟域,并包括一个基本设计功能框图。
知识产权模块相关建议,请参见“IP选择”。
花些时间来创建这些规范可以提高设计效率,然而这个阶段常常被FPGA设计人员们跳过。
1.创建详细的设计规范,并在适当的情况下制定出测试计划。
基于FPGA的万年历电路的设计目录摘要 ........................................................................................................................................... Abstract (I)前言 0第1章万年历的发展及FPGA简介 (1)万年历的发展 (1)FPGA简介 (1)第2章设计原理 (2)组成模块 (2)系统设计图 (2)第3章各功能模块介绍 (4)分频模块(fenpin) (4)控制模块(countr) (4)时间显示调整模块(mux_4) (4)时分秒模块(timeve) (5)年月日模块(nyr2009) (5)显示控制模块(mux_16) (6)译码器(yimaqi) (6)第4章模拟仿真 (8)年月日模块仿真 (8)时分秒模块仿真 (8)结论 (9)总结与体会 (10)谢辞 (11)参考文献 (12)附录一 (13)附录二 (24)附录三 (30)基于FPGA的万年历电路的设计摘要基于FPGA的万年历设计,主要完成的任务是使用Verilog语言,在Quartis2上完成电路设计,程序开发模拟,基本功能是能够显示/修改年月日时分秒。
电路设计模块中分为几个模块:分频、控制、时间显示调整、时分秒、年月日、显示控制、译码器。
各个模块完成不同的任务,合在一起就构成了万年历的系统电路设计。
至于程序编写,使用Verilog语言,根据各个模块的不用功能和它们之间的控制关系进行编写。
软件模拟直接在Quartis2上进行。
进入信息时代,时间观念越来越重,但是老式的钟表以及日历等时间显示工具已经不太适合。
如钟表易坏,需要经常维修,日历需要每天翻页等。
对此,数字万年的设计就有了用武之地。
基于FPGA的万年历设计,采用软件开发模拟,开发成本低,而且再功能设计上有很大的灵活度,只要在软件上进行简单的修改就能实现不同的功能要求,能够满足不同环境要求。
Quartus II介绍用Verilog设计第一章介绍本教程介绍了Quartus II®CAD系统介绍。
它是利用FPGA器件实现电路的设计给出了一个典型的CAD流程的一般概述,并说明这种流动是在Quartus II 软件实现。
通过使用Quartus II软件在Altera公司的FPGA器件实现一个非常简单的电路提供一步一步的指示,说明了设计过程。
Quartus II系统包括所有流行的进入一个描述所需的电路转换为CAD系统的方法充分的支持。
本教程使用Verilog设计输入方法,在用户指定的Verilog 硬件描述语言所需的电路。
本教程的其他两个版本也可以;一个用VHDL硬件描述语言,另一种是基于在一个示意图的形式定义所需的电路。
在设计过程中的最后一步是在实际的FPGA器件的配置设计的电路。
显示如何做到这一点,它是假定用户接入到Altera DE系列发展和教育局连接到电脑,Quartus II软件安装。
一个读者没有访问DE系列板仍然会发现有用的教程学习如何编程和配置FPGA执行任务。
屏幕捕捉在教程中使用Quartus II 11版得到;如果使用其他版本的软件,有些图片可能略有不同。
内容:•典型的CAD流•开始•开始一个新项目•Verilog设计输入•编制设计•引脚分配•模拟电路设计•编程和配置FPGA器件•测试电路设计第二章背景计算机辅助设计(CAD)软件可以很容易地通过使用可编程逻辑器件实现所需的逻辑电路,如现场可编程门阵列(FPGA)芯片。
一个典型的FPGA CAD流程如图1所示。
图1 典型的CAD流该CAD流程包括以下步骤:●设计输入–所需的电路是指定的示意图,或使用硬件描述语言,如Verilog或VHDL●合成–输入设计合成了一个电路构成的逻辑元素(LES)在FPGA芯片提供●功能仿真–合成电路进行测试,验证其功能的正确性;这种模拟不考虑任何时机的问题●拟合的CAD–钳工工具确定LES的定义在表到LES在实际的FPGA芯片的位置;它也选择路由的导线在芯片制造所需的之间的连接特定的LES●时序分析–传播延迟在安装电路的各种路径的分析,提供了电路的预期性能的指示●时序仿真–拟合电路进行测试,验证其功能的正确性和时间●编程和配置–所设计的电路是通过编程配置交换机配置的LES和建立所需的布线连接的FPGA芯片实现的一个物理本教程介绍了Quartus II软件的基本特征。
摘要控制器局域网CAN(ControllerAreaNetwork)是80年代初BOSCH公司为解决现代汽车中众多控制单元、测试仪器之间的实时数据交换而开发的一种串行通信协议。
CAN总线仅详细定义了物理层和数据链路层,更多复杂的应用需要应用层协议来解决。
因此,更多关于CAN的高层协议应运而生,CANopen是由CiA(cANinAutomation)组织开发的,它主要采用对象字典结构,将CAN网络中通讯数据的组建和传输进行标准化。
CANopen作为一种开放的CAN高层协议,在工业控制和自动化领域获得了广泛的应用。
本文的研究目的是实现一个可配置、高时效性的基于FPGA技术的CANopen从站。
本文提出了一种通用CANopen从站的设计方法。
CANopen从站的硬件设计以EPlS40F780C5FPGA器件为核心,利用本文设计的CAN控制器模块连接CTMl051A通用CAN隔离收发器构成了CAN总线通信接口电路。
CAN控制器的设计通过对CAN总线协议的分析,以及根据目前市场上主流CAN控制器芯片的功能,确定了本文的CAN控制器模块的结构,将其分为三个大模块,包括寄存器控制模块、位时序逻辑模块、位数据流处理模块,对设计的CAN控制器模块进行了时序仿真。
同时利用芯片的外设资源,设计了时钟电路、电源电路、SRAM电路、Flash电路、复位电路、JTAG接口电路、CAN总线接口电路等,这些电路共同组成了CANopen从站的硬件架构。
软件设计方面,对CANopen从站进行了协议栈的移植。
整个系统的代码遵循模块化的设计原则,包括对象字典的读/写模块、NMT控制模块、SDO报文处理模块和PDO报文处理模块。
采用分层结构实现CANopen协议的功能,分别对硬件驱动层、CANopen协议,以及设备规范应用层进行了设计。
最后提出了CANopen从站的测试方案,采用CANoe软件设计了CANopen主站的上位机软件,上位机通过CANCardXL接口卡与CANopen从站通信,在125Kbps的波特率下,测试了NMT、SDO、PDO报文通信及CAN总线负载,并采用力科示波器WaveRunner44MXi.A进行了实时报文观测。
典型的FPGA 设计开发流程
(2011-10-02 16:08:17)
标签: 杂谈
分类: 专业总结
FPGA 的设计流程就是利用EDA 开发软件和编程工具对FPGA 芯片进行开发的过程。
FPGA 的开发流程一般如图1所示,包括电路设计、设计输入、功能仿真、综合优化、综合后仿真、实现、布线后仿真、板级仿真以及芯片编程与调试等主要步骤。
图1 FPGA 开发的一般流程
1. 电路功能设计
在系统设计之前,首先要进行的是方案论证、系统设计和FPGA
芯片选择等准备工作。
系统工程师根
据任务要求,如系统的指标和复杂度,对工作速度和芯片本身的各种资源、成本等方面进行权衡,选择合理的设计方案和合适的器件类型。
一般都采用自顶向下的设计方法,把系统分成若干个基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接使用EDA元件库为止。
2.设计输入
设计输入是将所设计的系统或电路以开发软件要求的某种形式表示出来,并输入给EDA工具的过程。
常用的方法有硬件描述语言(HDL)和原理图输入方法等。
原理图输入方式是一种最直接的描述方式,在可编程芯片发展的早期应用比较广泛,它将所需的器件从元件库中调出来,画出原理图。
这种方法虽然直观并易于仿真,但效率很低,且不易维护,不利于模块构造和重用。
更主要的缺点是可移植性差,当芯片升级后,所有的原理图都需要作一定的改动。
目前,在实际开发中应用最广的就是HDL语言输入法,利用文本描述设计,可以分为普通HDL和行为HDL。
普通HDL有ABEL、CUR 等,支持逻辑方程、真值表和状态机等表达方式,主要用于简单的小型设计。
而在中大型工程中,主要使用行为HDL,其主流语言是Verilog HDL和VHDL。
这两种语言都是美国电气与电子工程师协会(IEEE)的标准,其共同的突出特点有:语言与芯片工艺无关,利于自顶向下设计,便于模块的划分与移植,可移植性好,具有很强的逻辑描述和仿真功能,而且输入效率很高。
3.功能仿真
功能仿真,也称为前仿真,是在编译之前对用户所设计的电路进行逻辑功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。
仿真前,要先利用波形编辑器和HDL等建立波形文件和测试向量(即将所关心的输入信号组合成序列),仿真结果将会生成报告文件和输出信号波形,从中便可以观察各个节点信号的变化。
如果发现错误,则返回设计修改逻辑设计。
常用的工具有Model Tech公司的ModelSim、Sysnopsys公司的VCS和Cadence公司的NC-Verilog以及NC-VHDL等软件。
虽然功能仿真不是FPGA开发过程中的必需步骤,但却是系统设计中最关键的一步。
4.综合
所谓综合就是将较高级抽象层次的描述转化成较低层次的描述。
综合优化根据目标与要求优化所生成的逻辑连接,使层次设计平面化,供FPGA布局布线软件进行实现。
就目前的层次来看,综合优化(Synthesis)是指将设计输入编译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接网表,而并非真实的门级电路。
真实具体的门级电路需要利用FPGA制造商的布局布线功能,根据综合后生成的标准门级结构网表来产生。
为了能转换成标准的门级结构网表,HDL程序的编写必须符合特定综合器所要求的风格。
由于门级结构、RTL级的HDL程序的综合是很成熟的技术,所有的综合器都可以支持到这一级别的综合。
常用的综合工具有Synplicity公司的Synplify/Synplify Pro软件以及各个FPGA厂家自己推出的综合开发工具。
5.综合后仿真
综合后仿真检查综合结果是否和原设计一致。
在仿真时,把综合生成的标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响。
但这一步骤不能估计线延时,因此和布线后的实际情况还有一定的差距,并不十分准确。
目前的综合工具较为成熟,对于一般的设计可以省略这一步,但如果在布局布线后发现电路结构和设计意图不符,则需要回溯到综合后仿真来确认问题之所在。
在功能仿真中介绍的软件工具一般都支持综合后仿真。
6.实现与布局布线
实现是将综合生成的逻辑网表配置到具体的FPGA芯片上,布局布线是其中最重要的过程。
布局将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上,并且往往需要在速度最优和面积最优之间作出选择。
布线根据布局的拓扑结构,利用芯片内部的各种连线资源,合理正确地连接各个元件。
目前,FPGA的结构非常复杂,特别是在有时序约束条件时,需要利用时序驱动的引擎
进行布局布线。
布线结束后,软件工具会自动生成报告,提供有关设计中各部分资源的使用情况。
由于只有FPGA芯片生产商对芯片结构最为了解,所以布局布线必须选择芯片开发商提供的工具。
7.时序仿真与验证
时序仿真,也称为后仿真,是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束条件或器件固有的时序规则,如建立时间、保持时间等)现象。
时序仿真包含的延迟信息最全,也最精确,能较好地反映芯片的实际工作情况。
由于不同芯片的内部延时不一样,不同的布局布线方案也给延时带来不同的影响。
因此在布局布线后,通过对系统和各个模块进行时序仿真,分析其时序关系,估计系统性能,以及检查和消除竞争冒险是非常有必要的。
在功能仿真中介绍的软件工具一般都支持综合后仿真。
8.板级仿真与验证
板级仿真主要应用于高速电路设计中,对高速系统的信号完整性、电磁干扰等特征进行分析,一般都以第三方工具进行仿真和验证。
9.芯片编程与调试
设计的最后一步就是芯片编程与调试。
芯片编程是指产生使用的数据文件(位数据流文件,Bitstream Generation),然后将编程数据下载到FPGA芯片中。
其中,芯片编程需要满足一定的条件,如编程电压、编程时序和编程算法等方面。
逻辑分析仪(Logic Analyzer,LA)是FPGA设计的主要调试工具,但需要引出大量的测试管脚,且LA价格昂贵。
目前,主流的FPGA芯片生产商都提供了内嵌的在线逻辑分析仪(如Xilinx ISE中的ChipScope、Altera QuartusII中的SignalTapII以及SignalProb)来解决上述矛盾,它们只需要占用芯片少量的逻辑资源,具有很高的实用价值。