1分钟搞懂 Verilog时延

verilog中有时延功能,用于模拟电路中信号传播延迟的关键特性,时延不可综合,常用于仿真测试激励中。

今天分享下Verilog中的时延概念、类型及其在实际设计中的应用。

一、Verilog时延基础

1、时延的定义


时延在Verilog中用于模拟信号在电路中的传播延迟。它对于确保设计满足时序要求和性能标准至关重要。


2、时延的表示


Verilog中的时延可以通过两种主要方式表示:延迟声明和延迟语句。


(1)延迟声明

在模块或过程的开头使用 # 符号声明一个全局延迟,例如 #5 表示一个5个时间单位的延迟 。


(2)延迟语句

在赋值语句中使用 # 来指定延迟,如 #10 value = input; 表示在接收到 input 信号后,经过10个时间单位将值赋给 value 。

正规延迟: 

# 符号位于等号之外,如 #5 C = A + B; ,表示在当前时刻后等待5个时间单位再计算右侧表达式的值 。


内定延迟: 

# 符号位于等号之内,如 C = #5 A + B; ,表示先计算右侧表达式的值,然后等待5个时间单位后赋值给C 。


二、Verilog时延类型


1、连续赋值时延


以下是三种不同的连续赋值时延的写法示例:

// 普通时延
wire Z, A, B;
assign #10 Z = A & B; // A和B的与运算结果延时10个时间单位赋值给Z

// 隐式时延
wire A, B;
wire #10 Z = A & B; // Z的声明中包含了10个时间单位的时延

// 声明时延(不推荐)
wire A, B;
wire #10 Z;
assign Z = A & B; // 所有对Z的连续赋值都会延迟10个时间单位

2、惯性时延


惯性时延是指在信号脉冲宽度小于指定时延时,输出不会对该脉冲做出响应。

以下是惯性时延的代码示例:

module time_delay_module(
    input ai, bi,
    output so_lose, so_get, so_normal
);

assign #20 so_lose = ai & bi; // 延迟20个时间单位
assign #5 so_get = ai & bi; // 延迟5个时间单位
assign so_normal = ai & bi; // 无延迟

endmodule

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值