Verilog-HDL复杂数字系统设计-本.ppt

上传人:小飞机 文档编号:5452044 上传时间:2023-07-08 格式:PPT 页数:507 大小:5.54MB
返回 下载 相关 举报
Verilog-HDL复杂数字系统设计-本.ppt_第1页
第1页 / 共507页
Verilog-HDL复杂数字系统设计-本.ppt_第2页
第2页 / 共507页
Verilog-HDL复杂数字系统设计-本.ppt_第3页
第3页 / 共507页
Verilog-HDL复杂数字系统设计-本.ppt_第4页
第4页 / 共507页
Verilog-HDL复杂数字系统设计-本.ppt_第5页
第5页 / 共507页
点击查看更多>>
资源描述

《Verilog-HDL复杂数字系统设计-本.ppt》由会员分享,可在线阅读,更多相关《Verilog-HDL复杂数字系统设计-本.ppt(507页珍藏版)》请在三一办公上搜索。

1、2023/7/8,南通大学电子信息学院,1,Verilog HDL复杂数字系统设计,讲 解 人:邵蔚电 话:13773666530 办公地点:12-617室 E-mail:,2023/7/8,南通大学电子信息学院,2,什么是复杂的数字逻辑系统,嵌入式微处理机系统数字信号处理系统高速并行计算逻辑 高速通信协议电路高速编码/解码、加密/解密电路复杂的多功能智能接口门逻辑总数超过几万门达到几百甚至达几千 万门的数字系统,2023/7/8,南通大学电子信息学院,3,为什么要设计复杂数字逻辑系统,对嵌入式系统的性能要求越来越高-通用的微处理机不能满足要求-硬件结构是提高系统总体性能的关键-软件只能提高系

2、统的灵活性能-军用系统的实时、高可靠、低功耗要求-系统的功能专一,但对其各种性能要求极高-降低系统的设计和制造成本,2023/7/8,南通大学电子信息学院,4,设计数字系统的基本方法,传统的:线路图现代的:硬件描述语言,2023/7/8,南通大学电子信息学院,5,数字信号处理、计算、程序算法和硬线逻辑的基本概念,数字信号处理计算(Computing)算法和数据结构编程语言和程序体系结构硬线逻辑,2023/7/8,南通大学电子信息学院,6,数字信号处理,现代电子系统设备中广泛使用了数字信号处理 专用集成电路。用于数字信号传输中所必需的滤波、变换、加密、解密、编码、解码、纠检错、压缩、解压缩等操作

3、。处理工作从本质上说都是数学运算。完全可以用计算机或微处理器来完成处理工作。,2023/7/8,南通大学电子信息学院,7,计算(Computing),“Computing 这门学问研究怎样系统地有步骤地描述和转换信息,实质上它是一门覆盖了多个知识和技术范畴的学问,其中包括了计算的理论、分析、设计、效率和应用。它提出的最基本的问题是什么样的工作能自动完成,什么样的不能。”(摘自Denning et al.,“Computing as a Discipline,”Communication of ACM,January,1989)。,2023/7/8,南通大学电子信息学院,8,算法和数据结构的基本

4、概念,算法就是解决特定问题的有序步骤。数据结构就是解决特定问题的相应的模型。,2023/7/8,南通大学电子信息学院,9,编程语言和程序,编程语言:程序员利用一种由专家设计的既可以被人理解,也可以被计算机解释的语言来表示算法问题的求解过程。这种语言就是编程语言。程序:由编程语言所表达的算法问题的求解过程就是。常用的编程语言:C、Pascal、Fortran、Basic或汇编语言。,2023/7/8,南通大学电子信息学院,10,计算机体系结构和硬线逻辑,计算机体系结构:是一门 讨论和研究通用的计算机中央处理器如何提高运算速度性能的学问。硬线逻辑:由与门、或门、非门、触发器、多路器等基本逻辑部件造

