大型设计全局复位—异步复位同源释放

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

在一个FPGA项目设计之初,全局网络的建立至关重要,其中包括时钟网络和复位网络。而通常设计者对时钟网络的规划尤为小心,可却忽视了复位网络,这个复位跟时钟一样也是一个覆盖全局、高扇出的信号,如果处理不当也会导致意想不到的错误。很多人会问,到底复位信号选择同步还是异步、高电平还是低电平有效?对于这个问题,下文做了论述:

异步or 同步?

以下是同步、异步复位的Verilog和VHDL代码:

// 同步复位(Verilog)

always@(posedge clk)

if(rst)

begin

a<=1’b0;

end

else

begin

a<=b;

end

--同步复位(VHDL)

process(clk,rst)

begin

if clk’event and clk=’1’ then

if rst=’1’ then

a<=’0’;

else

a<=b;

end if;

end if;

end process;

// 异步(Verilog)

always@(posedge clk or posedge rst)

if(rst)

begin

a<=1’b0;

end

else

begin

a<=b;

end

--异步复位(VHDL)

process(clk,rst)

begin

if rst=’1’ then

a<=’0’;

7系列FPGA设计时推荐使用高电平有效的复位。

图2

选择高还是低,需要根据具体的电平标准、器件结构来选择,并不是一概而论低电平有效的好或者高电平有效的好。

注:另外在设计中复位信号有时可能出现一些问题。

1. 如果在一个设计的顶层定义了一个异步复位信号,而为了减小高扇出的影响,可以将这个复位信号分配到全局布线资源上。

但是有些情况下,使用全局复位信号可能导致recovery和removel时序问题。如图4所示使用级联复位结构,将异步复位信号同步释放,根据模块进行分区,在每个分区内再级联同步释放结构,这样可以降低复位信号的扇出,从根本性上解决了问题。

图4

2. 往往在一个大系统中有多个时钟,是否需要为每个时钟域分配一个复位?如果只有一个全局复位,当然在这种情况下肯定是异步复位,它与系统中所有时钟都没有关系,并且必须满足所有时钟域的时序要求,同时满足所有时钟域的recovery和removel时序在某些情况下就不是那么容易了,因此为每个时钟分

配复位是有必要的,如图5所示,此结构使用了一个全局复位,在不同时钟域分别对其进行同步,这样满足所有时钟域的时序应该是轻松些了。

图5

参考文献:

Clifford E. Cummings, Asynchronous & Synchronous Reset Design Techniques

Xilinx White Paper, WP272 Get Smart About Reset: Think Local, Not Global Xilinx User Guide, 7 Series FPGAs Configurable Logic Block

相关文档
最新文档