首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
通信技术
» 源同步信号跨时钟域采集的两种方法
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
源同步信号跨时钟域采集的两种方法
发短消息
加为好友
forsuccess
当前离线
UID
871057
帖子
6281
精华
0
积分
3141
阅读权限
90
在线时间
282 小时
注册时间
2012-2-21
最后登录
2015-6-23
论坛元老
UID
871057
性别
男
1
#
打印
字体大小:
t
T
forsuccess
发表于 2012-5-9 22:14
|
只看该作者
源同步信号跨时钟域采集的两种方法
信号
,
时钟
对于数据采集接收的一方而言,所谓源同步信号,即传输待接收的数据和时钟信号均由发送方产生。FPGA应用中,常常需要产生一些源同步接口信号传输给外设芯片,这对FPGA内部产生时钟或数据的逻辑和时序都有较严格的要求。而对于一些FPGA采集信号的应用中,常常也有时钟和数据均来自外设芯片的情况,此时对数据和时钟的采集也同样需要关注FPGA内部的逻辑和时序。当然,无论何种情况,目的只有一个,保证信号稳定可靠的被传送或接收。
对于一个如图1所示的某视频芯片产生的源同步信号,当FPGA对其进行采集同步到另一个时钟域时,特权同学通常的做法有两种,特权同学称之为脉冲边沿检测采集法和异步FIFO采集法。下面简单的对这两种方法做一些讨论和说明。
图1
脉冲边沿检测采集法
脉冲边沿检测采集法,顾名思义,一定是应用了经典的脉冲边沿检测法来帮助或者直接采集信号。对于脉冲边沿检测法,大家可以参考特权同学的《深入浅出玩转FPGA》或者用gooogle摆渡一下。而这里尤其需要提醒大家注意的是,著名的奈奎斯特采样定理告诉我们:要从采样信号中无失真的恢复原信号,采样频率应大于两倍信号最高频率。而特权同学通过实践得出的结论与此相仿:若想稳定有效的采集到脉冲(数字信号)变化的边沿,采样频率应大于被采样脉冲最大频率的3倍。注意是要大于3倍,甚至若是可能尽量采用4倍以上的采样频率才能够达到稳定的状态。至于为什么,我想深谙此道(脉冲边沿检测法)的聪明人看完结论就已经明白了,无需特权同学再废话解释一番。
而具体的做法也很简单,把图1理想化就如图2所示。其中,待采集信号时钟Tx Clock,待采集数据使能信号Enable Signal,待采集数据总线Data Bus。FPGA内部信号采集时钟为Rx Clock,该时钟为待采集时钟的4倍。
图2
采用脉冲边沿检测法,使用Rx Clock去采集Tx Clock,Rx Clock reg1和Rx Clock reg2分别为第一级和第二级Tx Clock锁存信号。Tx Clock上升沿对应的一个有效指示信号Tx Clock pos每个Tx Clock时钟周期产生一个Rx Clock脉宽的有效高电平使能信号。从图3中可以看到,此时若用Tx Clock pos作为FPGA内部采样使能信号,虽然Tx Clock pos处于第7个Tx Clock,但是真正采集Data Bus其实已经是第8个Tx Clock上升沿了。很明显,第8个Tx Clock上升沿对准的不是Data Bus的稳定信号中央,数据很可能采集到错误值。
图3
因此,通过上面的分析,还是可以采取一些变通的方式来保证第8个Tx Clock上升沿采集到Data Bus的中央值。如图4所示,采用同样的方式对Data Bus做两级信号锁存,那么第8个Tx Clock上升沿就能够在Data Bus reg2的中央采集数据了。这样做只有一点小问题,相应的需要多付出2组寄存器来锁存Data Bus。
图4异步FIFO采集法
再说异步FIFO采集法,其实这种方法没什么新奇,只不过充分利用异步FIFO的同步特性来完成跨时钟域的数据交互。但是其中还是有几个非常关键的要点需要提醒设计者注意,无论如何FIFO的输入端数据和时钟信号(包括控制信号,如有效使能信号等)必须符合FIFO的数据锁存有效建立和保持时间,这个最重要的条件除了需要靠数据源端来保证外,还需要靠数据锁存端(FPGA内部)设计者做好时序上的约束和分析,否则到源端再nice的波形恐怕都无法保证能够可靠的被FIFO锁存。
异步FIFO的基本通讯时序波形如图5所示。我们关心的是FIFO的写入。由图中不难发现,写入时钟wrclk的每个上升沿会判断写入请求信号wrreq是否有效,若是有效则FIFO会相应的锁存当前的写入数据data。简单来看,从基本时序上分析,wrclk的上升沿需要对准wrreq和data的中央,这是外部传输过来的源信号必须满足的基本关系。无论如何,即便是绞尽脑汁,也要想办法让这个基本关系得到保证,否则,后面的rdclk、rdreq配合的再默契恐怕都不能得到稳定的q输出。
图5
原型开发的前期,设计者必须首先验证写入信号的关系,哪怕是不惜动用示波器(⊙﹏⊙b汗,连示波器都没有不要混了),源端给到FPGA输入端口的信号很多时候不是那么尽善尽美的,实践出真知,测试结果说了算。当然了,实在没有先进武器又想打胜仗的朋友恐怕只有不停的用代码测试采集到最稳定的数据了,这有点碰运气的成分在里面,不是非常推荐。
类似与开篇提到的应用,特权同学的实际信号采集如图6所示,把写入时钟Tx Clock和写入请求信号Enable Signal都先用同步时钟Rx Clock打了一拍,然后再输入FIFO中,而数据总线Data Bus则直接送往FIFO。这样从最终检测来看,能够保证时钟的上升沿对准数据和控制信号的中央,相对稳定和安全的把数据送往FIFO中。
图6
工程实践中往往不是一招一式的生搬硬套理论,一定要抓住最关键的设计要点,并采取各种有效的手段保证设计的实现。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议