5、成的逻辑系统。,2023/7/8,南通大学电子信息学院,11,数字信号处理系统的分类,非实时系统:信号处理的工作是可以事后进行。实时系统:信号处理的工作必须在规定的很短的时间内完成。,2023/7/8,南通大学电子信息学院,12,数字信号处理系统的实现,非实时系统:通用的计算机和利用通用计算机改装的设备,主要工作量是编写“C”程序。输入/输出数据大多为文本。实时系统:信号处理专用的微处理器为核心的设备,主要工作量是编写汇编程序。输入/输出数据大多为数据流,直接用于控制。,2023/7/8,南通大学电子信息学院,13,实时数字信号处理系统实现中存在的技术难点,算法问题。电路实现问题:如果由最快的

6、信号处理专用的微处理器为核心的设备也来不及处理如此大量的数据怎么办呢?,2023/7/8,南通大学电子信息学院,14,解决办法,算法问题。研究并行快速算法。电路实现问题:设计并研制具有并行结构的数字和计算逻辑结构和相应的接口逻辑。两个方向:FPGA、专用集成电路,2023/7/8,南通大学电子信息学院,15,第一部分 Verilog HDL入门,2023/7/8,南通大学电子信息学院,16,1.1 数字电子系统CAD技术的发展,三个阶段:(1)20世纪60年代80年代初期 CAD(Computer Aided Design)阶段(2)20世纪80年代初期90年代初期 CAE(Computer

7、Aided Engineering)阶段(3)20世纪90年代以来 EDA(Electronic Design Automation)阶段,第1章Verilog复杂数字设计综述,2023/7/8,南通大学电子信息学院,17,数字系统EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言(Hardware Description Language)完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可行性,减轻了设计者的劳动强度。20世纪90

8、年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用已得到普及。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。,2023/7/8,南通大学电子信息学院,18,1.2 硬件描述语言Verilog HDL,1.2.1 什么是Verilog HDL Verilog HDL 是硬件描述语言的一种,它是目前应用最广泛的硬件描述语言之一,用于数字系统的设计。设计者用它进行数字逻辑系统的仿真模拟、时序分

9、析、逻辑综合。,2023/7/8,南通大学电子信息学院,19,1.2.2 Verilog HDL的发展历史,1989Cadence 公司购买 Verilog HDL的版权,1990Verilog HDL 公开发表,1980s Verilog-XL 诞生,1990有关Verilog HDL的全部权利都移交给OVI(Open Verilog International)组织,1995Verilog IEEE1364标准公开发表,1999模拟和数字都适用的 Verilog 标准公开发表,2001Verilog IEEE1364-2001标准公开发表,Verilog IEEE1364-2005,202

10、3/7/8,南通大学电子信息学院,20,VHDL,比VerilogHDL早几年成为IEEE标准;-语法/结构比较严格,因而编写出的 模块风格比较清晰;-比较适合由较多的设计人员合作完成 的特大型项目(一百万门以上)。,2023/7/8,南通大学电子信息学院,21,Verilog HDL和 VHDL的比较,VHDL发展的较早,语法严格,而Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法较自由。VHDL的书写规则比Verilog烦琐一些,但Verilog自由的语法也容易让少数初学者出错。国外电子专业很多会在本科阶段教授VHDL,在研究生阶段教授Verilog。从国内来看,V

11、HDL的参考书很多,而Verilog HDL的参考书相对较少,这给学习Verilog HDL带来一些困难。,2023/7/8,南通大学电子信息学院,22,两者建模能力的比较,2023/7/8,南通大学电子信息学院,23,1.2.3 Verilog HDL的优点 Verilog HDL是一种通用的硬件描述语言,易学易用。具有C语言编程经验的设计者很容易学习和掌握。Verilog HDL允许在同一个电路模型内进行不同抽象层次的描述。设计者可以从开关、门级、RTL和行为等各个层次对电路模型进行定义。Verilog HDL是在全球最大的EDA供应商Cadence公司的扶持下针对EDA工具开发的HDL语

