第一讲_HDL语言概述

上传人:门**** 文档编号:243133910 上传时间:2024-09-16 格式:PPT 页数:55 大小:604.50KB
返回 下载 相关 举报
第一讲_HDL语言概述_第1页
第1页 / 共55页
第一讲_HDL语言概述_第2页
第2页 / 共55页
第一讲_HDL语言概述_第3页
第3页 / 共55页
点击查看更多>>
资源描述
,第二级,第三级,第四级,第五级,第一讲,Verilog,硬件描述语言概述,西安邮电学院通信工程系,HDL,硬件描述语言,教学目标,了解集成电路的现状和发展趋势,掌握,Verilog,HDL,的词法、语法、语句,掌握可综合程序的编写方法,掌握仿真程序的编写方法,掌握复杂数字电路的设计方法,教学方式及考核,考核规则,实验,30%,期末考试,70%,主要参考书,Verilog,HDL,数字设计与综合(第二版),-,夏宇闻译,电子工业出版社,复杂数字逻辑系统的,Verilog,HDL,设计技术和方法,-,夏宇闻编,高等教育出版社,第 一讲,Verilog,硬件描述语言概述,内容:,数字系统概述,硬件描述语言历史,VHDL,与,Verilog,HDL,比较,有关,HDL,的几个重要基本概念,Verilog,HDL,的设计流程,常用仿真和综合工具,Verilog,HDL,入门,数字系统概述,常见数字系统:,微处理机系统、数字信号处理系统、数字通信系统、数字编解码和加解密电路、数字多功能智能接口等。目前数字系统单片等效逻辑门总数达到几百甚至几千万门的已较常见。,存储器,数字系统的组成,:,数字系统通常由输入电路、输出电路、控制电路、数字处理电路和存储器组成 。,控制,电路,数字处理,电路,输入,电路,输出,电路,数字系统实现方法,通用集成电路。 如:,74,系列,4000,系列等,电路体积大、重量大、功耗大、可靠性低。,(70,、,80,年代主流),专用集成电路,ASIC(Application,Specific Integrated Circuits),,如:,Modem , MP3 decoder,等。(,90,年代盛行,现在大规模产品中继续使用),可编程逻辑阵列(,Programmable Logic Device,)。如:,Xilinx,的,spartan,系列,,Altera,的,Cyclone,系列。 (现在逐步蚕食,ASIC,的低端市场,并将成为一种主流方法),通用微处理器、,DSP,。如,8051,单片机、,ARM32,位,MCU,,,TMS320C5x,系列,DSP,等。 (,80,年代,现在仍为一种主流方法),混合使用各种器件,发挥各自的优势。(发展趋势),怎样设计如此复杂的系统,?,传统的设计方法:,- 查用器件手册;,- 选用合适的微处理器和电路芯片;,- 设计面包板和线路板;,- 调试;,- 定型;,- 设计复杂,的系统(几十万门以上)极其困难。,怎样设计如此复杂的系统,?,现代的设计方法:,- 选用合适的,EDA,仿真,工具;,-,选用合适,电路图输入和HDL编辑工具;,- 逐个编写可综合HDL模块;,- 逐个编写HDL测试模块;,- 逐个做Verilog HDL 电路逻辑访真;,- 编写Verilog HDL总测试模块;,- 做系统电路逻辑总仿真;,怎样设计如此复杂的系统,?,现代的设计方法(续前):,- 选用合适的基本逻辑元件库和宏库,- 租用或购买必要的IP核;,- 选用合适的综合器;,- 进行综合得到门级电路结构;,- 布局布线,得到时延文件;,- 后仿真;,- 定型, FPGA编码或ASIC投片,数字系统的自顶向下模块化设计,自顶向下(,Top-Down),设计的基本概念,集成电路制造工艺技术的改进,可以在一个芯片上集成数十乃至数百万个器件,这个设计不可能由一个设计师独立设计。利用层次化、结构化的设计方法,一个完整的硬件设计任务首先由总设计师划分为若干个可操作的模块,编制出相应的模型(行为的或结构的),通过仿真加以验证后,再把这些模块分配给下一层的设计师,这就允许多个设计者同时设计一个硬件系统中的不同模块,其中每个设计者负责自己所承担的部分;而由上一层设计师对其下层设计者完成的设计用行为级上层模块对其所做的设计进行验证。,自顶向下的设计(即,TOP_DOWN,设计)是从系统级开始,把系统划分为基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接用,EDA,元件库中的元件来实现为止。,对于设计开发整机电子产品的来说,新产品的开发总是从系统设计入手,先进行方案的总体论证、功能描述、任务和指标的分配。随着系统变得复杂和庞大,特别需要在样机问世之前,对产品的全貌有一定的预见性。目前,,EDA,技术的发展使得设计师有可能实现真正的自顶向下的设计。,TOP_DOWN,设计思想,层次管理的基本概念,复杂数字逻辑电路和系统的层次化、结构化设计隐含着硬件设计方案的逐次分解。在设计过程中的任意层次,硬件至少有一种描述形式。硬件的描述特别是行为描述通常称为行为建模。在集成电路设计的每一层次,硬件可以分为一些模块,该层次的硬件结构由这些模块的互连描述,该层次的硬件的行为由这些模块的行为描述。这些模块称为该层次的基本单元。而该层次的基本单元又由下一层次的基本单元互连而成。,具体模块的设计编译和仿真的过程,在不同的层次做具体模块的设计所用的方法也有所不同,在高层次上往往编写一些行为级的模块通过仿真加以验证,其主要目的是系统性能的总体考虑和各模块的指标分配,并非具体电路的实现。因而综合及其以后的步骤往往不需进行。而当设计的层次比较接近底层时行为描述往往需要用电路逻辑来实现,这时的模块不仅需要通过仿真加以验证,还需进行综合、优化、布线和后仿真。总之具体电路是从底向上逐步实现的。模块设计,流程主要由两大主要功能部分组成,:,1)设计开发:即从编写设计文件-综合到布局布线-投片生成这样一系列步骤。,2)设计验证:也就是进行各种仿真的一系列步骤,如果在仿真过程中发现问题就返回设计输入进行修改。,用,EDA,设计数字系统的流程,HDL,设 计 文 件,HDL,功 能 仿 真,HDL,综合,优化、布局布线,布线后门级仿真,电 路 功 能,仿 真,电 路 图,设计文件,电路制造工艺文件,或,FPGA,码流文件,有 问 题,没问题,有问题,没问题,有 问 题,没 问 题,与实现逻辑的物理器 件有关的工艺技术文 件,确定实现电路的具体库名,对应具体工艺器件的优化、映象、和布局布线,由于各种,ASIC,和,FPFA,器件的工艺各不相同,因而当用不同厂家的不同器件来实现已验证的逻辑网表(,EDIF,文件)时,就需要不同的基本单元库与布线延迟模型与之对应才能进行准确的优化、映象、和布局布线。基本单元库与布线延迟模型由熟悉本厂工艺的工程师提供,再由,EDA,厂商的工程师编入相应的处理程序,而逻辑电路设计师只需用一文件说明所用的工艺器件和约束条件,,EDA,工具就会自动地根据这一文件选择相应的库和模型进行准确的处理从而大大提高设计效率。,硬件描述语言,HDL,硬件描述语言(,HDL),是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。,数字逻辑电路设计者利用这种语言来描述自己的设计思想,然后利用电子设计自动化(在下面简称为,EDA),工具进行仿真,再自动综合到门级电路,再用,ASIC,或,FPGA,实现其功能。,这种称之为高层次设计(,High-Level-Design),的方法已被广泛采用。据统计,在美国硅谷目前约有90以上的,ASIC,和,FPGA,已采用硬件描述语言方法进行设计。,VHDL,和,Verilog,HDL,语言先后成为,IEEE,标准。,硬件描述语言,历史,VHDL,于,1980,年开始在美国国防部的指导下开发,完成于,1983,年,并于,1987,年成为,IEEE,的标准。当初开发这种语言,是出于美国国防部采购电子设备的需要。,通过,VHDL,,供应商要把自己生产的集成电路芯片的行为描述出来。如果有必要让其他厂商生产代用品,他们只需照着,VHDL,文档,设计出行为与其相同的芯片。,Verilog,HDL,是由(,GDA,),Gateway Design Automation,公司大约在,1983,年左右开发的。其架构同,VHDL,相似,主要被用来进行硬件仿真。由于是由公司内工程师开发的,更注重实用性,,Verilog,要比,VHDL,简洁得多。,Verilog,HDL,于,1995,年成为,IEEE,标准,称,IEEE Std 1364,1995,。,2001,年,,IEEE Std 1364-2001,诞生。,HDL,不是硬件设计语言,VHDL,和,Verilog,都不是为了设计硬件而开发的,当初制订,HDL,语言标准的时候,并没有考虑这些代码如何用硬件来实现。因此,有些代码写起来简单,实现起来却可能非常复杂,或者就不可能实现。,HDL,是,Hardware Description Language,的缩写,正式中文名称是,“,硬件描述语言,”,。也就是说,,HDL,并不是,“,硬件设计语言,(Hardware Design Language),”,。,明确,VHDL,和,Veriglog,并非是硬件设计语言,就理解不能随心所欲地写仅仅符合语法的,HDL,代码来设计硬件电路。,设计硬件电路的,HDL,必须满足可综合条件,。,为什么要用硬件描述语言来设计?,使用,HDL,语言设计具有如下优点:,能形式化地抽象表示电路的结构和行为,便于人和计算机理解;,支持逻辑设计中不同层次和领域的描述;,可以借用类似计算机软件高级语言的方法简化电路的描述;,具有电路仿真与验证机制以保证设计的正确性;,支持电路描述由高层到低层的综合转换;,硬件描述与实现工艺无关;,便于文档管理,易于理解和设计重用。,VHDL,与,Verilog,HDL,比较,相对,VHDL,,,Verilog,HDL,特点:,较多的第三方工具的支持,语法结构比,VHDL简单,学习起来比VHDL容易,仿真工具使用简便,测试激励模块容易编写,Verilog,HDL,特点,1,Verilog,HDL,是一种用于数字逻辑电路描述的语言,主要用于逻辑电路的建模、仿真和设计。,用,Verilog,HDL,描述的电路设计就是该电路的,Verilog,HDL,模型。,Verilog,HDL,既是一种行为描述的语言也是一种结构描述的语言。既可以用电路的功能描述也可以用元器件和它们之间的连接来建立所设计电路的,Verilog,HDL,模型。,Verilog,模型可以是实际电路的不同级别的抽象。这些抽象的级别和它们对应的模型类型共有以下五种,Verilog,HDL,特点,2,语言本身提供了各种层次抽象的表述,可以用详细程度有很大差别的的多层次模块组合来描述一个电路系统。,系统级,(system),:,用高级语言结构实现设计模块行为的模型。(主要用于仿真),算,法级,(algorithmic),:,用高级语言结构实现设计算法行为的模型。(部分可综合),RTL,级,(Register Transfer Level),:,描述数据在寄存器之间流动和处理这些数据行为的模型。(可综合),门级,(gate-level),:,描述逻辑门以及逻辑门之间连接的模型。,开关级,(switch-level),:,描述器件中三极管和存储器件以及它们之间连接的模型。,Verilog,语言的这种多抽象级别的描述能力,使我们可以在数字系统设计的各个阶段都使用同一种语言。,行为级,module mu,x,two,(,o,ut,a, b,s,l,);,input,a,b,sl,;,output,o,ut,;,reg,out;,always (,s,l,or,a,or b,),if (,!,sl,),o,ut,= a;,e,lse,out = b;,endmodule,a,b,sl,out,门级,module mu,x,two,(,o,ut,a, b,s,l,);,input,a,b,sl,;,output,o,ut,;,not u1(ns1,sl);,and #1 u2(sela,a,nsl);,and #1 u3 (,selb,b,sl,);,or #2 u4(out ,,sela,selb,);,endmodule,out,a,b,sl,selb,sela,nsl,Verilog,HDL,特点,3,一个复杂电路的完整,Verilog,HDL,模型是由若个,Verilog,HDL,模块构成的,每个模块又由若干个子模块构成,便于模块化设计。,Verilog,HDL,可以精确地建立信号的模型。这是因为在,Verilog,HDL,中,提供了延迟和输出强度的原语来建立精确程度很高的信号模型。,Verilog,HDL,作为一种高级的硬件描述编程语言,有着类似,C,语言的风格。其中有许多语句如:,if,语句、,case,语句等和,C,语言中的对应语句十分相似,提供了各种算术运算符、逻辑运算符、位运算符。如果读者已经掌握,C,语言编程的基础,那么学习,Verilog,HDL,并不困难,我们只要对,Verilog,HDL,某些语句的特殊方面着重理解,并加强上机练习就能很好地掌握它。,Verilog,HDL,的应用方面,ASIC,和,FPGA,设计师可用它来编写可综合的代码。,描述系统的结构,做高层次的仿真。,验证工程师编写各种层次的测试模块对具体电路设计工程师所设计的模块进行全面细致的验证。,库模型的设计:可以用于描述,ASIC,和,FPGA,的基本单元(,Cell),部件,也可以描述复杂的宏单元(,Macro Cell)。,有关,Verilog,HDL,的几个重要基本概念,逻辑综合,:,通过工具,将,HDL,模块的行为描述转换成门级电路,并优化电路结构。,逻辑综合流程,可综合的,Verilog,HDL,模型,算法级 (,Algorithm Level),-,部分可综合,寄存器传输级 (,Register Transfer Level),-,完全可综合,门级 (,Gate Level),-,完全可综合,开关级(,Switch Level),-,用于基本逻辑器件仿真模型的建库,综合的要点,在综合之前,,Verilog HDL源代码的风格必须经过严格检查,仅仅符合语法不一定能综合;,不同的综合工具性能有差别,支持的,Verilog HDL源代码的语法集合和风格也略有差别。,综合工具必须在已知基本逻辑单元库的前提下,才能进行综合。,有关,Verilog,HDL,的几个重要基本概念,寄存器传输级,Verilog,HDL,模块,:也可称为,RTL (,Verilog,) HDL,模块。它是符合特定标准和风格的描述状态转移和变化的,Verilog,HDL,模块。能用综合器把它转换为门级逻辑。,Verilog,HDL,测试模块,:,用,Verilog,HDL,描述的模块,可以用来产生测试信号序列并可以接收被测试模块的信号,用于验证所设计的模块是否能正常运行,往往不可综合成具体门级电路。,仿真流程,布局布线,把用,综合器自动生成的门级网表(,EDIF,)通过运行一个自动操作的布局布线工具,使用某种,FPGA,或,ASIC,工艺库器件实现门级网表中电路,并加以连接的过程。,Verilog,HDL,的设计流程,技术指标:,用文字表示,用算法表示,用高级行为的,Verilog,模块表示,RTL/,功能级:,用可综合的,Verilog,模块表示,门级,/,结构级:,用实例引用的,Verilog,模块表示,版图布局,/,物理级:,用几何形状来表示,功能,(,前,),仿真,系统描述,逻辑综合,系统仿真,后仿真,布局布线,门级仿真,RTL,级设计,Verilog,HDL,的设计流程,系统仿真:,验证系统功能和模块分割的合理性,前仿真:,即,RTL,级仿真,检查有关,RTL,级模块设计是否正确。,逻辑综合:,把,RTL,级模块转换成门级电路 。,门级仿真:,对,门级电路做验证,检查门的互连逻辑功能是否正确。,布局布线:,将门级电路在,FPGA,或,ASIC,上具体实现。,布局布线后仿真:,加上器件和互联线延时的仿真,,与真实的电路最接近的验证。,常用仿真和综合工具,常用的仿真工具:,-,Verilog,-XL,- NC -,Verilog,-,ModelSim,-,VeriBest,-,ViewLogic,-,. . . . .,常用的综合工具:,-,Synplify,- Exemplar,- Synopsys Express,- Synopsys Designer,- . . . . .,Verilog,HDL,入门,目的,:,通过简单的例子了解,Verilog,模块的基本构成,了解,Verilog,模块的组成要素,了解,Verilog,模块的仿真测试,简单的,Verilog,HDL,模块,1,下面先介绍几个简单的,Verilog,HDL,程序,然后从中分析,Verilog,HDL,程序的特性。,例,1.1:,module,adder,(,count,sum,a,b,cin,);,input 2:0,a,b,;,input,cin,;,output count;,output 2:0 sum;,assign ,count,sum,=,a+b+cin,;,endmodule,这个例子描述了一个三位的加法器。从例子中可以看出整个,Verilog,HDL,程序是嵌套在,module,和,endmodule,声明语句里的。,模块名,简单的,Verilog,HDL,模块,2,例,1.2,:,module compare (,equal,a,b,);,output equal; /,声明输出信号,equal,input 1:0,a,b,; /,声明输入信号,a,b,assign equal=(a=b)?1:0;,/*,如果两个输入信号相等,输出为,1,。否则为,0*/,endmodule,这个程序描述了一个比较器,.,在这个程序中,/*.*/,和,/.,表示注释部分,注释只是为了方便程序员理解程序,对编译是不起作用的。,模块的输入输出端口名,逻辑功能的数据流描述,简单的,Verilog,HDL,模块,3,例,1.3,:,module mu,x2,(,out,a, b,sl,),;,input,a,b,sl,;,output,out,;,not u1(ns1,sl);,and u2(sela,a,nsl);,and u3 (,selb,b,sl,);,or u4(out,sela,selb);,endmodule,例中,not,、,and,、,or,是,verilog,内建逻辑门器件。程序通过调用实例元件来实现其功能。,逻辑功能的门级结构描述,a,b,sl,selb,sela,nsl,简单的,Verilog,HDL,模块,4,例,2.1.4,:,module trist1(out,in,enable);,output out;,input in, enable;,mytri,tri_inst(out,in,enable,);,endmodule,module,mytri(out,in,enable,);,output out;,reg,out;,input in, enable;,always ( in or enable),if( enable ),out = in;,else,out = 1bz;,endmodule,子模块。,通过这种结构性模块构造可构成大型模块。,上层模块,三态门逻辑功能的行为描述。,Verilog,HDL,简单模块小结,通过上面的例子可以看到,:,Verilog,HDL,程序是由模块构成的,模块是可以进行层次嵌套。,每个模块要进行端口定义,并说明输入输出口,然后对模块的功能进行逻辑描述。,逻辑描述方法有:门级结构描述、数据流描述、行为描述。,Verilog,HDL,程序的书写格式自由,一行可以写几个语句,一个语句也可以分写多行。,除了,endmodule,语句外,每个语句和数据定义的最后必须有分号。,可以用,/*.*/,和,/.,对,Verilog,HDL,程序的任何部分作注释。一个好的,有使用价值的源程序都应当加上必要的注释,以增强程序的可读性和可维护性。,模块的,结构,Verilog,的基本设计单元是,“,模块,”,(,block)。,一个模块是由两部分组成的:一)描述接口;二)描述逻辑功能,即定义输入是如何影响输出的。下面举例说明:,模块,的,结构,从上面的例子可以看出:,-,Verilog,模块结构完全嵌在,module,和,endmodule,声明语句之间;,- 每个,Verilog,程序包括四个主要部分:,端口定义、端口说明、内部信号声明、功能定义,。,模块的组成要素,模块定义,module,(,port list,),时序特性,timig,specifications,端口说明,Port declarations,输入,input,双向,inout,输出,output,数据类型说明,Data type declarations,线网类型,net,参数,parameter,寄存器类型,register,电路功能描述,Circuit functionality,子程序,subprograms,任务,task,函数,function,系统任务和函数,System task,& function,编译指令,Compiler directives,连续赋值,Continuous,assignment,赋值语句,assign,过程块,Procedural,blocks,过程块语句,initial block,always block,模块实例,instantiation,模块,的仿真,测试,如何检查模块功能是否正确?,需要有测试激励信号输入到被测模块。,需要测试被测模块的各种输出信号(功能仿真),。,需要将功能和行为描述的,Verilog,模块转换为门级电路互连的电路结构(综合)。,需要对已经转换为门级电路结构的逻辑进行测试(门级电路仿真)。,需要对布局布线后的电路结构进行测试。(布局布线后仿真)。,模块,的仿真,测试平台(,testbench,),被测模块,激励和控制信号,输出响应和验证,仿真,测试模块,测试模块常见的形式:,module,testbench,; /,测试平台无输入输出端口,reg,;,/,被测模块输入,/,输出变量类型定义,wire;,initial begin ; ; ; end /,产生测试信号,always #delay begin ; end ,Testedmd,m(.in1(ina), .in2(inb), .out1(outa), .out2(outb) );,/,被测模块的实例引用,initial begin .; .; . end /,记录输出和响应,endmodule,如何描述激励信号,module test_mux2;/,无输入输出端口,reg,A, B,Sel,;,wire Out;,/,引用多路器实例,作为被测模块,mux2 m (Out, A, B,Sel,);,/,加入激励信号,即产生输入,a,、,b,、,sel,initial,begin,A=0; B=1;,Sel,=0;,#10 B=0;,#10 B=1;,Sel,=1;,#10 A=1;,#10 $stop;,end,endmodule,语句间延时,仿真暂停系统任务,a,b,sel,0,40,10,30,20,如何观察被测模块的信号,在,initial,块中,用系统任务,$time,和,$monitor,观察模块响应。,$time,返回当前的仿真时刻。,$monitor,只要在其变量列表中有某一个或某几个变量值发生变化,便在仿真单位时间结束时显示其变量列表中所有变量的值。,例:,initial,begin,$monitor ($time, “ Out=%b A=%b B=%b,Sel,=%b”, Out, A,B,Sel,);,end,module test_mux2;/,无输入输出端口,reg,A,B,Sel,;,wire Out;,mux2,m(Out,A,B,Sel,);,initial,begin,A=0;B=1;Sel=0;,#10 B=0;,#10 B=1;,Sel,=1;,#10 A=1;,#10 $stop;,end,initial,begin,$,monitor($time,“ Out=%b, A=%b, B=%b,Sel,=%b,Out,A,B,Sel,);,end,endmodule,输出:,0 Out=0 A=0 B=1,Sel,=0,10 Out=0 A=0 B=0,Sel,=0,20 Out=1 A=0 B=1,Sel,=1,30 Out=1 A=1 B=1,Sel,=1,40 Out=1 A=1 B=1,Sel,=1,module,test_compare,;,reg,1:0,a,b,;,/,测试激励信号,a,b,wire equal;,compare,c(equal,a,b,);,initial,begin,a=2b00;b=2b00;,#10 a=2b01;,#10 b=2b01;,#10 a=2b10;,#10 b=2b10;,#10 a=2b11;,end,initial,begin,$,monitor($time,“ a=%b, b=%b, equal=%b ”,a,b,equal,);,end,endmodule,module,test_adder,;,reg,2:0 A,B;,reg,CIN;,wire 2:0 SUM;,wire COUNT;,adder a1(.count(COUNT),.a(A),.b(B),.cin(CIN),.sum(SUM);,initial,begin,A=3b000;B=3b000;CIN=0;,#10 A=3b001;B=3b001;,#10 A=3b101;B=3b001;,#10 A=3b101;B=3b010;CIN=1;,#10 A=3b101;B=3b101;,end,initial,begin,$,monitor($time, A=%,b,B,=%,b,CIN,=%,b,SUM,=%,b,COUNT,=%,b,A,B,CIN,SUM,COUNT,);,end,endmodule,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!