第2章Verilog硬件描述语言概述硬件描述语言和数字系统设计22.1复杂数字系统设计方法2.2硬件描述语言Verilog简介2.3集成电路设计流程2.4以反相器为例说明数字电路的设计、制造流程主要内容:32.1复杂数字系统设计方法知识点:2.1.1什么是复杂数字系统设计?2.1.2为什么要进行复杂数字系统设计?2.1.3怎样进行复杂数字系统设计?42.1.1什么是复杂数字系统设计?嵌入式微处理机系统数字信号处理系统高速并行计算逻辑高速通信协议电路高速编码/解码、加密/解密电路复杂的多功能智能接口门逻辑总数超过几万门达到几百甚至达几千万门的数字系统5几个常见数字逻辑系统基本概念数字信号处理计算(Computing)算法和数据结构编程语言和程序体系结构硬件逻辑6数字信号处理的基本概念现代电子系统设备中广泛使用了数字信号处理、专用集成电路。数字信号处理就是用于数字信号传输中所必需的滤波、变换、加密、解密、编码、解码、纠检错、压缩、解压缩等操作。处理工作从本质上说都是数学运算。完全可以用计算机或微处理器来完成处理工作。7算法和数据结构的基本概念数据结构就是解决特定问题的相应的模型。算法就是解决特定问题的有序步骤。8编程语言和程序的基本概念编程语言:程序员利用一种由专家设计的既可以被人理解,也可以被计算机解释的语言来表示算法问题的求解过程。这种语言就是编程语言。程序:由编程语言所表达的算法问题的求解过程就是。常用的编程语言:C、Pascal、Fortran、Basic或汇编语言。9计算机体系结构和硬件逻辑的基本概念计算机体系结构:是一门讨论和研究通用的计算机中央处理器如何提高运算速度性能的学问。硬件逻辑:由与门、或门、非门、触发器、多路器等基本逻辑部件造成的逻辑系统。10数字信号处理系统的分类非实时系统:信号处理的工作是可以事后进行。实时系统:信号处理的工作必须在规定的很短的时间内完成。11实时数字信号处理系统实现中存在的技术难点算法问题:研究并行快速算法。电路实现问题:设计并研制具有并行结构的数字和计算逻辑结构和相应的接口逻辑。12AnSoCSolutionforComputereDRAMSOCsolutionprovidehighmemorybandwidth/lowpowerconsumptionLCDCRTMouse/Kbd,othersServer/WebAC’97Codec,AmpBootROMDSPCPU16MBor32MBeDRAM2DGraphicsAcceleratorDisplayControllerUSB2.0HostControllerAudioController10/100EthernetMACFlashI/F132.1.1练习-常见公司数字IC设计招聘题目1.你知道的集成电路设计的表达方式有哪几种?(仕兰微)14练习:答案电路实现的两个方向:FPGA/cPLD;ASIC:专用集成电路.ApplicationSpecificIntegratedCircuitASICVender:芯片制造商,开发并提供单元库15单片机、DSP、FPGA、ASIC设计的区别与联系单片机:MPUMCU微处理器将CPU和其他接口电路集成在一个芯片中冯·诺依曼(Von-Neuman)结构,指令、程序和数据统一编址单片机的内部结构一般包括:ALU、寄存器、存储器(ROM和RAM)、I/O端口、定时器/计数器和中断系统DSP:一种具有特殊结构的微处理器。内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可用来快速地实现各种数字信号处理算法。DSP具有快速的指令周期特点FPGA:基于半定制门阵列的设计思想,可编程逻辑块、可编程I/O模块、可编程内部连线ASIC:全定制CMOS、BiCMOS工艺162.1.2为什么要研究复杂的数字逻辑系统?随着半导体工艺的发展,IC的集成度越来越高,越来越复杂。70年代,单片IC包含的晶体管一般在几十万以内,称为中规模集成电路时代;80~90年代,单个芯片包含的晶体管数量跃升到百万甚至千万,被称为大规模和超大规模集成电路时代,也就是我们耳熟能详的VLSI时代。跨入21世纪,系统芯片SoC成为主流,PentiumIV、Playstation、手机基带电路成为市场新的霸主,单片的集成度已经到了亿级的规模。17工艺的精细度也越来越高进展到亚微米工艺,从亚微米工艺进展到深亚微米工艺,如:.6um,.5um,.35um,.25um,.18um,.13um,目前已经进入了纳米工艺时代,如90nm,65nm,45nm。工艺进步导致了线负载延时越来越大,串扰的影响越来越突出,漏电流、电势降和电迁移也成为越来越突出的问题。18IC设计策略和设计方法也在快速的发展从设计策略来看,面积驱动变为时序驱动,然后变为时序收敛,现在又成为功耗收敛,即电势降和电迁移的收敛。从设计方法来看,从最早的晶体管级的版图设计,到门级网表的图形化输入,现在流行的寄存器传输级的VHDL/Verilog文本输入,慢慢向着更高的行为级、系统的软硬件协同设计发展。一方面设计的抽象程度越来越高,另一方面设计问题越来越复杂,设计周期要求越来越短。对设计工具的自动化和能力的需要越来越高,同时对设计人才的综合素质和专业素养提出了更高的要求和挑战。19对嵌入式系统的性能要求越来越高-通用的微处理机不能满足要求-硬件结构是提高系统总体性能的关键-软件只能提高系统的灵活性能-军用系统的实时、高可靠、低功耗要求-系统的功能专一,但对其各种性能要求极高-降低系统的设计和制造成本202.1.3怎样设计如此复杂的系统?传统的:线路图现代的:硬件描述语言21传统的设计方法:-查用器件手册;-选用合适的微处理器和电路芯片;-设计面包板和线路板;-调试;-定型;-设计复杂的系统(几十万门以上)极其困难。22现代的设计方法:-选用合适的EDA仿真工具;-选用合适电路图输入和HDL编辑工具;-逐个编写可综合HDL模块;-逐个编写HDL测试模块;-逐个做VerilogHDL电路逻辑访真;-编写VerilogHDL总测试模块;-做系统电路逻辑总仿真;23现代的设计方法(续前):-选用合适的基本逻辑元件库和宏库-租用或购买必要的IP核;-选用合适的综合器;-进行综合得到门级电路结构;-布局布线,得到时延文件;-后仿真;-定型,FPGA编码或ASIC投片。24Top-Down设计思想系统级设计模块A模块B模块C模块A1模块A3模块A2模块C1模块C3模块C2模块B2模块B1252.2硬件描述语言Verilog简介知识点:2.2.1什么是硬件描述语言HDL以及why?2.2.2硬件描述语言分类与Verilog简介2.2.3VerilogHDL的抽象级别262.2.1什么是硬件描述语言HDL具有特殊结构能够对硬件逻辑电路的功能进行描述的一种高级编程语言这种特殊结构能够:描述电路的连接描述电路的功能在不同抽象级上描述电路描述电路的时序表达具有并行性HDL主要有两种:Verilog和VHDL27电路的逻辑功能容易理解;把逻辑设计与具体电路的实现分成两个独立的阶段来操作;逻辑设计与实现的工艺无关;逻辑设计的资源积累可以重复利用;可以由多人共同更好更快地设计非常复杂的逻辑电路(几十万门以上的逻辑系统)。为什么要用硬件描述语言来设计?282.2.2有哪几种硬件描述语言?各有什么特点?VHDL-比VerilogHDL早几年成为IEEE标准;-语法/结构比较严格,因而编写出的模块风格比较清晰;-比较适合由较多的设计人员合作完成的特大型项目(一百万门以上)。VerilogHDL29Verilog的历史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。30VerilogHDL的应用方面ASIC和FPGA设计师可用它来编写可综合的代码。描述系统的结构,做高层次的仿真。验证工程师编写各种层次的测试模块,对具体电路设计工程师所设计的模块进行全面细致的验证。库模型的设计:可以用于描述ASIC和FPGA的基本单元(Cell)部件,也可以描述复杂的宏单元(MacroCell)。312.2.3VerilogHDL的抽象级别语言本身提供了各种层次抽象的表述,可以用详细程度有很大差别的的多层次模块组合来描述一个电路系统。行为级:技术指标和算法的Verilog描述RTL级:逻辑功能的Verilog描述门级:逻辑结构的Verilog描述开关级:具体的晶体管物理器件的描述32行为级:有关行为和技术指标模块,逻辑容易理解;RTL级:有关逻辑执行步骤的模块,逻辑较难理解;门级:有关逻辑部件互相连接的模块。逻辑很难理解;开关级:有关物理形状和布局参数的模块,逻辑非常难理解。33抽象级(LevelsofAbstraction)在抽象级上需要进行折衷系统说明-设计文档/算术描述RTL/功能级-Verilog门级/结构级-Verilog版图/物理级-几何图形详细程度低高输入/仿真速度高低34抽象级(LevelsofAbstraction)Verilog可以在三种抽象级上进行描述行为级用功能块之间的数据流对系统进行描述在需要时在函数块之间进行调度赋值。RTL级/功能级用功能块内部或功能块之间的数据流和控制信号描述系统基于一个已定义的时钟的周期来定义系统模型结构级/门级用基本单元(primitive)或低层元件(component)的连接来描述系统以得到更高的精确性,特别是时序方面。在综合时用特定工艺和低层元件将RTL描述映射到门级网表。35抽象级(LevelsofAbstraction)设计工程师在不同的设计阶段采用不同的抽象级首先在行为级描述各功能块,以降低描述难度,提高仿真速度。在综合前将各功能模块进行RTL级描述。用于综合的库中的大多数单元采用结构级描述。在本教程中的结构级描述部分将对结构级(门级)描述进行更详细的说明。Verilog还有一定的晶体管级描述能力及算法级描述能力36例子:RTL级(即逻辑描述)-方法1两路MUX的逻辑描述为:只要信号a或b或sel发生变化,如果sel为0则选择a输出;否则选择b输出。modulemuxtwo(out,a,b,sel);inputa,b,sel;outputout;wireout;assignout=(sel)?b:a;endmodule37例子:RTL级(即逻辑描述)-方法2两路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;endmodule38例子:结构级(即门级)描述下面是MUX的门级描述,采用Verilog基本单元(门)描述。综合工具产生的结果网表是门级的。用户可以用门级描述粘接(glue)逻辑。moduletwomux(out,a,b,sl);inputa,b,sl;outputout;notu1(nsl,sl);andu2(sela,a,nsl);andu3(selb,b,sl);oru4(out,sela,selb);endmod