1、硬件描述语言VHDL,VHDL(VHSIC Hardware Description Language)是一种标准的硬件描述语言, 它是在20世纪7080年代中, 由美国国防部资助的VHSIC(Very High Speed Integrated Circuit)项目开发的产品。 在这个语言首次开发出来时, 其目标仅是使电路文本化的一种标准, 为了使人们采用文本方式描述的设计, 能够被其他人所理解。 同时, 它也被用来作为模型语言, 用于进行仿真验证模拟。,硬件描述语言VHDL,1987年, VHDL被正式确定为IEEE 1076标准。 VHDL是一种强类型语言, 具有丰富的表达能力, 可使各
2、种复杂度(系统级、 电路板级、 芯片级、 门级)的电路网络在同一抽象程度上被描述。 其支持系统级、 寄存器级、 门级三种不同层次的设计, 是未来数字系统设计的主流方式。 1988年, Milstd454规定所有为(美国)国防部设计的ASIC产品必须采用VHDL来描述。 1993年, IEEE 1076标准被升级、 更新, 新的VHDL标准为IEEE 1164。 1996年, IEEE 1076.3成为VHDL综合标准。,1) 功能强大, 灵活性强VHDL具有功能强大的语言结构, 可用简洁明确的代码描述来进行复杂控制逻辑的设计。为了有效控制设计的实现, 它还具有多层次的设计描述功能, 支持设计库
3、和可重复使用的元件生成。 它支持阶层设计, 且提供模块设计的创建。 VHDL是一种设计、 模拟、 综合的标准硬件描述语言。,VHDL的优点,2) 不依赖于器件设计 VHDL允许设计者生成一个设计, 而并不需要首先选择一个用来实现设计的器件。 对于同一个设计描述, 可以采用多种不同的器件结构来实现其功能。 若需对设计进行资源利用和性能方面的优化, 也并不是要求设计者非常熟悉器件的结构才行。 相反, 你可以集中精力从事你的设计构思, 当然, 这并不是说设计者可以忽略电路结构, 诸如数据通路优化技术方面的需要。,VHDL的优点,3) 可移植性VHDL的可移植能力(portability)允许设计者对
4、需要综合的设计描述进行模拟。 在综合前对一个数千门的设计描述进行模拟, 可以节约设计者可观的时间。 在这时发现设计上的瑕疵, 就能够在设计实现之前给予纠正。 因为VHDL是一个标准语言, 故VHDL的设计描述可以被不同的工具所支持, 可以从一个模拟工具移植到另一个模拟工具, 从一个综合工具移植到另一个综合工具, 从一个工作平台移植到另一个工作平台去执行。,VHDL的优点,4) 性能评估能力 非依赖器件的设计(DeviceIndependent Design)和可移植能力允许设计者采用不同的器件结构和不同的综合工具来评估设计。 在设计者开始设计之前, 无需了解将采用何种器件。 设计者可以进行一个
5、完整的设计描述, 并且对其进行综合, 生成选定的器件结构的逻辑功能, 然后评估结果, 选用最适合你设计需求的器件。 为了衡量综合的质量, 同样可用不同的综合工具所得到的综合结果来进行分析、 评估。,VHDL的优点,5) 上市时间快, 成本低VHDL语言的设计将大大提高数字单片化设计实现速度, 它使设计描述快捷、 方便,使设计的快速复制简便易行。 VHDL和可编程逻辑的组合作为一类强有力的现场集成设计方式, 将为设计者产品的上市带来创记录的速度。,VHDL的优点,电路采用高级的简明结构VHDL描述, 意味着放弃了对电路门级实现定义的控制; 由综合工具生成的逻辑实现效果有时不优化; 采用工具的不同
6、导致综合质量不一样。,VHDL的缺点,对于第一点, 采用VHDL作为综合的描述语言, 其目的就是希望将工程师从专门的门级电路实现的繁杂劳动中解脱出来。 所以, 如果你懂得编译器是怎样来综合逻辑的, 你就很容易理解编译器能够优化地帮助设计实现大多数的设计构造, 并且很少需要规定设计实现的规则。 大多数综合工具允许设计者采用综合优化指引的方式,来对实现电路和设计提供某种程度上的控制。 例如, 指定采用面积优化或者速度优化选择。也有一些综合工具允许设计者去专门定义设计的技术特征, 甚至实现手工从事的门级设计的工作。 然而, 这些形式的描述是低层的, 往往只能对指定器件结构进行。,第二点是对于工具的逻
7、辑综合有效性的担心, 且往往不是没有根据的。 VHDL编译器并不一定总能生成令人满意的设计, 因为优化的结果往往依赖于设计的目标。 编译器采用一定的算法, 由标准的设计行为决定设计的实现, 而算法从某种角度出发, 沿一定路径进行, 并不能发现设计中的所有问题。 有时, 当人们希望按自己的要求来控制设计实现时,没有什么能够替代人的创造力。,第三点往往在商业领域被提及。 综合技术的成熟过程尤如C编译器所走过的途径一样。一段时期以前,一般C编译器所产生成的可执行码往往无效,以致不如设计者自己去写机器码来替代。今天,仍有一些作业需采用低级语言或机器码来写,但大多数代码必须用高级语言来写,C编译器已在那些不能熟练书写机器码来编程序的工程师中广泛使用。,