1、数字系统设计与数字系统设计与VerilogVerilog HDLHDL雷达信号处理国家重点实验室雷达信号处理国家重点实验室课程安排课程安排课程时数:46学分数:3教材:Verilog 数字系统设计教程出版社:出版社:北京航空航天大学出版社,作作 者:者:夏宇闻编著参考书:1.Verilog数字系统设计及应用,西电出版社,袁俊泉等编著;2.硬件描述语言Verilog 清华大学出版社,Thomas&Moorby,刘明业等译。课时及考试安排课时及考试安排授课时数:30课时上机时数;14课时考试时数:90分钟成绩计算:大作业*40%+考试*60%课程内容安排课程内容安排第一部分第一部分 初级篇初级篇第
2、一章.概述及设计工具介绍第二章.Verilog HDL的基本知识第三章.Verilog HDL基本概念第四章.常用Verilog语法之一第五章常用Verilog语法之二第六章常用Verilog语法之三第七章常用Verilog语法之四第八章常用Verilog语法之五课程内容安排课程内容安排 第二部分第二部分 中级篇中级篇第九章.Verilog HDL模型的不同抽象级别第十章.如何编写和验证简单的纯组合逻辑模块第十一章.复杂数字系统的构成第十二章.同步状态机的原理、结构和设计第十三章.设计可综合的状态机的指导原则第十四章.深入理解阻塞和非阻塞赋值的不同第十五章.较复杂时序逻辑电路设计实践绪 论为什
3、么要设计专用的复杂数字系统数字信号处理计算(computing)算法和数据结构编程语言和程序系统的微体系结构和硬线连接的门级逻辑设计方法学专用硬线逻辑与微处理器的比较C语言、Matlab与硬件描述语言在算法运算电路设计的关系和作用 本课程的目的是想通过对数字信号处理、计算、算法和数据结构、编程语言和程序、体系结构和硬线逻辑等基本概念的介绍,了解算法与硬线逻辑之间的关系,从而引入利用Verilog HDL硬件描述语言设计复杂的数字逻辑系统的概念和方法。借助于这种方法,在电路设计自动化仿真和综合工具的帮助下,只要对并行计算微体系结构有一定程度的了解,对有关算法有深入的研究,我们完全有能力设计并制造
4、出具有自己知识产权的DSP类和任何复杂的数字逻辑集成电路芯片,为我国的电子工业和国防现代化作出应有的贡献1.为什么要设计专用的复杂数字系统为什么要设计专用的复杂数字系统2.数字信号处理数字信号处理 数字信号处理系统往往要进行一些复杂的数字运算和数据处理,并且又有实时响应的要求,他们通常是由高速专用数字逻辑系统或专用数字信号处理器所构成,电路是相当复杂的。因此只有在高速大规模集成电路设计制造技术进步的基础上,才有可能实现真正有意义的实时数字信号处理系统。对实时数字信号处理系统的要求不断提高,也推动了高速大规模集成电路设计制造技术的进步。现代专用集成电路的设计是借助于电子电路设计自动化(EDA)工
5、具完成的。学习和掌握硬件描述语言(HDL)是使用电子电路设计自动化工具的基础。这里所说的计算是从英语Computing翻译过来的,他的含义要比单纯的数学计算广泛得多。“Computing这门学问研究怎样系统地有步骤地描述和转换信息,实质上是一门覆盖了多个知识和技术范畴的学问,其中包括了计算的理论、分析、设计、效率和应用。它提出的最基本的问题是什么样的工作能自动完成,什么样的不能”。由传统的观点出发,可以从三个不同的方面来研究计算,即从数学、科学和工程的不同角度;由比较现代的观点出发,可以从四个主要的方面来研究计算,即从算法和数据结构、编程语言、体系结构、软件和硬件设计方法学。一个复杂的数字系统
6、设计往往是从算法到由硬线连接的门级逻辑结构,再映射到硅片的逐步实现的过程。3.计算(计算(Computing)我们将从算法和数据结构、编程语言和程序、微体系结构和硬线逻辑以及设计方法学等方面的基本概念出发来研究和探讨用于数字信号处理等领域的复杂硬线逻辑电路的设计技术和方法。特别强调利用Verilog硬件描述语言的Top-Down设计方法的介绍。3.计算(计算(Computing)4.算法和数据结构算法和数据结构 为了准确地表示特定问题的信息并顺利地解决有关的计算问题,需要采用一些特殊方法并建立相应的模型。所谓算法就是解决特定问题的有序步骤,所谓数据结构就是解决特定问题的相应的模型。5.编程语言
7、和程序程序员利用一种由专家设计的既可以被人理解,也可以被计算机解释的语言来表示算法问题的求解过程。这种语言就是编程语言,由它所表达的算法问题的求解过程就是程序。如果需要设计和制造能进行快速计算的硬线逻辑专用电路,必须学习数字电路的基本知识和硬件描述语言。现代复杂数字逻辑系统的设计都是借助于EDA工具完成的,无论电路系统的仿真和综合都需要掌握硬件描述语言。6.系统的微体系结构和硬线连接的门级逻辑系统的微体系结构和硬线连接的门级逻辑 计算电路究竟是如何构成的?为什么它能有效地和正确地执行每一步程序?它能不能用另外一种结构方案来构成?运算速度还能不能再提高?所谓计算微体系结构就是回答以上问题并从硬线
8、逻辑和软件两个角度一起来探讨某种结构的计算机的性能潜力。7.设计方法学设计方法学 复杂数字系统设计是一个把思想(即算法)转化为实际数字逻辑电路的过程。我们知道,同一个算法可以用不同结构的数字逻辑电路来实现,这从运算的结果来说可能是完全一致的,但其运算速度和性能价格比可以有很大的差别。我们可以用许多不同的方案来实现实时完成算法的复杂数字系统电路。一个优秀的有经验的设计师,能通过硬件描述语言的顶层仿真较快地确定合理的系统电路结构,减少由于总体结构设计不合理而造成的返工,从而大大加快系统的设计过程。8.专用硬件逻辑与微处理器的比较专用硬件逻辑与微处理器的比较 在信号处理专用计算电路的设计中,以专用微
9、处理器芯片为中心来构成完成算法所需的电路系统是一种较好的办法。采用这种方法,设计周期短、可以利用的资源多,但速度、能耗、体积等性能受该微处理器芯片和外围电路的限制。用高密度的FPGA来构成完成算法所需的电路系统也是一种较好的办法。采用自行设计的专用ASIC系统芯片,但设计和制造周期长9.C语言、语言、matlab与与HDL在算法运算电路设计中的关系和作用在算法运算电路设计中的关系和作用 Matlab来做数学计算系统的行为仿真常常比直接用C语言方便,能很快生成有用的数据文件和表格,直接用于算法正确性的验证。基础算法的描述和验证常用C语言来做。硬件描述语言的程序设计硬件的好处在于易于理解、易于维护
10、、调试电路速度快、有许多的易于掌握的仿真、综合和布局布线工具,还可以用C语言配合HDL来做逻辑设计的布线前和布线后仿真,验证功能是否正确。第一部分第一部分 初级篇初级篇 数字通信和自动化控制等领域的高速度发展和世界范围的高技术竞争对数字系统提出了越来越高的要求,特别是需要设计具有实时信号处理能力的专用集成电路,要求把包括多个CPU内核的整个电子系统综合到一个芯片(SOC)上。和这两种工业标准的产生顺应了历史的潮流,因而得到了迅速的发展。作为新世纪的中国大学生应该尽早掌握这种新的设计方法,使我国在复杂数字电路及系统的设计竞争中逐步缩小与美国等先进的工业发达国家的差距。为我国新世纪的深亚微米千万门
11、级的复杂系统的设计培养一批技术骨干。Verilog 数字系统设计教程数字系统设计教程第一讲第一讲 Verilog 的基本概念的基本概念宋万杰西安电子科技大学西安电子科技大学雷达信号处理国家重点实验室雷达信号处理国家重点实验室 硬件描述语言HDL(Hardware Description Language)是硬件设计人员和电子设计自动化(EDA)工具之间的接口,其主要目的是用来编写设计文件,建立电子系统行为级的仿真模型。1.1 1.1 硬件描述语言硬件描述语言HDLHDL1.1 1.1 硬件描述语言硬件描述语言HDLHDL 硬件描述语言利用计算机的巨大能力对用HDL建模的复杂数字逻辑进行仿真,然
12、后再自动综合以生成符合要求且在电路结构上可以实现的数字逻辑网表(Netlist),根据网表和某种工艺的器件自动生成具体电路然后生成该工艺条件下这种具体电路的延时模型。仿真验证无误后用于制造ASIC芯片或写入CPLD和FPGA器件中。什么是硬件描述语言 具有特殊结构能够对硬件逻辑电路的功能进行描述的一种高级编程语言 这种特殊结构能够:描述电路的连接描述电路的连接 描述电路的功能描述电路的功能 在不同抽象级上描述电路在不同抽象级上描述电路 描述电路的时序描述电路的时序 表达具有并行性表达具有并行性 HDL主要有两种:Verilog和VHDL Verilog起源于起源于C语言,因此非常类似于语言,因
13、此非常类似于C语言,容易掌握语言,容易掌握 VHDL格式严谨格式严谨 VHDL出现较晚,但标准化早。出现较晚,但标准化早。IEEE 1706-1985标准。标准。为什么要使用硬件描述语言1.2 Verilog HDL 1.2 Verilog HDL 的历史的历史1.2.1 什么是什么是Verilog HDL Verilog HDL是硬件描述语言的一种,用于数字电子系统设计。设计者可用它进行各种级别的逻辑设计,可用它进行数字逻辑系统的仿真验证、时序分析、逻辑综合。它是目前应用最广泛的一种硬件描述语言。1.2 Verilog HDL 1.2 Verilog HDL 的历史的历史1.2.2 Veri
14、log HDL的产生及发展的产生及发展l Verilog HDL是在是在1983年由年由GDA(GateWay Design Automation)公司的公司的Phil Moorby所创。所创。Phi Moorby后来后来成为成为Verilog-XL的主要设计者和的主要设计者和Cadence公司的第一个合公司的第一个合伙人。伙人。l 在在19841985年间,年间,Moorby设计出了第一个设计出了第一个Verilog-XL的仿真器。的仿真器。l 1986年,年,Moorby提出了用于快速门级仿真的提出了用于快速门级仿真的XL算法。算法。l 1990年,年,Cadence公司收购了公司收购了G
15、DA公司公司l 1991年,年,Cadence公司公开发表公司公开发表Verilog语言,成立了语言,成立了OVI(Open Verilog International)组织来负责组织来负责Verilog HDL语言的发展。语言的发展。l 1995年制定了年制定了Verilog HDL的的IEEE标准,即标准,即IEEE1364。1.2 Verilog HDL 1.2 Verilog HDL 的历史的历史-比比VerilogHDL早几年成为早几年成为I EEE标准;标准;-语法语法/结构比较严格,因而编写出的结构比较严格,因而编写出的 模块风格比较清晰;模块风格比较清晰;-比较适合由较多的设计
16、人员合作完成比较适合由较多的设计人员合作完成 的特大型项目(一百万门以上)。的特大型项目(一百万门以上)。1.3 Verilog HDL 和和 VHDL的比较的比较-较多的第三方工具的支持较多的第三方工具的支持 -语法结构比语法结构比VHDL简单简单 -学习起来比学习起来比VHDL容易容易 -仿真工具比较好使仿真工具比较好使 -测试激励模块容易编写测试激励模块容易编写1.3 Verilog HDL 和和 VHDL的比较的比较1.3 Verilog HDL 和和 VHDL的比较的比较1.4 Verilog 目前的应用情况和适用的设计目前的应用情况和适用的设计 Verilog的主要应用包括:的主要
17、应用包括:ASICASIC和和FPGAFPGA工程师编写可综合的工程师编写可综合的RTLRTL代码代码 高抽象级系统仿真进行系统结构开发高抽象级系统仿真进行系统结构开发 测试工程师用于编写各种层次的测试程序测试工程师用于编写各种层次的测试程序 用于用于ASICASIC和和FPGAFPGA单元或更高层次的模块的单元或更高层次的模块的模型开发模型开发1.4 Verilog 目前的应用情况和适用的设计目前的应用情况和适用的设计 Verilog 较为适合系统级(System)、算法级(Alogrithem)、寄存器传输级(RTL)、逻辑(Logic)、门级(Gate)和电路开关级(Switch)的设计
18、,而对于特大型(千万门级以上)的系统级(System)设计,则VHDL更为合适。1.5 采用采用 Verilog HDL 设计复杂数字电路的优点设计复杂数字电路的优点1.5.1 传统设计方法传统设计方法电路原理图输入法电路原理图输入法 采用电路原理图输入法进行设计,周期长、需要专门的设计工具、需手工布线等。这种低水平的设计方法大大延长了设计周期。采用Verilog输入法,可以很容易地把完成的设计移植到不同厂家的不同芯片中去,并在不同规模应用时可以较容易地作修改。采用Verilog输入法最大的优点是其。实际上这是利用了计算机的巨大能力并在EDA工具帮助下,把逻辑验证与具体工艺库匹配、布线即时延计
19、算分成不同的阶段来实现,从而减轻了人们的繁琐劳动。1.5.3 Verilog 的标准化与软核的重用的标准化与软核的重用 Verilog 是在1983年由GDA公司首先开发成功的,经过诸多改进,于1995年11月正式被批准为Verilog IEEE13631995标准,又于2001年3月在原标准的基础上经过改进和补充推出Verilog IEEE13642001新标准。由于Verilog HDL设计方法与工艺无关性,因而大大提高了Verilog 模型的可重用性。我们把功能经过验证的、可综合的、实现后电路结构总门数在5000门以上的Verilog HDL模型称之为“软核”(Softcore),而把由
20、软核构成的器件成为虚拟器件。利用软核和虚拟器件的可重复利用的特性就可利用软核和虚拟器件的可重复利用的特性就可大大缩短设计周期,加快了复杂电路的设计。大大缩短设计周期,加快了复杂电路的设计。1.5.4 软核、固核和硬核的概念以及它软核、固核和硬核的概念以及它 们的重用们的重用 显而易见,在具体实现手段和工艺技术尚未确定的逻辑设计阶段,软核具有最大的灵活性。而近年来电路实现工艺技术的发展是相当迅速的,为了逻辑电路设计成果的积累,和更快更好地设计更大规模的电路,发展软核的设发展软核的设计和推广软核的重用技术是非常有必要的。计和推广软核的重用技术是非常有必要的。把在某一种专用半导体集成电路工艺的(AS
21、IC)器件上实现的经验证是正确的总门数在5000门以上的电路结构掩膜,称之为“硬核硬核”。把在某一种现场可编程门阵列(FPGA)器件上实现的,经验证是正确的总门数在5000门以上电路结构编码文件,称之为“固核固核”。1.6 Verilog HDL 的设计流程简介的设计流程简介 自顶向下的设计是从系自顶向下的设计是从系统级开始,把系统级划分为统级开始,把系统级划分为若干个基本单元,然后再把若干个基本单元,然后再把每个基本单元划分为下一层每个基本单元划分为下一层次的基本单元,一直这样做次的基本单元,一直这样做下去,直到可以直接用下去,直到可以直接用EDAEDA元件库的基本元件来实现为元件库的基本元
22、件来实现为止图止图1.1.31.1.3为自顶向下为自顶向下(Top-(Top-Down)Down)的示意图,以设计树的示意图,以设计树的形式绘出。的形式绘出。1.6.1 1.6.1 自顶向下自顶向下(Top-Down)(Top-Down)设计的基本概念设计的基本概念图图 1.1.3 Top-Down 1.1.3 Top-Down 设计思想设计思想1.6 Verilog HDL 1.6 Verilog HDL 的设计流程简介的设计流程简介1.6.2 1.6.2 层次管理的基本概念层次管理的基本概念 复杂数字逻辑电路和系统的层次化、结构化设计隐复杂数字逻辑电路和系统的层次化、结构化设计隐含着硬件设
23、计方案的逐次分解。完整的硬件设计可以由图含着硬件设计方案的逐次分解。完整的硬件设计可以由图1.1.31.1.3所示的设计树描述。在这个设计树上,节点对应着所示的设计树描述。在这个设计树上,节点对应着该层次上基本单元的行为描述,树枝对应着基本单元的结该层次上基本单元的行为描述,树枝对应着基本单元的结构分解。在不同的层次都可以进行仿真以对设计思想进行构分解。在不同的层次都可以进行仿真以对设计思想进行验证。验证。EDAEDA工具提供了有效的手段来管理错综复杂的层次,工具提供了有效的手段来管理错综复杂的层次,即可以很方便地查看某一层次某模块的源代码或电路图以即可以很方便地查看某一层次某模块的源代码或电
24、路图以改正仿真时发现的错误。改正仿真时发现的错误。1.6.3 1.6.3 具体模块的设计编译和仿真的过程具体模块的设计编译和仿真的过程1.6 Verilog HDL 1.6 Verilog HDL 的设计流程简介的设计流程简介 从左图可以看出,模块设计流程主要由两大主要功能部分组成:即从编写设计文件综合到布局布线投片生成这样一系列步骤。也就是进行各种仿真的一系列步骤,如果在仿真过程中发现问题就返回设计输入进行修改。1.6 Verilog HDL 1.6 Verilog HDL 的设计流程简介的设计流程简介 1.6.4 1.6.4 对应具体工艺器件的优化、映象和布局布线对应具体工艺器件的优化、映
25、象和布局布线 由于各种ASIC和FPFA器件的工艺各不相同,因而当用不同厂家的不同器件来实现已验证的逻辑网表(EDIF文件)时,就需要不同的基本单元库与布线延迟模型与之对应才能进行准确的优化、映象、和布局布线。基本单元库与布线延迟模型由熟悉本厂工艺的工程师提供,再由EDA厂商的工程师编入相应的处理程序,而逻辑电路设计师只需用一文件说明所用的工艺器件和约束条件,EDA工具就会自动地根据这一文件选择相应的库和模型进行准确的处理从而大大提高设计效率。1.7 小结 掌握掌握HDLHDL设计方法应从学习设计方法应从学习Verilog HDLVerilog HDL设计方法开始。设计方法开始。由于由于Top
26、-DownTop-Down的设计方法是首先从系统设计入手的,因而的设计方法是首先从系统设计入手的,因而从顶层进行功能划分和结构设计。系统的总体仿真是顶层从顶层进行功能划分和结构设计。系统的总体仿真是顶层进行功能化分的重要环节,这时的设计与工艺无关。进行功能化分的重要环节,这时的设计与工艺无关。从底向上的设计在某种意义上讲是从底向上的设计在某种意义上讲是Top-DownTop-Down设计的逆过程。设计的逆过程。Verilog Verilog 数字系统设计教程数字系统设计教程第二讲第二讲 Verilog Verilog 语法的基本概念语法的基本概念宋万杰西安电子科技大学西安电子科技大学雷达信号处
27、理国家重点实验室雷达信号处理国家重点实验室VerilogVerilog既是一种既是一种行为描述行为描述的语言也是一种的语言也是一种结构描述结构描述语言。语言。VerilogVerilog模模型可以是实际电路的不同级别的抽象。这些抽象的级别包括:型可以是实际电路的不同级别的抽象。这些抽象的级别包括:系统级系统级(system):(system):用高级语言结构实现设计模块的外部性能的模型。用高级语言结构实现设计模块的外部性能的模型。算法级算法级(algorithm):(algorithm):用高级语言结构实现设计算法的模型。用高级语言结构实现设计算法的模型。RTL RTL级级(Register
28、Transfer Level):(Register Transfer Level):描述数据在寄存器之间流动和如描述数据在寄存器之间流动和如何处理、控制这些数据流动的模型。何处理、控制这些数据流动的模型。以上三种都属于行为描述,只有以上三种都属于行为描述,只有RTLRTL级才与逻辑电路有明确的对应关级才与逻辑电路有明确的对应关系。系。门级门级(gate-level):(gate-level):描述逻辑门以及逻辑门之间的连接的模型。描述逻辑门以及逻辑门之间的连接的模型。开关级开关级(switch-level):(switch-level):描述器件中三极管和储存节点以及它们之间描述器件中三极管和
29、储存节点以及它们之间连接的模型。连接的模型。:可描述顺序执行或并行执行的程序结构。可描述顺序执行或并行执行的程序结构。用延迟表达式或事件表达式来明确地控制过程的启动时用延迟表达式或事件表达式来明确地控制过程的启动时间。间。通过命名的事件来触发其它过程里的激活行为或停止行通过命名的事件来触发其它过程里的激活行为或停止行为。为。提供了条件如提供了条件如if-elseif-else、casecase、循环程序结构。、循环程序结构。提供了可带参数且非零延续时间的任务提供了可带参数且非零延续时间的任务(task)(task)程序结构。程序结构。提供了可定义新的操作符的函数结构提供了可定义新的操作符的函数
30、结构(function)(function)。提供了用于建立表达式的算术运算符、逻辑运算符、位提供了用于建立表达式的算术运算符、逻辑运算符、位运算符。运算符。Verilog HDL Verilog HDL语言作为一种结构化的语言也非常适合于语言作为一种结构化的语言也非常适合于门级和开关级的模型设计。门级和开关级的模型设计。u提供了一套完整的表示组合逻辑的基本元件的原提供了一套完整的表示组合逻辑的基本元件的原语语(primitiveprimitive););u提供了双向通路(总线)和电阻器件的原语提供了双向通路(总线)和电阻器件的原语;u可建立可建立MOSMOS器件的电荷分享和电荷衰减动态模型。
31、器件的电荷分享和电荷衰减动态模型。【例【例 2.1】module muxtwo(out,a,b,sl);input a,b,sl;output out;reg out;always(sl or a or b)if(!sl)out=a;else out=b;endmoduleabslout MUX(多路选择器)的行为可以描述为:只要信号a或b或sl发生变化,如果sl为0则选择a输出;否则选择b输出。这个行为的描述并没有说明如果输入 a 或 b是三态的(高阻时)输出应该是什么,但有具体结构的真实电路是有一定的输出的。没有考虑延时问题【例【例2.2】module twomux(out,a,b,sl)
32、;module twomux(out,a,b,sl);input a,b,sl;input a,b,sl;output out;output out;not u1(nsl,sl);not u1(nsl,sl);and#1 u2(sela,a,and#1 u2(sela,a,nsel);nsel);and#1 u3(selb,b,sl);and#1 u3(selb,b,sl);or#2 u4(out,sela,or#2 u4(out,sela,selb);selb);endmoduleendmoduleabslselbselansel MUXMUX的结构级描述,采用的结构级描述,采用Verilo
33、gVerilog基本单元基本单元(门门)描述。描描述。描述中含有传输延时。述中含有传输延时。【例【例 2.3】module adder(count,sum,a,b,cin);module adder(count,sum,a,b,cin);input 2:0 a,b;input 2:0 a,b;input cin;input cin;output count;output count;output 2:0 sum;output 2:0 sum;assign count,sum=a+b+cin;assign count,sum=a+b+cin;endmodule endmodule 【例【例 2.
34、4】module compare(equal,a,b);output equal;/声明输出信号声明输出信号equal input 1:0 a,b;/声明输入信号声明输入信号a,b assign equal=(a=b)?)?1:0;/*如果两个输入信号相等则输出为如果两个输入信号相等则输出为1。否则输。否则输出为出为0*/endmodule 这个程序描述了一个比较器这个程序描述了一个比较器.在这个程在这个程中中,/,/*.*/和和/./.表示注释部分表示注释部分,注释只是注释只是为了方便程序员理解程序为了方便程序员理解程序,对编译是不起作用的。对编译是不起作用的。【例【例2.52.5】modu
35、le trist2(out,in,enable);module trist2(out,in,enable);output out;output out;input in,enable;input in,enable;bufil1 mybuf(out,in,enable);bufil1 mybuf(out,in,enable);endmoduleendmodule【例【例2.62.6】module trist1(sout,sin,ena);module trist1(sout,sin,ena);output sout;output sout;input sin,ena;input sin,ena
36、;mytri tri_inst(.out(sout),.in(sin),.enable(ena);mytri tri_inst(.out(sout),.in(sin),.enable(ena);/调用由调用由mytrimytri模块定义的实例元件模块定义的实例元件tri_insttri_inst,即把已定义的模块,即把已定义的模块myfrimyfri在本模块中具体化在本模块中具体化为为tri_insttri_instendmoduleendmodulemodule mytri(out,in,enable);module mytri(out,in,enable);output out;outpu
37、t out;input in,enable;input in,enable;assign out=enable?in:bz;assign out=enable?in:bz;endmoduleendmodule 如何检查上述例子其功能是否正确?如何检查上述例子其功能是否正确?需要有测试激励信号输入到被测模块需要有测试激励信号输入到被测模块 需要记录被测模块的输出信号需要记录被测模块的输出信号 需要把用功能和行为描述的需要把用功能和行为描述的VerilogVerilog模块转换为模块转换为门级电路互连的电路结构(综合)。门级电路互连的电路结构(综合)。需要对已经转换为门级电路结构的逻辑进行测需要对
38、已经转换为门级电路结构的逻辑进行测试(门级电路仿真)。试(门级电路仿真)。需要对布局布线后的电路结构进行测试。需要对布局布线后的电路结构进行测试。(布局布线后仿真)。(布局布线后仿真)。被测模块被测模块激励和控激励和控制信号制信号输出响应输出响应和验证和验证通过上面的例子可以看到通过上面的例子可以看到:(1 1)Verilog HDLVerilog HDL程序是由模块构成的程序是由模块构成的。每个模块的内容都是位于。每个模块的内容都是位于modulemodule和和endmoduleendmodule两个语句之间。每个模块实现特定的功能。两个语句之间。每个模块实现特定的功能。(2 2)模块是可
39、以进行层次嵌套的。)模块是可以进行层次嵌套的。(3 3)每个模块要进行端口定义)每个模块要进行端口定义,并说明输入输出口并说明输入输出口,然后对模块的功能进然后对模块的功能进行描述。行描述。(4 4)Verilog HDLVerilog HDL程序的书写格式自由程序的书写格式自由,一行可以写几个语句一行可以写几个语句,一个语句一个语句也可以分写多行。也可以分写多行。(5 5)除了除了endmoduleendmodule语句外语句外,每个语句和数据定义的最后必须有分号。每个语句和数据定义的最后必须有分号。(6 6)可以用)可以用/*.*/和和/./.对对Verilog HDLVerilog HDL程序的任何部分作注释。程序的任何部分作注释。一个好的一个好的,有使用价值的源程序都应当加上必要的注释有使用价值的源程序都应当加上必要的注释,以增强程序以增强程序的可读性和可维护性。的可读性和可维护性。