西电verilog课件05

上传人:E**** 文档编号:104283492 上传时间:2019-10-08 格式:PDF 页数:31 大小:312.34KB
返回 下载 相关 举报
西电verilog课件05_第1页
第1页 / 共31页
西电verilog课件05_第2页
第2页 / 共31页
西电verilog课件05_第3页
第3页 / 共31页
西电verilog课件05_第4页
第4页 / 共31页
西电verilog课件05_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《西电verilog课件05》由会员分享,可在线阅读,更多相关《西电verilog课件05(31页珍藏版)》请在金锄头文库上搜索。

1、1 第五章结构描述第五章结构描述 2 5.1 结构描述方式结构描述方式 顶层模块 模块A模块B模块C A1A2A3B1B2C1C2 硬件电路在经过Verilog建模后将表现为分层次 的、相互联系的一组模块。 3 5.1 Verilog HDL对硬件系统的描述从顶层结构 上看是由组成系统的多个不同功能模块(称为 module)相互连接而成。 Verilog HDL的结构描述忠实地将图形方式 的连接关系转变为相应的文字表达。 4 5.1 top MUX counter module top() MUX U0() counter U1() . endmodule module MUX() . . .

2、 endmodule module counter() . endmodule 模块调用实现的是硬件电路的复制过程 5 5.1 ? 模块级结构描述(模块级建模) ? 门级结构描述(门级建模) ? 开关级结构描述(开关级建模) 6 5.2 模块级建模模块级建模 复习模块定义 module (端口名列表); 模块端口说明; 参数定义; 数据类型说明; 连续赋值语句; 过程块; 任务定义; 函数定义; specify块; endmodule input、output、inout wire、reg、time、integer、real parameter assign initial、always ta

3、sk function 7 5.2 一、模块调用形式 ? 调用形式 模块名 调用名 (端口名表项);模块名 调用名 (端口名表项); 模块名模块名是指在module定义中给定的模块名; 参数值列表参数值列表是可选项,将列表中的参数值传递给被调用模块实例中的各 个参数 调用名调用名则是指模块名所标志的模块被调用到当前模块后所赋给的名称。 带路径的调用名称为分级名 端口名表项端口名表项是指与被调用模块实例各端口相连的外部信号 8 5.2 二、模块的多次调用形式 模块名 调用名 (端口名表项), 调用名 (端口名表项), 模块名 调用名 (端口名表项), 调用名 (端口名表项), 调用名 (端口名表

4、项); 调用名 (端口名表项); 9 5.2 三、模块调用时的端口对应方式 net net netnetreg或netreg或net inout input output 10 5.2 ?位置对应调用法;位置对应调用法; ?端口名对应调用法;端口名对应调用法; ?存在不连接端口的调用方式;存在不连接端口的调用方式; 11 5.2 实例 module comp(out_port1, out_port2, in_port2); output out_port1, out_port2; input in_port1, in_port2; endmodule 12 5.2 (1)位置对应调用法 mod

5、ule demo_top1; comp gate1(Q,R,J,K); endmodule 将模块定义时的端口名对应地 用与之相 连的信号线名称所 替代 ,调用时端口名表项必须 与模块定义时的端口名表项一 一对应 13 5.2 (2)端口名对应调用法 module demo_top2; comp gate2 ( .in_port(K), .out_port1(Q), .out_port2(R), .in_port1(J) ); endmodule 直接表示定义-调用间的对应 关系,表示方式为: .定义时的端口名(调用时与 之相连的信号名) .定义时的端口名(调用时与 之相连的信号名) 调用时端

6、口名的排列顺序可以 随意改变 14 5.2 (3)存在不连接端口的调用方式 module demo_top3; comp gate3(Q, , J, K); endmodule 不连接的端口位置必须 空出,逗号不能缺省 15 5.2 ? 顶层模块:分级名就是模块名 ? 非顶层模块:分级名是调用时带有绝对路径的“调用 名”。除模块外,任务、函数、有名块都构成一个新 的层次并将在分级名中出现,形成一个树状分级结 构 四、分级名 16 5.2 ? 实例 module bottom(in); input in; always (posedge in) begin: keep reg hold; hol

7、d=in; end endmodule module middle(stim1,stim2); input stim1,stim2; bottom amod(stim1), bmod(stim2); endmodule module top; reg stim1,stim2; middle a(stim1,stim2); endmodule 模块名:top top.a top.a.amodtop.a.bmod 有名块名:top.a.amod.keep top.a.bmod.keep 信号线名:top.stim1 top.a.stim1 top.a.stim1 top.a.amod.keep.h

8、old 17 5.2 五、在模块调用时对参数的修改 可参数化设计的好处一是提高可读性,二是一 个模块多种用途,如设计一个参数化的四位加 法器,调用时改变一下参数就可以实现任意位 的加法器。 ? 使用带有参数值的模块实例语句 ? 使用参数重定义语句(defparam语句) 18 5.2 (1)使用带有参数值的模块实例语句 参数值列表格式: (, ,(, , , ), ) module demo_para (out, in1, in2); /被调用的参数化模块 parameter p1=8, p2=9, p3=10; endmodule module top_direct(); /调用模块 dem

