基于FPGA的计时器设计(最终) - 图文 联系客服

发布时间 : 星期四 文章基于FPGA的计时器设计(最终) - 图文更新完毕开始阅读

硬件原则主要针对HDL代码编写而言的。硬件描述语言,它通过对硬件的抽象,最终实现在芯片内部的实际电路。因此评判一段HDL代码的优劣的最终标准是:其描述并实现的硬件电路的性能(主要是指面积和速度)。评价一个设计的代码水平,主要从设计工程师所构想的硬件实现方案的效率以及合理性来分析。

一个硬件系统,通过何种方式进行模块划分与任务分配,使用算法和实现功能,以及FPGA的规模估算、数据接口设计等,具体到FPGA的设计就要求对设计的全局有个宏观上的合理安排。一般来说实时性要求高、频率快、功耗小的功能模块适合使用CPLD实现。而FPGA与CPLD相比,更适合实现规模较大、频率较高、寄存器资源使用较多的设计。

面积和速度的平衡与互换原则进行FPGA设计时的一个重要原则。这里“面积”是指一种设计所要消耗的FPGA/CPLD的逻辑资源的数量,对于FPGA可以用所消耗的触发器(FF)和查找表(LUT)来衡量,更一般的衡量方式可以用设计所占用的等价逻辑门数。“速度”是指设计在芯片上稳定运行,所能够达到的最高频率,这个频率由设计的时序状况决定,和设计满足的时钟周期,时钟建立时间(Clock Setup Time),时钟保持时间(Clock Hold Time)等众多时序特征量密切相关。面积和速度是对立统一的矛盾体。要求一个设计同时具备运行频率最高而且面积最小是不现实的。科学的设计方法是在满足设计时序要求的前提下,占用最小的芯片面积。或者在所规定的面积下,频率更高。这两种目标充分体现了面积和速度的平衡思想。相比之下,满足时序、工作频率的要求更重要一些,当两者冲突时,采用速度优先的准则。

采用同步时序设计是FPGA设计的一个重要原则。它可以使静态时序分析变得简单而且可靠,能有效地避免毛刺的影响,使设计更加有效,还可以减小环境对芯片的影响。在遵循这一原则的时候,应该尽可能的在设计中使用同一时钟,时钟走全局网络,同时避免使用混合时钟采样数据。

2.3 利用硬件描述语言(HDL)的硬件电路设计方法

硬件描述语言,就是可以描述电路的功能、信号连接关系及定时关系的语言。它能比电路图更有效地表示硬件电路的特性。利用硬件描述语言编程来表示逻辑器件及系统硬件的功能和行为,是该设计方法的一个重要特征。随着大规模专用集成电路(ASIC)的开发和研制,为了提高开发的效率,增加已有开发成果的可继承性以及缩短开发时间,

7

各ASIC研制和生产厂家相继开发了用于各自目的的硬件描述语言。其中最有代表性的是美国国防部开发的VHDL语言,Verilog公司开发的Verilog HDL以及日本电子工业振兴协会开发的UDL/I语言。利用硬件描述语言(HDL)的硬件电路设计方法具有以下特点:

首先是该设计方法是首先从系统设计入手,从顶层进行功能划分和结构设计。

其次,系统中可大量采用ASIC芯片由于目前众多的制造ASIC芯片的厂家,他们的工具软件都可以支持HDL语言的编程,因此,硬件设计人员在设计硬件电路时,无须受只能使用通用元器件的限制,而可以根据硬件电路设计的需要,设计自用的ASIC芯片或可编程逻辑器件。这样最终会使系统电路设计更趋合理,体积也可大为缩小。

采用系统早期仿真从自上至下的设计过程可以看到,在系统设计过程中要进行三级仿真,即行为层次仿真、RTL层次仿真和门级层次仿真。也就是说进行系统数学模型的仿真、系统数据流的仿真和系统门级电路原理的仿真。这三级仿真贯穿系统硬件设计的全过程,从而可以在系统设计早期发现设计中存在的问题。

在采用传统的硬件电路设计方法时,往往要求设计者在设计电路前应写出该电路的逻辑表达式或真值表(或时序电路的状态表)。这一工作是很困难和繁杂的,特别是在系统比较复杂时更是如此。在用HDL语言设计硬件电路时,就可以使设计者免除编写逻辑表达式或真值表之苦。这样使硬件电路的设计难度有了大幅度的下降,从而也缩短了硬件电路的设计周期。

