OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 综合技术 » 硬 件 描 述 语 言

共3条 1/1 1 跳转至

硬 件 描 述 语 言

菜鸟
2002-07-10 03:21:00    评分
硬 件 描 述 语 言 HDL (Hardware Describe Language) -------------------------------------------------------------------------------- HDL概述 随着PLD/FPGA设计越来越复杂,使用语言设计复杂PLD/FPGA成为一种趋势,目前最主要的硬件描述语言是VHDL和Verilog HDL。VHDL发展的较早,语法严格,而Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法较自由,(目前ACSI设计多采用Verilog语言)。VHDL和Verilog HDL两者相比,学习VHDL比学习Verilog难一些,但verilog自由的语法也使得的初学者容易上手但也容易出错。国外电子专业很多在本科阶段教授VHDL,在研究生阶段教授verilog。从国内来看,VHDL的参考书很多,便于查找资料,而Verilog HDL的参考书则很少,这给学习Verilog HDL带来不少困难。从EDA技术的发展趋势上看,直接采用C语言设计CPLD/FPGA将是一个发展方向,现在已出现用于CPLD/FPGA设计的C语言编译软件,可以预见,在5-10年之内C语言很可能将逐渐成为继VHDL和Verilog之后设计大规模CPLD/FPGA的又一种手段 。 HDL和传统的原理图输入方法的关系就好比是高级语言和汇编语言的关系。HDL的可移植性好,使用方便,但效率不如原理图;原理图输入的可控性好,效率高,比较直观,但设计大规模CPLD/FPGA时显得比较烦琐。在真正的PLD/FPGA设计中,通常建议采用原理图和HDL结合的方法来设计,适合用原理图的地方就用原理图,适合用HDL的地方就用HDL,并没有强制的规定。在最短的时间内,用自己最熟悉的工具设计出高效,稳定,符合设计要求的电路才是我们的最终目的。 VHDL简介 VerilogHDL简介 其它HDL简介 : ABEL,AHDL 进一步阅读的建议:1.HDL开发软件 2.HDL培训资料 3.HDL参考书籍 4.HDL相关网址连接 HDL开发软件 用VHDL/VerilogHD语言开发PLD/FPGA的完整流程为: 1.文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。通常VHDL文件保存为.vhd文件,Verilog文件保存为.v文件 2.功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真) 3.逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。逻辑综合软件会生成.edf(edif)的EDA工业标准文件。 4.布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到PLD/FPGA内。 5.时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。(也叫后仿真) 通常以上过程可以都在PLD/FPGA厂家提供的开发工具(如MAXPLUSII,Foundation)中完成,但如果采用专用HDL工具分开执行,效果会好得多,否则这么多出售HDL开发工具的公司就没有存在的理由了。特别是MAXPLUSII的用户,不要在MaxplusII中进行复杂的VHDL/VerilogHDL逻辑综合,(因为MaxplusII只支持VHDL/Verilog的子集,其区别见帮助菜单中的VHDL章节)应上www.altera.com去下载ALTERA绑定的免费OEM版HDL综合软件(或使用功能更强的通用HDL逻辑综合软件)。



关键词: 设计     语言     Verilog    

