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

夏宇闻-Verilog经典教程.pdf

夏宇闻-Verilog经典教程.pdf

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

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

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

该用户的其他资料

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

用户评论

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

相关资料

资料评价:

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

温馨提示

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