12、言。绝大多数流行的综合工具都支持Verilog HDL,这是Verilog HDL成为设计者的首选语言的重要原因之一。Verilog HDL的编程风格简洁明了,高效便捷。所有的制造厂商提供用于Verilog HDL综合之后的逻辑仿真的元件库,使用Verilog HDL进行设计,即可在更广泛的范围内选择委托制造的厂商。在ASIC设计领域,Verilog HDL占有明显的优势,2023/7/8,南通大学电子信息学院,24,1.3复杂数字系统的设计方法,1.3.1 复杂数字逻辑系统嵌入式微处理机系统数字信号处理系统高速并行计算逻辑 高速通信协议电路高速编码/解码、加密/解密电路复杂的多功能智能接口门

13、逻辑总数超过几万门达到几百甚至达几千万门的数字系统,2023/7/8,南通大学电子信息学院,25,1.3.2 传统的设计方法,查用器件手册;选用合适的微处理器和电路芯片;设计面包板和线路板;调试;定型;,设计复杂的系统(几十万门以上)极其困难!,2023/7/8,南通大学电子信息学院,26,1.3.3 Verilog HDL设计法,选用合适的 EDA仿真工具;选用合适电路图输入和HDL编辑工具;逐个编写可综合HDL模块;逐个编写HDL测试模块;逐个做 HDL 电路逻辑访真;编写 HDL总测试模块;做系统电路逻辑总仿真;选用合适的基本逻辑元件库和宏库 租用或购买必要的IP核;选用合适的综合器;进

14、行综合得到门级电路结构;布局布线,得到时延文件;后仿真;定型,FPGA编码或ASIC投片,2023/7/8,南通大学电子信息学院,27,采用Verilog HDL输入法时,由于Verilog HDL的标准化,可以很容易把完成的设计进行移植到不同厂家的不同芯片。采用Verilog HDL输入法最大的优点是其与工艺无关性。,2023/7/8,南通大学电子信息学院,28,1.3.4 软核、固核和硬核,软核(Soft Core):经过验证的、可综合的、实现后门数在5000门以上的HDL模型固核(Firm Core):在某FPGA器件上实现的、经过验证、5000门以上的电路结构编码文献硬核(Hard C

15、ore):以某种工艺实现的、经过验证、5000门以上的电路结构版图掩膜,2023/7/8,南通大学电子信息学院,29,1.4 典型设计流程,Top-Down 设计思想,系统级设计,模块A,模块B,模块C,模块A1,模块A2,模块A3,模块B1,模块B2,模块B3,模块C1,模块C2,2023/7/8,南通大学电子信息学院,30,2023/7/8,南通大学电子信息学院,31,用EDA设计数字系统的典型流程,电路图设计,HDL设计,电路功能仿真,HDL功能仿真,逻辑综合、时序验证,优化、布局布线,布线后门级仿真,工艺文件,电路制造版图或FPGA 码流文件,设计要求,实现,2023/7/8,南通大学

16、电子信息学院,32,1.5 硬件描述语言的发展趋势,当前集成电路的设计面临一些问题,如设计重用、知识产权和内核插入;高层次综合和混合模型的总和;验证包括仿真验证和形式验证等自动验证手段;深亚微米效应;等等。这些问题给EDA技术的发展提出了新的要求,因此硬件描述语言的改进和发展非常必要。,2023/7/8,南通大学电子信息学院,33,1.6 设计资源,设计工具CadenceSYNOPSYSMentor Graphics-ModelSimSynplicity-SynplifyXILINX-ISEAltera-Quartus 华大-ZeniFPGA芯片厂商XILINXAlteraLatticeEDA

