时钟与复位策略

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

时钟策略

1.在设计中尽量减少分频时钟的数量;如必须划分多个时钟域,应尽量减少不同时钟域之间的耦合。

2.大规模高速数字IC电路使用同一时钟沿触发和采样。

3.尽量不要使用门控时钟。

门控时钟产生电路建议采用下面的电路

复位策略

1.Synchronous reset

module sync_resetFFstyle (q, d, clk, rst_n);

output q;

input d, clk, rst_n;

reg q;

always @(posedge clk)

if (!rst_n) q <= 1'b0;

else q <= d;

endmodule

同步复位后加一级触发器

module badFFstyle (q2, d, clk, rst_n);

output q2;

input d, clk, rst_n;

reg q1, q2;

always @(posedge clk)

if (!rst_n) q1 <= 1'b0;

else begin q1 <= d; q2 <= q1; end endmodule

module goodFFstyle (q2, d, clk, rst_n); output q2; input d, clk, rst_n; reg q1, q2;

always @(posedge clk) if (!rst_n) q1 <= 1'b0; else q1 <= d; always @(posedge clk) q2 <= q1; endmodule

1 or 0

Resetn Clk

Resetn_Syn

Q1t1

t2

优点:

A :保证电路100%同步。

B :保证reset 在时钟的有效沿发生,可以滤除reset 上毛刺。

C :在一些设计中,reset 信号是由内部中间逻辑产生的,这时也推荐采用同步reset ,来滤除处于时钟周期之间的毛刺。

缺点:

A :并不是所有的ASIC libraries 都有内建同步reset ,这样reset 复位在触发器的外部被

综合,额外的门和连线会增加延时。

B:同步reset需要保证reset的宽度(来保证在时钟有效沿到来时,reset信号是存在的)。

C: 必须需要时钟来reset,在使用门控时钟进行低功耗设计时,如果时钟在reset有效时已经被disable掉,则无法进行同步复位。

2.Asynchronous reset

module async_resetFFstyle (q, d, clk, rst_n);

output q;

input d, clk, rst_n;

reg q;

always @(posedge clk or negedge rst_n)

if (!rst_n) q <= 1'b0;

else q <= d;

endmodule

优点:

A:数据通道的延时短,不需要增额外的门和线延时。

B:无需时钟就可以完成reset功能。

缺点:

A:异步reset在时钟有效沿处发生,则会导致芯片发生不定态而无法复位。

B:异步reset容易受毛刺影响而导致错误的复位信息。

C:关于reset recovery time,规定在时钟有效沿到来之前,reset de-asserting的最小时间。

3. 推荐的做法

硬复位:通过芯片外部引脚施加的复位激励信号。(通常为异步复位端) 软复位:由电路内部状态或者配置寄存器产生的复位信号。(通常为同步复位)

always @(posedge Clk or negedge Resetn_hw_syn)

if(~Resetn_hw_syn) Q <= 1’b0; else if(Reset_sw) Q <= 1’b0; else

Q <= ….

Clk D1

异步复位信号应先经过同步,利用了同步和异步reset 的优点。

"1"

Clk Resetn_Syn

Resetn

module async_resetFFstyle2 (

output reg rst_n,

input clk, asyncrst_n);

reg rff1;

always @(posedge clk or negedge asyncrst_n)

if (!asyncrst_n) {rst_n,rff1} <= 2'b0;

else {rst_n,rff1} <= {rff1,1'b1};

endmodule

在多时钟设计中,每个时钟域都要使用reset同步化电路。

顺序复位

去毛刺

always @ (posedge clk-i)

{rst-dly3, rst-dly2, rst-dly1} <= {rst-dly2, rst-dly1, rst-n};

always @ (posedge clk-i)

rst-n-noglith <= rst-dly3 | rst-dly2 | rst-dly1;

Clock Tree / Reset Tree

综合时插入缓冲单元

后端布局布线时插入缓冲单元

相关文档
最新文档