VerilogHDL教程详细

上传人:ap****ve 文档编号:118826821 上传时间:2019-12-26 格式:PPT 页数:179 大小:3.70MB
返回 下载 相关 举报
VerilogHDL教程详细_第1页
第1页 / 共179页
VerilogHDL教程详细_第2页
第2页 / 共179页
VerilogHDL教程详细_第3页
第3页 / 共179页
VerilogHDL教程详细_第4页
第4页 / 共179页
VerilogHDL教程详细_第5页
第5页 / 共179页
点击查看更多>>
资源描述

《VerilogHDL教程详细》由会员分享,可在线阅读,更多相关《VerilogHDL教程详细(179页珍藏版)》请在金锄头文库上搜索。

1、期中检测说明,11月28号期中检测 按小组抽签决定(cpld和单片机前四个实验为基础,适当变化),1,2,3.8 循环语句 3.9 结构说明语句 3.10 编译预处理语句 3.11 语句的顺序执行与并行执行 3.12 不同抽象级别的Verilog HDL模型 3.13 设计技巧,3.1 引言 3.2 Verilog HDL基本结构 3.3 数据类型及常量、变量 3.4 运算符及表达式 3.5 语句 3.6 赋值语句和块语句 3.7 条件语句,第3章 硬件描述语言Verilog HDL,3,3.1 引言,一、什么是Verilog HDL 二、Verilog HDL的发展历史 三、不同层次的Ver

2、ilog HDL抽象 四、Verilog HDL的特点,内容概要,4,3.1 引言,一、什么是Verilog HDL Verilog HDL是一种用于数字逻辑电路设计的硬件描述语言(Hradware Description Language ),可以用来进行数字电路的仿真验证、时序分析、逻辑综合。 用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型。 Verilog HDL 既是一种行为描述语言也是一种结构描述语言。 既可以用电路的功能描述,也可以用元器件及其之间的连接来建立Verilog HDL模型。,5,3.1 引言,二、Verilog HDL的发展历史 1983

3、年,由GDA(GateWay Design Automation)公司的Phil Moorby首创; 1989年,Cadence公司收购了GDA公司; 1990年, Cadence公司公开发表Verilog HDL; 1995年,IEEE制定并公开发表Verilog HDL1364-1995标准; 1999年,模拟和数字电路都适用的Verilog标准公开发表,6,3.1 引言,三、不同层次的Verilog HDL抽象 Verilog HDL模型可以是实际电路的不同级别的抽象。抽象级别可分为五级: 系统级(system level): 用高级语言结构(如case语句)实现的设计模块外部性能的模型

4、; 算法级(algorithmic level): 用高级语言结构实现的设计算法模型(写出逻辑表达式); RTL级(register transfer level): 描述数据在寄存器之间流动和如何处理这些数据的模型; 门级(gate level): 描述逻辑门(如与门、非门、或门、与非门、三态门等)以及逻辑门之间连接的模型; 开关级(switch level): 描述器件中三极管和储存节点及其之间连接的模型。,返回3.12,7,3.1 引言,四、Verilog HDL的特点 语法结构上的主要特点: 形式化地表示电路的行为和结构; 借用C语言的结构和语句; 可在多个层次上对所设计的系统加以描述

5、,语言对设计规模不加任何限制; 具有混合建模能力:一个设计中的各子模块可用不同级别的抽象模型来描述; 基本逻辑门、开关级结构模型均内置于语言中,可直接调用; 易创建用户定义原语(UDP,User Designed Primitive) 。 易学易用,功能强,与C语言非常相似!,8,3.2 Verilog HDL基本结构,一、简单的Verilog HDL例子 二、Verilog HDL模块的结构 三、逻辑功能定义 四、关键字 五、标识符 六、编写Verilog HDL源代码的标准,内容概要,9,3.2 Verilog HDL基本结构,一、简单的Verilog HDL例子 例3.2.1 8位全加器

6、 module adder8 ( cout,sum,a,b,cin ); output cout; / 输出端口声明 output 7:0 sum; input 7:0 a,b; / 输入端口声明 input cin; assign cout,sum=a+b+cin; endmodule assign语句:无论右边表达式操作数何时发生变化,右边表达式都会重新计算,并且在指定的延迟后给左边表达式赋值。,端口定义,功能描述,模块名(文件名),整个Verilog HDL程序嵌套在module和endmodule声明语句中。 每条语句相对module和endmodule最好缩进2格或4格! / 表示注

7、释部分,一般只占据一行。对编译不起作用!,单行注释符,10,3.2 Verilog HDL基本结构,例3.2.2 8位计数器 module counter8 ( out,cout,data,load, cin,clk ); output 7:0 out; output cout; input 7:0 data; input load, cin,clk ; reg7:0 out; always (posedge clk) begin if(load) out = data; / 同步预置数据 else out = out + 1 + cin; / 加1计数 end assign cout = /