在传统的硬件电路设计中,最后形成的主要文件是电原理图,而采用HDL语言设计系统硬件电路时,主要的设计文件是用HDL语言编写的源程序。如果需要也可以转换为电原理图形式输出。用HDL语言源程序作为归档文件有很多好处。其一是资料量小,便于保存。其二是可继承性好。当设计其它硬件电路时,可以使用文件中的某些库、进程和过程等描述某些局部硬件电路的程序。其三是阅读方便。阅读程序比阅读原理图要更容易一些。阅读者很容易在程序中看出某一硬件电路的工作原理和逻辑关系。而阅读电原理图,推知其工作原理却需要较多的硬件知识和经验,而且看起来也不那么一目了然。

2.4 Verilog HDL语言的设计流程

Verilog HDL语言采用自顶而下(Top-Down)设计的基本概念。

8

现代集成电路制造工艺技术的改进,使得在一个芯片上集成数十万乃至数千万个器件成为可能。但很难设想仅有一个设计师独立设计如此大规模的电路而不出现错误。利用层次化、结构化的设计方法,一个完整的硬件设计任务首先由总设计师划分为若干个可操作的模块,编制出相应的模型(行为的或结构的),通过仿真加以验证后,再把这些模块分配给下一层的设计师。这就允许多个设计师同时对其下层设计师完成的设计用行为级上层模块对其所做的设计进行验证。为了提高设计质量,如果其中有一部分模块可由商业渠道可得,用户可以购买它们的知识产权的使用权(IP核的重用),以节省时间和开发经费,图2.3为自顶而下(Top-Down)的示意图,以设计树的形式绘出。

自顶而下的设计(即Top-Down设计)是从系统级开始,把系统划分为基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接用EDA元件库中的基本元件来实现为止。

对于设计开发整机电子产品的单位和个人来说,新产品的开发总是从系统设计入手,先进方案的总体论证、功能描述、任务和指标的分配。随着系统变得复杂和庞大,特别需要在样机问世之前,对产品的全貌有一定的预见性。目前,EDA技术的发展使得设计师有可能实现真正的自顶而下的设计。

图2.3 Top-Dowm 设计思想

模块A1 模块A2 模块B1 模块B2 模块C1 模块C2 模块A 模块B 模块C 系统级设

复杂数字逻辑电路和系统的层次化、结构化设计隐含着对系统硬件设计方案的逐次分解。在设计过程中的任意层次,至少得有一种形式来描述硬件。硬件的描述特别是行为描述通常成为行为建模。在集成电路设计的每一层次,硬件可以分为一些模块,该层

9

次的硬件结构由这些模块的互联描述,该层次的硬件的行为有这些模块的行为描述。这些模块称为该层次的基本单元。而该层次的基本单元又由下一层次的基本单元互联而成。如此下去,完整的硬件设计就可以由图1.1所示的设计树描述。在不同的层次都可以进行仿真以对设计思想进行验证。EDA工具提供了有效的手段来管理错综复杂的层次,即可以很方便的查看某一层次某模块的源代码或电路图以改正仿真时发现的错误。 以下是具体模块的设计编译和仿真的过程。

在不同的层次做具体模块的设计所用的方法也有所不同,在高层次上往往编写一些行为级的模块通过仿真加以验证,其主要目的是系统性能的总体考虑和各模块的指标分配,并非具体电路的实现,因而综合及其以后的步骤往往不需进行。而当设计的层次比较接近底层时,行为描述往往需要用电路逻辑来实现。这时的模块不仅需要通过仿真加以验证,还需要进行综合、优化、布线和后仿真。总之具体电路是从底向逐步的。EDA工具往往不仅支持HDL描述也支持电路图输入,有效地利用这两种方法是提高设计效率的办法之一。图2.4所示的流程图简要地说明了模块的编译和测试过程。

从图中可以看出,模块设计流程主要有两大主要功能部分组成:

设计开发:即从编写设计文件→综合到布局布线→电路生成这样一系列步骤。 设计验证:也就是进行各种仿真的一系列步骤,如果在仿真过程中发现问题就返回设计输入进行修改。

具体工艺器件的优化、映像和布局布线。

由于各种ASIC和FPGA器件的工艺各不相同,因而当用不同厂家的不同器件来实现已验证的逻辑网表(EDIF文件)就需要不同的基本单元库与布线延迟模型与之对应,才能进行优化、映像和布局布线,以及布局布线后准确的仿真验证。基本单元库与布线延迟模型由熟悉本厂工艺的工程师提供,再由EDA厂商的工程师编入相应的处理程序,而逻辑电路设计师只需用一文件说明所用的工艺期间和约束条件,EDA工具就会自动地根据这一文件选择相应的库和模型进行准确的处理,从而大大提高设计效率。

10