17、网站,2023/7/8,南通大学电子信息学院,34,第2章 Verilog的模块,2023/7/8,南通大学电子信息学院,35,2.1 概 述,Verilog HDL能够描述电路的5种抽象级别:,1)系统级:用高级结构实现外部性能的模型2)算法级:用高级结构实现算法运行的模型3)RTL级(Register Transfer Level):描述数据在寄存器之间的流动和如何处理、控制这些数据流动的模型4)门级:描述逻辑门及其互相之间连接的模型5)开关级:描述器件中三极管和存储节点以及互相之间连接的模型,Verilog HDL既是一种行为描述语言,也是一种结构描述语言。即:描述电路功能行为的模型或描

18、述元器件或较大部件互连的模型均可以用Verilog HDL实现。,2023/7/8,南通大学电子信息学院,36,2023/7/8,南通大学电子信息学院,37,Verilog HDL特别适合算法级和RTL级的模型设计提供了一套完整的组合逻辑基本元件、双向通路和电阻器件的原语可建立MOS器件的电荷分享和衰减动态模型Verilog HDL与C语言的风格很类似,2023/7/8,南通大学电子信息学院,38,一个完整系统的Verilog HDL模型由若干个Verilog HDL模块构成,每个模块又由若干个子模块构成,Verilog模型(模块)-Verilog的基本设计单元,层次化的模型,2.2 Veri

19、log的模块,2023/7/8,南通大学电子信息学院,39,例2-1a 2选1module muxtwo(out,a,b,sl);input a,b,sl;output out;reg out;always(sl or a or b)if(!sl)out=a;else out=b;endmodule,sl,out,a,b,2023/7/8,南通大学电子信息学院,40,例2-1b 4选1多路选择器module mux4_to_1(out,i0,i1,i2,i3,s1,s0);output out;input i0,i1,i2,i3,s1,s0;reg out;always(s1 or s0 or

20、 i0 or i1 or i2 or i3)begin case(s1,s0)2b00:out=i0;2b01:out=i1;2b10:out=i2;2b11:out=i3;default:out=1bx;endcase end endmodule,s1,out,i0,i1,i3,i2,s0,2023/7/8,南通大学电子信息学院,41,例2-2a 2选1module muxtwo(out,a,b,sl);input a,b,sl;output out;not u1(nsl,sl);and#1 u2(sela,a,nsl);and#1 u3(selb,b,sl);or#2 u4(out,sel

21、a,selb);endmodule,2023/7/8,南通大学电子信息学院,42,例2-2b 4选1多路选择器module mux4_to_1(out,i0,i1,i2,i3,s1,s0);output out;input i0,i1,i2,i3;input s1,s0;wire s1n,s0n;wire y0,y1,y2,y3;not not0(s1n,s1);not not1(s0n,s0);and and0(y0,i0,s1n,s0n);and and1(y1,i1,s1n,s0);and and2(y2,i2,s1,s0n);and and3(y3,i3,s1,s0);or or0(o

22、ut,y0,y1,y2,y3);endmodule,2023/7/8,南通大学电子信息学院,43,分析:例2-1模块属于行为描述,例2-2模块属于门级描述。通过综合,行为描述的模块可能转化为门级描述的模块。,2023/7/8,南通大学电子信息学院,44,例2-3 加法器,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说明:求a、b、cin 的和sum,count为进位。,2023/7/8,南通大学电子信息学

23、院,45,例2-4 比较器,module compare(equal,a,b);input 1:0 a,b;output equal;assign equal=(a=b)?1:0;endmodule,2023/7/8,南通大学电子信息学院,46,例2-5 三态驱动器,module trist2(out,in,enable);output out;input in,enable;bufif1 mybuf(out,in,enable);endmodule,2023/7/8,南通大学电子信息学院,47,例2-6 三态驱动器,module trist1(sout,sin,ena);output sou

