系列文章目录
芯动力——硬件加速设计方法学习笔记(第一章)概述
芯动力——硬件加速设计方法学习笔记(第二章)高质量VerilogHDL描述方法(1)(常见语法对应硬件结构)
芯动力——硬件加速设计方法学习笔记(第二章)高质量VerilogHDL描述方法(2)(考虑面积、功耗、时延等)
芯动力——硬件加速设计方法学习笔记(第二章)高质量VerilogHDL描述方法(3)(RTL设计指导原则)
文章目录
前言
打卡学习第四天,坚持就是胜利!
一、同步电路和异步电路
1、同步电路定义
即电路中的所有受时钟控制的单元(触发器、寄存器),全部由一个统一的全局时钟控制
2、同步电路优点和缺点
(1)EDA工具可以保证电路的时序收敛,有效避免了电路设计中竞争冒险现象
(2)由于触发器在时钟边缘才改变,很大程度上减小了整个电路受到毛刺和噪声的影响
缺点:由于是一个全局时钟,所以需要构建时钟网络/时钟树。触发器距离时钟的远近距离造成了时钟偏移和时钟抖动等,同时缓冲器的存在使得芯片面积和功耗增加
3、异步电路定义
区别:电路的数据传输可以在任意时刻发生,电路中没有一个全局或局部的控制时钟
4、异步电路优缺点
补充(很重要!!!)
建立时间Tsu (set up time):时钟上升沿来临之前,数据保持稳定的时间,使得触发器能够锁存住数据
保持时间Th (hold time):时钟上升沿来临之后,数据保持稳定的时间
输出延迟时间Tco (clock output delay):clk触发到输出信号有效之间的最大延迟时间
判断violation:看实际的数据的建立时间和保持时间要大于clk的Tsu和Th
3、同步复位和异步复位
参考链接
#同步复位,复位信号要时钟信号有效才可以
always @ (posedge clk) begin
if (!rst_n)
data_out <= 1'b0;
else
data_out <= data_in;
end
#异步复位,复位信号优先级很高,有效就直接复位
always @ (posedge clk or negedge rst_n)
if (!rst_n)
data_out <= 1'b0;
else
data_out <= data_in;
同步复位
优点:有利于时序分析和仿真、过滤掉毛刺
缺点:消耗掉组合逻辑资源
异步复位
优点:设计简单、节约资源、库中触发器自带异步复位端
缺点:易受毛刺影响、亚稳态
4、当异步复位信号的撤销时间在Trecovery(恢复时间)和Tremoval(移除时间)之间时,输出结果就会出现亚稳态,造成复位失败
释放沿必须在时钟沿前面提前recovery time释放,或者在时钟沿后removal time之后释放
Trecovery(恢复时间):控制信号在下一个时钟沿到来之前,变无效的最小时间长度
Tremoval(移除时间):在“有效时钟沿”之后变无效的最小时间长度
Tmet:亚稳态振荡时间
(如果你想让某个时钟沿起作用,那么你就应该在“恢复时间”之前使异步控制信号变无效,如果你想让某个时钟沿不起作用,那么你就应该在“去除时间”过后使控制信号变无效。如果你的控制信号在这两种情况之间,那么就没法确定时钟沿是否起作用或不起作用了,也就是说可能会造成寄存器处于不确定的状态。而这些情况是应该避免的。所以恢复时间和去除时间是应该遵守的。)
5、异步复位同步释放
目的:防止异步复位信号 release 释放时出现亚稳态现象
为了防止亚稳态的出现,将rst_n信号用DFF向后延一周期,外部复位信号不会在出现释放时与clk信号竞争,整个系统将与全局时钟clk信号同步
always@(posedge clk or negedge rst_n) begin
if(!rst_n) begin
q1 <= 1'b0;
q2 <= 1'b0;
end
else begin
q1 <= 1'b1;
q2 <= q1;
end
end
assign rst_syn = q2;
always@(posegde clk or negedge q2)begin
if(!q2)
q3 <= 1'b0;
else
q3 <= data_in;
end
二、亚稳态
1、亚稳态定义
亚稳态一般发生在异步电路和跨时钟域传播过程中
触发器在规定时间内无法达到一个确定状态
2、亚稳态参数:故障间隔平均时间MTBF
故障间隔平均时间MTBF(Mean Time Between Failure):衡量一个产品(尤其是电器产品)的可靠性指标
3、解决方法
(1)双锁存器电平同步器(慢时钟域到快时钟域)
优点:结构简单、易于实现、面积消耗较少
缺点:增加了两个触发器的延时
条件:适合于慢时钟域到快时钟域
三级以及更多级可以使亚稳态发生的概率降低更多,但是电路延时也会增加
该方法只是降低发生概率,不能从根本上进行去除
(2)边沿检测同步器(慢时钟域到快时钟域)
边沿检测原因:慢时钟的一个周期信号在快时钟看来就是几个信号周期,所以检测边沿是最合理的,检测边沿的上升或者下降。
适用条件: 输入数据宽度 > 一个接受时钟周期+Th(最安全的是两个接受时钟周期)
Output = A & ~B
(3)脉冲同步器(快时钟域到慢时钟域)
在慢时钟域去采样快时钟域信号,可能会采样不到,所以采用翻转电路
翻转电路:将快时钟域前后间隔多个周期的信号进行标定,形成了toggle的波形
Output = A ^ B
4、三种同步器比较
三、简答题
1、CDC跨时钟域检查的工具
可以使用EDA工具;业界三大EDA公司Synopsys, Cadence, Mentor都有各自的CDC工具:Synopsys Spyglass CDC, Cadence Conformal Constraint Designer, Mentor Questa,其中以Synopsys公司的Spyglass CDC最为常用,市场占有率最高。
2、同步复位也会产生亚稳态吗?
当复位信号的撤销时间在建立时间和保持时间以内时,也会产生亚稳态。
概率=(set-time + hold-time)/周期
频率越高,发送亚稳态的概率越大,因此要减小亚稳态发送的概率,要减小工作频率或者set-time 和hold-time(更好的FPGA工艺)