书签 分享 收藏 举报 版权申诉 / 262
上传文档赚钱

类型EDA原理及应用课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3592352
  • 上传时间:2022-09-22
  • 格式:PPT
  • 页数:262
  • 大小:570.02KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《EDA原理及应用课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    EDA 原理 应用 课件
    资源描述:

    1、马冬梅2019.1.17 内容:内容:一、EDA设计导论 二、可编程逻辑器件设计方法 三、Verilog HDL语言基础 EDA技术综述;EDA技术发展历史EDA技术涵义EDA技术主要内容PLD设计方法学;PLD设计概论PLD设计流程SOPC设计流程HDL硬件描述语言HDL硬件描述语言概念HDL语言特点和比较HDL语言最新发展 EDA技术随着计算机、集成电路、电子系统设计的发展,经历了三个发展阶段:1、计算机辅助设计(CAD)2、计算机辅助工程设计(CAE)3、电子设计自动化(EDA)1、计算机辅助设计(CAD)硬件设计发展的初级阶段。在此阶段,大量选用中小规模标准集成电路,将产品设计过程中高

    2、度重复性的布图布线工作,采用二维图形编辑与分析的CAD工具。由于PCB布图布线工具受到计算机工作平台的制约,其支持的设计工作有限且性能比较差。2、计算机辅助工程(CAE)采用少数几种通用的标准芯片实现电子系统的设计。CAE阶段的EDA工具已经可以进行设计描述、综合与优化和设计结果验证。但是,大部分从原理图出发的EDA工具仍然不能适应复杂电子系统的设计要求,而具体化的元件图形制约着优化设计。3、电子系统设计自动化阶段各种规模的可编程逻辑器件和EDA工具的发展,通过一些简单标准化的设计过程,利用微电子厂家提供的设计库来完成数万门ASIC和集成系统的设计与验证。在此阶段,硬件描述语言HDL的出现使得

    3、EDA设计进入到抽象描述的设计层次。现在,EDA设计进入了片上系统设计SOPC(System On Programmable Chip)阶段,可编程逻辑器件内集成了数字信号处理器的内核、微处理器的内核等,使得可编程逻辑器件不再只是完成复杂的逻辑功能,而是具有了强大的信号处理和控制功能。EDA技术包括狭义EDA技术和广义EDA技术。狭义EDA技术指以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化

    4、、逻辑布局布线、逻辑仿真,直至对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的技术,或称为IES/ASIC自动设计技术。广义EDA技术,是通过计算机及其电子系统的辅助分析和设计软件,完成电子系统某一部分的设计过程。因此,广义EDA技术除了包含狭义的EDA技术外,还包括计算机辅助分析CAA技术(如PSPICE,EWB,MATLAB等),印刷电路板计算机辅助设计PCB-CAD技术(如PROTEL,ORCAD等)和其它高频和射频设计和分析的工具等。EDA技术的共同特点:1、通过使用相应的电路分析和设计软件,完成电子系统各部分的设计;2、在电子系统设计中所使用

    5、的EDA软件基本都符合自顶向下的设计流程的理念;3、使用EDA软件设计电子系统,都需要分工设计,团体协作;4、使用EDA软件设计电子系统,提高了设计的效率,缩短了设计周期;5、使用EDA软件设计电子系统,采用了模块化和层次化的设计方法;6、大多数EDA软件都具有仿真和模拟功能;基于狭义EDA技术进行可编程逻辑器件的设计应掌握以下几个方面的内容:、大规模可编程逻辑器件PLD,是利用EDA技术进行电子系统设计的载体;、硬件描述语言HDL,是利用EDA技术进行电子系统设计的主要表达手段;、EDA设计软件EDAS:是利用EDA技术进行电子系统设计的自动化设计工具;、相关的硬件平台,是利用EDA技术进行

    6、电子系统设计的下载工具及硬件验证工具;、大规模可编程逻辑器件PLDPLD器件一般包含现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。由于EDA开发工具的通用性、设计语言的标准化以及设计过程几乎与所用器件的硬件结构无关,因而设计开发成功的各类逻辑功能块软件有很好的兼容性和可移植性。与ASIC设计相比,PLD显著的优势是开发周期短、投资风险小、产品上市速度快、市场适应能力强和硬件升级回旋余地大,而且当产品定型和产量扩大后,可将在生产中达到充分检验的VHDL设计迅速实现ASIC投产。2、硬件描述语言常用硬件描述语言有VHDL、Verilog和ABEL语言。下面从使用方面对这三种语言进行

    7、简要的对比:(1)逻辑描述层次:一般的硬件描述语言可以在三个层次上进行电路描述,其层次由高到低依次可分为行为级、寄存器传输级RTL和门电路级。VHDL语言是一种高级描述语言,适用于行为级和RTL级的描述,最适于描述电路的行为;Verilog语言和ABEL语言是一种较低级的描述语言,适用于RTL级和门电路级的描述,最适于描述门级电路。(2)设计要求:VHDL进行电子系统设计时可以不了解电路的结构细节,Verilog和ABEL语言进行电子系统设计时需了解电路的结构细节。(3)综合过程:任何一种语言源程序,最终都要转换成门电路级才能被布线器或适配器所接受。因此,VHDL语言源程序的综合要经过行为级R

    8、TL级门电路级的转化,VHDL几乎不能直接控制门电路的生成。而Verilog语言和ABEL语言源程序的综合过程只经过RTL级门电路级的转化,易于控制电路资源。(4)对综合器的要求:VHDL描述语言层次较高,不易控制底层电路,因而对综合器的性能要求较高,Verilog和ABEL对综合器的性能要求较低。(5)支持的EDA工具:支持VHDL和Verilog的EDA工具很多,但支持ABEL的综合器仅仅Dataio一家。(6)国际化程度:VHDL和Verilog已成为IEEE标准,而ABEL正朝国际化标准努力。现在,VHDL与Verilog语言将承担几乎全部的数字系统设计任务。3、软件开发工具基于高复杂

    9、度PLD器件的开发,在很大程度上依靠EDA软件完成。PLD的EDA工具以计算机软件为主,将典型的单元电路封装起来形成固定模块并形成标准的硬件开发语言(如HDL语言)供设计人员使用。PLD开发软件需要自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合。、硬件开发平台硬件开发平台提供芯片下载电路及EDA实验/开发的外围资源,以供硬件验证。硬件

    10、开发平台一般包括:)实验或开发所需的各类基本信号发生模块,包括时钟、脉冲、高低电平等;)PLD输出信息显示模块,包括数码显示、发光管显示、声响指示等;)监控程序模块,提供“电路重构软配置”;)目标芯片适配座以及上面的FPGA/CPLD目标芯片和编程下载电路。传统上的设计方法是自下而上的设计方法,是以固定功能元件为基础,基于电路板的设计方法。这种设计方法有下面的缺点:设计依赖于设计人员的经验。设计依赖于通用元器件。设计后期的仿真不易实现,并且调试复杂。设计实现周期长,灵活性差,耗时耗力,效率低下。系统调试、测试与性能分析完整系统构成电路板设计固定功能元件系统功能需求传统设计方法设计目标设计目标设

    11、计输入设计输入功能级仿真功能级仿真网表转换、映射、布局布线(网表转换、映射、布局布线(CPLDCPLD为适配)为适配)时序仿真时序仿真系统验证系统验证系统产品系统产品原理图输入,文本输入(包括器件选择、元件库的建立、原理图或状态机设计、VHDL语言设计)网表转换、映射、布局布线、产生时序数据、产生配置文件配置文件加载后,用示波器、逻辑分析仪、软件程序观察FPGA开发的一般流程开发的一般流程综合优化综合优化行为仿真行为仿真生成网表文件1、设计目标在系统设计之前,首先要进行的是方案论证、系统设计和FPGA芯片选择等准备工作。根据任务要求,如系统的指标和复杂度,对工作速度和芯片本身的各种资源、成本等

    12、方面进行权衡,选择合理的设计方案和合适的器件类型。一般都采用自顶向下的设计方法,把系统分成若干个基本单元,然后再把每个基本单元划分为下一层次的基本单元,直到可以直接使用EDA元件库为止。2、设计输入 设计输入是将所设计的系统或电路以开发软件要求的某种形式表示出来,并输入EDA工具的过程。常用的方法有硬件描述语言(HDL)和原理图输入方法等。原理图输入方式是一种最直接的描述方式,在可编程芯片发展的早期应用较广,它将所需的器件从元件库中调出来,画出原理图。这种方法虽然直观并易于仿真,但效率低,且不易维护。更主要的缺点是可移植性差。HDL语言输入法利用文本描述设计,主要使用行为级HDL,其主流语言是

    13、Verilog HDL和VHDL。3、功能仿真 功能仿真也称为前仿真,是在编译之前对用户所设计的电路进行逻辑功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。仿真前,要先利用波形编辑器和HDL等建立波形文件和测试向量(即将所关心的输入信号组合成序列),仿真结果将会生成报告文件和输出信号波形,从中便可以观察各个节点信号的变化。如果发现错误,则返回设计修改逻辑设计。常用的工具有Model Tech公司的ModelSim、Sysnopsys公司的VCS和Cadence公司的NC-Verilog,以及NC-VHDL等软件。4、综合优化 所谓综合就是将较高级抽象层次的描述转化成较低层次的描述。综

    14、合优化根据目标与要求优化所生成的逻辑连接,使层次设计平面化,供FPGA布局布线软件进行实现。综合优化是指将设计输入编译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接网表,而并非真实的门级电路。真实具体的门级电路需要利用FPGA制造商的布局布线功能,根据综合后生成的标准门级结构网表来产生。由于门级结构、RTL级的HDL程序的综合是很成熟的技术,所有的综合器都可以支持到这一级别的综合。常用的综合工具有Synplicity公司Synplify/Synplify Pro软件以及各个FPGA厂家自己推出的综合开发工具。5、综合后仿真 综合后仿真检查综合结果是否和原设计一致。在仿真时,把

    15、综合生成的标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响。但这一步骤不能估计线延时,因此和布线后的实际情况还有一定的差距,并不十分准确。目前的综合工具较为成熟,对于一般的设计可以省略这一步,但如果在布局布线后发现电路结构和设计意图不符,则需要回溯到综合后仿真来确认问题之所在。在功能仿真中介绍的软件工具一般都支持综合后仿真。6、实现与布局布线 将综合生成的逻辑网表配置到具体的FPGA芯片上,布局布线是其中最重要的过程。布局将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上,并且往往需要在速度最优和面积最优之间作出选择。布线根据布局的拓扑结构,利用芯片内部的各种连线

    16、资源,合理正确地连接各个元件。布线结束后,软件工具会自动生成报告,提供有关设计中各部分资源的使用情况。由于只有FPGA芯片生产商对芯片结构最为了解,所以布局布线必须选择芯片开发商提供的工具。7、时序仿真也称为后仿真,是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束条件或器件固有的时序规则,如建立时间、保持时间等)现象。时序仿真包含的延迟信息最全,也最精确,能较好地反映芯片的实际工作情况。由于不同芯片的内部延时不一样,不同的布局布线方案也给延时带来不同的影响。因此在布局布线后,通过对系统和各个模块进行时序仿真,分析其时序关系,估计系统性能,以及检查和消除竞争冒险是非

    17、常有必要的。在功能仿真中介绍的软件工具一般都支持综合后仿真。8、板级仿真与验证 板级仿真主要应用于高速电路设计中,对高速系统的信号完整性、电磁干扰等特征进行分析,一般都以第三方工具进行仿真和验证。9、芯片编程与调试 设计的最后一步就是芯片编程与调试。芯片编程是指产生使用的数据文件,然后将编程数据下载到FPGA芯片中。其中,芯片编程需要满足一定的条件,如编程电压、编程时序和编程算法等方面。目前,主流的FPGA芯片生产商都提供了内嵌的在线逻辑分析仪来解决上述矛盾,它们只需要占用芯片少量的逻辑资源,具有很高的实用价值。硬件描述语言(Hardware Description Language)是硬件设

    18、计人员和电子设计自动化(EDA)工具之间的界面,其主要目的是用来编写设计文件,建立电子系统行为级的仿真模型。即利用计算机的巨大能力对Verilog HDL或VHDL建模的复杂数字逻辑进行仿真,然后再自动综合,生成符合要求且在电路结构上可以实现的数字逻辑网表(Netlist),根据网表和某种工艺的器件自动生成具体电路,最后生成该工艺条件下这种具体电路的时延模型。仿真验证无误后,该模型可用于制造ASIC芯片或写入CPLD和FPGA器件中。在HDL语言出现之前,已有了许多程序设计语言,如汇编、C、Pascal、Fortran、Prolog等。它们适合于描述过程和算法,不适合作硬件描述。在使用EDA工

    19、具进行电子系统设计时,就需要一种硬件描述语言来作为EDA工具的工作语言。因此,众多的EDA工具软件开发者相继推出了自己的HDL语言。在HDL语言的发展过程中,美国国防部起了非常重要的作用。美国国防部电子系统项目有众多的承包公司,他们使用各自的HDL语言,造成了信息交换困难和维护困难。美国政府为了降低开发费用,避免重复设计,国防部为他们的超高速集成电路提供了一种硬件描述语言,以期望VHDL功能强大、严格、可读性好。政府要求各公司的合同都用它来描述,以避免产生歧义。HDL语言的特点主要体现在以下几个方面:1、HDL语言既包含一些高层程序设计语言的结构形式,同时也兼顾描述硬件线路连接的具体构件。、H

    20、DL语言是并发的,即具有在同一时刻执行多任务的能力。一般来讲编程语言是非并行的,但在实际硬件中许多操作都是在同一时刻发生的,所以HDL语言具有并发的特征。、HDL语言有时序的概念。一般来讲,编程语言是没有时序概念的,但在硬件电路中从输入到输出总是有延迟存在的,为描述这些特征,HDL语言需要建立时序的概念。因此,使用HDL除了可以描述硬件电路的功能外,还可以描述其时序要求。、通过使用结构级或行为级描述可以在不同的抽象层次描述设计,HDL语言采用自顶向下的数字电路设计方法,主要包括3个领域5个抽象层次,如下表所示:行为领域结构领域物理领域系统级性能描述部件及它们之间的逻辑连接方式芯片、模块、电路板

    21、和物理划分的子系统算法级I/O应答算法级硬件模块数据结构部件之间的物理连接、电路板、底盘等寄存器传输级并行操作寄存器传输、状态表算术运算部件、多路选择器、寄存器总线、微定序器、微存储器之间的物理连接方式芯片、宏单元逻辑级用布尔方程叙述门电路、触发器、锁存器标准单元布图电路级微分方程表达晶体管、电阻、电容、电感元件晶体管布图总的来说,它们有以下几点不同:、VHDL偏重于标准化的考虑,Verilog HDL则和EDA工具结合得更为紧密。VHDL是为了实现美国国防部VHSIC计划所推出的各个电子部件供应商具有统一数据交换格式标准的要求。Verilog HDL是在全球最大的EDA/ESDA供应商Cad

    22、ence公司的支持下针对EDA工具专门开发的硬件描述语言。、Verilog HDL拥有广泛的设计群体,成熟的资源远比VHDL丰富。同时Verilog HDL是从高级设计语言C语言发展而来的,比VHDL而言更容易上手,其编码风格也更为简洁明了,是一种非常容易掌握的硬件描述语言。、Verilog HDL和VHDL在行为级抽象建模的覆盖范围方面也有所不同。一般认为Verilog HDL在系统抽象方面比VHDL要强一些,Verilog HDL比较适合算法级(Algorithm)、寄存器传输级(RTL)、逻辑级(Logic)以及门级(Gate)的设计,而VHDL更适合特大型系统级(System)的设计。

    23、目前对于一个系统芯片设计项目,可以采用的方案包括以下几种:1、在系统级采用VHDL,在软件级采用C语言,在实现级采用Verilog。目前,软件与硬件的协调设计还是一个很具挑战性的工作,因为软件越来越成为SoC设计的关键。该方案的特点是:风险小,集成难度大,与原有方法完全兼容,有现成的开发工具,但工具集成由开发者自行负责完成。、系统级及软件级采用Superlog,硬件级和实现级均采用Verilog HDL描述,这样和原有的硬件设计可以兼容。该方案特点是风险较小,易于集成,与原硬件设计兼容性好,有集成开发环境。3、系统级和软件级采用SystemC,硬件级采用Verilog HDL,SystemC与

    24、常规的Verilog HDL互相转换,与原来的软件编译环境完全兼容。开发者只需要一组描述类库和一个包含仿真核的库,就可以在通常ANSI C+编译环境下开发,但硬件描述与原有方法完全不兼容。该方法特点是风险较大,与原软件开发兼容性好,硬件开发有风险。IC(Integrated Circuit)设计方法一般分为6类:1、全定制法:如ROM,RAM或PLA等;2、定制法:通常包括标准单元和通用单元;3、半定制法:通常包括数字电路门阵列和线性阵列;4、模块编译法:对设计模块进行描述,然后通过编译直接得到电路掩膜版图;5、可编程逻辑器件法:通常是指PAL、PLA、GAL器件和CPLD器件;6、逻辑单元阵

    25、列法:通常是指现场可编程门阵列FPGA器件。可编程逻辑器件(Programmable Logic Device,PLD)起源于20世纪70年代,是在专用集成电路(ASIC)的基础上发展起来的一种数字系统设计的主要硬件平台。其主要特点:1、由用户通过软件进行配置和编程,从而完成某种特定的功能,且可以反复擦写;2、在修改和升级PLD时,不需额外地改变PCB电路板,只是在计算机上修改和更新程序,使硬件设工作成为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本。PLD器件包括4种基本类型:编程只读存储器(Programmable Read Only Memory,PROM);现场可编

    26、程逻辑阵列(Field Programmable Logic Array,FPLA);可编程阵列逻辑(Programmable Array Logic,PAL);通用阵列逻辑(Generic Array Logic,GAL);按照颗粒度可以分为3类:小颗粒度(“门海(sea of gates)”架构)中等颗粒度(如:FPGA)大颗粒度(如:CPLD)按编程工艺可以分为四类:熔丝(Fuse)和反熔丝(Antifuse)编程器件可擦除的可编程只读存储器(UEPROM)编程器件电信号可擦除的可编程只读存储器(EEPROM)编程器件SRAM编程器件。前3类为非易失性器件,编程后,配置数据保留在器件上;

    27、第4类为易失性器件,掉电后配置数据会丢失,因此在每次上电后需要重新进行数据配置。可编程逻辑器件的发展可以划分为4个阶段:第1阶段的可编程器件只有简单的可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦只读存储器(EEPROM)3种,由于结构的限制,只能完成简单的数字逻辑功能。第2阶段出现了结构上稍微复杂的可编程阵列逻辑(PAL)和通用阵列逻辑(GAL)器件,正式被称为PLD,能够完成各种逻辑运算功能。典型的PLD由“与”、“非”阵列组成,用“与或”表达式来实现任意组合逻辑,所以PLD能以乘积和形式完成大量的逻辑组合。第3阶段Xilinx和Altera分别推出了与标准门阵

    28、列类似的FPGA和类似于PAL结构的扩展性CPLD,提高了逻辑运算的速度,具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点,兼容了PLD和通用门阵列的优点,能够实现超大规模的电路,编程方式也很灵活,成为产品原型设计和中小规模(一般小于10000)产品生产的首选。第4阶段出现了SOPC和SOC技术,是PLD和ASIC技术融合的结果,涵盖了实时化数字信号处理技术、高速数据收发器、复杂计算以及嵌入式系统设计技术的全部内容。超越了ASIC器件的性能和规模,也超越了传统意义上FPGA的概念,使PLD的应用范围从单片扩展到系统级。CPLD更适合完成各种算法和组合逻辑,FPGA更适合于完成时序逻辑。

    29、换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FPGA可在逻辑门下编程,而CPLD是在逻辑块下编程。FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。CPLD比FPGA使用起来更方便。CPLD的编程采用E2PROM或FASTFLAS技术,无需外部存储器芯片,使用简单。而FPGA的编程信息需存

    30、放在外部存储器上,使用方法复杂。CPLD的速度比FPGA快,并且具有较大的时间可预测性。这是由于FPGA是门级编程,并且CLB(可配置逻辑模块 Configurable Logic Block)之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。在编程方式上,CPLD主要是基于E2PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。CPLD又可分为在编程器上编程和在系统编程两类。FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程。数据重新写入SRAM中。其优点是可以编程任意次,可在工作中快速编

    31、程,从而实现板级和系统级的动态配置。CPLD保密性好,FPGA保密性差。一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。Verilog HDL(以下简称Verilog)是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。Verilog HDL语言具有下述描述能力:设计的行为特性:使用过程化结构建模设计的数据流特性:使用连续赋值语句方式建模设计的结构组成:使用门和模块实例语句建模包含响应监控和设计验证方面的时延和波形产生机制。Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。Veri

    32、log 语言从C编程语言中继承了多种操作符和结构。并提供了扩展的建模能力。Verilog语言是IEEE标准,为IEEE Std13642019。Verilog硬件描述语言的主要功能包括:基本逻辑门,如and、or和nand等内置在语言中。用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。开关级基本结构模型,例如pmos和nmos等也内置在语言中。提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。可采用三种不同方式或混合方式对设计建模:行为描述方式使用过程化结构建模;数据流方式使用连续赋值语句方式建模;结构化方式使用门和模块实例语

    33、句描述建模。Verilog HDL中有两类数据类型:网络类型表示构件间的物理连线寄存器类型表示抽象的数据存储元件 能够描述层次设计,可使用模块实例结构描述任何层次。设计的规模可以是任意的,语言不对设计的规模(大小)施加任何限制。Verilog HDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。PLI是允许外部函数访问Verilog模块内信息、允许设计者与模拟器交互的例程集合。人和机器都可阅读Verilog 语言,因此可作为EDA工具和设计者之间的交互语言。设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。能够使用内置开关级原语在

    34、开关级对设计完整建模。同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。Verilog HDL能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。一个复杂电路系统的完整Verilog HDL模型是由若干个Verilog HDL模块构成的,每一个模块又可以由若干个子模块构成。Verilog使用大约100个预定义的关键词定义该语言的结构。用Verilog 描述的电路设计就是该电路的 Verilog 模型,也称为模块,是Verilog的基本描述单位。一般来说一个模块可以是一个元件或者是一个更低层设计模

    35、块的集合。模块是并行运行的,通常需要一个高层模块通过调用其他模块的实例来定义一个封闭的系统,包括测试数据和硬件描述。module 模块名(端口列表);endmodule 端口定义 input 输入端口 output 输出端口 inout 输入/输出端口 数据类型说明 wire reg parameter 逻辑功能定义 assign always function task.Verilog结构位于module和endmodule声明语句之间,每个Verilog程序包括端口定义、数据类型说明和逻辑功能定义部分。是模块唯一的标识符;是由模块各个输入、输出和双向端口组成,这些端口用来与其他模块进行通信

    36、;数据类型说明部分用来指定模块内用到的数据对象为寄存器型、存储器型还是连线型;逻辑功能定义部分通过使用逻辑功能语句来实现具体的逻辑功能。每个Verilog 程序源文件都以.v作为文件扩展名;Verilog HDL区分大小写,每条语句以分号结束,endmodule语句后不加分号。白空(新行、制表符和空格)没有特殊意义。模块声明包括模块名字,模块的输入,输出端口类表。模块的定义格式如下:module(port_name1,port_namen);.endmodule;其中:module_name为模块名,是该模块的唯一标识。port_name为端口名,这些端口名使用“,”分割。端口是模块与外部其它

    37、模块进行信号传递的通道(信号线),模块端口分为输入、输出或双向端口。端口的定义格式为:input,.;input为关键字,用于声明后面的端口为输入口;input_port_name为输入端口名字;other_inputs为用逗号分割的其它输入端口的名字;output,.;output为关键字,用于声明后面的端口为输出端口;output_port_name为输出端口名字;other_outputs为逗号分割的其它输出端口的名字;inout,.;inout为关键字,用于声明后面端口为输入/输出类型;other_inouts为输入/输出端口的名字;other_inouts为逗号分割的其它输入/输出端

    38、口的名字;在声明输入/输出时,还要声明其数据类型;默认的端口类型为wire类型。输入和双向端口不能声明为寄存器型。【例例3.1】端口说明实例module addr(cout,sum,ina,inb,cin)input cin;input7:0 ina,inb;output7:0 sum;output cout;endmodule注意,在verilog中,也可以使用ANSI C风格进行端口声明。可避免端口名在端口列表和端口声明语句中的重复。如果声明中未指明端口的数据类型,那么默认端口具有wire数据类型。【例例3.2】ANSI C风格的端口说明实例 module fulladd4(output

    39、reg3:0 sum,output reg c_out,input3:0 a,b,input c_in);endmodule 对模块中所用到的所有信号(包括端口信号)都必须进行数据类型的定义。Verilog HDL语言提供了各种信号类型,分别模拟实际电路中的各种物理连接和物理实体。【例例3.3】信号类型声明 reg cout;/定义信号cout的数据类型为reg reg7:0 out;/定义信号out的数据类型为8位reg wire A,B,C,D,F/定义信号A,B,C,D,F为wire(连线)型 逻辑功能定义用于实现模块中的具体的功能。主要的方法有:赋值语句实现逻辑定义:用assign赋值

    40、语句【例例3.4】assign F=(A&B)|(C&D);模块调用:指从模块模板生成实际的电路结构对象的操作,这样的电路结构对象被称为模块实例,模块调用也被称为实例化。一个Verilog模块可以被任意多个其他模块调用。在Verilog 语言中,模块不能被嵌套定义,但是却可以包含其他模块的拷贝,即调用其他模块的实例。模块的定义和模块的实例是两个不同的概念,在一个设计中,只有通过模块调用(实例化)才能使用一个模块。always过程赋值:always块经常用来描述逻辑功能,实现时序逻辑电路。【例例3.5】always过程实现计数器的过程。always(posedge clk)/正沿触发 begin

    41、 if(reset)out=0;else out=out+1;end 函数和任务调用:模块调用和函数调用非常相似,但是在本质上又有很大差别:一个模块代表拥有特定功能的一个电路块,每当一个模块在其他模块内被调用一次,被调用模块所表示的电路结构就会在调用模块代表的电路内部被复制一次(即生成被调用模块的一个实例);但是模块调用不能像函数调用一样具有“退出调用”的操作,因为硬件电路结构不会随着时间而发生变化,被复制的电路块将一直存在。注释,在Verilog HDL中有两种格式的注释:/*第一种形式:可以扩展至多行*/第二种形式:在本行结束。间隔符:包括空格字符(b)、制表符(t)、换行符(n)以及换页

    42、符。标识符:Verilog HDL中的标识符(identifier)可以是任意一组字母、数字、$符号和_(下划线)符号的组合。标识符的第一个字符必须是字母或者下划线。另外,标识符是区分大小写的。关键字:所有的关键字都使用小写字母。运算符:Verilog提供了丰富的运算符。Verilog HDL中有三类常量:整型;实数型;字符串型。整数型常量可以按如下两种方式描述:简单的十进制格式 +32 十进制数32 -15 十进制数-15 基数表示法:;:定义以位计的常量的位长;:单引号是指定位宽格式表示法的固有字符,不能省略。:是基于base的值的数字序列,由相应基数格式的数字串组成。值x和z以及十六进制

    43、中的a到f不区分大小写。【例例3.6】下面给出基数表示的具体实例。5O37 5位八进制数 4D2 4位十进制数 4B1x_01 4位二进制数 7Hx 7位x(扩展的x),即xxxxxxx 4hZ 4位z(扩展的z),即zzzz 4d-4 非法,数值不能为负 8 h 2A 8位十六进制数 3 b001 非法,和基数b之间不允许出现空格 (2+3)b10 非法,位长不能够为表达式【例例3.7】采用不同基数表示的例子 o721 9位八进制数 hAF 8位十六进制数【例例3.8】补零填充的例子 10b10,左边添0占位,0000000010 10bx0 x1,左边添x占位,xxxxxxx0 x1【例例

    44、3.9】数据被截断的例子 3b1001_0011与3b011相等 5H0FFF与5H1F相等实数可以用下列两种形式描述:十进制计数法【例例3.10】十进制计数法表示实数常量的例子 2.0,5.678,11572.12,0.1 2.为非法,因为小数点两侧必须要有1位数字 科学计数法【例例3.11】科学计数法表示实数常量的例子 23_5.1e2其值为23510.0;忽略下划线 3.6E2其值为360.0e(与E相同)5E-4其值为0.0005 Verilog语言定义了实数如何隐式地转换为整数:实数通过四舍五入被转换为最相近的整数。【例例3.12】对实数四舍五入后的表示 42.446,42.45转换

    45、为整数42 92.5,92.699转换为整数93 -15.62转换为整数-16 -26.22转换为整数-26字符串是双引号内的字符序列,用一串8位二进制ASC码的形式表示,每一个8位二进制ASC码代表一个字符。例如:字符串“ab”等价于16h 5758。如果字符串被用作Verilog表达式或复制语句的操作数,则字符串被看做无符号整数序列。字符串变量声明:字符串变量是寄存器型变量,它具有与字符串的字符数乘以8相等的位宽。【例例3.13】字符串变量的声明。存储12个字符的字符串“Hello China!”需要8*12(即96位)宽的寄存器。reg 8*12:1 str;initial begin

    46、str=“Hello China!”;end 字符串操作 可以使用Verilog HDL的操作符对字符串进行处理,被操作符处理的数据是8位ASC码的序列。在操作过程中,如果声明的字符串变量位数大于字符串实际长度,则在赋值操作后,字符串变量的左端(即高位)补0。【例例3.14】字符串操作的例子module string_test;reg8*14:1 stringvar;initialbegin stringvar=“Hello China”;$display(“%s is stored as%h”,stringvar,stringvar);stringvar=stringvar.“!”;$dis

    47、play(“%s is stored as%h”,stringvar,stringvar);endendmodule输出结果为:Hello China is stored as 00000048656c6c6f20776f726c64Hello China!is stored as 48656c6c6f20776f726c64212121 特殊字符:在某些字符之前加上一个引导性的字符(转移字符),这些的字符只能用于字符串中。下表列出了这些特殊字符的表示和意义。字符意义 n换行符tTab键符号”符号”ddd3位八进制数表示的ASCII值(0d7)Verilog HDL有下列四种基本的值:1)0:

    48、逻辑0或“假”状态;2)1:逻辑1或“真”状态;3)x(X):未知状态,对大小写不敏感;4)z(Z):高阻状态,对大小写不敏感。在Verilog HDL中,根据赋值和对值保持方式不同,可将数据类型主要分为两大类:网络(net)型和变(Variable)型。这两类数据也代表了不同的硬件结构。net表示器件之间的物理连接,需要门和模块的驱动。网络数据类型是指输出始终根据输入的变化而更新其值的变量,它一般指的是硬件电路中的各种物理连接。没有声明的net的默认类型为1位(标量)wire类型。Verilog HDL禁止对已经声明过的网络、变量或参数再次声明。下面给出net声明的语法格式:range de

    49、lay,net_name;net_type:表示网络型数据数据的类型。range:指定数据为标量或矢量。默认为1位的标量;反之,由该项指定数据的矢量形式。delay:指定仿真延迟时间。net_name:net名称,一次可定义多个net,用逗号分开。【例例3.15】网络的声明wand w;/一个标量wand类型net tri 15:0 bus;/16位三态总线 wire 0:31 w1,w2;/两个32位wire,MSB为bit0 类型功能可综合性wire,tri标准内部连接线supply1,supply0电源和地wor,trior多驱动源线或wand,triand多驱动源线与trireg能保存

    50、电荷的nettri1,tri0无驱动时上拉/下拉 常用的net型变量 网络数据类型包含多种不同种类的网络子类型:wire型,tri型,wor型,trior型,wand型,triand型,trireg型,tri1型,tri0型,supply0型,supply1型。简单的网络类型说明语法为:net_kindmsb:lsbnet1,net2,.,netN;网络型数据的默认初始化值为Z。带有驱动的网络型数据应当为它们的驱动输出指定默认值。trireg网络型数据时一个例外。它的默认初始值为x,而且在声明语句中应当为其指定电荷量强度。在一个网络型数据类型声明中,可以指定两类强度:电荷量强度(charge

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:EDA原理及应用课件.ppt
    链接地址:https://www.163wenku.com/p-3592352.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库