24、t;input sin,ena;mytri tri_inst(.out(sout),.in(sin),.enable(ena);endmodulemodule mytri(out,in,enable);output out;input in,enable;assign out=enable?in:bz;endmodule,2023/7/8,南通大学电子信息学院,48,例2-7 测试,include“muxtwo.v”module t;reg ain,bin,select;reg clock;wire outw;initial begin ain=0;bin=0;select=0;clock=0

25、;endalways#50 clock=clock;always(posedge clock)begin ain=$random%2;#3 bin=$random%2;endalways#10000 select=select;muxtwo m(.out(outw),.a(ain),.b(bin),.sl(select);endmodule,2023/7/8,南通大学电子信息学院,49,第3章 模块的结构、数据类型、变量和基本运算符号,2023/7/8,南通大学电子信息学院,50,模块(block)由两部分组成:端口定义(接口描述)模块内容(逻辑功能描述),3.1 模块的结构,例如:modul

26、e block(a,b,c,d);input a,b;output c,d;assign c=a|b;assign d=a endmodule,a,b,c,d,2023/7/8,南通大学电子信息学院,51,3.1.1模块的端口定义格式:module 模块名(口1,口2,);,例:module mytri(out,in,enable);output out;input in,enable;assign out=enable?in:bz;endmodule调用:mytri tri_inst(sout,sin,ena);mytri tri_inst(.out(sout),enable(ena),.i

27、n(sin);,2023/7/8,南通大学电子信息学院,52,3.1.2 模块的内容:,1.I/O说明例如:input k1,k2,in0;input 7:0 data;output 3:0 out;inout 15:0 db;2.内部信号的说明例如:reg2:0 a;wire b,c,d;,2023/7/8,南通大学电子信息学院,53,3.功能定义(有3种方法实现逻辑功能)1)用assign声明语句 assign a=b+c;assign f=(x)?y:z;2)用实例元件 and#2 u1(q,a,b);3)用always块 always(posedge clk or posedge cl

28、r);begin if(clr)q=0;else if(en)q=d;end,2023/7/8,南通大学电子信息学院,54,要点所有过程块(initial,always)、连续赋值语句assign和实例应用都是并行的。过程块内的语句是顺序执行的。连续赋值语句assign和实例应用都可以独立于过程块存在于模块的功能定义部分。,2023/7/8,南通大学电子信息学院,55,3.2 数据类型及其常量和变量,Verilog共有19种数据类型,仅介绍4种:reg型 wire型 integer型 parameter型 Verilog中有常量、变量之分,它们分别属于19种数据类型,2023/7/8,南通大学

29、电子信息学院,56,3.2.1 常量数字:二进制、八进制、十进制、十六进制;例:8b00110011 8h33 16d48 6o17,2023/7/8,南通大学电子信息学院,57,要点:x代表不定值,z/?代表高阻值负数的表达正确用下划线,增加可读性位数缺省时的数值,2023/7/8,南通大学电子信息学院,58,参数型(parameter)-定义常量例:parameter data_width=8,addr_width=16;parameter counter=8*1024;,2023/7/8,南通大学电子信息学院,59,要点:模块应用时,可通过参数的传递改变已经规定的值。在一个模块中改变另一

30、个模块的参数时,要用defparam命令。,2023/7/8,南通大学电子信息学院,60,3.2.2 变量,网络数据类型(wire、tir)表示实体之间的物理连接。该类型的变量不能存储值。必须受到驱动器(门或assign语句)的驱动。wire-受单个驱动源的驱动;tir-受多个驱动源的驱动。,2023/7/8,南通大学电子信息学院,61,wire型wire型变量可以是任何方程式的输入信号,也可以是assign语句或实例元件的输出。例:wire a,b,c;wire 4:0 db;下表说明了wire型变量在多驱动情况时的结果,2023/7/8,南通大学电子信息学院,62,表:,2023/7/8,

