门级建模

 

学习目标

学习Verilog提供的门级原语

理解门的实例引用、门的符号以及and/or,buf/not类型的门的真值表

学习如何根据电路的罗技图来生成Verilog描述

讲述门级设计中的上升、下降和关断延迟

解释门级设计中的最小、最大和典型延迟

 1.门的类型

1.1与门(and)和或门(or)

具有一个标量输出端和多个标量输入端。端口列表中的第一个端口必定是输出端口,其后为输入端

可以使用的属于与/或门类的其他门的术语包括:

and(与门) or(或门) xor(异或门) nand(与非门) nor(或非门) xnor(同或门)

 

 

wire OUT,IN1,IN2;
//基本门的实例引用
and a1(OUT,IN1,IN2);
nand na1(OUT,IN1,IN2);
or or1(OUT,IN1,IN2);
nor nor1(OUT,IN1,IN2);
xnor nx1(OUT,IN1,IN2);

//输入端超过两个,三输入端的与非门
nand na1_3inp(OUT,IN1,IN2,IN3);

//实例引用门时,不给实例命名
and(OUT,IN1,IN2);//合法的门实例引用

 

基本门的真值表

and01xz
00000
101xx
x0xxx
z0xxx

 

nand01xz
01111
110xx
x1xxx
z1xxx

 

or01xz
001xx
11111
xx1xx
zx1xx

 

nor01xz
010xx
10000
xx0xx
zx0xx

 

xor01xz
001xx
110xx
xxxxx
zxxxx

 

xnor01xz
010xx
101xx
xxxxx
zxxxx

1.2缓冲器/非门

buf/not门具有一个标量输入和多个标量输出。

 缓冲门(buf)/非门(not)

输入端口必须是在实例端口列表的最后一个。

//基本门的实例引用
buf b1(OUT1,IN);
not n1(OUT1,IN);

//输出端多余两个
buf b1_2out(OUT1,OUT2,IN);

//实例引用门时,不给实例命名
not (OUT1,IN );//合法的门实例引用
    

 真值表

bufinout
 00
 11
 xx
 zz

 

notinout
 01
 10
 xx
 zx

带控制端的缓冲器/非门(bufif/notif)

Verilog提供了其他4个带有控制信号端口的buf/not门

bufif1 bufif0 notif1 notif0

真值表

  ctrl
 bufif101xz
in0z0LL
1z1HH
xzxxx
zzxxx

 

  ctrl
 bufif001xz
in00zLL
11zHH
xxzxx
zxzxx

 

  ctrl


 notif101xz
in0z1HH
1z0LL
xzxxx
zzxxx

 

  ctrl

 notif001xz
in01zHH
10zLL
xxzxx
zxzxx

2.门延迟

2.1上升、下降、关断延迟

上升延迟

门的输出从0,x,z变化为1所需的时间称为上升延迟。

下降延迟

门的输出从1,x,z变化为0所需的时间

关断延迟

关断延迟是指门的输出从0,1,x变化为z所需的时间

PS如果值变化到不确定值x,则所需的时间可以看成是以上三种延迟值中最小的那个。

延迟值说明的类型

//以下三种延迟都等于delay_time所表示的延迟时间
and #(delay_time) a1(out,i1,i2);

//说明上升延迟和下降延迟
and #(rise_val,fall_val) a2(out,i1,i2);

//说明上升延迟,下降延迟和关断延迟
bufif0 #(rise_val,fall_val, turnoff_val) b1(out,in,control);

2.2最小/典型/最大延迟

//一个延迟
//若最小延迟=4
//若典型延迟=5
//若最大延迟=6
and #(4:5:6) a1(out,i1,i2);

//两个延迟
//若最小延迟,上升延迟=3,下降延迟=5,关断延迟=min(3,5)
//若典型延迟,上升延迟=4,下降延迟=6,关断延迟=min(4,6)
//若最小延迟,上升延迟=5,下降延迟=7,关断延迟=min(5,7)
and #(3:4:5,5:6:7) a2(out,i1,i2);

//三个延迟
//若最小延迟,上升延迟=2,下降延迟=3,关断延迟=4
//若最小延迟,上升延迟=3,下降延迟=4,关断延迟=5
//若最小延迟,上升延迟=4,下降延迟=5,关断延迟=6
and #(2:3:4,3:4:5,4:5:6) a3(out,i1,i2);

//启动仿真器,使用最大延迟进行仿真
>verilog test.v +maxdelays

//启动仿真器,使用最小延迟进行仿真
>verilog test.v +mindelays

//启动仿真器,使用典型延迟进行仿真
>verilog test.v +typedelays

 

转载于:https://www.cnblogs.com/fxygrzb/p/5936782.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值