第八章可编程逻辑器件verilog语言简介_第1页
第八章可编程逻辑器件verilog语言简介_第2页
第八章可编程逻辑器件verilog语言简介_第3页
第八章可编程逻辑器件verilog语言简介_第4页
第八章可编程逻辑器件verilog语言简介_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于基于 Verilog HDL的的硬件描述语言简介硬件描述语言简介刘 杰 惠2012年5月25日目录n什么是Verilog HDLnVerilog HDL语法n设计描述层次n组合逻辑和时序逻辑n设计测试和验证n可综合的设计n设计注意事项什么是Verilog HDLnVerilog HDL是一种硬件描述语言是一种硬件描述语言用于数字系统的设计用于数字系统的设计n各种级别的逻辑设计:各种级别的逻辑设计:算法级、结构级、门级到开关级的多种抽算法级、结构级、门级到开关级的多种抽象设计层次的数字系统建模;象设计层次的数字系统建模;被建模的数字系统对象的复杂性可以介于被建模的数字系统对象的复杂性可以介于

2、简单的门和完整的复杂电子数字系统之间简单的门和完整的复杂电子数字系统之间(例如例如 CPU)什么是Verilog HDLn进行数字逻辑系统的仿真验证、时序分析、进行数字逻辑系统的仿真验证、时序分析、逻辑综合逻辑综合n特点:特点:从从C语言继承了多种操作符和结构语言继承了多种操作符和结构应用广泛应用广泛比比VHDL更简洁、灵活更简洁、灵活语法类似语法类似C,但思想不同,着眼于电路,但思想不同,着眼于电路Verilog HDL的历史n1983年Gateway Design Automation 公司在C语言的基础上,为其仿真器产品Verilog-XL开发了一种专用硬件描述语言Verilog HDL

3、硬件描述语言的设计优点n电路的逻辑功能容易理解;n便于计算机对逻辑进行分析处理;n把逻辑设计与具体电路的实现分成两个独立的阶段来操作;n逻辑设计与实现的工艺无关;n逻辑设计的资源积累可以重复利用;n可以由多人共同更好更快地设计非常复杂的逻辑电路(几十万门以上的逻辑系统)。硬件描述语言的设计优点nVerilog HDLn较多的第三方工具的支持n语法结构比VHDL简单n学习起来比VHDL容易n仿真工具比较好使n测试激励模块容易编写硬件描述语言的设计优点nVHDLn比VerilogHDL早几年成为IEEE标准;n语法/结构比较严格,因而编写出的模块风格比较清晰;n比较适合由较多的设计人员合作完成的特

4、大型项目(一百万门以上)。 Verilog HDL的结构n模块(Module)-可对应各种规模电路模块Verilog HDL的结构Verilog HDL的结构Verilog HDL语法n模块n数据类型及常量、变量n运算符与表达式n条件与循环语句n结构说明语句模块(module) nVerilog 基本设计单元:n一个电路模块/一种逻辑功能n基本元素:接口,逻辑功能n命名:字母,数字,$,_,区分大小写第一个必须为:字母/_模块(module) nVerilog 模块的结构由在module和endmodule 关键词之间的四个主要部分组成:n端口信息: module block1(a, b, c

5、, d );n输入/输出说明 : input a, b, c ;output d ;n内部信号: wire x;n功能定义: assign d = a | x ; assign x = ( b & c ); endmodule 模块(module) 请在下面的空格中填入适当的符号使其成为右图的Verilog 模块 :abcde模块(module) 请在下面的空格中填入适当的符号使其成为右图的Verilog 模块 :abcde模块(module) n模块实例化模块名称 实例化名称(.接口名称(信号名称),);若接口按顺序排列,可以省略接口名称数据类型及其常量变量nVerilog HDL有下列四种

6、基本的值:n0:逻辑0或假n1:逻辑1或真nX:未知nz:高阻ux,z值不区分大小写uz也可以用?表示数据类型及其常量变量nVerilog HDL 中有三类常量:n整型:缺省十进制:1,-2基数表示: b/B,o/O,d/D,h/H 4b0101,8h42,-8d5 n实数型:1.234, -56.78, 3.6e4n字符串型:双引号内,每个字母用8位的ASCII值表示。 如 “verilog!” 看作9个8位无符号整数u反斜杠()用于定义特殊转义字符,例如 n, t。 u下划线(_)可以用来分隔数的表达式以提高易读性;但不能用于位宽和进制处。例如:32b0010_1101_1110_1111