31、南通大学电子信息学院,63,reg型-寄存器数据类型通过赋值语句可以改变reg型变量的值。always块中的每一个信号都必须定义为reg型。reg型信号通常是寄存器或触发器的输出,但并不一定总是。例:reg 7:0 data;reg q0,q1,q2,q3;reg 15:0 addr;,2023/7/8,南通大学电子信息学院,64,reg型的扩展:memory型-存储器通过扩展reg型变量的地址实现例:reg 7:0 memp 1023:0;reg 7:0 memd 255:0;,memory型不可综合,2023/7/8,南通大学电子信息学院,65,3.3 运算符和表达式,1.基本的算术运算符

32、+(加法运算符,正)-(减法运算符,负)*(乘法运算符)/(除法运算符)%(模运算符),2023/7/8,南通大学电子信息学院,66,2.位运算符(按位取反,单目运算符),2023/7/8,南通大学电子信息学院,67,第4章 运算符、赋值语句、结构说明语句,2023/7/8,南通大学电子信息学院,68,4.1 逻辑运算符,结果为真/假&(逻辑与,双目运算符)|(逻辑或,双目运算符)!(逻辑非,单目运算符),2023/7/8,南通大学电子信息学院,69,结果为真/假=,4.2 关系运算符,2023/7/8,南通大学电子信息学院,70,结果为真/假=(等于)!=(不等于)只在操作数为0或1的时候结

33、果确定。当输入为x、z时结果不确定。=(等于,)!=(不等于)输入为x、z时,结果也确定,4.3 等式运算符,2023/7/8,南通大学电子信息学院,71,4.4 移位运算符,左移 n位:a n,(均以0补空),2023/7/8,南通大学电子信息学院,72,4.5 位拼接运算符,信号1的某几位,信号2的某几位,信号n的某几位,例如:a=b7:0,c15:8;,2023/7/8,南通大学电子信息学院,73,4.6 缩减运算符,所谓缩减运算就是对单个操作数进行“与、或、非”递推运算,使结果变成1位。例如:reg 3:0 b;reg c;c=设b=4b0110,则c=0.,2023/7/8,南通大学

34、电子信息学院,74,4.7 优先级别,2023/7/8,南通大学电子信息学院,75,4.8 关键词IEEE Std 1364-2001 IEEE standard Verilog hardware description language,2023/7/8,南通大学电子信息学院,76,2023/7/8,南通大学电子信息学院,77,4.9.1 赋值语句1、非阻塞赋值非阻塞赋值符:=例如:f=a;说明:块结束后才完成赋值(因此f不是立即被赋值),在always块描述的时序电路中应使用非阻塞赋值。,4.9 赋值语句和块语句,2023/7/8,南通大学电子信息学院,78,例4-1always(pose

35、dge clk)begin b=a;c=b;end赋值在 always 块结束后执行,其功能是移位寄存器:,a,clk,b,c,Q,D,CLK,Q,D,CLK,2023/7/8,南通大学电子信息学院,79,例4-2always(posedge clk)begin b=a;c=b;endb=a立即执行,然后c=b执行,即c等于a。得到的电路为:,a,clk,b,c,Q,D,CLK,2023/7/8,南通大学电子信息学院,80,2、阻塞赋值阻塞赋值符:=例如:f=a;说明:赋值完成后块才结束;f立即被赋值;在always块描述的时序电路中使用阻塞赋值可能产生错误;一般用在组合逻辑电路中。,2023

36、/7/8,南通大学电子信息学院,81,4.9.2 块语句1、顺序块格式:begin:块名 块内声明语句 语句1;语句2;语句n;end特点:块内语句顺序执行,如参数声明、reg、integer、real型变量声明,2023/7/8,南通大学电子信息学院,82,例如:begin a=b;c=a;end,2023/7/8,南通大学电子信息学院,83,2、并行块格式:fork:块名 块内声明语句 语句1;语句2;语句n;join特点:块内语句并行执行,块内各语句的顺序是任意的。,2023/7/8,南通大学电子信息学院,84,3、块名为块取一个名字可以在块内定义局部变量可以被其它语句调用,2023/7

