关于处理FPGA输出时钟和数据的方法介绍

在fpga的源同步的系统设计中,常常我们会碰到把随路时钟和数据一同输出的情形,如同下面的系统:
在这样的系统中,要求输出时钟o_clk和o_dat要由严格的相位对齐关系,一般是边沿对齐或者中心对齐。
那么如何才能保证上述相位对齐关系呢?
(1) 第一种做法(这样用的人不少)。
对于数据,通常用系统时钟打一拍或者不打拍,组合逻辑直接输出。
对于时钟,通常直接把fpga内部的系统时钟赋值到io pad的输出管脚上。
如下所示:
assign o_clk = sys_clk;
always@(posedge sys_clk)
o_dat= data_i;
// or assign o_dat =data_i;
这样的处理方式,需要约束文件里面通过offset out(ucf,sdc类似)约束输出时钟和数据的相位关系。
上面的处理方式其实对于fpga不是最优选择。而且对于时钟直接赋值输出的处理方式,在某些器件上还会产生错误!更好的处理方式是下面第2中:
(2) 第二种做法
对于输出的数据,无论如何都要做到最终送到io pad时,是寄存器输出。这样我们可以把寄存器约束到iopad里面的io logic里面,保证所有数据输出延迟的一致性。
对于时钟,通过类似oddr2的元件来产生一个时钟镜像输出:
这样的处理方式,不管是数据,还是时钟,实际上都是寄存器输出,而且都可以把它们放置到io pad里面,保证了时钟和所有数据相对相位关系的一致性。

多传感器融合定位在高速铁路的应用[图]
海尔自主创牌抢滩全球市场 智慧家庭为全球用户定制美好生活
小米蓝牙耳机K歌版正式开售 拥有耳返监听功能延迟低至6ms
CPU缓存对性能的影响
摩尔定律放缓,看科学家另辟他径挖掘芯片性能
关于处理FPGA输出时钟和数据的方法介绍
基于STC89C52单片机的校园食堂RFID一卡通设计
三星Galaxy Note II港行今日上市 售5698港币
快递位居世界第一 净利润普遍获得50%增长 大数据是助力
PCBA打样元器件使用应该注意的4大问题
如何在没有大量标记数据的情况下,让计算机也学会翻译?
“海外设计+中国制造”模式下,产品设计与研发如何实现数字化转型?
智能手机可能带来的隐患_90%的人都不知道
晶棒是怎么生产的 晶棒切割中间断裂怎么办
避免咖啡机因原料不足而引起故障的传感器
5G时代三大运营商决战MEC将会给生活带来怎样的改变
爽呆了:iPhone8新产品曝光!
MIMOS首款经过临床测试的非侵入性血糖仪,预计2019年底上市
三款激光测距仪介绍
发电机的工作原理