- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三讲 门级建模
第三讲 门级建模 门的类型 延时 3.1 门的类型 Verilog语言通过使用预定义的逻辑门原语来支持用户进行逻辑门级设计,可直接使用,无需声明。逻辑门原语包括二大类: 与/或门类(and/or) 缓冲/非门类(buf/not) 1.与/或门类 2.缓冲/非门类 3.带控制端的缓冲/非门 Verilog有四种带控制端的缓冲/非门 这四种基本单元只能有三个引脚:output, input, enable 这些单元由enable引脚使能。 当条件基本单元使能信号无效时,输出高阻态。 实例调用 真值表 4.实例数组(Array of Instances) 许多情况下,需要对某类门进行多次调用,这些门的区别仅在于它们的输入和输出分别连接在不同的矢量位上。可以通过实例数组来简化这类调用,语法为: 模块名字 实例名字 范围 (端口); 实例数组(Array of Instances)(续) 如果范围中MSB与LSB相同,则只产生一个实例。 一个实例名字只能有一个范围。 5.设计实例 3.2 门的延迟 1.定义门从任何输入信号到输出信号的信号传输延时,分为三类: 上升时延:输入变化,输出从0,x,z?1 下降时延:输入变化,输出从1,x,z?0 截止时延:输入变化,输出由1,0,x ?z 例1:not #3 N1(QN, Q); 三种延时都为3 例2:nand #(4,5) (Out, In1, In2); 上升时延为4,下降时延为5,转换到z的时延为两者的最小值4 例3:notif1 #(2,8,6) (Dout,Din,Ctrl); 上升时延为2,下降时延为8,截止时延为6,转换到x的时延为三者的最小值2 2.Timescale `timescale 说明时间单位及精度 格式:`timescale time_unit / time_precision 如:`timescale 1 ns / 100 ps time_unit: 延时或时间的测量单位 time_precision: 延时值超出精度要先舍入后使用 `timescale必须在模块之前出现 `timescale 1 ns / 10 ps // All time units are in multiples of 1 nanosecond module MUX2_1 (out, a, b, sel); output out; input a, b, sel; not #1 not1( sel_, sel); and #2 and1( a1, a, sel_); and #2 and2( b1, b, sel); or #1 or1( out, a1, b1); endmodule Timescale time_precision不能大于time_unit time_precision和time_unit的表示方法:integer unit_string integer : 可以是1, 10, 100 unit_string: 可以是s(second), ms(millisecond), us(microsecond), ns(nanosecond), ps(picosecond), fs(femtosecond) 以上integer和unit_string可任意组合 precision的时间单位应尽量与设计的实际精度相同。 precision是仿真器的仿真时间步。 若time_unit与precision_unit差别很大将严重影响仿真速度。 如说明一个`timescale 1s / 1ps,则仿真器在1秒内要扫描其事件序列1012次;而`timescale 1s/1ms则只需扫描103次。 如果没有timescale说明将使用缺省值,一般是ns。 Timescale 所有timescale中的最小值决定仿真时的最小时间单位。 这是因为仿真器必须对整个设计进行精确仿真 在下面的例子中,仿真时间单位(STU)为100fs `timescale 1ns/ 10ps module1 (. . .); not #1.23 (. . .) // 1.23ns or 12300 STUs . . . endmodule `timescale 100ns/ 1ns module2 (. . .); not #1.23 (. . .) // 123ns or 1230000 STUs . . . endmodule `timescale 1ps/ 100fs module3 (. . .); not #1.23 (. . .) //
文档评论(0)