FPGA综合设计指导书探素Word文档下载推荐.docx
《FPGA综合设计指导书探素Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《FPGA综合设计指导书探素Word文档下载推荐.docx(90页珍藏版)》请在冰点文库上搜索。
(3)设计可重用
设计结果完全可以以一种知识产权(IP-IntellectualProperty)的方式作为设计人员或设计单位的设计成果,应用于不同的产品设计中,做到设计成果的再利用,而且提高了系统的可靠性。
(4)设计易于更改
设计人员可在极短的时间内修改设计,对各种FPGA/CPLD结构进行设计结果、规模(门消耗)和速度(时序)比较,选择最优设计方案。
(5)能设计和处理大规模复杂电路
目前的FPGA/CPLD器件正向高集成度、深亚微米工艺发展。
为设计系统的小型化,低功耗、高可靠性等提供了必要的手段。
设计低于一万门左右的电路,Top-Down设计方法具有很大的帮助,而设计更大规模的电路,Top-Down设计方法则是必不可少的手段。
(6)设计周期缩短,生产效率大大提高,产品上市时间提前,性能明显提高,产品竞争力加强。
据统计,采用Top-Down设计方法的生产率可达到传统设计方法的2到4倍。
Top-Down设计如图0.3所示,其核心是采用HDL语言进行功能描述,由逻辑综合(LogicSynthesis)把行为(功能)描述转换成某一特定FPGA/CPLD的工艺网表,送到厂商的布局布线器完成物理实现。
在设计过程的每一个环节,仿真器的功能验证和门级仿真技术保证设计功能和时序的正确性。
功能验证
门级仿真
图0.3自顶向下设计方法
1.2FPGA设计基本流程
随着FPGA设计技术的迅速发展,高性能的EDA综合开发工具(平台)得到了长足发展,而且其自动化和智能化程度不断提高,为复杂的FPGA设计提供了不同用途和不同级别集设计输入、综合、布局、布线、编译、模拟、测试、验证和器件编程等一体化的易于学习和方便使用的集成开发环境,因此可编程逻辑器件得到广泛应用。
现在的FPGAEDA软件设计基本流程如图1.2:
在线校验
图1.2FPGA设计流程
可见FPGA设计流程一般包含三个层次:
设计输入、综合、实现,再加上一个设计验证(仿真、在线校验)。
1、设计输入
设计输入层的主要作用是输入Verilog、VHDL等硬件描述语言。
但是设计人员进行产品设计的最初并不是考虑如何去编写HDL语言,而是习惯于画出设计的框图,并采用图形化方法(流程图、状态图、真值表等)把它描述出来,所以设计输入模块一般还提供原理图/框图、状态图、流程图、真值表等输入方式,并且能把原理图/框图、状态图、流程图、真值表等转换成Verilog、VHDL等硬件描述语言。
现在图形化输入软件比较多,如Mentor公司的HDLDesignerSeries、Xilinx的ISEWebPACK/FOUNDATION、ALDEC的Active-HDL等等。
图形化输入比较适合于初学者。
2、综合
综合就是把Verilog、VHDL等硬件描述语言综合成门级电路实现(EDIF网表),或者说通过映射和优化过程,把设计功能描述转换成与物理实现密切相关的工艺网表。
在转换过程中,不仅需要确保每一功能转换正确,还需保证尽量采用较少的硬件开销,满足设计的时序要求。
目前从硬件设计层次来说,综合主要包括逻辑综合、行为综合。
逻辑综合针对逻辑结构层次硬件描述,而行为综合针对行为/RTL级层次硬件描述。
更高层次的综合技术正在迅速发展,如针对系统级硬件描述SystemC的系统级综合技术取得了长足的进步。
综合技术的优劣直接决定了电路功能的实现方法、电路所占资源的多少、电路的工作速度,以及其它各项性能是否符合要求等。
虽然这一切跟HDL程序设计的优劣息息相关,但同样的设计经过不同的软件综合后可能有不同的结果,所以好的综合软件能带来事半功倍的效果。
因此,综合是FPGA/CPLDTop-Down设计过程的关键。
需要注意的一点是由于受到综合技术的限制,目前的综合软件还不能对HDL语言中期望综合的所有语句进行综合。
有些语句不能综合,有些语句受到限制。
能综合的HDL语句的多少与综合软件相关,不同公司的综合软件限制不一样。
这一点可以查看所使用的综合软件的技术手册。
目前各种综合软件琳琅满目,但被大多数设计人员认可、占有一定市场份额的主要是由几大EDA公司所开发的。
例如Cadence、Synopsys、Synplicity、Mentor等。
Cadence公司的软件主要是应用于IC设计方面,且大多工作在工作站上,所以一般条件下很难接触到。
Synopsys的综合软件比较多,如FPGAExpress、FPGACompilerII、DesignCompiler等。
FPGAExpress由于原来为Xilinx和Altera做OEM版。
它使用较为简单,可根据面积或速度进行优化,对FPGA/CPLD的芯片支持较多。
但有三个缺点:
一是不自带编辑器。
二是电路图查看效果很差。
电路图由于对设计人员来说较为直观,所以经常用到该功能。
特别是对于初学者,刚接触HDL时没有清晰的概念,更要多查看综合后的原理图,以使自己对HDL语言本身有较直观的理解,也对综合软件的各项特性有个大致认识。
第三是它对电路的优化效果不好,占用较多的FPGA资源。
Synplicity公司的HDL综合软件有Synplfy(Pro)、Amplify、Certify和SynplifyAsic。
SynplifyPro的最新版是7.1,界面简洁、使用方便、功能强大。
它所带的编辑器自动对HDL语法加亮显示,电路图查看功能非常好用,并且能够将电路图以门级方式显示,还能显示关键路径(CriticalPath)。
SynplifyPro的各项优化设置不是很多,主要有速度、时钟、延时等几方面,简单却功能强大。
MentorGraphics公司的LeonardoSpectrum也是一款非常优秀的综合软件。
同时它也是PC机上为数不多的支持ASIC开发的综合软件之一。
它支持众多的FPGA/CPLD器件,各项约束功能强大,具备RTL级和门级电路查看功能并以彩色显示,支持多种输出网表格式,同时它也能调用其它FPGA厂家的布线器。
而且还可以对IO信号的引脚位置进行分配。
除专业EDA软件公司外,一些FPGA公司也开发了自己的HDL综合软件,例如Xilinx的ISE中默认的综合软件就是它自己开发的XST。
另外Altera公司在它的Quartus系列中也是用的自己的综合软件。
3、实现
实现主要是完成格式转换、资源映射和布局布线等工作。
由于综合软件多种多样,输出的工艺网标格式不一(尽管有统一标准EDIF),所以在实现前需要格式转换软件把综合软件输出格式转换成实现软件所接受的格式,这就是格式转换。
有的综合软件也可以完成格式转换。
资源映射就是把综合软件输出的门级结构映射成具体FPGA器件所具有的门级结构。
这是因为具体FPGA器件所有门级结构是固定的,而综合软件输出的门级结构是丰富多彩的。
例如某FPGA器件由两输入与非门构成,则其它形式门电路以及多输入与非门就需要经过资源映射。
布局布线就是在FPGA器件里放置门电路并走线。
实现与所用FPGA/CPLD器件密切相关,一般只能采用相关器件公司的实现软件。
常用的实现软件有Xilinx公司ISEWebPACK、ISEFoundation,Altera公司Max+PlusII、QuartusII等等。
4、仿真
目前仿真包括:
行为级仿真(RTL级仿真)、门级仿真。
在FPGA/CPLDTop-Down设计流程中,仿真包含在设计过程的每一环节中,以保证设计的正确性。
行为级仿真是根据行为级硬件描述所做的仿真,此时的仿真完全基于HDL描述。
一般情况下,由于行为级与RTL级硬件建模混合在一起,所以行为级仿真也包括RTL级仿真。
硬件描述语言中的时延语句指定的时延只能在行为级仿真起作用。
门级仿真指的是在综合之后的仿真,包括门级功能仿真和门级时序仿真。
此时综合软件忽略加入的时延语句。
门级功能仿真也叫综合后仿真,它不考虑门电路和布线的延迟。
门级时序仿真则是指将门电路和布线的延迟也计算进来(在门级时序仿真中有一种资源映射后仿真,它只计算门电路的延迟)。
行为级仿真(RTL级仿真)有时也叫前仿真,综合之后的所有仿真也叫后仿真。
一般仿真工具都支持上述各种仿真。
现在的仿真软件比较多,例如VCS、NC-Verilog、NC-VHDL、Verilog-XL、Modelsim等。
对于开发FPGA来说,一般是使用FPGA厂家所提供的集成开发环境,例如Xilinx公司的ISEWebpack/Foundation,Altera公司的Maxplus、Quartus等。
其中部分软件使用的是它们自己所开发的仿真器,例如Maxplus、Quartus,而另一些则是嵌入专业EDA软件公司的OEM版软件,例如ISEWebpack/Foundation使用的是ModelsimXE(XilinxEdition)。
仿真中必不可少的一步是给被测电路的输入信号给予激励。
一种方法是直接给输入波形,但很多波形编辑器都不是很好用;
另一种是写测试文件,即Testbench,但该方法也有不足之处,特别是在加不规则波形时。
另外还有一种方法,就是在仿真软件中用命令方式加输入波形,例如Modelsim,不过初学者通常对其不感兴趣,这就是许多人说Modelsim不容易入门的原因。
与FPGAEDA软件设计流程类似,设计人员的工作过程如图1.3:
器件下载
图1.3工作流程
1.3FPGA设计EDA软件组合
采用Top-Down设计方法进行FPGA设计,其设计结果的优劣与否取决于三个重要的因素:
描述手段(即HDL语言)、设计方法和设计工具。
描述手段是设计的基础,设计方法需要实践经验,而设计工具则是Top-Down设计的关键。
一套完整、强大、性能卓越的设计工具,可帮助设计人员最大限度的发挥其设计能力。
由于相应设计层次都有相应的EDA软件,而且EDA软件很丰富,种类繁多。
根据我们的实际需要,下面看一下四种典型的FPGA设计EDA软件组合(这里以Xilinx公司的器件为例):
ISEWebpack
ISEFoundation
Active-HDL
FPGAAdvatage
公司
Xilinx
ALDEC
Mentor
输入
Webpack
Foundation
HDLDesignerSeries
仿真
ModelsimXE
Modelsim
综合
XilinxXST
LeonardoSpectrum
Synplifypro
FPGACompileII
其它综合软件
实现
第2章XILINXISEFoundation5.1
2.1ISEFoundation5.1概述
XilinxISEFoundation5。
1包括:
设计输入和综合工具、backPACK工具、器件布线工具。
用于对CPLD和FPGA的开发。
作为一个集成的桌面设计环境使用的EDA设计工具,它实现了从设计输入、设计综合、设计验证到设计实现的全套功能,最后生成的二进制文件文件(*.bit)可以下载Xilinx公司的器件中去。
ISEFoundation设计流程图如下:
图2.1ISEFoundation设计流程
从上图可以看出ISEFoundation设计流程包括五大部分:
设计输入、设计综合、设计实现、器件下载和设计验证。
2.2设计输入
ISEFoundation5.1有三种输入方式VHDL和Verilog语言输入,原理图输入和状态图输入。
在输入源文件时应指明输入方式。
1.项目设置
点击File菜单显示界面如图2.2。
图2.2项目设置菜单
点击New Project条目,进入编辑窗口如图2.3
图2.3Project编辑窗口
按窗口提示键入Project名称和各个选项,点击Ok完成项目设置。
2.源文件输入
点击Project菜单,点击Project菜单中New Source条目进入编辑窗口如图2.4
图2.4源文件输入编辑窗口
按窗口提示键入Source名称和各个选项,点击Ok完成源文件设置。
如图2.5
图2.5源文件设置后主窗口显示的内容
3,原理图输入
点击原理图文件名打开原理图编辑器,进行原理图输入如图2.6
图2.6原理图编辑器窗口
如果原理图较大,可以分成几个模块输入。
创建模块按下面步骤进行:
图2.7创建模块窗口一
在原理图程序器中选中Tools菜单,点击SymbolWizard条目,打开SymbolWizard窗口,选择SpecifyManuall,点击下一步。
图2.8创建模块窗口二
在SymbolName条目下写入模块名,在Pin条目下点击Add依次引脚的名称、极性和引脚位置。
加完所有引脚后点击下一步显示一个图形符号,再点击下一步显示一个创建的模块符号,点击完成。
关闭窗口。
此时在原理图的符号点击中可以看到创建的模块符号名。
然后可以应用创建的模块完成原理图的输入。
原理图输入后对输入、输出引脚要加I/OBuf和输入、输出Pad。
原理图输入完成后要加入引脚约束文件。
加引脚约束文件按下面步骤进行:
点击Project菜单中NewSource条目,选择ImplementatianConstraintsFile
如图2.9,加入文件名产生.ucf文件。
然后点击PorcessesForCurrentSource
窗口中的CreateTimingConstrains条目。
运行程序对原理图进行检查,若无错误,程序打开一个编辑窗口,在这个窗口中点击Prots后跟椐FPGA引脚配置表对原理图引脚进行配置如图2.10
图2.9创建引脚约束文件窗口一
图2.10创建引脚约束文件窗口二
VHDL和Verilog语言输入,状态图输入见第四章.
2.3设计综合
点击PorcessesForCurrentSource窗口如图2.11。
图2.11PorcessesForCurrentSource窗口
双击Synthesize运行程序,完成综合。
如有错误,跟据综合报告进行修改,再进行综合,直到综合正确。
2.4实现
实现分三步进行,格式转换(Translate)、资源映射(Map)和布局布线(PlaceRoute)。
在PorcessesForCurrentSource窗口中双击ImplementDesign运行程序完成布局布线。
2.5配置下载
将下载电缆一端接计算机并口,另一端接综合实验平台的SS-1接口。
器件下载可分为两步执行,第一步产生下载文件;
第二步配置下载端口,执行下载。
在PorcessesForCurrentSource窗口中双击GenerateProgrammingFile产生配置文件(.bit)
双击ConfigureDevice(iMAPCT),选择ConfigureDevice,点击下一步,选择SlaveSerialMode,点击完成,进行配置下载。
如图2.12,图2.13。
如下载成功综合实验平台的Ok灯灭。
否则下载不成功。
7,实验验证
在综合实验平台上进行功能验证。
图2.12配置下载窗口一
图2.13配置下载窗口二
第3章Modelsim开发环境
3.1Modelsim用户界面
以ModelSim5.6b为例进行介绍,下图为其用户界面(包含我们仿真时要用到的几个主要窗口):
结构窗口
图3.1Modelsim用户界面
Modelsim有九个子窗口:
Main,Structure,Source,Signals,Process,Variables,Dataflow,Wave和List窗口。
除了Main窗口外,支持其它窗口的多个副本(注意:
Main窗口只允许存在一个,因为这个窗口控制仿真器)。
我们可以使用“拖放操作”,在一个窗口选择HDL项后,使用鼠标左键,这些项能被从一个窗口拖放到另一个窗口。
HDL项可从Dataflow,List,Signals,Source,Structure,Variables,和Wave窗口拖出。
可把它们放到Dataflow,List或者Wave窗口。
1、MainWindow
我们首先介绍一下主窗口和MainWindow的部分菜单,下图就是MainWindow的用户界面:
执行过的命令
图3.2主窗口
命令窗口出现如下提示符:
ModelSim>
这是仿真加载前的提示符,能浏览帮助,编译库,编译源代码而不用调用一个真正的仿真。
VSIMx>
这是仿真加载后的提示符,如上图。
现在可以运行仿真命令。
输入运行时间:
例如100ns
MainWindow的工具栏如下图:
图3.3主窗口工具栏
下面来看一下的MainWindow的部分菜单:
(1)File菜单如下图:
打开文件、项目
图3.4File菜单项
(2)View菜单如下图:
View菜单主要用来打开子窗口和查看仿真结果(Dataset)
打开仿真结果窗口
图3.5View菜单项
(3)Simulate菜单如下图:
暂停当前仿真
图3.6Simulate菜单项
(4)Tool菜单如下图:
执行宏命令Do文件
图3.7Tools菜单项
2、StructureWindow
设计的结构多层浏览
–VHDL-Package,componentinstantiation,generateandblockstatements;
–Verilog-module实例,namedfork,namedbegin,task和function;
–Instantiationlabel,entity/module,architecture;
–成为当前层forSource和Signals窗口,updatesProcess和Variables窗口
显示Structure窗口的命令
图3.8StructureWindow
在结构窗口里主要是选择模块名,相应模块名的信号名就显示在SignalWindow中,源代码就显示在SourceWindow中。
3、SourceWindow
图3.9SourceWindow
从Structure窗口选择模块名,相应模块名的源代码就显示在SourceWindow中。
具有完全的编辑能力、保存、编译和重启,还能使用拖放操作,描述所选的HDL项的信息,检查所选HDL项当前仿真值。
SourceWindow主要是用来跟踪、调试(设置断点、单步运行等)、编辑、编译源代码所用。
4、SignalWindow
从Structure窗口选择模块名,相应模块名的信号名就显示在SignalWindow中。
具备基本操作能力:
排序—升序、降序或声明顺序;
层次—(+)可展开的,(-)已展开的。
可以显示VHDL信号、Verilog线网、寄存器变量和已命名的时间变量。
能够执行“拖放”操作,从SignalWindow拖放信号名到Wave和List窗口。
Force能够输入信号(用于激励)。
Filter可以过滤选择信号类型(输入,输出,内部等)。
选择显示信号类型
图3.10SignalWindow
5、WaveWindow
用波形浏览仿真结果的图形化的历史记录,包括VHDL信号和过程变量、Verilog线网、寄存器变量、已命名事件。
对于更多的逻辑信号可用多个波形窗口显示(波形窗口副本)。
可以改变信号和向量的基数已方便查看。
可以保存波形用于波形比较。
适中显示
图3.11W