首页 > > > 夏宇闻-Verilog经典教程.pdf

夏宇闻-Verilog经典教程.pdf

夏宇闻-Verilog经典教程.pdf

上传者: 秸秆分解剂 2014-03-27 评分1 评论0 下载1 收藏10 阅读量503 暂无简介 简介 举报

简介:本文档为《夏宇闻-Verilog经典教程pdf》,可适用于电子通讯领域,主题内容包含第一章数字信号处理、计算、程序、算法和硬线逻辑的基本概念第一章数字信号处理、计算、程序、算法和硬线逻辑的基本概念引言:现代计算机与通讯系统电子设备中符等。

第一章数字信号处理、计算、程序、算法和硬线逻辑的基本概念第一章数字信号处理、计算、程序、算法和硬线逻辑的基本概念引言:现代计算机与通讯系统电子设备中广泛使用了数字信号处理专用集成电路它们主要用于数字信号传输中所必需的滤波、变换、加密、解密、编码、解码、纠检错、压缩、解压缩等操作。这些处理工作从本质上说都是数学运算。从原则上讲它们完全可以用计算机或微处理器来完成。这就是为什么我们常用C、Pascal或汇编语言来编写程序以研究算法的合理性和有效性的道理。在数字信号处理的领域内有相当大的一部分工作是可以事后处理的。我们可以利用通用的计算机系统来处理这类问题。如在石油地质调查中我们通过钻探和一系列的爆破记录下各种地层的回波数据然后用计算机对这些数据进行处理去除噪声等无用信息最后我们可以得到地层的构造从而找到埋藏的石油。因为地层不会在几年内有明显的变化因此花几十天的时间把地层的构造分析清楚也能满足要求。这种类型的数字信号处理是非实时的用通用的计算机就能满足需要。还有一类数字信号处理必须在规定的时间内完成如在军用无线通信系统和机载雷达系统中我们常常需要对检测到的微弱信号增强、加密、编码、压缩在接收端必须及时地解压缩、解码和解密并重现清晰的信号。我们很难想象用一个通用的计算机系统来完成这项工作因此我们不得不自行设计非常轻便小巧的高速专用硬件系统来完成该任务。有的数字信号处理对时间的要求非常苛刻以至于用高速的通用微处理器芯片也无法在规定的时间内完成必须的运算。我们必须为这样的运算设计专用的硬线逻辑电路这可以在高速FPGA器件上实现或制成高速专用集成电路。这是因为通用微处理器芯片是为一般目的而设计的运算的步骤必须通过程序编译后生成的机器码指令加载到存贮器中然后在微处理器芯片控制下按时钟的节拍逐条取出指令、分析指令然后执行指令直至程序的结束。微处理器芯片中的内部总线和运算部件也是为通用的目的而设计即使是专为信号处理而设计的通用微处理器因为它的通用性也不可能为某一个特殊的算法来设计一系列的专用的运算电路而且其内部总线的宽度也不能随意改变只有通过改变程序才能实现这个特殊的算法。因而其运算速度就受到限制。本章的目的是想通过对数字信号处理、计算(Computing)、算法和数据结构、编程语言和程序、体系结构和硬线逻辑等基本概念的介绍了解算法与硬线逻辑之间的关系从而引入利用VerilogHDL硬件描述语言设计复杂的数字逻辑系统的概念和方法。向读者展示一种九十年代才真正开始在美国等先进的工业国家逐步推广的数字逻辑系统的设计方法。借助于这种方法在电路设计自动化仿真和综合工具的帮助下只要我们对并行的计算结构有第一章数字信号处理、计算、程序、算法和硬线逻辑的基本概念一定程度的了解对有关算法有深入的研究我们完全有能力设计并制造出有自己知识产权的DSP(数字信号处理)类和任何复杂的数字逻辑集成电路芯片为我国的电子工业和国防现代化作出应有的贡献。数字信号处理大规模集成电路设计制造技术和数字信号处理技术近三十年来各自得到了迅速的发展。这两个表面上看来没有什么关系的技术领域实质上是紧密相关的。因为数字信号处理系统往往要进行一些复杂的数学运算和数据的处理并且又有实时响应的要求它们通常是由高速专用数字逻辑系统或专用数字信号处理器所构成电路是相当复杂的。因此只有在高速大规模集成电路设计制造技术进步的基础上才有可能实现真正有意义的实时数字信号处理系统。对实时数字信号处理系统的要求不断提高也推动了高速大规模集成电路设计制造技术的进步。现代专用集成电路的设计是借助于电子电路设计自动化(EDA)工具完成的。学习和掌握硬件描述语言(HDL)是使用电子电路设计自动化(EDA)工具的基础。计算(Computing)说到数字信号处理我们自然就会想到数学计算(或数学运算)。现代计算机和通信系统中广泛采用了数字信号处理的技术和方法。基本思路是先把信号用一系列的数字来表示如是连续的模拟信号则需通过采样和模拟数字转换把信号转换成一系列的数字信号然后对这些数字信号进行各种快速的数学运算其目的是多种多样的有的是为了加密有的是通过编码来减少误码率以提高信道的通信质量有的是为了去掉噪声等无关的信息也可以称为滤波有的是为了数据的压缩以减少占用的频道…。有时我们也把某些种类的数字信号处理运算称为变换如离散傅利叶变换(DFT)、离散余弦变换(DCT)、小波变换(WaveletT)等。我们这里所说的计算是从英语Computing翻译过来的它的含义要比单纯的数学计算广泛得多。“Computing这门学问研究怎样系统地有步骤地描述和转换信息实质上它是一门覆盖了多个知识和技术范畴的学问其中包括了计算的理论、分析、设计、效率和应用。它提出的最基本的问题是什么样的工作能自动完成什么样的不能。”(摘自Denningetal,“ComputingasaDiscipline,”CommunicationofACM,January,)。本文中凡提到计算这个词处指的就是上面一段中Computing所包含的意思。由传统的观点出发我们可以从三个不同的方面来研究计算即从数学、科学和工程的不同角度。由比较现代的观点出发我们可以从四个主要的方面来研究计算即从算法和数据结构、编程语言、体系结构、软件和硬件设计方法学。本课本的主题是从算法到硬线逻辑的实现因此我们将从算法和数据结构、编程语言和程序、体系结构和硬线逻辑以及设计方法学等方面的基本概念出发来研究和探讨用于数字信号处理等领域的复杂硬线逻辑电路的设计技术和方法。特别强调利用Verilog硬件描述语言的TopDown设计方法的介绍。第一章数字信号处理、计算、程序、算法和硬线逻辑的基本概念算法和数据结构为了准确地表示特定问题的信息并顺利地解决有关的计算问题我们需要采用一些特殊方法并建立相应的模型。所谓算法就是解决特定问题的有序步骤所谓数据结构就是解决特定问题的相应的模型。编程语言和程序程序员利用一种由专家设计的既可以被人理解也可以被计算机解释的语言来表示算法问题的求解过程。这种语言就是编程语言。由它所表达的算法问题的求解过程就是程序。我们已经熟悉通过编写程序来解决计算问题C、Pascal、Fortran、Basic或汇编语言语言是几种常用的编程语言。如果我们只研究算法只在通用的计算机上运行程序或利用通用的CPU来设计专用的微处理器嵌入系统掌握上述语言就足够了。如果还需要设计和制造能进行快速计算的硬线逻辑专用电路我们必须学习数字电路的基本知识和硬件描述语言。因为现代复杂数字逻辑系统的设计都是借助于EDA工具完成的无论电路系统的仿真和综合都需要掌握硬件描述语言。在本书中我们将要比较详细地介绍Verilog硬件描述语言。系统结构和硬线逻辑计算机究竟是如何构成的?为什么它能有效地和正确地执行每一步程序?它能不能用另外一种结构方案来构成?运算速度还能不能再提高?所谓计算机系统结构就是回答以上问题并从硬线逻辑和软件两个角度一起来探讨某种结构的计算机的性能潜力。比如VonNeumann(冯诺依曼)在设计的EDVAC电子计算机它的结构是一种最早的顺序机执行标量数据的计算机系统结构。顺序机是从位串行操作到字并行操作从定点运算到浮点运算逐步改进过来的。由于VonNeumann系统结构的程序是顺序执行的所以速度很慢。随着硬件技术的进步不断有新的计算机系统结构产生其计算性能也在不断提高。计算机系统结构是一门讨论和研究通用的计算机中央处理器如何提高运算速度性能的学问。对计算机系统结构的深入了解是设计高性能的专用的硬线逻辑系统的基础因此将是本书讨论的重点之一。但由于本书的重点是利用VerilogHDL进行复杂数字电路的设计技术和方法大量的篇幅将介绍利用HDL进行设计的步骤、语法要点、可综合的风格要点、同步有限状态机和由浅入深的设计实例。设计方法学复杂数字系统的设计是一个把思想(即算法)转化为实际数字逻辑电路的过程。我们都知道同一个算法可以用不同结构的数字逻辑电路来实现从运算的结果说来可能是完全一致的但其运算速度和性能价格比可以有很大的差别。我们可用许多种不同的方案来实现能实时完成算法运算的复杂数字系统电路下面列出了常用的四种方案:)以专用微处理机芯片为中心来构成完成算法所需的电路系统)用高密度的FPGA(从几万门到百万门))第一章数字信号处理、计算、程序、算法和硬线逻辑的基本概念设计专用的大规模集成电路(ASIC))利用现成的微处理机的IP核并结合专门设计的高速ASIC运算电路。究竟采用什么方案要根据具体项目的技术指标、经费、时间进度和批量综合考虑而定。在上述第二、第三、第四种设计方案中电路结构的考虑和决策至关重要。有的电路结构速度快但所需的逻辑单元多成本高而有的电路结构速度慢但所需的逻辑单元少成本低。复杂数字逻辑系统设计的过程往往需要通过多次仿真从不同的结构方案中找到一种符合工程技术要求的性能价格比最好的结构。一个优秀的有经验的设计师能通过硬件描述语言的顶层仿真较快地确定合理的系统电路结构减少由于总体结构设计不合理而造成的返工从而大大加快系统的设计过程。专用硬线逻辑与微处理器的比较在信号处理专用计算电路的设计中以专用微处理器芯片为中心来构成完成算法所需的电路系统是一种较好的办法。我们可以利用现成的微处理器开发系统在算法已用C语言验证的基础上在开发系统工具的帮助下把该C语言程序转换为专用微处理器的汇编再编译为机器代码然后加载到样机系统的存储区即可以在开发系统工具的环境下开始相关算法的运算仿真或运算。采用这种方法设计周期短、可以利用的资源多但速度、能耗、体积等性能受该微处理器芯片和外围电路的限制。用高密度的FPGA(从几万门到几十万门)来构成完成算法所需的电路系统也是一种较好的办法。我们必须购置有关的FPGA开发环境、布局布线和编程工具。有些FPGA厂商提供的开发环境不够理想其仿真工具和综合工具性能不够好我们还需要利用性能较好的硬件描述语言仿真器、综合工具才能有效地进行复杂的DSP硬线逻辑系统的设计。由于FPGA是一种通用的器件它的基本结构决定了对某一种特殊应用性能不如专用的ASIC电路。采用自行设计的专用ASIC系统芯片(SystemOnChip)即利用现成的微处理机IP核或根据某一特殊应用设计的微处理机核(也可以没有微处理机核)并结合专门设计的高速ASIC运算电路能设计出性能价格比最高的理想数字信号处理系统。这种方法结合了微处理器和专用的大规模集成电路的优点由于微处理器IP核的挑选结合了算法和应用的特点又加上专用的ASIC在需要高速部分的增强能“量体裁衣”因而各方面性能优越。但由于设计和制造周期长、投片成本高往往只有经费充足、批量大的项目或重要的项目才采用这一途径。当然性能优良的硬件描述语言仿真器、综合工具是不可缺少的另外对所采用的半导体厂家基本器件库和IP库的深入了解也是必须的。以上所述算法的专用硬线逻辑实现都需要对算法有深入的了解还需掌握硬件描述语言和相关的EDA仿真、综合和布局布线工具。C语言与硬件描述语言在算法运算电路设计的关系和作用数字电路设计工程师一般都学习过编程语言、数字逻辑基础、各种EDA软件工具的使用。第一章数字信号处理、计算、程序、算法和硬线逻辑的基本概念就编程语言而言国内外大多数学校都以C语言为标准只有少部分学校使用Pascal和Fortran。算法的描述和验证常用C语言来做。例如要设计ReedSolomen编码解码器我们必须先深入了解ReedSolomen编码解码的算法再编写C语言的程序来验证算法的正确性。运行描述编码器的C语言程序把在数据文件中的多组待编码的数据转换为相应的编码后数据并存入文件。再编写一个加干扰用的C语言程序用于模拟信道。它能产生随机误码位(并把误码位个数控制在纠错能力范围内)将其加入编码后的数据文件中。运行该加扰程序产生带误码位的编码后的数据文件。然后再编写一个解码器的C语言程序运行该程序把带误码位的编码文件解码为另一个数据文件。只要比较原始数据文件和生成的文件便可知道编码和解码的程序是否正确(能否自动纠正纠错能力范围内的错码位)。用这种方法我们就可以来验证算法的正确性。但这样的数据处理其运行速度只与程序的大小和计算机的运行速度有关也不能独立于计算机而存在。如果要设计一个专门的电路来进行这种对速度有要求的实时数据处理除了以上介绍的C程序外还须编写硬件描述语言(如VerilogHDL或VHDL)的程序进行仿真以便从电路结构上保证算法能在规定的时间内完成并能与前端和后端的设备或器件正确无误地交换数据。用硬件描述语言(HDL)的程序设计硬件的好处在于易于理解、易于维护、调试电路速度快、有许多的易于掌握的仿真、综合和布局布线工具还可以用C语言配合HDL来做逻辑设计的前后仿真验证功能是否正确。在算法硬件电路的研制过程中计算电路的结构和芯片的工艺对运行速度有很大的影响。所以在电路结构确定之前必须经过多次仿真:)C语言的功能仿真。)C语言的并行结构仿真。)VerilogHDL的行为仿真。)VerilogHDLRTL级仿真。)综合后门级结构仿真。)布局布线后仿真。)电路实现验证。下面介绍用C语言配合VerilogHDL来设计算法的硬件电路块时考虑的三个主要问题:z为什么选择C语言与VerilogHDL配合使用?zC语言与VerilogHDL的使用有何限制?z如何利用C来加速硬件的设计和故障检测?)为什么选择C语言与Verilog配合使用首先C语言很灵活查错功能强还可以通过PLI(编程语言接口)编写自己的系统任务直接与硬件仿真器(如VerilogXL)结合使用。C语言是目前世界上应用最为广泛的一种编程语言因而C程序的设计环境比VerilogHDL的完整。此外C语言第一章数字信号处理、计算、程序、算法和硬线逻辑的基本概念可应用于许多领域有可靠的编译环境语法完备缺陷较少。比较起来Verilog语言只是针对硬件描述的在别处使用(如用于算法表达等)并不方便。而且Verilog的仿真、综合、查错工具等大部分软件都是商业软件与C语言相比缺乏长期大量的使用可靠性较差亦有很多缺陷。所以只有在C语言的配合使用下Verilog才能更好地发挥作用。面对上述问题最好的方法是C语言与Verilog语言相辅相成互相配合使用。这就是既要利用C语言的完整性又要结合Verilog对硬件描述的精确性来更快更好地设计出符合性能要求的硬件电路系统。利用C语言完善的查错和编译环境设计者可以先设计出一个功能正确的设计单元以此作为设计比较的标准。然后把C程序一段一段地改写成用并型结构(类似于Verilog)描述的C程序此时还是在C的环境里使用的依然是C语言。如果运行结果都正确就将C语言关键字用Verilog相应的关键字替换进入Verilog的环境。将测试输入同时加到C与Verilog两个单元将其输出做比较。这样很容易发现问题的所在然后更正再做测试直至正确无误。剩下的工作就交给后面的设计工程师继续做。)C语言与Verilog语言互相转换中存在的问题这样的混合语言设计流程往往会在两种语言的转换中会遇到许多难题。例如怎样把C程序转换成类似Verilog结构的C程序来增加并行度以保证用硬件实现时运行速度达到设计要求又如怎样不使用C中较抽象的语法:例如迭代指针不确定次数的循环等等也能来表示算法(因为转换的目的是要用可综合的Verilog语句来代替C程序中的语句而可用于综合的Verilog语法是相当有限的往往找不到相应的关键字来替换)。C程序是一行接一行依次执行的属于顺序结构而Verilog描述的硬件是可以在同一时间同时运行的属于并行结构。这两者之间有很大的冲突。而Verilog的仿真软件也是顺序执行的在时间关系上同实际的硬件是有差异的可能会出现一些无法发现的问题。Verilog可用的输出输入函数很少。C语言的花样则很多转换过程中会遇到一些困难。C语言的函数调用与Verilog中模块的调用也有区别。C程序调用函数是没有延时特性的一个函数是唯一确定的对同一个函数的不同调用是一样的。而Verilog中对模块的不同调用是不同的即使调用的是同一个模块必须用不同的名字来指定。Verilog的语法规则很死限制很多能用的判断语句有限。仿真速度较慢查错功能差错误信息不完整。仿真软件通常也很昂贵而且不一定可靠。C语言没有时间关系转换后的Verilog程序必须要能做到没有任何外加的人工延时信号也就是必须表达为有限状态机即RTL级的Verilog否则将无法使用综合工具把Verilog源代码转化为门级逻辑。)如何利用C语言来加快硬件的设计和查错第一章数字信号处理、计算、程序、算法和硬线逻辑的基本概念下表中列出了常用的C与Verilog相对应的关键字与控制结构CVerilogsubfunctionmodule,function,taskifthenelseifthenelseCaseCase{,}begin,endForForWhileWhileBreakDisableDefineDefineIntIntPrintfmonitor,display,strobe下表中列出了C与Verilog相对应的运算符CVerilog功能**乘除加减取模!!反逻辑逻辑且||||逻辑或>>大于<<小于>=>=大于等于<=<=小于等于====等于!=!=不等于~~位反相按位逻辑与||按位逻辑或^^按位逻辑异或~^~^按位逻辑同或>>>>右移<<<<左移::同等於ifelse敘述从上面的讨论我们可以总结如下:yC语言与Verilog硬件描述语言可以配合使用辅助设计硬件yC语言与Verilog硬件描述语言很象只要稍加限制C语言的程序很容易转成Verilog的程序第一章数字信号处理、计算、程序、算法和硬线逻辑的基本概念美国和中国台湾地区逻辑电路设计和制造厂家大都以VerilogHDL为主中国大陆地区目前学习使用VHDL的较多。到底选用VHDL或是VerilogHDL來配合C一起用就留給各位自行去決定。但从学习的角度来看VerilogHDL比較簡單也與C语言较接近容易掌握。从使用的角度支持Verilog硬件描述语言的半导体厂家也较支持VHDL的多。总结:本章介绍了信号处理与硬线逻辑设计的关系以及有关的基本概念。引入了VerilogHDL硬件描述语言向读者展示一种九十年代才真正开始在美国等先进的工业国家逐步推广的数字逻辑系统的设计方法。借助于这种方法在电路设计自动化仿真和综合工具的帮助下我们完全有能力设计并制造出有自己知识产权的DSP(数字信号处理)类和任何复杂的数字逻辑集成电路芯片为我国的电子工业和国防现代化作出应有的贡献。在下面的各章里我们将分步骤地详细介绍这种设计方法。思考题:)什么是信号处理电路?)为什么要设计专用的信号处理电路?)什么是实时处理系统?)为什么要用硬件描述语言来设计复杂的算法逻辑电路?)能不能完全用C语言来代替硬件描述语言进行算法逻辑电路的设计?)为什么在算法逻辑电路的设计中需要用C语言和硬件描述语言配合使用来提高设计效率?第二章VerilogHDL设计方法概述第二章VerilogHDL设计方法概述前言随着电子设计技术的飞速发展专用集成电路(ASIC)和用户现场可编程门阵列(FPGA)的复杂度越来越高。数字通信、工业自动化控制等领域所用的数字电路及系统其复杂程度也越来越高特别是需要设计具有实时处理能力的信号处理专用集成电路并把整个电子系统综合到一个芯片上。设计并验证这样复杂的电路及系统已不再是简单的个人劳动而需要综合许多专家的经验和知识才能够完成。由于电路制造工艺技术进步非常迅速电路设计能力赶不上技术的进步。在数字逻辑设计领域迫切需要一种共同的工业标准来统一对数字逻辑电路及系统的描述这样就能把系统设计工作分解为逻辑设计(前端)和电路实现(后端)两个互相独立而又相关的部分。由于逻辑设计的相对独立性就可以把专家们设计的各种常用数字逻辑电路和系统部件(如FFT算法、DCT算法部件)建成宏单元(Megcell)或软核(SoftCore)库供设计者引用以减少重复劳动提高工作效率。电路的实现则可借助于综合工具和布局布线工具(与具体工艺技术有关)来自动地完成。VHDL和VerilogHDL这两种工业标准的产生顺应了历史的潮流因而得到了迅速的发展。作为跨世纪的中国大学生应该尽早掌握这种新的设计方法使我国在复杂数字电路及系统的设计竞争中逐步缩小与美国等先进的工业发达国家的差距。为我国下一个世纪的深亚微米百万门级的复杂数字逻辑电路及系统的设计培养一批技术骨干。硬件描述语言HDL(HardwareDescriptionLanguage)硬件描述语言(HDL)是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。它可以使数字逻辑电路设计者利用这种语言来描述自己的设计思想然后利用电子设计自动化(在下面简称为EDA)工具进行仿真再自动综合到门级电路再用ASIC或FPGA实现其功能。目前这种称之为高层次设计(HighLevelDesign)的方法已被广泛采用。据统计在美国硅谷目前约有%以上的ASIC和FPGA已采用硬件描述语言方法进行设计。硬件描述语言的发展至今已有二十多年的历史并成功地应用于设计的各个阶段:仿真、验证、综合等。到年代时已出现了上百种硬件描述语言它们对设计自动化起到了极大的促进和推动作用。但是这些语言一般各自面向特定的设计领域与层次而且众多的语言使用户无所适第二章VerilogHDL设计方法概述从因此急需一种面向设计的多领域、多层次、并得到普遍认同的标准硬件描述语言。进入年代后期硬件描述语言向着标准化的方向发展。最终VHDL和VerilogHDL语言适应了这种趋势的要求先后成为IEEE标准。把硬件描述语言用于自动综合还只有短短的六、七年历史。最近三四年来用综合工具把可综合风格的HDL模块自动转换为电路发展非常迅速在美国已成为设计数字电路的主流。本书主要介绍如何来编写可综合风格的VerilogHDL模块如何借助于Verilog语言对所设计的复杂电路进行全面可靠的测试。VerilogHDL的历史什么是VerilogHDLVerilogHDL是硬件描述语言的一种用于数字电子系统设计。它允许设计者用它来进行各种级别的逻辑设计可以用它进行数字逻辑系统的仿真验证、时序分析、逻辑综合。它是目前应用最广泛的一种硬件描述语言。据有关文献报道目前在美国使用VerilogHDL进行设计的工程师大约有人全美国有多所大学教授用Verilog硬件描述语言的设计方法。在我国台湾地区几乎所有著名大学的电子和计算机工程系都讲授Verilog有关的课程。VerilogHDL的产生及发展VerilogHDL是在年由GDA(GateWayDesignAutomation)公司的PhilMoorby首创的。PhilMoorby后来成为VerilogXL的主要设计者和Cadence公司(CadenceDesignSystem)的第一个合伙人。在年Moorby设计出了第一个关于VerilogXL的仿真器年他对VerilogHDL的发展又作出了另一个巨大贡献:即提出了用于快速门级仿真的XL算法。随着VerilogXL算法的成功VerilogHDL语言得到迅速发展。年Cadence公司收购了GDA公司VerilogHDL语言成为Cadence公司的私有财产。年Cadence公司决定公开VerilogHDL语言于是成立了OVI(OpenVerilogInternational)组织来负责VerilogHDL语言的发展。基于VerilogHDL的优越性IEEE于年制定了VerilogHDL的IEEE标准即VerilogHDL(在本书的附录中有该标准的中文翻译可供同学参考)。下面两幅图显示出Verilog的发展历史和将来。第二章VerilogHDL设计方法概述VerilogHDL和VHDL的比较VerilogHDL和VHDL都是用于逻辑设计的硬件描述语言并且都已成为IEEE标准。VHDL是在年成为IEEE标准VerilogHDL则在年才正式成为IEEE标准。之所以VHDL比VerilogHDL早成为IEEE标准这是因为VHDL是美国军方组织开发的而VerilogHDL则是从一个普通的民间公司的私有财产转化而来基于VerilogHDL的优越性才成为的IEEE标准因而有更强的生命力。VHDL其英文全名为VHSICHardwareDescriptionLanguage,而VHSIC则是VeryHighSpeedIntegeratedCircuit的缩写词意为甚高速集成电路,故VHDL其准确的中文译名为甚高速集成电路的硬件描述语言。VerilogHDL和VHDL作为描述硬件电路设计的语言其共同的特点在于:能形式化地抽象表示电路的结构和行为、支持逻辑设计中层次与领域的描述、可借用高级语言的精巧结构来简化电路的描述、具有电路仿真与验证机制以保证设计的正确性、支持电路描述由高层到低层的综合转换、硬件描述与实现工艺无关(有关工艺参数可通过语言提供的属性包括进去)、便于文档管理、易于理解和设计重用。但是VerilogHDL和VHDL又各有其自己的特点。由于VerilogHDL早在年就已推出至今已有十三年的应用历史因而VerilogHDL拥VerilogHDL公开发表CADENCE公司购买Verilog版权’sVerilogXL诞生模拟和数字都适用的Verilog标准公开发表VerilogHDLIEEE标准公开发表有关VerilogHDL的全部权利都移交给OVI(OpenVerilogInternational)图VerilogHDL的发展历史和未来第二章VerilogHDL设计方法概述有更广泛的设计群体成熟的资源也远比VHDL丰富。与VHDL相比VerilogHDL的最大优点是:它是一种非常容易掌握的硬件描述语言只要有C语言的编程基础通过二十学时的学习再加上一段实际操作一般同学可在二至三个月内掌握这种设计技术。而掌握VHDL设计技术就比较困难。这是因为VHDL不很直观需要有Ada编程基础一般认为至少需要半年以上的专业培训才能掌握VHDL的基本设计技术。目前版本的VerilogHDL和VHDL在行为级抽象建模的覆盖范围方面也有所不同。一般认为VerilogHDL在系统级抽象方面比VHDL略差一些而在门级开关电路描述方面比VHDL强得多。下面图是VerilogHDL和VHDL建模能力的比较图示供读者参考:第二章VerilogHDL设计方法概述但这两种语言也是在不断的完善过程中因此VerilogHDL作为学习HDL设计方法的入门和基础是比较合适的。学习掌握VerilogHDL建模、仿真和综合技术不仅可以使同学们对数字电路设计技术有更进一步的了解而且可以为以后学习高级的系统综合打下坚实的基础。VerilogHDL目前的应用情况和适用的设计几年以来EDA界一直对在数字逻辑设计中究竟采用哪一种硬件描述语言争论不休目前的情况是两者不相上下。在美国在高层逻辑电路设计领域VerilogHDL和VHDL的应用比率是%和%在台湾省各为%在中国大陆目前由于VerilogHDL和VHDL的使用才刚刚开始具体应用比率还没有统计。VerilogHDL是专门为复杂数字逻辑电路和系统的设计仿真而开发的本身就非常适合复杂数字逻辑电路和系统的仿真和综合。由于VerilogHDL在其门级描述的底层也就是在晶体管开关的描述方面比VHDL有强得多得功能所以即使是VHDL的设计环境在底层实质上也是由VerilogHDL描述的器件库所支持的。另外目前VerilogHDLA标准还支持模拟电路的描述年即将通过的VerilogHDL新标准将把VerilogHDLA并入VerilogHDL新标准使其不仅支持数字逻辑电路的描述还支持模拟电路的描述因此在混合信号的电路系统的设计中它必将会有更广泛的应用。在亚微米和深亚微米ASIC和高密度FPGA已成为电子设计主流的今天VerilogHDL的发展前景是非常远大的。作者本人的意见是:若要推广采用硬件描述语言的设计方法则应首先从推广VerilogHDL开始,然后再推广VHDL。VHDLVerilogVITAL系统级算法级寄存器传输级逻辑门级开关电路级行为级的抽象图-VerilogHDL与VHDL建模能力的比较第二章VerilogHDL设计方法概述VerilogHDL较为适合系统级(System)、算法级(Alogrithem)、寄存器传输级(RTL)、逻辑级(Logic)、门级(Gate)、电路开关级(Switch)设计而对于特大型(几百万门级以上)的系统级(System)设计,则VHDL更为适合由于这两种HDL语言还在不断地发展过程中它们都会逐步地完善自己。采用VerilogHDL设计复杂数字电路的优点传统设计方法电路原理图输入法几十年前当时所做的复杂数字逻辑电路及系统的设计规模比较小也比较简单其中所用到的FPGA或ASIC设计工作往往只能采用厂家提供的专用电路图输入工具来进行。为了满足设计性能指标工程师往往需要花好几天或更长的时间进行艰苦的手工布线。工程师还得非常熟悉所选器件的内部结构和外部引线特点才能达到设计要求。这种低水平的设计方法大大延长了设计周期。近年来FPGA和ASIC的设计在规模和复杂度方面不断取得进展而对逻辑电路及系统的设计的时间要求却越来越短。这些因素促使设计人员采用高水准的设计工具如:硬件描述语言(VerilogHDL或VHDL)来进行设计。VerilogHDL设计法与传统的电路原理图输入法的比较如所述采用电路原理图输入法进行设计具有设计的周期长需要专门的设计工具需手工布线等缺陷。而采用VerilogHDL输入法时由于VerilogHDL的标准化可以很容易地把完成的设计移植到不同的厂家的不同的芯片中去并在不同规模应用时可以较容易地作修改。这不仅是因为用VerilogHDL所完成的设计它的信号位数是很容易改变的可以很容易地对它进行修改来适应不同规模的应用在仿真验证时仿真测试矢量还可以用同一种描述语言来完成而且还因为采用VerilogHDL综合器生成的数字逻辑是一种标准的电子设计互换格式(EDIF)文件独立于所采用的实现工艺。有关工艺参数的描述可以通过VerilogHDL提供的属性包括进去然后利用不同厂家的布局布线工具在不同工艺的芯片上实现。采用VerilogHDL输入法最大的优点是其与工艺无关性。这使得工程师在功能设计、逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节只需要利用系统设计时对芯片的要求施加不同的约束条件即可设计出实际电路。实际上这是利用了计算机的巨大能力在EDA工具的帮助下把逻辑验证与具体工艺库匹配、布线及时延计算分成不同的阶段来实现从而减轻了人们的繁琐劳动。第二章VerilogHDL设计方法概述VerilogHDL的标准化与软核的重用VerilogHDL是在年由GATEWAY公司首先开发成功的经过诸多改进于年月正式被批准为IEEE标准。VerilogHDL的标准化大大加快了VerilogHDL的推广和发展。由于VerilogHDL设计方法的与工艺无关性因而大大提高了VerilogHDL模型的可重用性。我们把功能经过验证的、可综合的、实现后电路结构总门数在门以上的VerilogHDL模型称之为“软核”(SoftCore)。而把由软核构成的器件称为虚拟器件,在新电路的研制过程中软核和虚拟器件可以很容易地借助EDA综合工具与其它外部逻辑结合为一体。这样软核和虚拟器件的重用性就可大大缩短设计周期加快了复杂电路的设计。目前国际上有一个叫作虚拟接口联盟的组织(VirtualSocketInterfaceAlliance)来协调这方面的工作。软核、固核和硬核的概念以及它们的重用上一节中我们已介绍了软核的概念下面再介绍一下固核(FirmCore)和硬核(HardCore)的概念。我们把在某一种现场可编程门阵列(FPGA)器件上实现的经验证是正确的总门数在门以上电路结构编码文件称之为“固核”。我们把在某一种专用半导体集成电路工艺的(ASIC)器件上实现的经验证是正确的总门数在门以上的电路结构掩膜称之为“硬核”。显而易见在具体实现手段和工艺技术尚未确定的逻辑设计阶段软核具有最大的灵活性它可以很容易地借助EDA综合工具与其它外部逻辑结合为一体。当然由于实现技术的不确定性有可能要作一些改动以适应相应的工艺。相比之下固核和硬核与其它外部逻辑结合为一体的灵活性要差得多特别是电路实现工艺技术改变时更是如此。而近年来电路实现工艺技术的发展是相当迅速的为了逻辑电路设计成果的积累和更快更好地设计更大规模的电路发展软核的设计和推广软核的重用技术是非常有必要的。我们新一代的数字逻辑电路设计师必须掌握这方面的知识和技术。采用硬件描述语言(VerilogHDL)的设计流程简介自顶向下(TopDown)设计的基本概念现代集成电路制造工艺技术的改进使得在一个芯片上集成数十乃至数百万个器件成为可能但我们很难设想仅由一个设计师独立设计如此大规模的电路而不出现错误。利用层次化、结构化的设计方法一个完整的硬件设计任务首先由总设计师划分为若干个可操作的模块编制出相应第二章VerilogHDL设计方法概述的模型(行为的或结构的)通过仿真加以验证后再把这些模块分配给下一层的设计师这就允许多个设计者同时设计一个硬件系统中的不同模块其中每个设计者负责自己所承担的部分而由上一层设计师对其下层设计者完成的设计用行为级上层模块对其所做的设计进行验证。图为自顶向下(TOPDOWN)的示意图以设计树的形式绘出。自顶向下的设计(即TOPDOWN设计)是从系统级开始把系统划分为基本单元然后再把每个基本单元划分为下一层次的基本单元一直这样做下去直到可以直接用EDA元件库中的元件来实现为止。对于设计开发整机电子产品的单位和个人来说新产品的开发总是从系统设计入手先进行方案的总体论证、功能描述、任务和指标的分配。随着系统变得复杂和庞大特别需要在样机问世之前对产品的全貌有一定的预见性。目前EDA技术的发展使得设计师有可能实现真正的自顶向下的设计。层次管理的基本概念复杂数字逻辑电路和系统的层次化、结构化设计隐含着硬件设计方案的逐次分解。在设计过程中的任意层次硬件至少有一种描述形式。硬件的描述特别是行为描述通常称为行为建模。在集成电路设计的每一层次硬件可以分为一些模块该层次的硬件结构由这些模块的互连描述该层次的硬件的行为由这些模块的行为描述。这些模块称为该层次的基本单系统级设计模块A模块A1模块A3模块A2模块C1模块C2模块C模块B模块B1模块B2图TOPDOWN设计思想第二章VerilogHDL设计方法概述元。而该层次的基本单元又由下一层次的基本单元互连而成。如此下去完整的硬件设计就可以由图所示的设计树描述。在这个设计树上节点对应着该层次上基本单元的行为描述树枝对应着基本单元的结构分解。在不同的层次都可以进行仿真以对设计思想进行验证。EDA工具提供了有效的手段来管理错综复杂的层次即可以很方便地查看某一层次某模块的源代码或电路图以改正仿真时发现的错误。具体模块的设计编译和仿真的过程在不同的层次做具体模块的设计所用的方法也有所不同在高层次上往往编写一些行为级的模块通过仿真加以验证其主要目的是系统性能的总体考虑和各模块的指标分配并非具体电路的实现。因而综合及其以后的步骤往往不需进行。而当设计的层次比较接近底层时行为描述往往需要用电路逻辑来实现这时的模块不仅需要通过仿真加以验证还需进行综合、优化、布线和后仿真。总之具体电路是从底向上逐步实现的。EDA工具往往不仅支持HDL描述也支持电路图输入,有效地利用这两种方法是提高设计效率的办法之一。下面的流程图简要地说明了模块的编译和测试过程:

精彩专题

热门资料

基于EZ-USB芯片CY7C68013的驱动程序设计.pdf

[趣味生活电路精选].晓帆.扫描版.pdf

TL9000质量管理体系标准_R5.0(杨老师).pdf

远程控制.doc

该用户的其他资料

  • 名称/格式
  • 评分
  • 下载次数
  • 资料大小
  • 上传时间

用户评论

0/200
    暂无评论
上传我的资料

相关资料换一换

资料评价:

/ 334
所需积分:1 立即下载
返回
顶部
举报
资料
关闭

温馨提示

感谢您对爱问共享资料的支持,精彩活动将尽快为您呈现,敬请期待!