CDC之Synchronizers
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
最新文章
- html5+css+div随时笔记
- android开发环境搭建日记和嵌入式Android开发环境初探
- HTML5 本地存储 localStorage、sessionStorage 的遍历、存储大小限制处理
- RecyclerView添加头部和底部视图的实现
- Java中LinkedList的remove方法真的耗时O(1)吗?
- SQL优化之索引
- svn , github工作流
- USACO Section 1.3 Ski Course Design 解题报告
- org.apache.hadoop.security.AccessControlException: Permission denied: user=?, access=WRITE, inode=";/";:hadoop:supergroup:drwxr-xr-x 异常解决
- Windows 10下Docker使用经验谈
- Java调用阿里云短信通道服务【千锋】
- Selenium调用webdriver.chrome()出错
- CTF丨2019互联网安全城市巡回赛&#183;西安站,我们来了!
- SLAM+语音机器人DIY系列:(二)ROS入门——9.熟练使用rviz
- 646. Maximum Length of Pair Chain(medium)
- js中select标签中的option选择
- python中print和input的底层实现
- springboot系列二、springboot项目搭建
- javaweb防止表单重新提交
- mybatis遍历array数组与集合、json
热门文章
- python爬虫15 | 害羞,用多线程秒爬那些万恶的妹纸们,纸巾呢?
- PAT 1060. Are They Equal
- 调用ms自带的合成语音TTS
- 洛谷 P2195 HXY造公园
- Clojure:从Java调用Clojure
- Codeforces Round #305 (Div. 2) E题(数论+容斥原理)
- ASP.NET MVC 4源代码分析之怎样定位控制器
- 垃圾回收GC:.Net自己主动内存管理 上(二)内存算法
- 使用Carthage安装及使用第三方库
- Codeforces Round #332 (Div. 2)A. Patrick and Shopping 水