资源描述:
《仁爱_EDA技术与应用_第二章.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第二章Verilog基础知识TJRA1HDL:HardwareDescriptionLanguage硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言,可以描述硬件电路的功能,信号连接关系和定时关系。数字系统设计越来越复杂规模越来越大HDL应用越来越广泛传统的电路原理图设计不能满足要求2.1VerilogHDL简介2使用HDL的优点电路的逻辑功能容易理解;便于计算机对逻辑进行分析处理;把逻辑设计与具体电路的实现分成两个独立的阶段来操作;逻辑设计与实现的工艺无关;逻辑设计的资源积累可以重复利用;可以由多人共同更好更快地设计非常复杂的逻
2、辑电路(几十万门以上的逻辑系统)。3Top_Down设计思想系统级设计模块A模块B模块C模块A1模块A3模块A2模块C1模块C3模块C2模块B2模块B14VerilogHDL的发展5Verilog-HDL的应用ASIC和FPGA设计师可用它来编写可综合的代码。描述系统的结构,做高层次的仿真。验证工程师编写各种层次的测试模块对具体电路设计工程师所设计的模块进行全面细致的验证。库模型的设计:可以用于描述ASIC和FPGA的基本单元(Cell)部件,也可以描述复杂的宏单元(MacroCell)。6Verilog-HDL的抽象级别系统级(system
3、):用高级语言结构实现设计模块的外部性能的模型。算法级(algorithmic):用高级语言结构实现设计算法的模型。RTL级(RegisterTransferLevel):描述数据在寄存器之间流动和如何处理这些数据的模型。门级(gate-level):描述逻辑门以及逻辑门之间的连接的模型。开关级(switch-level):描述器件中三极管和储存节点以及它们之间连接的模型。用Verilog-HDL描述的电路设计就是该电路的VerilogHDL模型,这些模型可以是实际电路的不同级别的抽象,这些抽象的级别和它们对应的模型类型共有以下五种:7系统级
4、算法级(System)寄存器传输级(RTL)门级(Gate)开关级(Switch)Verilog-HDL的抽象级别8System/算法级:用文字表示用算法表示用高级行为Verilog模块表示RTL/功能级:用可综合的Verilog模块表示Gate/结构级:用实例引用的Verilog模块表示版图布局/物理级:用几何形状来表示行为综合逻辑综合综合前仿真综合后仿真布局布线9BehavioralModels(functiononly)ifenableistruefor(i=0;i<=15;i=i+1)RTLModels(RegisterTransfe
5、rLevel)always@(posedgeclock)result_register=a+b+carry;GateLevelModels(function+structure)SwitchLevelModels(function+structure)AbstractModelsDetailedmodelsModel的抽象层次10Verilog的基本设计单元是“模块”。一个模块由两部分组成,一部分描述接口;另一部分描述逻辑功能,即定义输入是如何影响输出的。moduleblock1(a,b,c,d);inputa,b,c;outputd;wir
6、ex;assignd=a
7、x;assignx=b&(~c);endmoduleabcd模块的结构2.2VerilogHDL的基本结构11Verilog模块的结构由在module和endmodule关键词之间的四个主要部分组成:端口信息:moduleblock1(a,b,c,d);输入/输出说明:inputa,b,c;outputd;内部信号:wirex;功能定义:assignd=a
8、x;assignx=(b&~c);endmodule12模块的端口声明了模块的输入输出口。其格式如下:module模块名(端口1,端口2,端口3,...);模块的
9、端口定义13模块的内容模块内容包括I/O说明、内部信号声明和功能定义及描述。每一条语句必须都以;结束。I/O说明的格式如下:-input端口1,端口2….;//输入端口-output端口1,端口2….;//输出端口-inout端口1,端口2….;//双向端口也可以写在端口声明语句中,如-moduleXXX(inputport1,outputport2…);I/O说明14功能定义用assign声明语句assigna=b&c;用实例化元件andu1(q,a,b);用always语句块或者initial语句块always@(posedgeclk)b
10、eiginif(clr)q<=1’b0;elseq<=a;end15课堂练习(一)手写描述一个模块,要求:模块名称:My_Multiply_Chip输入端口:CLK