- 21 -浙江大学硕士学位论文 第3章 FPGA与硬件描述语言
位宽的配臵数据下载,时钟CCLK信号,片选(CS)信号和写信号(Write)。如果芯片的Busy端为高,则数据被保持真到Busy信号为低止再继续进行数据配臵[5][8][9]。
在FPGA配臵以后,这些从动并行端(D0—D7)仍然可以用来作为另外一些用户I/O使用。并且,这些端也可用于8-Bit位的高速数据回读。
〃边界扫描模式
在采用边界扫描式来对FPGA器件配臵或回读配臵数据时,不需要使用非专用脚,仅需通过器件固有的基于IEEE 1149.1的测试端,TAP即可进行。通过TAP进行数据配臵时,需要采用专门的CFG、IN指令,这个指令可使到达TDI的输入数据转换成内部配臵总线的数据包。
(3).反熔丝(antifuse)编程技术
所谓的反熔丝(Antifuse)编程技术,是指具有反熔丝(Antifuse)阵列开关结构的FPGA,其逻辑功能的定义是由专用编程器,根据设计实现所给出的数据文件,对其内部的反熔丝阵列进行有的放矢的烧录,从而使器件一次性实现相应的逻辑功能。
图 3.2反熔丝原胞
图3.3给出一个典型的反熔丝开关示意图。图中PLICE反熔丝是在n+扩散和多晶硅之间的介质,它和CMOS、双极型工艺均可兼容[10]。
3.2 FPGA设计流程
FPGA 基本的开发流程 主要包括 :
* 设计输入( Design Entry ); * 设计仿真( Simulation ); * 设计综合( Synthesize ); * 布局布线( Place & Route ); * 配臵( Configuration ) 基于ISE的FPGA设计基本流程图如图3.3所示
21
- 22 -浙江大学硕士学位论文 第3章 FPGA与硬件描述语言
图 3.3基于ISE的FPGA设计基本流程
设计输入:主要有原理图输入、HDL 输入和状态图输入三种方式,一般开发商都同时支持三种输入方式。还有的甚至提供更多的输入方式,如 Xilinx 公司的 ISE6.0 就提供四种输入方式,包括 EDIF网表输入。有些熟悉硬件设计的工程师开始喜欢利用原理图进行设计,这种方法非常直观,但是基于可移植性和规范化方面的考虑,绝大部分深入FPGA设计和ASIC 设计的工程师最终都将统一到 HDL 平台上来。
设计仿真:包含功能仿真和时序仿真两项主要内容,功能仿真忽略了综合和布局布线导致的时延等因素,仅仅从逻辑上进行仿真,这对设计思路的验证是有帮助的,但必须通过时序仿真作进一步验证,发现并且修正时序问题[5]。
设计综合:将HDL语言生成用于布局布线的网表和相应的约束。综合效果直接导致设计的性能和逻辑门的利用效率,因此,很多可编程逻辑器件开发商都支持第三方综合和仿真工具,著名的有:Synplicity 、 Synopsys 和 ModelSim 等。
布局布线:工具利用综合生成的网表,在 FPGA 内部进行布局布线,并且生成可用于配臵的比特流文件 (有了比特流文件就可以下载到板子里了 ) 。布局布线工具与可编程逻辑器件工艺及其布线资源密切相关,一般由可编程逻辑器件开发商直接提供。
22
- 23 -浙江大学硕士学位论文 第3章 FPGA与硬件描述语言
3.3 硬件描述语言设计方法
3.3.1 硬件描述语言发展概况
硬件描述语言(Hardware Description language)是硬件设计人员和电子设计自动化(EDA)工具之间的界面。其主要目的是用来编写设计文件建立电子系统行为级的仿真模型,即利用计算机的巨大能力对用Verilog HDL或VHDL建模的复杂的数字逻辑进行仿真.然后再自动综合从而生成符合要求且在电路结构上可以实现的数字逻辑网表(Netlist),根据网表和某种工艺的器件自动生成具体电路.然后生成该工艺条件下这种具体电路的延时模型,仿真验证无误后,用于制造ASIC芯片或写入EPLD和FPGA器件中[5]。
在EDA技术领域中把用HDL语言建立的数字模型被称为软核(soft core),把用建模和综合后生成的网表称为固核(Hard core),对这些模块的重复利用不仅缩短了开发时间,而且还提高了产品开发率和设计效率[11]。
3.3.2 Verilog HDL目前的应用情况与适用的设计
近10年来,EDA界一直对在对数字逻辑设计中采用哪种硬件语言而争论不休,目前的情况是各有千秋。在美国,日本和中国台湾高层次数字系统设计绝大部分都采用Verilog HDL,而在欧洲VHDL发展的比较好。Verilog HDL是专门为复杂数字系统设计仿真而开发的,本身就非常适合复杂数字逻辑系统的仿真和综合。由于Verilog HDL在其门级描述的底层,也就是晶体管开关的描述方面比VHDL有着强大的功能,所以即使是在VHDL的设计环境下,在底层实际也是由Verilog HDL描述的器件库支持的。在深亚微米ASIC和高密度FPGA已经成为电子设计主流的今天,VeIilog HDL有着更远大的发展前景[13]。
3.3.3 采用硬件描述语言的设计流程
(1)自顶向下(top-down)设计的基本概念
利用层次化、结构化的设计方法,一个完整的设计任务首先是由设计师划分为若干个可操作的模块,编制出相应的模型;在通过仿真验证后,然后把模块分给下一层的设计者。这就允许多个设计者同时设计一个硬件系统中的不同模块,其中每个设计者都有负责自己所承当的部分,而由上一层设计师对其下层设计者完成的设计用行为级上层模块对其设计进行验证。为了提高设计质量,一部分模
23
- 24 -浙江大学硕士学位论文 第3章 FPGA与硬件描述语言
块可以通过商业渠道得到,这样可以节省开发时间和经费。图3.4为自顶向下设计思想的示意图。
系统级设计 模块A 模块B 模块C 模块A1 模块A2 模块B1 模块B2 模块C1 模块C2
图 3.4自顶向下设计思想
自顶向下设计是从系统级开始,把系统划分为基本单元,新产品的开发总是系统设计入手,先进行方案的总体论证、功能描述、任务以及指标的分配。
(2)层次管理的基本概念
复杂数字逻辑电路和系统的层次化、结构化设计隐含着对系统设计方案的逐次分解。在设计过程中的任意一个层次,至少得有一种形式来描述硬件。硬件描述通常称为行为建模。在集成电路设计的每一层次,硬件可以分为一些模块。该层次的硬件结构由这些模块互相描述。这些模块称为该层次的基本单元,而该层次的基本单元又有下一层次的基本单元互连而成。
(3)具体模块的设计编译和仿真过程
在不同的层次做具体模块的设计所用的方法也有所不同。在高层次上往往编写一些行为级的模块通过仿真加以验证,其主要的目的是系统性能的总体考虑和各模块的指标分配,并非具体电路的实现,因此综合以上的步骤往往不需要进行;而当设计接近底层时,行为描述往往要用电路逻辑来描述实现。此时模块不但需要通过仿真加以验证,而且还要通过进行综合、优化和后仿真。总之,具体电路是从底向上逐步实现的。图3.5简要的说明了模块的编译和测试过程。
24
- 25 -浙江大学硕士学位论文 第3章 FPGA与硬件描述语言
电路图设计文HDL设计文 电路功能仿真 HDL功能仿真 没问题 HDL设计文确定实现电路的具体库明,指定综合生成的网络类 优化、布局布线 有问题 门级仿真 电路制造工艺文件 或FPGA码流文图 3.5 HDL设计流程
与物理器件相关的布局布线,约束等工艺技术文
从图3.5中可以发现,模块设计流程主要有两大功能部分组成。 设计开发:编写设计文件---综合到布局布---投片生产等---系列步骤。 设计验证:进行各种仿真的一系列步骤。如果仿真中遇到问题,就返回设计输入进行仿真。
(4)对应具体工艺器件的优化、映像和布局布线由于各种ASIC和FPGA器件的工艺各不相同,因此当用不同厂家的不同器件来实现已验证的逻辑网表(EDIF文件)时,就需要不同的基本单元库与布线延迟模型与之对应,才可以进行准确的优化、映像以及布局布线。
3.4 本章小节
本章着重介绍了FPGA以及FPGA的一些基本原理,还有硬件描述语言以及基于硬件描述语言设计系统的软件。
25