您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 夏宇闻Verilog_数字系统设计教程
Verilog数字系统设计教程--建模、仿真、综合、验证和实现--北京航空航天大学夏宇闻2004年版课时安排和学习方法•十次讲课每次2小时;•五次实验每次4小时;•一次上机实验考核加面试共4小时;•课堂20+20+4=44小时,自己看书40小时共计84小时;•理论与实践结合的学习方法;•考核方法:认真听课20%;下课复习20%;实验课操作20%;最后考核40%讲课的主要内容•复杂数字系统与信号处理的关系•为什么要研究复杂的数字逻辑系统•设计数字系统的基本方法•设计复杂数字系统的工具和手段•数字系统的基本结构•Verilog语言的特点和基本语法讲课的主要内容•Verilog模块和电路结构的关系•两种不同的Verilog模块•可综合模块的风格•测试用模块的编写要点•语法要点•设计示例分析讲课的目的•提醒书本上容易忽略的内容;•指出重点和关键点;•帮助同学理解书本上的难点;•自己看书、上机练习为主;•互相认识,以便交流。复杂数字系统与信号处理的关系--接口逻辑+专门设计的高速计算逻辑数字信号处理、计算、程序算法和硬线逻辑的基本概念•数字信号处理•计算(Computing)•算法和数据结构•编程语言和程序•体系结构•硬线逻辑数字信号处理的基本概念•现代电子系统设备中广泛使用了数字信号处理专用集成电路。•用于数字信号传输中所必需的滤波、变换、加密、解密、编码、解码、纠检错、压缩、解压缩等操作。•处理工作从本质上说都是数学运算。•完全可以用计算机或微处理器来完成处理工作。计算(Computing)的基本概念“Computing这门学问研究怎样系统地有步骤地描述和转换信息,实质上它是一门覆盖了多个知识和技术范畴的学问,其中包括了计算的理论、分析、设计、效率和应用。它提出的最基本的问题是什么样的工作能自动完成,什么样的不能。”(摘自Denningetal.,“ComputingasaDiscipline,”CommunicationofACM,January,1989)。算法和数据结构的基本概念•算法就是解决特定问题的有序步骤。•数据结构就是解决特定问题的相应的模型。编程语言和程序的基本概念•编程语言:程序员利用一种由专家设计的既可以被人理解,也可以被计算机解释的语言来表示算法问题的求解过程。这种语言就是编程语言。•程序:由编程语言所表达的算法问题的求解过程就是。•常用的编程语言:C、Pascal、Fortran、Basic或汇编语言。计算机体系结构和硬线逻辑的基本概念•计算机体系结构:是一门讨论和研究通用的计算机中央处理器如何提高运算速度性能的学问。•硬线逻辑:由与门、或门、非门、触发器、多路器等基本逻辑部件造成的逻辑系统。数字信号处理系统的分类•非实时系统:信号处理的工作是可以事后进行。•实时系统:信号处理的工作必须在规定的很短的时间内完成。数字信号处理系统的实现•非实时系统:通用的计算机和利用通用计算机改装的设备,主要工作量是编写“C”程序。输入/输出数据大多为文本。•实时系统:信号处理专用的微处理器为核心的设备,主要工作量是编写汇编程序。输入/输出数据大多为数据流,直接用于控制。实时数字信号处理系统实现中存在的技术难点1)算法问题。2)电路实现问题:如果由最快的信号处理专用的微处理器为核心的设备也来不及处理如此大量的数据怎么办呢?实时数字信号处理系统实现中存在的技术难点和解决办法1)算法问题。研究并行快速算法。2)电路实现问题:设计并研制具有并行结构的数字和计算逻辑结构和相应的接口逻辑。实时数字信号处理系统实现中存在的技术难点和解决办法电路实现的两个方向:•FPGA•专用集成电路实时数字信号处理系统实现中存在的技术难点和解决办法用于信号处理的FPGA和专用集成电路(ASIC)设计的方法:VerilogHDL建模、仿真、综合和全面验证。为什么要研究复杂的数字逻辑系统?什么是复杂的数字逻辑系统?•嵌入式微处理机系统•数字信号处理系统•高速并行计算逻辑•高速通信协议电路•高速编码/解码、加密/解密电路•复杂的多功能智能接口•门逻辑总数超过几万门达到几百甚至达几千万门的数字系统为什么要设计复杂的数字逻辑系统?•对嵌入式系统的性能要求越来越高-通用的微处理机不能满足要求-硬件结构是提高系统总体性能的关键-软件只能提高系统的灵活性能-军用系统的实时、高可靠、低功耗要求-系统的功能专一,但对其各种性能要求极高-降低系统的设计和制造成本设计数字系统的基本方法传统的:线路图现代的:硬件描述语言怎样设计如此复杂的系统?•传统的设计方法:-查用器件手册;-选用合适的微处理器和电路芯片;-设计面包板和线路板;-调试;-定型;-设计复杂的系统(几十万门以上)极其困难。怎样设计如此复杂的系统?•现代的设计方法:-选用合适的EDA仿真工具;-选用合适电路图输入和HDL编辑工具;-逐个编写可综合HDL模块;-逐个编写HDL测试模块;-逐个做VerilogHDL电路逻辑访真;-编写VerilogHDL总测试模块;-做系统电路逻辑总仿真;怎样设计如此复杂的系统?•现代的设计方法(续前):-选用合适的基本逻辑元件库和宏库-租用或购买必要的IP核;-选用合适的综合器;-进行综合得到门级电路结构;-布局布线,得到时延文件;-后仿真;-定型,FPGA编码或ASIC投片Top-Down设计思想系统级设计模块A模块B模块C模块A1模块A3模块A2模块C1模块C3模块C2模块B2模块B1用EDA设计数字系统的流程电路图设计文件HDL设计文件电路功能仿真HDL功能仿真HDL综合确定实现电路的具体库名布线后门级仿真与实现逻辑的物理器件有关的工艺技术文件优化、布局布线电路制造工艺文件或FPGA码流文件有问题有问题有问题没问题没问题没问题没问题为什么要用硬件描述语言来设计?•电路的逻辑功能容易理解;•便于计算机对逻辑进行分析处理;•把逻辑设计与具体电路的实现分成两个独立的阶段来操作;•逻辑设计与实现的工艺无关;•逻辑设计的资源积累可以重复利用;•可以由多人共同更好更快地设计非常复杂的逻辑电路(几十万门以上的逻辑系统)。设计复杂数字系统的工具和手段两种硬件描述语言:VerilogVHDL有哪几种硬件描述语言?各有什么特点?•VerilogHDL-较多的第三方工具的支持-语法结构比VHDL简单-学习起来比VHDL容易-仿真工具比较好使-测试激励模块容易编写VerilogHDL的发展历史VerilogHDL公开发表CADENCE公司购买Verilog版权199019891980’sVerilog-XL诞生模拟和数字都适用的Verilog标准公开发表VerilogIEEE1364-1995标准公开发表有关VerilogHDL的全部权利都移交给OVI(OpenVerilogInternational)1995图2-2VerilogHDL的发展历史和未来20011999VerilogIEEE1364-2001标准公开发表1990有哪几种硬件描述语言?各有什么特点?•VHDL-比VerilogHDL早几年成为IEEE标准;-语法/结构比较严格,因而编写出的模块风格比较清晰;-比较适合由较多的设计人员合作完成的特大型项目(一百万门以上)。两者建模能力的比较VITAL系统级算法级寄存器传输级逻辑门级开关电路级行为级的抽象VerilogHDL与VHDL建模能力的比较SystemVerilogVerilogVHDLVerilogHDL有什么用处?在各种抽象层次上描述数字电路测试各种层次数字电路的行为设计出正确有效的复杂电路结构VerilogHDL的应用方面•ASIC和FPGA设计师可用它来编写可综合的代码。•描述系统的结构,做高层次的仿真。•验证工程师编写各种层次的测试模块对具体电路设计工程师所设计的模块进行全面细致的验证。•库模型的设计:可以用于描述ASIC和FPGA的基本单元(Cell)部件,也可以描述复杂的宏单元(MacroCell)。VerilogHDL的抽象级别语言本身提供了各种层次抽象的表述,可以用详细程度有很大差别的的多层次模块组合来描述一个电路系统。行为级:技术指标和算法的Verilog描述RTL级:逻辑功能的Verilog描述门级:逻辑结构的Verilog描述开关级:具体的晶体管物理器件的描述VerilogHDL的抽象级别•行为级:有关行为和技术指标模块,容易理解;•RTL级:有关逻辑执行步骤的模块,较难理解;•门级:有关逻辑部件互相连接的模块。很难理解;•开关级:有关物理形状和布局参数的模块,非常难理解。注解:理解是指对模块整体功能的理解抽象级别和综合与仿真的关系行为仿真:行为的验证和验证模块分割的合理性;前仿真:即RTL级仿真,检查有关模块逻辑执行步骤是否正确。逻辑综合:把RTL级模块或符合综合风格的行为模块转换成门级。后仿真:用门级模型做验证,检查由门的互连构成的逻辑其功能是否正确。布局布线:在门级模型的基础上加上了布线延时布局布线后仿真:与真实的电路最接近的验证。简单的Verilog模块的组成行为级与门级的不同点?综合与模块的关系是什么?行为级和RTL级modulemuxtwo(out,a,b,sl);inputa,b,sl;outputout;Regout;always@(sloraorb)if(!sl)out=a;elseout=b;endmoduleabslout行为级和RTL级这个行为的描述并没有说明如果输入a或b是三态的(高阻时)输出应该是什么,但有具体结构的真实电路是有一定的输出的。RTL模块的数据流动必须基于时钟。RTL模块在每个时钟的沿时刻,其变量的值必定是精确的。RTL模块是可综合的,它是行为模块的一个子集合。abslout门结构级modulemuxtwo(out,a,b,sl);inputa,b,sl;outputout;notu1(ns1,sl);and#1u2(sela,a,nsl);and#1u3(selb,b,sl);or#2u4(out,sela,selb);endmoduleoutabslselbselanslu2u3u4u1综合器的作用•自动地把符合一定风格的Verilog行为模块转变为用门级结构描述的模块。•门级结构描述的模块也是得到Verilog仿真器支持的,模块行为正确与否可以通过仿真验证。Verilog模块的编写和验证举例---8位加法器的设计和验证---新设计方法的总体印象VerilogHDL入门modulemyadder(clock,reset,a,b,sum);parameterwidth=8;inputclock,reset;input[width-1:0]a,b;output[width:0]sum;reg[width-1:0]a_reg,b_reg;reg[width:0]sum;always@(posedgeclockornegedgereset)if(!reset)begina_reg=’b0;b_reg=’b0;sum=’b0;endVerilogHDL入门elsebegina_reg=a;b_reg=b;sum=a_reg+b_reg;endendmoduleVerilogHDL模块的测试`includemyadder.vmodulet;wire[8:0]sumout;reg[7:0]ain,bin;regrst,clk;myadder(.clock(clk),.reset(rst),.a(ain),.b(bin),.sum(sumout));initialbeginrst=1;clk=0;ain=0;bin=3;#70rst=0;#70rst=1;endalways#50clk=~clk;always@(posedgeclk)begin#2ain=ain+2;#3bin=bin+5;endendmoduleVerilogHDL测试由于t模块中VerilogHDL语句的功能可以对myadder模块进行测试myadder模块输入了必须的信号:rst,clk,ain,bin观测该模块
本文标题:夏宇闻Verilog_数字系统设计教程
链接地址:https://www.777doc.com/doc-2543897 .html