8、若out为8hFF,cin为1,则cout为1 endmodule,端口定义,功能描述,缩减运算符,位运算符,11,3.2 Verilog HDL基本结构,例3.2.3 2位比较器 module compare2 ( equal,a,b); output equal; input 1:0 a,b; assign equal = ( a = = b ) ? 1:0; / * 如果a等于b,则equal 为1,否则为0 * / endmodule “=”非阻塞过程性赋值:将想要赋给左式的值安排在未来时刻。不等上一个赋值完成执行下个赋值语句。 “=” 阻塞过程性赋值:按照顺序执行,前一个赋值结束才执

9、行下边的赋值语句。,连续赋值语句,条件运算符,/ * * /内表示注释部分,一般可占据多行。对编译不起作用!,多行注释符,12,3.2 Verilog HDL基本结构,例3.2.4 三态驱动器 module trist2(out,in,enable); output out; input in, enable; bufif1 mybuf(out,in,enable); endmodule,例化元件名,门元件关键字,门元件例化程序通过调用一个在Verilog语言库中现存的实例门元件来实现某逻辑门功能。,Inputs | Output IN ENABLE | OUT X 0 | Z 1 1 | 1

10、 0 1 | 0,bufif1的真值表,门元件例化,13,module trist1(out,in,enable); output out; input in, enable; mytri tri_inst(out,in,enable); endmodule module mytri(out,in,enable); output out; input in, enable; assign out = enable? in:bz; / * 如果enable为1,则out = in,否则为高阻态 * / endmodule,3.2 Verilog HDL基本结构,例3.2.5 三态驱动器,例化元件

11、名,子模块名,顶层模块,子模块,模块元件例化,模块元件例化顶层模块(trist1)调用由某子模块(mytri)定义的实例元件(tri_inst)来实现某功能。,返回逻辑功能定义,14,3.2 Verilog HDL基本结构,Verilog HDL程序是由模块构成的。每个模块嵌套在module和endmodule声明语句中。模块是可以进行层次嵌套的。 每个Verilog HDL源文件中只准有一个顶层模块,其他为子模块。 每个模块要进行端口定义,并说明输入输出端口,然后对模块的功能进行行为逻辑描述。 程序书写格式自由,一行可以写几个语句,一个语句也可以分多行写。 除了endmodule语句、beg

12、in_end语句和fork_join语句外,每个语句和数据定义的最后必须有分号。 可用/*.*/和/.对程序的任何部分作注释。加上必要的注释,以增强程序的可读性和可维护性。,总 结,15,3.2 Verilog HDL基本结构,二、Verilog HDL模块的结构 Verilog的基本设计单元是“模块 (block) ” 。 Verilog 模块的结构由在module和endmodule关键词之间的4个主要部分组成:,module block1(a,b,c,d ); input a,b,c; output d; wire x; assign d = a | x; assign x = ( b

13、& c ); endmodule,I/O说明,端口定义,功能描述,信号类型声明,1,2,3,4,16,3.2 Verilog HDL基本结构,三、逻辑功能定义 在Verilog 模块中有3种方法可以描述电路的逻辑功能: (1)用assign 语句 assign x = ( b & c );,连续赋值语句,常用于描述组合逻辑,门元件例化,模块元件例化,例化元件名,门元件关键字,(2)用元件例化(instantiate) and myand3( f,a,b,c);,注1:元件例化即是调用Verilog HDL提供的元件; 注2:元件例化包括门元件例化和模块元件例化; 注3:每个实例元件的名字必须唯

14、一!以避免与其它调用元件的实例相混淆。 注4:例化元件名也可以省略!,17,3.2 Verilog HDL基本结构,(3)用 “always” 块语句 always (posedge clk) / 每当时钟上升沿到来时执行一遍块内语句 begin if(load) out = data; / 同步预置数据 else out = data + 1 + cin; / 加1计数 end,结构说明语句,注1:“always” 块语句常用于描述时序逻辑,也可描述组合逻辑。 注2:“always” 块可用多种手段来表达逻辑关系,如用if-else语句或case语句。 注3: “always” 块语句与as

15、sign语句是并发执行的, assign语句一定要放在“always” 块语句之外!,18,3.2 Verilog HDL基本结构,Verilog HDL模块的模板(仅考虑用于逻辑综合的部分),module () ; output 输出端口列表; input 输入端口列表; /(1)使用assign语句定义逻辑功能 wire 结果信号名; assign = 表达式 ; /(2)使用always块定义逻辑功能 always () begin /过程赋值语句 /if语句 / case语句 / while,repeat,for循环语句 / task,function调用 end,19,3.2 Ver

16、ilog HDL基本结构,/ (3)元件例化 (); / 模块元件例化 (); / 门元件例化 endmodule,例化元件名也可以省略!,20,3.2 Verilog HDL基本结构,四、关键字 关键字事先定义好的确认符,用来组织语言结构;或者用于定义Verilog HDL提供的门元件(如and,not,or,buf)。 用小写字母定义! 如always,assign,begin,case,casex,else,end,for,function,if,input,output,repeat,table,time,while,wire 见数字系统设计与Verilog HDL P285附录A。,用户程序中的变量、节点等名称不能与关键字同名!,21,3.2 Verilog HDL基本结构,Verilog HDL关键字,ed

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号