您好,欢迎访问三七文档
8/13/20201MicroelectronicsSchoolXidianUniversity第一章Verilog应用第二章设计举例第三章Verilog的词汇约定蔡觉平参考书目《VerilogHDL数字集成电路设计原理与应用》蔡觉平,西安电子科技大学出版社2011《VerilogHDL高级数字设计》电子工业出版社,MichaelD.Ciletti著,张雅绮译,2008年.6《硬件描述语言Verilog》清华大学出版社,Thomas&Moorby,刘明业等译,2001.8第一章Verilog应用•学习内容–使用HDL设计的先进性–Verilog的主要用途–Verilog的历史–如何从抽象级(levelsofabstraction)理解•电路设计•Verilog描述术语定义(termsanddefinitions)•硬件描述语言HDL:描述电路硬件及时序的一种编程语言•仿真器:读入HDL并进行解释及执行的一种软件•抽象级:描述风格的详细程度,如行为级和门级•ASIC:专用集成电路(ApplicationSpecificIntegratedCircuit)•ASICVender:芯片制造商,开发并提供单元库•自下而上的设计流程:一种先构建底层单元,然后由底层单元构造更大的系统的设计方法。•自顶向下的设计流程:一种设计方法,先用高抽象级构造系统,然后再设计下层单元•RTL级:寄存器传输级(RegisterTransferLevel),用于设计的可综合的一种抽象级•Tcl:ToolcommandLanguage,向交互程序输入命令的描述语言什么是硬件描述语言HDL•具有特殊结构能够对硬件逻辑电路的功能进行描述的一种高级编程语言•这种特殊结构能够:–描述电路的连接–描述电路的功能–在不同抽象级上描述电路–描述电路的时序–表达具有并行性•HDL主要有两种:Verilog和VHDL–Verilog起源于C语言,因此非常类似于C语言,容易掌握–VHDL起源于ADA语言,格式严谨,不易学习。–VHDL出现较晚,但标准化早。IEEE1706-1985标准。为什么使用HDL•使用HDL描述设计具有下列优点:–设计在高层次进行,与具体实现无关–设计开发更加容易–早在设计期间就能发现问题–能够自动的将高级描述映射到具体工艺实现–在具体实现时才做出某些决定•HDL具有更大的灵活性–可重用–可以选择工具及生产厂•HDL能够利用先进的软件–更快的输入–易于管理Verilog的历史•VerilogHDL是在1983年由GDA(GateWayDesignAutomation)公司的PhilMoorby所创。PhiMoorby后来成为Verilog-XL的主要设计者和Cadence公司的第一个合伙人。•在1984~1985年间,Moorby设计出了第一个Verilog-XL的仿真器。•1986年,Moorby提出了用于快速门级仿真的XL算法。•1990年,Cadence公司收购了GDA公司•1991年,Cadence公司公开发表Verilog语言,成立了OVI(OpenVerilogInternational)组织来负责VerilogHDL语言的发展。•1995年制定了VerilogHDL的IEEE标准,即IEEE1364。Verilog的用途•Verilog的主要应用包括:–ASIC和FPGA工程师编写可综合的RTL代码–高抽象级系统仿真进行系统结构开发–测试工程师用于编写各种层次的测试程序–用于ASIC和FPGA单元或更高层次的模块的模型开发抽象级(LevelsofAbstraction)•Verilog既是一种行为描述的语言也是一种结构描述语言。Verilog模型可以是实际电路的不同级别的抽象。这些抽象的级别包括:系统说明-设计文档/算法描述RTL/功能级-Verilog门级/结构级-Verilog版图/物理级-几何图形行为综合综合前仿真逻辑综合综合后仿真版图抽象级(LevelsofAbstraction)•在抽象级上需要进行折衷系统说明-设计文档/算术描述RTL/功能级-Verilog门级/结构级-Verilog版图/物理级-几何图形详细程度低高输入/仿真速度高低抽象级(LevelsofAbstraction)Verilog可以在三种抽象级上进行描述•行为级–用功能块之间的数据流对系统进行描述–在需要时在函数块之间进行调度赋值。•RTL级/功能级–用功能块内部或功能块之间的数据流和控制信号描述系统–基于一个已定义的时钟的周期来定义系统模型•结构级/门级–用基本单元(primitive)或低层元件(component)的连接来描述系统以得到更高的精确性,特别是时序方面。–在综合时用特定工艺和低层元件将RTL描述映射到门级网表抽象级(LevelsofAbstraction)•设计工程师在不同的设计阶段采用不同的抽象级–首先在行为级描述各功能块,以降低描述难度,提高仿真速度。–在综合前将各功能模块进行RTL级描述。–用于综合的库中的大多数单元采用结构级描述。在本教程中的结构级描述部分将对结构级(门级)描述进行更详细的说明。•Verilog还有一定的晶体管级描述能力及算法级描述能力行为级和RTL级•MUX的行为可以描述为:只要信号a或b或sel发生变化,如果sel为0则选择a输出;否则选择b输出。modulemuxtwo(out,a,b,sel);inputa,b,sel;outputout;regout;always@(seloraorb)if(!sel)out=a;elseout=b;endmodule这个行为级RTL描述不处理X和Z状态输入,并且没有延时。在行为级模型中,逻辑功能描述采用高级语言结构,如@,while,wait,if,case。Testbench(testfixture)通常采用行为级描述。所有行为级结构在testbench描述中都可以采用。RTL模型中数据流都是基于时钟的。任何时钟元件在时钟沿处的行为都要精确描述。RTL级描述是行为级Verilog的子集。结构级描述•结构级Verilog适合开发小规模元件,如ASIC和FPGA的单元–Verilog内部带有描述基本逻辑功能的基本单元(primitive),如and门。–用户可以定义自己的基本单元UDP(UserDefinedPrivitives)–综合产生的结果网表通常是结构级的。用户可以用结构级描述粘接(glue)逻辑。•下面是MUX的结构级描述,采用Verilog基本单元(门)描述。描述中含有传输延时。moduletwomux(out,a,b,sl);inputa,b,sl;outputout;notu1(nsl,sl);and#1u2(sela,a,nsl);and#1u3(selb,b,sl);or#2u4(out,sela,selb);endmodule综合不支持!仅需一种语言•Verilog的一个主要特点是可应用于各种抽象级。建模时可采用门级和RTL级混合描述,在开发testfixture时可以采用行为级描述。复习•什么是Verilog?•Verilog是公开的吗?•设计时什么时候采用VerilogRTL级描述?•Verilog适合做什么样的设计?解答:•Verilog是用于硬件描述的具有时间概念的并行编程语言•Verilog是一种公开语言,由OVI负责组织,有IEEE1394标准•RTL描述用于综合,或用于必须精确到每个时钟周期的模型的建模。•Verilog适用于各种抽象级模型的开发及验证第二章设计举例1.进一步学习Verilog的结构描述和行为描述2.Verilog混合(抽象)级仿真学习目标:语言的主要特点module(模块)•module能够表示:–物理块,如IC或ASIC单元–逻辑块,如一个CPU设计的ALU部分–整个系统•每一个模块的描述从关键词module开始,有一个名称(如SN74LS74,DFF,ALU等等),由关键词endmodule结束。module是层次化设计的基本构件逻辑描述放在module内部语言的主要特点—模块端口(moduleports)端口在模块名字后的括号中列出端口可以说明为input,output及inout端口等价于硬件的引脚(pin)•注意模块的名称DFF,端口列表及说明•模块通过端口与外部通信语言的主要特点模块实例化(moduleinstances)moduleDFF(d,clk,clr,q,qb);....endmodulemoduleREG4(d,clk,clr,q,qb);output[3:0]q,qb;input[3:0]d;inputclk,clr;DFFd0(d[0],clk,clr,q[0],qb[0]);DFFd1(d[1],clk,clr,q[1],qb[1]);DFFd2(d[2],clk,clr,q[2],qb[2]);DFFd3(d[3],clk,clr,q[3],qb[3]);endmodule语言的主要特点•可以将模块的实例通过端口连接起来构成一个大的系统或元件。•在上面的例子中,REG4有模块DFF的四个实例。注意,每个实例都有自己的名字(d0,d1,d2,d3)。实例名是每个对象唯一的标记,通过这个标记可以查看每个实例的内部。•实例中端口的次序与模块定义的次序相同。•模块实例化与调用程序不同。每个实例都是模块的一个完全的拷贝,相互独立、并行。模块实例化(moduleinstances)一个完整的简单例子testfixture•被测试器件DUT是一个二选一多路器。测试装置(testfixture)提供测试激励及验证机制。•Testfixture使用行为级描述,DUT采用门级描述。下面将给出Testfixture的描述、DUT的描述及如何进行混合仿真。DUT被测器件(deviceundertest)moduleMUX2_1(out,a,b,sel);//Portdeclarationsoutputout;inputa,b,sel;wireout,a,b,sel;wiresel_,a1,b1;//Thenetlistnot(sel_,sel);and(a1,a,sel_);and(b1,b,sel);or(out,a1,b1);endmodule注释行已定义的Verilog基本单元的实例•a,b,sel是输入端口,out是输出端口。所有信号通过这些端口从模块输入/输出。•另一个模块可以通过模块名及端口说明使用多路器。实例化多路器时不需要知道其实现细节。这正是自上而下设计方法的一个重要特点。模块的实现可以是行为级也可以是门级,但并不影响高层次模块对它的使用。多路器由关键词module和endmodule开始及结束。TestFixturetemplatemoduletestfixture;//Datatypedeclaration//Instantiatemodules//Applystimulus//Displayresultsendmodule为什么没有端口?由于testfixture是最顶层模块,不会被其它模块实例化。因此不需要有端口。TestFixture—如何说明实例moduletestfixture;//Datatypedeclaration//InstantiatemodulesMUX2_1mux(out,a,b,sel);//Applystimulus//Displayresultsendmodule多路器实例化语句MUX的实例化语句包括:•模块名字:与引用模块相同•实例名字:任意,但要符合标记命名规则•端口列表:与引用模块的次序相同TestFixture—过程(proceduralblock)所有过程在时间0执行一次过程之间是并行执行的•过程语句有两种:–initial:只执行一次–always:循环执行TestFixture—过程(proceduralblock)•通常采用过程语句进行行为级描述。testfixture的激励信号在一个过程语句中描述。•过程语句的活动与执行是有差别
本文标题:硬件描算语言1
链接地址:https://www.777doc.com/doc-6769934 .html