问题引出:verilog中连续赋值延时语句中的延时,用于控制任意操作数发生变化到语句左端赋予新值之间的时间延时。时延一般是不可综合的。3.2 Verilog 时延 | 菜鸟教程
1、综合介绍
在 Verilog 或硬件描述语言(HDL)中,"综合 "(Synthesis)是指将用高级抽象语言(如 Verilog 或 VHDL)描述的行为级或寄存器传输级(RTL)设计 ,转换为具体的门级实现的过程。换句话说,综合工具会将 HDL 描述的逻辑功能映射到硬件结构(如与门、或门、触发器等),并生成一个可实现的硬件电路。
综合的具体含义
- 行为描述到硬件实现的映射 :
- 在 HDL 中,你可以用高级描述(如
always
块、连续赋值语句等)来定义电路的行为,而不必关心底层硬件的具体实现。 - 综合工具会根据这些描述,分析出逻辑功能,并将其转换为具体的硬件电路。
- 在 HDL 中,你可以用高级描述(如
- 优化和资源分配 :
- 综合工具会优化电路,例如减少门电路的数量、降低功耗、提高速度等。
- 同时,它会根据目标硬件(如 FPGA 或 ASIC)的资源限制,分配逻辑单元和寄存器。
- 生成网表(Netlist) :
- 综合的最终输出是一个网表文件,描述了硬件电路中各个逻辑单元(如门、触发器)之间的连接关系。
- 这个网表可以用于后续的布局布线(Place & Route)和生成比特流文件(如 FPGA 的配置文件)。
为什么延时语句(如 #10
)是不可综合的?
延时语句(如 #10
)在仿真中用于模拟时间延迟,但它描述的是行为上的延迟,而不是硬件中的实际物理延迟。综合工具无法将这种行为描述映射到具体的硬件电路,因为:
- 硬件中没有"时间延迟"的概念 :
- 在硬件中,延迟通常由信号的传播路径(如门电路的延迟、布线的延迟)决定,而不是通过编程指定。
- 延时语句只是仿真工具为了模拟时间行为而引入的,与实际硬件无关。
- 综合工具需要明确的逻辑关系 :
- 综合工具需要知道信号之间的逻辑关系(如与、或、非等),以便生成硬件电路。
- 延时语句没有提供逻辑关系,只是描述了时间上的延迟,因此无法被综合。
- 目标硬件不支持延时控制 :
- 无论是 FPGA 还是 ASIC,都不支持通过编程指定延时。硬件的延迟是由物理特性决定的,而不是通过代码控制的。
总结
- 综合是将 HDL 描述的行为或逻辑功能,转换为具体硬件电路的过程。
- 延时语句(如
#10
)是不可综合的,因为它们描述的是仿真中的时间行为,而不是硬件中的逻辑关系。 - 在实际硬件设计中,如果需要控制延迟,应该通过时钟周期、计数器或专用延迟电路(如 PLL)来实现,而不是通过延时语句。
2、时间单位介绍:
1. 定义与换算关系
单位 | 符号 | 英文全称 | 换算关系 |
---|---|---|---|
秒 | s | second | 基准单位 |
毫秒 | ms | millisecond | 1 ms = 10⁻³ s = 0.001 s |
纳秒 | ns | nanosecond | 1 ns = 10⁻⁹ s = 0.000000001 s |
皮秒 | ps | picosecond | 1 ps = 10⁻¹² s = 0.000000000001 s |
2. 相邻单位的进率
- 1 秒(s) = 1,000 毫秒(ms)
- 1 毫秒(ms) = 1,000,000 纳秒(ns)
- 1 纳秒(ns) = 1,000 皮秒(ps)
3. 应用场景
- 秒(s):日常时间计量(如 10 秒、1 分钟 = 60 秒)。
- 毫秒(ms):计算机响应时间、音频采样率(如 44.1 kHz 采样率对应每采样点 ≈ 22.7 微秒)。
- 纳秒(ns):高速数字电路、CPU 时钟周期(如 1 GHz 时钟周期 ≈ 1 ns)。
- 皮秒(ps):超高速电子学、光通信(如光纤中光传播 1 毫米 ≈ 3.3 皮秒)。