您的位置:技术中心首页 > 硬件语言 >> Verilog HDL的基础知识

Verilog HDL的基础知识 (1)

作者:未知   时间:2006-01-07 09:59:37  来自:网上转载  浏览次数:2359  文字大小:【】【】【

Verilog HDL的基础知识

第一节       Verilog HDL的基础语言知识

1.  1    综述

硬件描述语言(HDL)概述

硬件描述语言(Hardware Description Language)是硬件设计人员和电子设计自动化(EDA)工具之间的界面。其主要目的是用来编写设计文件,建立电子系统行为级的仿真模型。即利用计算机的巨大能力对用Verilog HDL或VHDL建模的复杂数字逻辑进行仿真,然后再自动综合以生成符合要求且在电路结构上可以实现的数字逻辑网表(Netlist),根据网表和某种工艺的器件自动生成具体电路,然后生成该工艺条件下这种具体电路的延时模型。仿真验证无误后,用于制造ASIC芯片或写入EPLD和FPGA器件中。

EDA技术领域中把用HDL语言建立的数字模型称为软核(Soft Core),把用HDL建模和综合后生成的网表称为固核(Hade Core),对这些模块的重复利用缩短了开发时间,提高了产品开发率,提高了设计效率。

随着PC平台上的EDA工具的发展,PC平台上的Verilog HDL和VHDL仿真综合性能已相当优越,这就为大规模普及这种新技术铺平了道路。目前国内只有少数重点设计单位和高校有一些工作站平台上的EDA工具,而且大多数只是做一些线路图和版图级的仿真与设计,只有个别单位展开了利用Verilog HDL和VHDL模型(包括可综合和不可综合的)进行复杂的数字逻辑系统的设计。随着电子系统向集成化、大规模、高速度的方向发展,HDL语言将成为电子系统硬件设计人员必须掌握的语言

 

为何使用硬件描述语言

传统的用原理图设计电路的方法已逐渐消失,取而代之,HDL语言正被人们广泛接受,出现这种情况有以下几点原因:

电路设计将继续保持向大规模和高复杂度发展的趋势。90年代,设计的规模将达到百万门的数量级。作为科学技术大幅度提高的产物,芯片的集成度和设计的复杂度都大大增加,芯片的集成密度已达到一百万个晶体管以上,为使如此复杂的芯片变得易于人脑的理解,用一种高级语言来表达其功能性而隐藏具体实现的细节是很必要的。这也就是在大系统程序编写中高级程序设计语言代替汇编语言的原因。工程人员将不得不使用HDL进行设计,而把具体实现留给逻辑综合工具去完成。

电子领域的竞争越来越激烈。刚刚涉入电子市场的成员要面对巨大的压力:提高逻辑设计的效率,降低设计成本,更重要的是缩短设计周期。多方位的仿真可以在设计完成之前检测到其错误,这样能够减少设计重复的次数。因此,有效的HDL语言和主计算机仿真系统在将设计错误的数目减少到最低限方面起到不可估量的作用,并使第一次投片便能成功地实现芯片的功能成为可能。

探测各种设计方案将变成一件很容易,很便利的事情,因为只需要对描述语言进行修改,这比更改电路原理图原型要容易实现得多。

 

硬件描述语言的发展历史

早期的集成电路设计实际上就是掩模设计;电路的规模是非常小的,电路的复杂度也很低,工作方式则主要依靠手工作业和个体劳动。40年后的今天,超大规模集成电路(VLSI)的电路规模都在百万门量极;由于集成电路大规模、高密度、高速度的需求,使电子设计愈来愈复杂,为了完成10万门以上的设计,需要制定一套新的方法。就是采用硬件描述语言设计数字电路。HDL(Hardware Description Language)于1992年由Iverson提出,随后许多高等学校、科研单位、大型计算机厂商都相继推出了各自的HDL,但最终成为IEEE技术标准的仅有两个,即VHDL和Verilog HDL。Verilog HDL语言提供非常简洁,可读性很强的句法,使用Verilog 语言已经成功地设计了许多大规模的硬件。

