对于数据采集接收的一方而言,所谓源同步信号,即传输待接收的数据和时钟信号均由发送方产生。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。
[page]
异步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
工程实践中往往不是一招一式的生搬硬套理论,一定要抓住最关键的设计要点,并采取各种有效的手段保证设计的实现。
关键字:FIFO FPGA 数据总线
引用地址:
源同步信号跨时钟域采集的两种方法
推荐阅读最新更新时间:2024-03-30 22:25
基于DSP的FPGA卫星测控多波束系统设计
一、引言 卫星测控多波束系统主要针对卫星信号实施测控,它包括两个方面:信号波达方向(DOA)的估计和数字波束合成。 波达方向的估计是对空间信号的方向分布进行超分辨估计,提取空间源信号的参数如方位角、仰角等。 数字波束合成也称为空域滤波,主要是根据信号环境的变化自适应地改变各阵元的加权因子,在期望信号方向形成主波束,在干扰信号方向形成零陷,降低副瓣电平, 目的是在增强期望信号的同时最大程度的抑制无用的干扰和噪声,并提取有用的信号特征以及信号所包含的信息。用于测向和波束合成的算法很多,选择合适的算法来满足系统的需求是一个重要方面。另一方面,该系统对实时性有一定的要求,要求在限定时间内完成测向和波束合成权值的计算。 本文所介
[嵌入式]
基于ARM和FPGA的多路电机控制方案
介绍了一种基于fpga的多轴控制器,控制器主要由arm7(LPC2214)和fpga(EP2C5T144C8)及其外围电路组成,用于同时控制多路电机的运动。利用Verilog HDL硬件描述语言在fpga中实现了电机控制逻辑,主要包括脉冲控制信号产生、加减速控制、编码器反馈信号的辨向和细分、绝对位移记录、限位信号保护逻辑等。论文中给出了fpga内部一些核心逻辑单元的实现,并利用QuartusⅡ、Modelsim SE软件对关键逻辑及时序进行了仿真。实际使用表明该控制器可以很好控制多轴电机的运动,并且能够实现高精度地位置控制。 随着电机广泛地应用于数字控制系统中,对电机控制的实时性和精度上的要求越来越高。如何灵活、有效地控制电机
[单片机]
基于I2C总线数据写入器的设计
1 引言 (Inter-Integrated Circuit)总线是一种用于连接微控制器及其外围设备的总线。 总线最主要的优点是其简单和有效。由于 接口直接在组件上,故其占用空间小,减少了电路板的空间和芯片引脚的数量,广泛用于智能化仪表。现在有的MCU已提供 接口,但对于没有直接支持 总线的MCU则需要用软件进行模拟。本文以AT89S52单片机为核心,与PC进行通信,实现具有 总线的EEPROM AT24C04读写功能,构成一种数据写入器,用于仪器仪表等设备中表格、曲线和参数等的读写。所有程序用C语言完成。 2 单片机和PC两方的通信格式 本设计中的数据通信格式如下:第一字节为发给MCU的命令,第二字节保留。后16字节是
[单片机]
e络盟供货OrangeCrab开源FPGA开发板
OrangeCrab超紧凑型高端FPGA开发板采用Adafruit Feather外形尺寸 并提供两个内存配置选项,可轻松实现灵活设计。 中国上海,2021年5月26日 – 安富利旗下全球电子元器件产品与解决方案分销商e络盟宣布引入Good Stuff Department的OrangeCrab r0.2开源FPGA开发板,进一步扩展其单板机 (SBC)开发套件产品阵容。 OrangeCrab兼具电子设计师喜爱的Adafruit Feather超紧凑外形设计,以及通常仅大尺寸现场可编程门阵列(FPGA)开发板才具有的高功率特点。OrangeCrab基于Lattice EPC5 FPGA,提供两种内存配置选项,包括E
[嵌入式]
FPGA时钟设计
摘要:在FPGA设计中,为了成功地操作,可靠的时钟是非常关键的。设计不良的时钟在极限的温度、电压下将导致错误的行为。在设计PLD/FPGA时通常采用如下四种类型时钟:全局时钟、门控时钟、多级逻辑时钟和波动式时钟。多时钟系统包括上述四种时钟类型的任意组合。 关键词:FPGA;时钟;逻辑时钟;险象 对于一个设计项目来说,全局时钟是最简单和最可预测的时钟。在PLD/FPGA设计中最好的时钟方案是由专用的全局时钟输入引脚驱动的单个主时钟去钟控设计项目中的每一个触发器。只要可能就应尽量在设计项目中采用全局时钟。PLD/FPGA都具有专门的全局时钟引脚,它直接连到器件中的每一个寄存器。这种全局时钟提供器件中最短的时钟到输出的延时。 1
[嵌入式]
基于PC+PLC等离子熔射自动控制系统设计
1 引言 等离子熔射由于其温度高且能量集中,能够熔射金属、陶瓷或复合材料的特点在表面改性、功能薄膜制备和材料加工工程中被广泛应用 。为了保证熔射皮膜成形性与成形质量,必须在数字图像处理、过程控制、人工智能等方法基础上进行系统集成控制与工艺优化。当前国际上几大热喷涂设备和材料生产厂家,如英国Metallisation公司、瑞士Sulzer-Metco公司和美国Praxair公司等,已推出基于PC+PLC+现场检测+过程控制的等离子熔射系统。但是由于国际上相关熔射设备价格昂贵,不能引进到国内每一个加工车间或者科研院所,因此需要自主开发适用于特定工艺的熔射过程检测与控制系统。目前国内已有基于单片机、微机、PLC等进行熔射控制
[嵌入式]
赛灵思声明召回Spartan-3 FPGA
据可编程逻辑供应商赛灵思(Xilinx)的网站显示,该公司宣布召回2005年9月至今年4月末生产的Spartan-3、Spartan-3E和Spartan-3L FPGA。这次召回产品的数量可能相当庞大。 据该公司的网站,某些批次的wire-bonded PBGA封装可能存在非特定的制造封装缺陷,可能造成潜在的质量与可靠性风险。这次召回的产品的日期代码在0537和0617之间。 赛灵思的发言人表示:“我们目前了解道的情况是,该问题对Spartan-3产品的质量影响有限。”该发言人强调,导致上述问题的根本原因是封装/装配,而不是硅片,而且只有一家客户证实出现问题。该发言人表示,赛灵思的封装/装配供应商已排除了这个问题
[焦点新闻]
Dini推出业界容量最大的基于FPGA器件的ASIC
Altera公司日前宣布,Dini集团在其业界容量最大的单板FPGA原型引擎中采用了具有340K逻辑单元(LE)的Stratix III EP3SL340 FPGA。DN7020K10采用了1,760引脚封装的20片EP3SL340 FPGA,每个器件提供1,104个用户I/O,容量等价于5千万ASIC逻辑门。客户设计无线通信、网络和图形处理应用等定制ASIC时,可以利用这一超大容量原型电路板来验证自己的逻辑设计,在接近实时时钟速率的环境下运行设计。 Dini集团总裁Mike Dini评论说:“Altera Stratix III FPGA是目前容量最大、速度最快的FPGA,这正是我们客户所需要的。我们的DN7020
[嵌入式]