9、o_para #(4,5,6) g1(out, in1, in2);/将demo_para模块中定义的p1、 /p2、p3值直接改写为4、5、6,并用于g1模块 endmodule 19 5.2 注意: ? 参数值列表中各个参数值的排列次序必须与被调用模块中 各个参数的说明次序保持一致;同时参数的个数也必须相 同; ? 在只希望对调用模块内的个别参数进行更改的情况下,所 有无需更改的参数值也必须按对应参数的顺序在参数值列 表中全部列出(照抄原值); 20 5.2 (2)使用参数重定义语句(defparam语句) 语法形式: defparam , , defparam , , . , . , 采

10、用参数重定义语句defparam,它的好处是可以在任 何地方完成对特定模块参数的改写,因为它的参数名 (如下例中的g1.p1)是分级名。 21 5.2 module top_defparam(); /调用模块 demo_para g1(out,in1,in2); defparam g1.p1=4, g1.p2=5, g1.p3=6;/将p1、p2、p3的值直接 /改写 为4、5、6 endmodule 22 5.2 六、阵列调用方式 在数据通道设计中,同一功能单元构成一个阵列的描 述: 模块名调用名阵列大小 (端口名表项); 23 5.2 【实例】由四个基本门bufifo构成的缓冲器阵列 mo

11、dule demo_driver(in, out, enable); input 3:0 in; input enable; output 3:0 out; bufifo array_buf0 (out0, in0, en), array_buf1 (out1, in1, en), array_buf2 (out2, in2, en), array_buf3 (out3, in3, en); endmodule module demo_driver(in, out, enable); input 3:0 in; input enable; output 3:0 out; /阵列描述 bufif

12、o array_buf 3:0 (out, in, en); endmodule 普通描述法阵列描述法 24 5.3 门级建模门级建模 ? 门级建模致调用Verilog内部定义的“基本门级元件 (Basic Gate Level Primitives)”来对硬件电路 进行结构描述; ? VeilogHDL将采用的基本逻辑门单元内含到语言 内部,称为基本门级元件,共计14种,设计时只 需调用即可完成相 应的逻辑功能。 25 5.3 一、内置基本门级元件 下拉电阻pulldown 门名 (输出) 上拉电阻pullup 低电平使能非门notif0 高电平使能非门notif1 低电平使能缓冲门bufi

13、f0 门名 (输出,输入, 使能控制端) 高电平使能缓冲门bufif1 使能门 非门not 多个输出,一 个输入 门名 (输出1,输出2 ,输入) 缓冲门buf 多输出门 异或非门xnor 异或门xor 或非门nor 与非门nand 或门or 一个输出,多 个输入 门名 (输出,输入1, 输入2,) 与门and 多输入门 备注表示法意义名称类别 26 5.3 二、基本门调用形式 模块名模块名(对1的驱动强度,对0的驱动强度) (门级延时) 调用名 (端口名表项);调用名 (端口名表项); 27 5.3 ? 说明 基本门级延时是指从门的输入端发生变化到输出端发生变 化的门传输延时; assign

14、语句的延时是指赋值表达式右端的变化反映到左端 连线上的信号发生变化的延迟时间; 连线延时是指信号在连线上的传输延时。 28 5.3 ? 门级延时基本形式 d 或 #(d1, d2) 或 #(d1,d2,d3) d1为上升(转移到1)延时; d2为下降(转移到0)延时; d3为关断(转移到z)延时; 均为数值,单位由timescale确定。#d意为d1=d2=d3=d。对于其它 转移情形,可参见下表 d3min(d1, d2)z min(d1, d2, d3)min(d1, d2)x0、1、x、z #(d1, d2, d3)表示法#(d1, d2)表示法转移后状态转移前状态 29 5.3 例:a

15、nd #(3, 2) (out, in1, in2); in1 in2 out 32 t t t 1 30 5.3 例:bufif1 #(3, 4, 7) (out, in ctrl); in 1 ctrl out t t t Z 3437 31 5.3 ? 驱动强度指基本门级元件输出端的驱动强度。考虑到一条 连线可能由多个前级输出所驱动,各驱动端驱动强度的不 同,将直接影响连续最终的逻辑状态。 ? 驱动强度的级别: 对1驱动supply1 strong1 pull1 weak1 对0驱动supply0 strong0 pull0 weak0 pullup只需对1驱动,pulldown只需对0

16、驱动 缺省值(strong0,strong1) 32 5.3 ? 当两个 driven strength不同的 net 相连时,会以 strength level 较高的 net 输出为结果。 Pull 1 Strong 0 Supply 1 Large 1 Strong 0 Supply 1 33 5.3 ? 例1四选一多路选择器 34 5.3 module mux4_to_1(out, i0,i1, i2, i3, s1, s0); output out; input i0,i1, i2, i3, s1, s0; /门级实例引用 not (s1n, s1); not (s0n, s0); and (y0, i0, s1n, s0n); and (y1, i1, s1n, s0); and (y2, i2, s1, s0n); and (y3, i3,

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

最新文档


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

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