Verilog HDL是在1983年,由GDA(Gate Way Design Automation)公司的Phil Moorby首创的。Phil Mooby后来成为Verilog-XL的主要设计者和Cadence公司(Cadence  Design  System)的第一个合伙人。在1984-1985年Moorby设计出第一个关于Verilog-XL的仿真器,1986年他对Verilog HDL的发展又作出另一个巨大贡献,提出了用于快速门级仿真的XL算法。

随着Verilog-XL算法的成功,Verilog HDL语言得到迅速发展。1989年,Cadence公司收购了GDA公司,Verilog HDL语言成为Cadence公司的私有财产。1990年,Cadence公司公开了Verilog HDL语言,成立了OVI(Open Verilog Intemational)组织来负责Verilog HDL的发展。IEEE于1995年制定了Verilog HDL的IEEE标准,即Verilog HDL 1364-1995。

1987年,IEEE接受VHDL(VHSIC Hadeware Description Language)为标准HDL,即IEEE1076-87标准,1993年进一步修订,定为ANSI/IEEE1076-93标准。现在很多EDA供应商都把VHDL作为其EDA软件输入/输出的标准。例如,Cadence、Synopsys、Viewlogic、Mentor Graphic等厂商都提供了对VHDL的支持。

 

HDL语言的主要特征

HDL语言既包含一些高层程序设计语言的结构形式,同时也兼顾描述硬件线路连接的具体构件

通过使用结构级或行为级描述,可以在不同的抽象层次描述设计。HDL语言采用自顶向下的数字电路设计方法,主要包括三个领域五个抽象层次,如表1所示:

  内容  领域

抽象层次

行为领域

结构领域

物理领域

系统级

性能描述

部件及它们之间的逻辑连接方式

芯片、模块、电路板和物理划分的子系统

算法级

I/O应答算法级

硬件模块数据结构

部件之间的物理连接、电路板、底盘等

寄存器传输级

并行操作寄存器传输、状态表

算术运算部件、多路选择器、寄存器总线、微定序器、微存储器之间的物理连接方式

芯片、宏单元

逻辑级

用布尔方程叙述

门电路、触发器、锁存器

标准单元布图

电路级

微分方程表达

晶体管、电阻、电容、电感元件

晶体管布图

 

1:HDL抽象层次描述表

HDL语言是并发的,即具有在同一时刻执行多任务的能力。一般来讲,编程语言是非并行的,但在实际硬件中许多操作都是在同一时刻发生的,所以HDL语言具有并发的特征。

HDL语言有时序的概念。一般来讲,编程语言是没有时序概念的,但在硬件电路中从输入到输出总是有延迟存在的,为描述这些特征HDL语言需要建立时序的概念。因此,使用HDL除了可以描述硬件电路的功能外,还可以描述其时序要求。

 

Verilog HDL与VHDL的比较

由于Verilog HDL早在1983年就已推出,至今已有十三年的历史,因而Verilog HDL拥有广泛的设计群体,成熟的资源比VHDL丰富。而Verilog HDL与VHDL相比最大的优点是:它是一种非常容易掌握的硬件描述语言,而掌握VHDL设计技术就比较困难。

目前版本的Verilog HDL和VHDL在行为级抽象建模的覆盖范围方面也有所不同。一般认为Verilog HDL在系统抽象方面比VHDL强一些。Verilog HDL较为适合算法级(Alogrithem)、寄存器传输级(RTL)、逻辑级(Logic)、门级(Gate)、设计。而VHDL更为适合特大型的系统级(System)设计。

 

Verilog HDL设计流程及设计方法简介

1、设计流程 (见图1)


总体方案

综合

软件仿真

设计编程

硬件仿真

网表


1:Verilog HDL设计流程