7、 = = 32b0010110111101111数据类型及其常量变量nVerilog HDL 变量最主要的数据类型:n线网类型(net type):表示Verilog结构化元件间的物理连线。它的值由驱动元件的值决定,例如连续赋值或门的输出。如果没有驱动元件连接到线网,线网的缺省值为z。类型:wire, wor, wand, tri1, tri0, supply1, supply0 n寄存器类型(register type)表示一个抽象的数据存储单元,它只能在always语句和initial语句中被赋值,并且它的值从一个赋值到另一个赋值过程中被保存下来。寄存器类型缺省值为x。类型:reg, in

8、teger, real, time 数据类型及其常量变量nwire 型变量n格式wire n-1:0 name1,name2,namen;n举例wire rdy,finish; /2个1位的连线wire 3:0 result; /1个4位的连线n可用作任何方程式的输入,也可用作assign语句和元件的输出。例如:assign result=a+b;数据类型及其常量变量nreg 型变量n格式reg n-1:0 name1,name2,namen;n举例reg rdy,finish; / 2个1位寄存器reg 3:0 result; / 1个4位寄存器reg 3:0 mem63:0; / 64个4

9、位寄存器组,可表示存储器n可取任意一位:result2表示4位寄存器的次高位;mem2表示一个4位寄存器;mem21:0表示一个4位寄存器中的低2位。数据类型及其常量变量n需要注意的是:寄存器(reg)类型不一定是触发器,它只是在 always 块中赋值的信号。用寄存器(reg)类型变量生成组合逻辑举例:aout2BUFFERbINVout1运算符与表达式n算术运算符:+, -, *, /, %n赋值运算符:=, , =, =n相等运算符:=, !=, =, !=n逻辑运算符:&, |, !n位运算符:, &, |, , ,n移位运算符:n条件运算符: ?: assign result=exp

10、?exp1:exp2;n连接和复制操作符: assign cout,sum=a+b+cin;运算符与表达式n表达式:操作数+运算符n分类:n单目运算符:带一个操作数 如 clockn双目运算符:带两个操作数 如 a&bn三目运算符:带三个操作数 如 r=s?a:bn优先级:! * / % + - ,=, = != = != & | & | ?:块语句n两条或多条语句的组合,主要有两种:nbegin_end 语句:顺序块块内的语句顺序执行;每条语句的延时为相对于前一语句;最后一句执行完,才能跳出该块。nfork_join语句:并行块块内语句同时执行;每条语句的延时为相对进入块仿真时间。条件与循环

11、语句nif else语句If (表达式) 语句;else if (表达式) 语句;else 语句;n多个语句须放在begin end间ncase 语句:多分支选择语句case (表达式) case1,case2分支: 语句;default: 语句;endcase条件与循环语句nforever 连续执行,常用于产生时钟信号如:timescale 1ns/100ps forever #5 clk=clk; /产生100MHz的时钟nwhile 执行语句,直到某个条件不满足While (表达式) begin 语句; end若开始即不满足条件,则不执行 nrepeat 连续执行语句n次repeat (

12、表达式) begin 语句; end在此表达式通常为常量表达式条件与循环语句nfor for(表达式1;表达式2;表达式3) 语句;例: for ( i=0; i4; i=i+1) ai= bi;执行过程:(1)求解表达式1;(2)求解表达式2,若为真,则执行语句,转到(3);若为假,结束循环,转到(5);(3)若表达式2为真,执行语句后,求解表达式3;(4)转回(2)继续;(5)执行for语句后面的语句。结构说明语句ninitial仿真开始时对各变量初始化生成激励波形作为电路测试信号只执行一次程序模块中可有多个,并行执行nalways always(触发条件) begin 语句; end 若

13、触发条件满足,则被执行,满足一次执行一次可有多个always块,并行执行结构说明语句nfunction n返回一个用于表达式的值n调用:将函数作为表达式中的操作数实现word=getbyte(a), getbyte(b);n规则:不能包含时间控制语句,不能启动任务,至少有一个输入,必须存在给与函数名同名变量赋值语句。结构说明语句ntaskn支持多种目的,可计算多个结果值n调用:my_task(v, w, x, y, z);n特点:可定义自己的仿真时间单位可以启动其他task和function阻塞赋值与非阻塞赋值n非阻塞赋值 如:b = an块结束后才完成赋值操作nb的值并不是立刻改变n常用于沿

