微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 如何将一个pulse从一个时钟域传递到另外一个时钟域。

如何将一个pulse从一个时钟域传递到另外一个时钟域。

时间:10-02 整理:3721RD 点击:
如何将一个pulse从一个时钟域传递到另外一个时钟域。
并思考一下,什么情况下,才能将传递这个pulse,对时钟有什么要求,对pulse有什么要求。

内部时钟去抓这个脉冲信号的时候 一般比较外部来的要快 抓2次一般就行
内部时钟比这个脉冲慢 就异步先采集 然后再同步采集
不知道这样对否
input  i_data;
reg data_reg;
reg data_reg2;
always@(posedge i_dataor negedge resert)
if(~reset)
data_reg<=0;
else if(i_data)
data_reg<i_data;
else
data_reg<=data_reg;
always@(posedge clk or negedge resert)
if(~reset)
data_reg2<=0;
else
data_reg2<=data_reg;

XILINX有这样的参考设计.不过是原理图画的, 如果采集的时钟快过PULSE,则直接采集即可.
如果比其要慢,则需要采用异步处理.




========================
塑胶回收 废油回收  废旧回收

1. 本地采样时钟频率大于输入时钟则直接采样,但需要用触发器打2拍后再使用
2. 本地采样时钟频率小于输入时钟则需要作异步处理,如用异步FIFO,格雷码转换等等

学习了,真不错。

假设pulse1是clock1 domain的,要传到clock2 domain。
可以先把这个pulse1在clock1 domain变为一个level的信号。再用clock2来采,这样clock2就总能够采到clock1的信号了。
但是前提是clock1的这个pusle不能来得太快,这样也许clock2还没采到第一个pulse的level信号,第二个pulse就来了是不行的。但design中往往不会出现这样的情况,因为如果clock1中pulse信号来得太快,就说明clock1中的信息量大,要用clock2来采本来就是会丢的。所以可以再做一个clock2传回clock1的pulse(标识clock2已经采下了第一个pulse),用于防止clock1中第二个pulse来得太快。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top