37、/8,南通大学电子信息学院,85,作业1,P.38:3;5P.49:2;3,2023/7/8,南通大学电子信息学院,86,第5章 条件语句、循环语句、块语句和生成语句,2023/7/8,南通大学电子信息学院,87,1、if 语句例:if(a=1)out=a;,5.1 条件语句(if_else语句),2023/7/8,南通大学电子信息学院,88,2、if _else 语句例:if(a=b)q0=0;else begin q0=0;q1=1;end,2023/7/8,南通大学电子信息学院,89,3、if _else if 语句例如:if(x=5)a=b;else if(x=3)a=c;else i

38、f(x=7)a=d;,2023/7/8,南通大学电子信息学院,90,If语句的嵌套:,注意:else总是与前面最近的if 配对例如:c=a+b,补码表示,判是否有溢出。if(sign_a=0,2023/7/8,南通大学电子信息学院,91,5.2 case语句-多分支选择语句,一般形式:case(控制表达式)endcasecasez(控制表达式)endcasecasex(控制表达式)endcase case表达式:语句;默认项:语句;,2023/7/8,南通大学电子信息学院,92,例如:reg2:0 in;reg7:0 out;case(in)3b000:out=8b11111110;3b001

39、:out=8b11111101;3b010:out=8b11111011;3b011:out=8b11110111;3b100:out=8b11101111;3b101:out=8b11011111;3b110:out=8b10111111;3b111:out=8b01111111;default:out=8bxxxxxxxx;endcase,2023/7/8,南通大学电子信息学院,93,重要说明:分支表达式的值必须互不相同。只允许有一个default语句。所有表达式要有位宽,且必须相等。要有default分支语句,否则产生逻辑锁存。,2023/7/8,南通大学电子信息学院,94,5.5 循环

40、语句,5.5.1 forever语句格式:forever 语句(或语句组);用于产生周期性波形,必须用在initial块中。,2023/7/8,南通大学电子信息学院,95,5.5.2 repeat语句(重复执行,次数由表达式决定)格式:repeat(表达式)语句(或语句组);常量,2023/7/8,南通大学电子信息学院,96,5.5.3 while语句格式:while(表达式)语句(或语句组);功能:若表达式为真(或非0)则执行“语句”;若表达式为假(或为0)就结束。,2023/7/8,南通大学电子信息学院,97,5.5.4 for语句格式:for(表达式1;表达式2;表达式3)语句(或语句组

41、);循环变量初值 循环条件 增量其中循环条件(教材中称结束条件):表达式为真(或非0)则循环,2023/7/8,南通大学电子信息学院,98,例如:begin:init_mem reg7:0 tempi;for(tempi=0;tempimemsize;tempi=tempi+1)memorytempi=0;end,2023/7/8,南通大学电子信息学院,99,例 统计rega中1的个数。begin:count1s reg7:0tempreg;count=0;for(tempreg=rega;tempreg;tempreg=tempreg 1)if(tempreg0=1)count=count+

42、1;,2023/7/8,南通大学电子信息学院,100,第6章 结构语句、系统任务、函数语句和显示系统任务,2023/7/8,南通大学电子信息学院,101,第6章 结构语句、系统任务、函数语句和显示系统任务,我们将学习4种结构说明语句:initialalwaystaskfunction 任何过程块都属于以上4种结构说明语句,2023/7/8,南通大学电子信息学院,102,6.1.1 initial语句格式:initial begin 语句1;语句2;语句n;end,6.1 结构说明语句,2023/7/8,南通大学电子信息学院,103,说明:一个程序模块可以有多个initial块。每个initia

43、l块只在仿真开始时执行一次,多个initial块是并行的运行的。作用之一:变量的初始化。作用之二:产生激励波形,用于测试文件。,2023/7/8,南通大学电子信息学院,104,6.1.2 always语句格式:always 说明:always语句在仿真时不断重复执行,而后面的语句是否执行取决于“时序控制”条件是否满足。缺少“时序控制”,将产生死锁。时序控制条件即触发条件,包括边沿触发(posedge/negedge)、电平触发,单个或多个。一个模块中可以有多个always 块。,2023/7/8,南通大学电子信息学院,105,回顾例2-1a 2选1module muxtwo(out,a,b,s

44、l);input a,b,sl;output out;reg out;always(sl or a or b)if(!sl)out=a;else out=b;endmodule,sl,out,a,b,2023/7/8,南通大学电子信息学院,106,例:8位数据寄存器module hardreg(d,clk,q);input clk;input7:0 d;output7:0 q;reg7:0 q;always(posedge clk)q=d;endmodule,2023/7/8,南通大学电子信息学院,107,例:8位具有清0端的数据寄存器module hardreg(d,clk,clrb,q);

45、input clk,clrb;input7:0 d;output7:0 q;reg7:0 q;always(posedge clk or posedge clrb)begin if(clrb)q=8b00000000;/清0 else q=d;/置数 endendmodule,2023/7/8,南通大学电子信息学院,108,6.2 task和function说明语句,任务和函数说明语句作用:把大的程序分解成比较小的程序;不同地方多次使用的相同程序段设计成task或function,能够简化程序。,2023/7/8,南通大学电子信息学院,109,6.2.1 task和function的区别函数只

46、能和主模块共用一个仿真时间单位,任务可以有自己的仿真时间单位。任务可以调用函数,函数不能调用任务。函数必须要有输入变量,任务可以没有可以。函数有返回值,任务没有返回值。,2023/7/8,南通大学电子信息学院,110,6.2.1 task说明语句1)任务的定义:task;endtask2)任务的调用:(端口1,端口12,,端口n);,2023/7/8,南通大学电子信息学院,111,例如:module compare1(a,b,c,d,e,f);reg a,b,c,d,e,f;always(a or b or c)my_task(a,b,c,d,e,f);task my_task;/input