菜鸟
2002-07-10 17:19:00    评分
2楼
VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为ANSI/IEEE的标准(IEEE STD 1076-1987)。1993年更进一步修订,变得更加完备,成为ANSI/IEEE的ANSI/IEEE STD 1076-1993标准。目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。 VHDL的英文全写是:VHSIC(Very High Speed Integrated Circuit)Hardware Descriptiong Language.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。 关于用VHDL和原理图输入进行CPLD/FPGA设计的粗略比较:在设计中,如果采用原理图输入的设计方式是比较直观的。你要设计的是什么,你就直接从库中调出来用就行了。这样比较符合人们的习惯。但是这样做需要设计人员要在两方面有较高的素质: 对电路的知识要比较丰富。 对CPLD/FPGA的结构比较熟悉。 有了这两个条件才能在设计的过程中选用适当的器件从而提高设计的可靠性、提高器件的利用率及缩短设计的周期。但是有一个重大的问题是在于,如果你的产品有所改动,需要采用另外的CPLD/FPGA时,你将需要重新输入原理图。(改用不同的器件在今天这种竞争环境下是会经常发生的。头儿们为了提高产品的性能或者是降低产品的造价,提高保密性等等,都会考虑选用不同的器件。对他们而言只是做出一个决定,对我们而言却是要我们付出更多的心血)。 但是当你采用VHDL等高级语言来设计时这些问题都会得到较好的解决。由于在使用VHDL等高级语言时,有专用的工具来实现将语言描述的电路功能转换为实际的电路所以你就用不着对底层的电路很熟悉,也用不着对CPLD/FPGA的结构很熟悉(因为有专用的工具针对你的描述采用相应的器件哦)。当你要换器件时,你只需要将原来设计好的VDHL文件在新器件的设计工具中再次实现就行了(就是这么简单喔)! 用高级语言设计电路的流程: 在用高级语言来设计电路时,主要的过程是这样的: 使用文本编辑器输入设计源文件(你可以使用任何一种文本编辑器。但是,为了提高输入的效率,你可以用某些专用的编辑器,如:Hdl Editor,Tubor Writer或者一些EDA工具软件集成的HDL编辑器)。 使用编译工具编译源文件。HDL的编译器有很多,ACTIVE公司,MODELSIM公司,SYNPLICITY公司,SYNOPSYS公司,VERIBEST公司等都有自己的编译器。 (可选步骤)功能仿真。对于某些人而言,仿真这一步似乎是可有可无的。但是对于一个可靠的设计而言,任何设计最好都进行仿真,以保证设计的可靠性。另外,对于作为一个独立的设计项目而言,仿真文件的提供足可以证明你设计的完整性。 综合。综合的目的是在于将设计的源文件由语言转换为实际的电路。(但是此时还没有在芯片中形成真正的电路。这一步就好像是把人的脑海中的电路画成原理图。--这是我的个人观点,似乎在好多文献中都没有提到“综合”的准确定义。至少,我读过的几本书中就没有。)这一部的最终目的是生成门电路级的网表(Netlist)。 布局、布线。这一步的目的是生成用于烧写(编程Programming)的编程文件。在这一步,将用到第4步生成的网表并根据CPLD/FPG厂商的器件容量,结构等进行布局、布线。这就好像在设计PCB时的布局布线一样。先将各个设计中的门根据网表的内容和器件的结构放在器件的特定部位。然后,在根据网表中提供的各门的连接,把各个门的输入输出连接起来。最后,生成一个供编程的文件。这一步同时还会加一些时序信息(Timing)(?)到你的设计项目中去,以便与你做后仿真。 后仿真。这一步主要是为了确定你的设计在经过布局布线之后,是不是还满足你的设计要求。如果设计的电路的时延满足要求的话,则就可以到第7步啦! 7.烧写器件(编程)。