14、触发的always块n阻塞赋值 如:b = an赋值语句执行完后,块才结束nb的值在赋值语句执行后立刻改变n常用于组合逻辑的赋值设计描述层次nVerilog HDL既是一种行为描述语言,也是一种结构描述语言。也就是说,既可以用电路的逻辑功能描述,也可以用元器件和它们之间的连接来建立所设计电路的Verilog HDL模型。例:nMUX的行为描述abslout设计描述层次nMUX的结构描述abslselbselanslout设计描述层次nVerilog HDL语言本身提供了各种层次抽象的表述,可以用详细程度有很大差别的的多层次模块组合来描述一个电路系统。n行为级:技术指标和算法的Verilog描述

15、,有关行为和技术指标模块,容易理解nRTL级:逻辑功能的Verilog描述,有关逻辑执行步骤的模块,较难理解n门级:逻辑结构的Verilog描述,有关逻辑门以及逻辑门之间的连接关系的模块,很难理解n开关级:具体的晶体管物理器件的描述,有关物理形状和布局参数的模块,非常难理解设计描述层次n算法(行为)级描述n结构级描述n寄存器传输级(RTL)描述n开关级(门级)描述n混合层次描述设计描述层次n算法级描述(行为级描述)n主要用于快速验证算法的正确性n不一定可以综合成实际电路结构设计描述层次n结构级描述n电路的层次化描述n类似于电路框图使用两个半加器构造的全加器设计描述层次nRTL描述n更贴近实际电

16、路结构的描述n描述的细节到寄存器内容传输级别n可以精确描述电路的工作原理、执行顺序n细化到寄存器级别的结构描述也就是RTL级描述,并无绝对划分标准 设计描述层次n开关级(门级)描述n完整描述了电路的细节n最底层的电路描述n可以描述MOS管设计描述层次n混合层次描述n以上各种层次描述方式可以任意混合使用,因此一个设计可能某些模块使用了行为描述的方式,而另外一些模块使用了开关级描述。n在实际设计中,功能复杂的模块可以先用行为级或结构级的描述来表示,而对功能简单的模块则使用RTL级的描述,以尽早完成系统的仿真和算法的验证;在设计的过程中逐步细化复杂模块,替代原来的行为描述,直至设计可以综合并满足设计

17、指标。组合逻辑电路n组合逻辑:输出只是当前输入逻辑电平的函数,与电路的原始状态无关的逻辑电路。n组合逻辑由与、或、非门组成的网络,如:多路器、比较器、加法器、乘法器等n描述方式:nassign 语句n& | 操作符nand, or, not门组合组合逻辑电路n加法器Assign和操作符描述 基本门组合时序逻辑电路n时序逻辑:输出不只是当前输入的逻辑电平的函数,还与电路目前所处的状态有关的逻辑电路。n由多个触发器和多个组合逻辑块组成,如计数器、同步有限状态机、移位寄存器等n描述方式:nalways(posedge clk)n非阻塞赋值, =, , , &, |, 等运算符 n=, = , ass

18、ign等赋值语句nalways块可综合的设计n不可综合的语法举例ninitial块nforever块nfor,while,repeat,force,release,task,enable,disable一般不可综合(某些特定情况下for,while等可能可以综合)n系统函数如$display等n除法,求模运算,实数运算等复杂算术运算一般不可综合(若综合器有库可以引用,则可综合)n#延时赋值语句一般综合时会被忽略n可综合的设计ncase语句一般对应多选器分支要完全,default分支的使用赋值为“x”为无关项,综合结果最简洁n避免出现latch生成组合逻辑的always块中,赋值表达式右边出现的信号都必须在敏感列表中列出n异步状态机不能综合综合器只支持同步系统的设计设计注意事项n注意区分同步复位和异步复位异步复位 同步复位设计注意事项n避免对时钟进行逻辑操作后作为触发信号不建议使用门控时钟和组合逻辑时钟,易产生毛刺,发生误动作,建议使用触发器的使能端,不增加资源。设计注意事项n慎重对计数器进行译码可能由于竞争冒险产生毛

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论