47、a,b,c;output d,e,f;begin d=0;e=0;f=0;if(a=b)d=1;if(a=c)e=1;if(b=c)f=1;endendtaskendmodule,2023/7/8,南通大学电子信息学院,112,例6-1:交通信号灯设计,module traffic_lights;reg clock,red,amber,green;parameter on=1,off=0,red_tics=350,amber_tics=30,green_tics=200;initial red=off;initial amber=off;initial green=off;,2023/7/8,

48、南通大学电子信息学院,113,always begin red=on;light(red,red_tics);amber=on;light(amber,amber _tics);green=on;light(green,green _tics);endtask light;output color;input 31:0 tics;begin repeat(tics)(posedge clock);/等待上升沿 color=off;endendtaskalways begin#100 clock=0;#100 clock=1;endendmodule,2023/7/8,南通大学电子信息学院,11

49、4,6.4 function,调用函数能够返回一个用于表达式的值。1、定义函数的语法function函数名;begin end end function,缺省时,返回值的类型为1位reg型,2023/7/8,南通大学电子信息学院,115,2)函数的返回值函数定义语句隐含对函数名相同的、函数内部寄存器的声明函数中必须对与函数名相同的寄存器赋值范围缺省时,返回值为1位reg型3)函数的调用函数名(*)调用时,函数被当作表达式中的操作数,2023/7/8,南通大学电子信息学院,116,函数调用举例:function f_and;input a,b,c,d;f_and=a,2023/7/8,南通大学电

50、子信息学院,117,4)函数的使用规则函数中不能包含时间控制语句函数不能启动任务函数至少有一个输入参量函数中必须对与函数名相同的寄存器赋值,2023/7/8,南通大学电子信息学院,118,例6-2:计算,module func;function31:0 f;input3:0 n;reg3:0 i;begin f=1;for(i=2;i=n;i=i+1)f=i*f;end endfunction,函数,2023/7/8,南通大学电子信息学院,119,reg31:0 value;reg3:0 m;initial begin value=1;for(m=2;m=9;m=m+1)begin$displ

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号