菜鸟
2002-07-10 17:21:00    评分
3楼
随着越来越多的中国工程师开始设计和管理大型工程项目,设计方法已变得非常重要。过去,工程师一般根据手头的硬件和软件工具去开发产品,但随着设计越来越复杂,这种传统设计方法的效率已越来越低,本文讨论的面向数据而不是工具的设计方法可以大幅提高工程开发效率。 在设计过程中,数据是关键,可以说没有数据就没有设计。采用传统方法的设计工程师过多地依赖于以工具为主的途径来完成任务,整个设计流程就是一个根据设计者需要一个接一个打开设计工具并完成设计的线性处理过程。例如,一个设计工程师首先打开一个模拟工具,并加载数据,这是一种有争议的假定相关数据均存储在一个HDL文件中的线性处理流程。不过,当设计者需要模拟一个包含状态机、HDL文本和复杂门电路的原理图时,这种线性处理流程很快就会出现问题。在这种情况下,设计者在模拟之前必须采取几个人工数据处理步骤,包括从状态机和原理图中产生HDL代码,以及更新各种数据文件。 面向数据的管理工具 设计工程师现在可以采用一种新的以数据为中心的方法来解决这些问题。通过这种方法,设计者可以从数据管理器中选取恰当的操作来实现特定的设计单元。如果设计单元像上述例子一样复杂,以数据为中心的管理工具将在产生正确的模拟文件之后马上自动执行模拟工具,以数据为中心的功能特性可产生并加载所有的HDL文件、激励、库和SDF文件。 目前,利用面向工具的设计方法来模拟原理图中的分层模块需要大量的人工操作,如拷贝、粘贴和编辑等,而面向数据的管理工具则将所需操作的分层提取出来,并基于分层为模拟准备必要的数据,这样的面向数据的策略可简化设计工程师的处理过程。 通过在设计者和各设计工具之间增加一个抽象层,面向数据的操作为复杂度不断增长的系统、ASIC和FPGA设计的成功管理奠定了基础。尽管各设计工具可有效执行一系列特定的操作,但设计工程师必须先提供必要的输入数据。因此,随着设计复杂程度的增加,数据输入就会成为一项繁重的工作。目前,面向工具的设计流程已不能满足当今复杂FPGA设计的要求,而面向数据的工具将可极大地提升设计效率。 过程是关键 设计开发涉及到大量的数据文件,不仅包括设计数据,而且还包括约束和验证数据。如果设计工程师必须通过手工方式来管理这些贯穿整个开发流程的设计文件,他们就会被费时、费力的流程所困扰,这将大大降低生产率,严重制约开发进程。 尽管设计工程师担心数据输入工作在开发过程中会浪费大量宝贵时间,但有一个更为重要的问题需要注意。设计者都希望采用最佳的设计管理技术,以便能在给定的开发时间内进行深入探讨并得到尽可能好的设计方案。由于数据管理流程脆弱的本性,如果不能发现并妥善处理欠佳的构思或设计中产生的管理问题,那么一旦在开发流程后期遇到重大的设计更改,将可能导致整个设计工程的崩溃。 软件和硬件开发有诸多相似之处。管理软件开发、缩短开发时间和提高设计质量方面的大量信息表明,良好的数据管理流程是有效控制软件开发进程的关键。此外,良好的数据管理也是降低风险、保持进度和资源管理的基本保证。硬件设计会使数据管理更加复杂,因为硬件设计本身比软件设计复杂得多。 在软件开发领域,代码产生过程通常经过三个阶段:源代码(*.cpp)、目标代码(*.obj)和可执行代码(*.exe)。每一阶段都是一个不可逆转的流程,且不同的文件类型格式完全不同。 然而,在硬件开发领域,即使一个最简单的代码生成流程都要包括:行为描述代码(*.vhd)、RTL描述代码(*.vhd)和结构描述代码(*.vhd、*.sdf及*.edf)。每下一步流程采用抽象度更高的VHDL代码,最后产生三个主要文件:一个结构化的VHDL设计文件、一个通过VHDL设计进行时序验证的SDF设计文件,以及一个用于布线工具输入的EDIF网表文件。 硬件开发还需要一系列工具,包括原理图、图形输入、文本输入、模拟、综合及静态时序分析等。硬件设计实际上是一种将算法从抽象级转换到门晶体管级的过程,显然,如果几个工程师共同完成一个硬件设计,就必然会涉及到数据管理问题,而且它可能成为影响最终设计成功的一大障碍。 数据管理危机 尽管设计者常常会忽略,但在设计构思和论证阶段对高密度开发进程构成重大威胁的设计数据管理问题正在逐渐受到重视,因为在一段很短的时期内,设计小组就必须定义、分割、生成和强化某个设计。如果在这个阶段设计发生变化,数据也必须相应改变。设计完成后便进入生产阶段,这时设计数据管理任务就由产品数据管理(PDM)系统接管。 设计数据管理问题的大小与任一给定产品的数据量成正比,当增加新的功能时设计数据量也会相应增加,因为设计实现和验证需要更多的数据。如今的FPGA已具有上百万门容量,尽管这可让设计者为其设计提供更多的功能,但同时也带来了数据管理方面的巨大挑战。 随着工程师逐渐采用新的设计方法来提高其生产率,新的可以加快设计定义、分析和实现的EDA工具也不断出现。这些新的设计工具和方法产生了大量的设计数据文件:测试向量源文件(VHDL、Verilog或图形仿真文件);测试向量辅助文件(用于HDL测试向量的ASCII文件、向输出波形加载激励和/或存储输出波形);设计源文件(VHDL、Verilog、原理图、图形方框图和EDIF);辅助数据文件(用户定义的HDL库文件、HDL源文件和RAM/ROM加载文件的ASCII文件、综合约束文件及布局布线约束文件)。其它设计数据文件还包括:派生数据文件(从图形源文件产生的RTL HDL、由宏生成器产生的原理图、框图、流程图、EDIF和RTL HDL);布局和布线生成文件;工程技术文档文件(如Word、Excel、PDF和HTML文件)。这些文件在数量和复杂性方面都增加了设计难度。 某些流程和设计技术也会产生大量的数据文件。例如,在不断修改和调整设计的过程中,经常会发现各个子层块可能处于不同的阶段,有些可能是RTL级设计,而有的可能已经是门级设计了,而且在设计过程的不同阶段都会产生许多新的文件。而综合RTL文件和FPGA中的布局布线将会产生更多的文件。 每个抽象层实现形式或设计思路都反映为一定的VHDL结构,这是各子层块统一的接口,但每个子层块可以有多种表现形式,包括RTL、行为级描述或结构描述等。偶尔,设计者需要尝试不同的实现方式来获取理想的设计尺寸和速度规格。在这种情况下,各子层块在每个描述级上都可能包含几种不同的表现形式。因此,在同一个抽象级上可能并存多种实现形式。 更深层次的问题 FPGA设计以前仅简单地包括原理图和门电路,这对当时典型的器件密度而言已经够了。不过,现在设计者处理的器件密度平均为2万门左右,仍沿用原理图和门电路设计思路将严重影响设计效率。如果设计者能够将设计功能用图表而不是原理图和逻辑门表示,将会大大提高设计效率。除了编写HDL代码外,扩展设计生成技术使之包括原理图、状态机、流程图和真值表也会给设计管理带来更为广阔的空间。 每个子层块描述均可能包含多个源文件。由于每个子层块包含多种实现形式,而每种实现形式又包含多个文件,因此随着复杂程度的增加,设计工程师将面临可能降低设计效率的繁杂文本输入工作。 这些设计数据管理问题还仅仅是一些表面现象,如果还要在一个项目分层设计结构的多个层次上开发测试基准,那么将会导致任务复杂程度的急剧增加。 测试基准也对数据管理系统的开发提出了挑战。与设计功能描述类似,测试基准也可能采用同样格式或语言的源文件。多个子层块拥有多个测试基准也进一步增加了文件管理的需求。 一般来说,模拟器采用测试基准,而综合工具则不采用,因此它们对数据管理的要求也截然不同。此外,测试基准必须在整个设计转换过程中提供可复用性。例如,同一测试基准应该能够同时满足综合前及布局布线后的要求。 如果对整个工程项目的子系统采用不同的设计方法有助于在规范所要求的尺寸、速度及功耗方面达到一定的平衡,那么我们对项目开发过程中的设计数据管理要求的理解也能更深入一些(见图1)。当要求某个功能块(如PCI总线)必须满足给定运行速度要求时,设计者可能愿意在综合优化和布局布线约束方面花费更多的时间以满足时序需求,其中一种应对策略是为速度而牺牲空间,设计的其余部分则可获益于空间优化。显然,如果每个功能块要求采用不同的设计方法及优化参数,那么就会带来另外一个设计数据管理问题:设计工程师如何对子层进行分离并管理相关文件? 尽管大部分芯片供应商都为方便EDA使用而提供了标准化库,但设计者在设计流程中通常仍需要将技术库的不同描述连接到不同的工具。例如,开发商提供原理图库用于原理图输入,宏生成器可用于生成符号,验证库用于布局前后的模拟,开发商的布局布线工具提供了一个SDF文件用于时序分析。此外,综合目标库以及用户生成的库和参数选项可能也需要管理,用户需要通过文件去指导综合及布局布线工具。另一个普遍的做法是利用VHDL或Verilog文本文件在模拟之前加载RAM/ROM块的初始值。显然,库管理为设计数据管理方法带来了更多需要注意的事项。 面向数据设计 设计工程师采用了几种不同的方法来解决这一问题:利用软件开发工具来构建硬件开发数据管理系统;采用VHDL语言的配置功能;手工管理所有设计数据文件;利用一些EDA供应商提供的以数据为中心的功能。 基于定制的硬件设计数据管理系统存在固有的局限性,其文件规则不能反映设计状态。 VDHL配置提供了强大但较困难的解决方案。如果开发工具能够可靠地支持配置,那么它将允许设计工程师管理用于模拟和综合的设计数据。不过,由于VHDL配置只能以VHDL语言格式来表达设计数据,因此它无法提高可读性。 只要设计规模较小,即使采用传统方法,许多设计工程师还是能够获得可接受的效果,但在质量控制及可重复性方面却得不到保证。我们通常会问这样的问题:我们是否给开发商提供了与模拟结果完全一致的设计呢? 实际上,所有构建阶段的设计管理问题都揭示了一个共同的现象,即在设计过程中这些问题都与设计结构相关。这一发现为Veribest这样的公司提供了灵感,他们因此开发了一种可让设计者详细浏览设计分层的技术(见图2)。 Dataquest最近所做的一项用户调查表明,1998年大部分FPGA设计规模在5,000到10,000门之间,今年这一规模将增加到30,000到50,000门。当前面向工具的设计方法在这些密度条件下已严重威胁到市场主流用户的设计效率,这表明面向数据的设计技术将从高端用户向主流市场渗透。 新的管理模式 Veribest的Designview工具为FPGA用户解决了设计构建过程中的数据管理问题。例如,Actel就在其设计生成工具包中采用了这个工具,它通过用户和核心工具之间的抽象层向用户提供了一个观察和管理数据的窗口。用户可选择从文件、分层或模拟角度来观察设计数据。一旦选定数据元素并设置好恰当的文件位置、选项、库和输出文件位置,管理工具就会自动激活相应的设计工具,这种工具摆脱了完全依赖人工操作的设计方法。 基于文件的观察方法通过文件系统目录结构来展示项目内容,它将原理图、图表、HDL文件和模拟测试基准分别归入相应的目录。分层列表不仅揭示了层次结构,而且能够识别出由于文件丢失或产生错误而导致的子层丢失,并不断地检查分层结构以确保正确的构造。此外,它还支持配置管理、虚拟路径管理和子层块框图等。 在设计工具管理数据的同时,配置管理还提供了一种可快速比较设计实现选项的简便方法。当设计者在不同供应商提供的配置间进行切换时,设计流程可及时调整以显示特定供应商的综合结果、布局布线文件和布线后的模拟文件。配置结构还可为特定的功能块提供可支持或比较尺寸与速度优化组合的选项。每一功能块都可包含多种实现方式或观察点,一系列有效的或选定的观察点就构成一个配置结构。这种配置能力可让设计工程师构建一种可针对速度及尺寸而优化各种功能块的设计实现。 虚拟路径管理可让设计者隔离出用于设计、验证和FPGA布局布线的子层,用户可通过逐个点击子层来设置新的路径。现在,有了这项可支持混合设计原理图、图形和文本输入生成方法的功能,设计工具就可执行所有的数据操作。 模拟管理贯穿于模拟设计的全过程,它负责处理源、测试基准和布线后SDF文件之间的所有数据关系。用户可选择模拟HDL文件和与测试基准相关的选项,测试基准首先对待模拟I/O进行初始化,然后将自己关联到这一特定功能。在设计实现过程中(如综合和布局布线),设计工具可生成布线后HDL和SDF文件,Designview可自动对先期生成的测试基准与布线后结果进行关联,并一直保持这种关联。 过去,配置、虚拟路径和模拟管理都是通过设计分割、拷贝和编辑等手工操作来实现的,但FPGA设计在数据管理复杂性方面已超出了传统数据管理的极限。在设计者开发和比较设计生成方法和优化技术的同时,FPGA设计也产生了庞大的数据量。不过,数据仍是设计者设计工作中最有价值的东西,设计方法必须能够反映出数据的重要性。采用面向数据的开发方法来有效管理数据必定能够提供面向工具的设计方法所无法企及的设计效率。 作者简介: Bob Potock已在Veribest公司工作三年,现在是CAE解决方案总监。他有十余年的EDA行业工程和管理经验,曾在Cadnetix、NeoCAD、Intel、AT&T Bell Labs和Unisys等公司工作。 David Brady是Veribest公司CAE结构设计师,曾任职于Mentor Graphics和Trimiter Technologies等公司,有10余年的EDA行业经验。在从事EDA工作之前,Dave是Northrop 技术和研究中心的IC设计工程师。 设计工具通过不断检查分层结构是否丢失文件或其它错误来确保获得正确的构造,以分层列表的形式展现在用户面前。 [upload=jpg]uploadImages/20027109214162345.jpg[/upload][upload=jpg]uploadImages/20027109215267035.jpg[/upload]

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]