仁爱_EDA技术与应用_第二章.docx
TJRA - i_ 尸 cl i rl Itai I2.1 Verilog HDL简介HDL: Hardware Description LanguageO数字系统设计越来越复杂 规模越来越大硬件描述语言HDL是一种用形式化方法描述数字电路和系统的 语言,可以描述硬件电路的功能,信号连接关系和定时关系。HDL应用越来越广泛使用HDL的优点 电路的逻辑功能容易理解; 便于计算机对逻辑进行分析处理; 把逻辑设计与具体电路的实现分成两个独立的阶段来 操作; 逻辑设计与实现的工艺无关; 逻辑设计的资源积累可以重复利用;可以由多人共同更好更快地设计非常复杂的逻辑电路 (几十万门以上的逻辑系统)。9Top_Down设计思想Verilog HDL的发展Ver iI os HDLVer i log I EEE1 364-2001公开发表标准公开发表CADENCE 公司标准公开发表Ver iI os-XL模拟和数字都适用的Ver i I 目标准公开发表J9991( 989 ):_19805 1990 购买V er i I 版权诞生Ver i lolEEE1364-19951990有关 Vb IoeHDL 的全部权利都移交给OVI (Open Veri log-Verilog-HDL 的应用ASIC和FPGA设计师可用它来编写可综合的代 码。描全系统的结构,做高层次的仿真。验证工程师编写各种层次的测试模块对具体电 路设计工程师所设计的模块进行全面细致的验 证。库模型的设计:可以用于描述ASIC和FPGA的 基本单元(Cell)部件,也可以描述复杂的宏 单兀(Macro Cell)。Verilog-HDL的抽象级另ll用Verilog-HDL描述的电路设计就是该电路的Verilog HDL模型,这些模型可以是实际电路的不同级别的抽象, 这些抽象的级别和它们对应的模型类型共有以下五种: 系统级(system):用高级语言结构实现设计模块的外部性能的 模型。 算法级(algorithmic):用高级语言结构实现设计算法的模型。 RTL级(Register Transfer Level):描述数据在寄存器之间 流动和如何处理这些数据的模型。 门级(gate-level):描述逻辑门以及逻辑门之间的连接的模型。 开关级(switch-level):描述器件中三极管和储存节点以及它 们之间连接的模型。VerilogHDL的抽象级另【J行为综合综合前仿真综合后仿真布局布线D版图布局/物理级: 用几何形状来表示RTL/功能级:-用可综合的Ve巾。g模块表示Gate/结构级:用实例引用的Verilog模块表Sy stem/算法级:用文字表示用算法表示由高级行为Verilog模块表示逻辑综合AbstractModelsBehavioral Models (function only) if enable is truefor (i=0; i<=15; i=i+1)RTL Models(Register Transfer Level) always (posedge clock) result register=a+b+carry;Gate Level Models (function+structure) o-Switch Level Models(function+structure)Detailed models 102.2 Verilog HDL的基本结构模块的结构Verilog的基本设计单元是“模块”。一个模块由两部分 组成,一部分描述接口;另一部分描述逻辑功能,即定义 输入是如何影响输出的。module blockl (a, b, c, d);input a, b, c;output d;wire x;assign d = a | x;assign x = b & (c );endmodule15Verilog模块的结构由在module和endmodule 关键词之间的四个主要部分组成: 端口信息: 输入/输出说明: 内部信号:功能定义:module blockl (a, b, c, d );input a, b, c ;output d ;wire x;assign d = a | x ;assign x = (b&c);endmodule模块的端口定义模块的端口声明了模块的输入输出口。其格式如下:module模块名(端口L 端口2,端口3,);Up .模块的内容模块内容包括I/O说明、内部信号声明和功能定义及描述。 每一条语句必须都以;结束。> I/O说明-I/O说明的格式如下:- input端口L端口2 ,;输入端口- output端口L端口2 .;输出端口- inout端口L端口2.;双向端口也可以写在端口声明语句中,如-module XXX(input portlz output port2.);功能定义用assign声明语句 assign a= b & c;用实例化元件 and u1 (q, a, b);用always语句块或者initial语句块 always (posedge elk)beiginif(clr) q<=1,bO;else q<=a;end课堂练习(一)手写描述一个模块,要求:.模块名称:My_Multiply_Chip输入端口: CLK, reset, cand, cator, en输出端口: result, cout