1  Scenarios

 Two scenarios for passing signals across CDC boundaries:

  1) sometimes it's not necessary to sample every value, but be sure that the sampled values are accurate. One example is the set of gray

code counters used in asynchronous FIFO. In asynchronous FIFO, synchronized gray code counters do not need to capture every legal value from

the opposite clock domain, but it's critical that sampled values be accurate to recognize when full and empty conditions have occurred.

  2) a CDC signal must be properly recognized or recognized & acknowledged before a change occurs.

In both of these scenarios, the CDC signals will require some form of synchronization into the receiving clock domain.

2  Receiving clock domain

  1)  Two flip-flop synchronizer

     For most synchronization applications, the two flip-flop synchronizer is sufficient to remove all likely metastability.

      

  2)  Three flip-flop synchronizer

        For some very high speed designs, a third flop is added to increase the MTBF to a satisfactory duration of time.

    

3  Sending clock domain

   Registering signals in the sending clock domain should generally be required.

    

4  Example (Verilog)  

 module  sync_cell (

 // OUTPUTs
data_out, // Synchronized data output // INPUTs
clk, // Receiving clock
data_in, // Asynchronous data input
rst // Receiving reset (active high)
); // OUTPUTs
output data_out; // Synchronized data output // INPUTs
input clk; // Receiving clock
input data_in; // Asynchronous data input
input rst; // Receiving reset (active high) //=================================================
// 1) SYNCHRONIZER
//================================================= reg [:] data_sync; always @(posedge clk or posedge rst)
if (rst) data_sync <= 'b00;
else data_sync <= {data_sync[], data_in}; assign data_out = data_sync[]; endmodule // sync_cell

最新文章

  1. html5+css+div随时笔记
  2. android开发环境搭建日记和嵌入式Android开发环境初探
  3. HTML5 本地存储 localStorage、sessionStorage 的遍历、存储大小限制处理
  4. RecyclerView添加头部和底部视图的实现
  5. Java中LinkedList的remove方法真的耗时O(1)吗?
  6. SQL优化之索引
  7. svn , github工作流
  8. USACO Section 1.3 Ski Course Design 解题报告
  9. org.apache.hadoop.security.AccessControlException: Permission denied: user=?, access=WRITE, inode=&quot;/&quot;:hadoop:supergroup:drwxr-xr-x 异常解决
  10. Windows 10下Docker使用经验谈
  11. Java调用阿里云短信通道服务【千锋】
  12. Selenium调用webdriver.chrome()出错
  13. CTF丨2019互联网安全城市巡回赛&#183;西安站,我们来了!
  14. SLAM+语音机器人DIY系列:(二)ROS入门——9.熟练使用rviz
  15. 646. Maximum Length of Pair Chain(medium)
  16. js中select标签中的option选择
  17. python中print和input的底层实现
  18. springboot系列二、springboot项目搭建
  19. javaweb防止表单重新提交
  20. mybatis遍历array数组与集合、json

热门文章

  1. python爬虫15 | 害羞,用多线程秒爬那些万恶的妹纸们,纸巾呢?
  2. PAT 1060. Are They Equal
  3. 调用ms自带的合成语音TTS
  4. 洛谷 P2195 HXY造公园
  5. Clojure:从Java调用Clojure
  6. Codeforces Round #305 (Div. 2) E题(数论+容斥原理)
  7. ASP.NET MVC 4源代码分析之怎样定位控制器
  8. 垃圾回收GC:.Net自己主动内存管理 上(二)内存算法
  9. 使用Carthage安装及使用第三方库
  10. Codeforces Round #332 (Div. 2)A. Patrick and Shopping 水