注:1、总体方案是芯片级的。

    2、软件仿真用来检测程序上的逻辑错误。

       3、硬件仿真要根据需要搭成硬件电路,检查逻辑和时序上的错误。使用FPGA

         (现场可编程门阵列)速度比正常慢10倍以上,而且只能检查逻辑错误,

          不能检查时序错误。

2、设计方法

I.   自下而上的设计方法

自下而上的设计是一种传统的设计方法,对设计进行逐次划分的过程是从存在的基本单元出发的,设计树最末枝上的单元要么是已经制造出的单元,要么是其他项目已开发好的单元或者是可外购得到的单元。这种设计方法与只用硬件在模拟实验板上建立一个系统的步骤有密切联系。

优点:

·设计人员对于用这种方法进行设计比较熟悉。

·实现各个子块电路所需的时间短。

缺点:

·一般来讲,对系统的整体功能把握不足。

·实现整个系统的功能所需的时间长,因为必须先将各个小模块完成。使用这种方法对设计人员之间相互进行协作有比较高的要求。

II.          自上而下(Top-Down)的设计方法

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

优点:

·在设计周期伊始就做好了系统分析。

·由于设计的主要仿真和调试过程是在高层次完成的,所以能够早期发现结构设计上的错误,避免设计工作的浪费,同时也减少了逻辑仿真的工作量。

·自顶向下的设计方法方便了从系统划分和管理整个项目,使得几十万门甚至几百万门规模的复杂数字电路的设计成为可能。并可减少设计人员,避免不必要的重复设计,提高了设计的一次成功率。

缺点:

·得到的最小单元不标准。

·制造成本高。

III.      综合设计方法

复杂数字逻辑电路和系统的设计过程通常是以上两种设计方法的结合。设计时需要考虑多个目标的综合平衡。在高层系统用自上而下的设计方法来实现,而在低层系统使用自下而上的方法从库元件或数据库中调用已有的单元设计。

这种方法兼有两种设计方法的优点,而且可以使用矢量测试库进行测试。

 

硬件描述语言新的发展

当前EDA工具所需解决的问题是如何大幅度提高设计能力,为此出现了一系列对HDL语言的扩展。

OO-VHDL(Object-Orieted VHDL),即面向对象的VHDL。主要是引入了新的语言对象EntityObject.此外,OO-VHDL中的Entity和Architecture具备了继承机制,不同的EntityObject之间可以用消息来通信。因而OO-VHDL通过引入EntityObject作为抽象、封装和模块性的基本单元解决了VHDL在抽象性的不足和在封装性上能力不强等问题,也通过其继承机制解决了实际设计中的一些问题。且由于OO-VHDL模型的代码比VHDL模型短30%—50%,开发时间缩短,提高了设计效率。

杜克大学发展的DE-VHDL(Duke Extended VHDL)通过增加3条语句,使设计者可以在VHDL描述中调用不可综合的子系统(包括连接该子系统和激活相应功能)。杜克大学用DE-VHDL进行一些多芯片系统的设计,极大地提高了设计能力。

1998年将通过得Verilog HDL新标准,将把Verilog HDL-A并入Verilog HDL设计中,使其不仅支持数字逻辑电路的描述,还支持模拟电路的描述,因而在混合信号电路设计中,将会得到广泛的应用。在亚微米和深亚微米ASIC及高密度FPGA中,Verilog HDL的发展前景很大。

 

1.2        程序结构

作为高级语言的一种,Verilog语言以模块集合的形式来描述数字系统,其中每一个模块都有接口部分,用来描述与其它模块之间的连接。一般说来,一个文件就是一个模块,但并不绝对如此。这些模块是并行运行的,但通常用一个高层模块来定义一个封闭的系统,包括测试数据和硬件描述。这一高层模块将调用其它模块的实例。

