赛灵思
直播中

李德鹏

7年用户 205经验值
私信 关注
[问答]

为什么SRL16不适合成为同步器?

大家好,
我总是使用SRL16作为输入同步器。
但是最近我读了这篇文章:http://forums.xilinx.com/t5/Inmplementation/SRL16-as-a-synchronizer-again/m-p/144806/highlight/true#M3022并看到这个:
SR16不是一系列主从触发器,因此它们的亚稳态分辨率根本不会很好。
实际上,它们可能是异步使用的错误选择
信号同步器!
我不明白为什么SRL16不适合成为同步器并且想要确保信息是真的。
(如果这是真的,我需要通过添加(* KEEP =“TRUE”*)来纠正我的所有设计。或者... ... ... ...
在这篇文章(https://groups.google.com/forum/ ... ch.fpga/5xSMNecxMDI)中,奥斯汀说:
SR16不是一系列主从触发器,因此它们的亚稳态分辨率根本不会很好。
事实上,它们可能是用作异步信号同步器的错误选择!
SRL16更像是一个内部有两个时钟相位的电荷传输链(桶式旅)。
这将使它在所有16个阶段中保持亚稳状态.....(当它从一个阶段转移到下一个阶段时)。
电荷转移链是什么意思?
我在网上找不到它......
谢谢!
BR,
王天东

以上来自于谷歌翻译


以下为原文

Hi all,
I always use SRL16 as input synchronizer. But recently I read this post http://forums.xilinx.com/t5/Impl ... ighlight/true#M3022 and see this:

The SR16 is not a chain of master slave flip flops, so their
metastability resolution is not going to very good at all.  In fact,
they may be exactly the wrong choice to use as asynchronous
signal synchronizers!

I don't understand why SRL16 is not good to be synchronizer and want to make sure that infomation is true. (I need to correct all my designs by adding (*KEEP = "TRUE"*) if it's true.   orz...crying...)

And in this post (https://groups.google.com/forum/ ... ch.fpga/5xSMNecxMDI), Austin says:

The SR16 is not a chain of master slave flip flops, so their
metastability resolution is not going to very good at all.  In fact,
they may be exactly the wrong choice to use as asynchronous signal
synchronizers!
The SRL16 is more like a charge transfer chain with two clock phases
internally (bucket brigade).  That would make it preserve a metastable
state through all 16 stages.....(as it transferred from one stage to the
next).

What does charge transfer chain mean? I can't find it on the web...

Thanks!

BR,
Tiandong Wang

回帖(5)

李英灿

2019-7-25 09:46:47
谢谢Eilert!

以上来自于谷歌翻译


以下为原文

Thank you Eilert!
举报

潘晶燕

2019-7-25 09:58:21
T,
SRL16并非设计为同步器。
也就是说,它不一定是坏的,但是可能需要更多的阶段才能使亚稳态事件的概率低于使用同步器指令(以最小延迟最佳地放置DFF)。
用于同步器的两级DFF,具有概率x,通过添加另一级,一个获得x ^ 2。
添加另一个阶段,一个获得x ^ 3(等等)。
也许最佳同步器使用CLB DFF作为第一阶段,然后是快速路径,到SRL16。
有些人认为这比现有的同步器指令解决方案更好,因为您可以添加任意数量的阶段。
但是,Xilinx不支持该解决方案作为同步器(现在Peter Alfke已经通过,测试同步器真的很难!)。
Austin Lesea主要工程师Xilinx San Jose

以上来自于谷歌翻译


以下为原文

T,
 
The SRL16 was not designed to be a synchronizer.  That said, it isn't necessarily BAD, but it is likely to take more stages to get the probability of a metastable event lower than using the synchronizer directive (which place DFF optimally with minimum delay).
 
A two stage DFF for a synchronizer, with probability x, by adding another stage, one gets x^2.  Add another stage, one gets x^3 (etc.).
 
Perhaps an optimal synchronizer is using the CLB DFF as the first stage, followed by a fast path, to the SRL16.  Some believe this is even better than the existing synchronizer directive solution, as you may add as many stages as you like.  However, that solution is not supported by Xilinx as a synchronizer (testing synchronizers is really tough now that Peter Alfke has passed!).
Austin Lesea
Principal Engineer
Xilinx San Jose
举报

李英灿

2019-7-25 10:15:52
谢谢奥斯汀。
你能告诉我更多关于同步指令的信息吗?
这是一个像BUFG一样的原始人吗?
或ISE中的配置?
BR,
王天东

以上来自于谷歌翻译


以下为原文

Thank you, Austin.
 
Could you please tell more about synchronizer directive? Is it a primitive like BUFG? Or a configuration in ISE?
 
BR,
Tiandong Wang
举报

潘晶燕

2019-7-25 10:29:16
set_property ASYNC_REG TRUE  [get_cells [list sync0_reg sync1_reg]]
创建一个放置最佳的同步器(在Vivado中)。
只是谷歌'vivado同步器'
Austin Lesea主要工程师Xilinx San Jose

以上来自于谷歌翻译


以下为原文

set_property ASYNC_REG TRUE
[get_cells [list sync0_reg sync1_reg]]
 
Creates an optimally placed synchronizer (in Vivado).
 
Just google 'vivado synchronizer'
 
 
Austin Lesea
Principal Engineer
Xilinx San Jose
举报

更多回帖

发帖
×
20
完善资料,
赚取积分