模块代表硬件上的逻辑实体,其范围可以从简单的门到整个大的系统,比如,一个计数器、一个存储子系统、一个微处理器等。模块可以根据描述方法的不同定义成行为型或结构型(或者是二者的组合)。行为型模块通过传统的编程语言结构定义数字系统(模块)的状态,如使用if条件语句、赋值语句等。结构型模块将数字系统(模块)的状态表达为具有层次概念的互相连接的子模块。其最底层的元件必须是基元或已定义过的行为型模块。Verilog的基元包括门电路,如与非门,和传输二极管(开关)。

模块的结构如下:

      module  <模块名> (<端口列表>);

<定义>

<模块条目>

endmodule

其中,<模块名>是模块唯一性的标识符;<端口列表>是输入、输出和双向端口的列表,这些端口用来与其它模块进行连接;<定义>一段程序用来指定数据对象为寄存器型、存储器型、线型以及过程块,诸如函数块和任务块;而<模块条目>可以是initial结构、always结构、连续赋值或模块实例。

下面是一个NAND与非模块的行为型描述,输出out是输入in1和in2相与后求反的结果。

//与非门的行为型描述

module NAND(in1, in2, out);

          input in1, in2;

        output out;

  //连续赋值语句

      assign out = ~(in1 & in2);

  endmodule

  in1、in2和out端口指定为线型的。assign连续赋值语句不间断地监视等式右端变量,一旦其发生变化,右端表达式被重新赋值后结果传给等式左端进行输出。

  连续赋值语句用来描述组合电路,一旦其输入发生变动,输出也随之而改变。

  下例所示是一与门模块的结构型描述,这一与门是通过将一个NAND的输出连到另一NAND的两个输入上得到的。

  //由两个NAND生成的与门的结构型描述

module AND(in1, in2, out);

      input in1, in2;

      output out;

      wire w1;

//两个NAND模块实例

      NAND NAND1(in1, in2, w1);

      NAND NAND2(w1, w1, out);

endmodule

这个模块含有两个NAND模块实例,分别是NAND1和NAND2,通过内部连线w1连接起来。

调用模块实例的一般形式为:

[1] [2] [3] [4] [5] [6]
责任编辑:5life

更多相关 Verilog HDL 的文章

仿真工作流程(Verilog/Modelsim+Debussy) [2007-05-14]
Verilog 的些许经验 [2006-09-05]
Verilog学习笔记(More) [2006-02-27]
Verilog PLI教程 --- 第七部分 VPI 函数 [2006-02-19]
Verilog PLI教程 --- 第三部分 PLI 程序 [2006-02-19]
Verilog PLI教程 --- 第五部分 PLI例子 [2006-02-19]
Verilog PLI教程 --- 第二部分 编写PLI应用程序 [2006-02-18]
Verilog PLI教程 --- 第一部分 介绍 [2006-02-18]
Verilog Pli的基本使用方法(modelsim) [2006-02-18]
提高NC-Verilog仿真效率的技巧 [2006-01-25]
本文共有0条评论,现在显示最新的5条。

栏目导航

电路基础
硬件语言
逻辑验证
电路综合
后端设计
可测设计
基本逻辑
制造工艺
书籍精选
说文解字
工具学习
数字滤波
趣闻逸事
数字锁相
设计杂项
低耗设计

站点最新

更多相关链接

  Verilog 的些许经验
  编程修养[C语言]
  Verilog学习笔记(More)
  编码风格 --- 命名规则
  编码风格 --- 其他
  编码风格 --- 与综合相关
  编码风格 --- 编写风格
  编码风格 --- 注释
  编码风格 --- 设计考虑
  系统级芯片设计语言和验...

栏目最新

更多相关链接

  Verilog 的些许经验
  编程修养[C语言]
  Verilog学习笔记(More)
  编码风格 --- 命名规则
  编码风格 --- 其他
  编码风格 --- 与综合相关
  编码风格 --- 编写风格
  编码风格 --- 注释
  编码风格 --- 设计考虑
  系统级芯片设计语言和验...

热点文章

更多相关链接