社区导航

 

搜索
查看: 15248|回复: 16

[讨论] cpu与fpga跨时钟域数据交换的实现问题

[复制链接]

99

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2007-10-24 11:41 | 显示全部楼层 |阅读模式
ARM与fpga(cyclone)之间进行数据传输,这应该属于跨时钟域的范畴,CPU与fpga之间采用三总线的方式进行连接,而CPU连接fpga的数据线、地址线、控制线进入fpga内部就属于异步信号了,该如何考虑呢? 我看过一些关于跨时钟域的文献,上面说对于数据交换,实现方法有握手和fifo两种,我想,双口RAM是不是也算一种?另外,我看跨时钟域数据交换,都涉及到两侧的时钟信号,而对于CPU的三总线,并没有输出什么时钟信号,时钟输出是不是必须的呢? 问题比较多,不知道说明白没有,请指教一二,谢谢了
此帖出自单片机论坛

93

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2007-10-24 11:44 | 显示全部楼层

回复:cpu与fpga跨时钟域数据交换的实现问题

这个问题,基本上很难。 开个玩笑,原理上简单,实现起来有许多要注意的地方,但是不难。 一个提示:从你使用的ARM芯片数据手册的接口时序图入手。FPGA中的处理方法是可以改的,而接口时序是一定要遵守的。 泛泛而谈很难,把你的芯片接口时序图贴上来吧,主要是寄存器读、写时序,如果用到DMA的话,应该还有DMA读写的时序图。

回复

使用道具 举报

99

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2007-10-24 11:49 | 显示全部楼层

回复: cpu与fpga跨时钟域数据交换的实现问题

上面是ARM读写外设的时序图,时钟是CPU的,和fpga的内部时钟是两个时钟域,既需要有ARM写入给fpga内部的寄存器,又需要有ARM读出fpga内部的值,该如何解决跨时钟域的问题呢

回复

使用道具 举报

99

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2007-10-24 11:52 | 显示全部楼层

回复:cpu与fpga跨时钟域数据交换的实现问题

ARM与fpga的接口是标准的总线型接口,包括DATA,CS,ADDR,RD,WR,这些信号由CPU的时钟控制,对于FPGA来说是异步信号,在进入FPGA内部是不是需要先进行同步,我看过一些文献,这种总线型的跨时钟域,是不能用多个同步器进行同步的,采用的方法有握手信号和FIFO,是不是这样的呢?

回复

使用道具 举报

93

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2007-10-24 11:58 | 显示全部楼层

回复:cpu与fpga跨时钟域数据交换的实现问题

我们一步一步来,先实现基本功能,然后优化性能。 第一、我觉得处理这样的接口,采用异步方式比较好。因为同步接口对FPGA外部电路和内部配置的要求都比较高。异步接口只要给出充分的时间,外部电路不存在信号完整性问题就很好解决。 第二、这个接口比较好处理,原因是它的时序可以调整,通过软件配置cpu的外设寄存器就可以调整各个电平的时长。但是需要你和软件开发人员密切配合,提出你的要求。可以先宽泛一些,保证你的功能实现,然后再压缩可以压缩的时序,提高性能。

回复

使用道具 举报

93

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2007-10-24 13:07 | 显示全部楼层

回复:cpu与fpga跨时钟域数据交换的实现问题

明确一件事,信号进入FPGA的最初时刻是否是“异步”的呢? 不是,只有信号进入受某个时钟控制的逻辑时,该信号才被看作与该时钟域异步。 那么,我们能否利用“信号进入FPGA之后”和“信号进入某个时钟域之前”的这段空间实现一些组合和时序逻辑呢。 可以,我们在FPGA内部创建和利用这样一个空间来实现接口的数据发送和捕获功能,把接口上的原始信号转换为适用于同步时钟处理的信号,跨时钟域的问题也就解决了。

回复

使用道具 举报

99

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2007-10-24 13:14 | 显示全部楼层

回复:cpu与fpga跨时钟域数据交换的实现问题

你说得对,CPU对外设的读写时序是可以通过配置寄存器调整的。但我有点不明白,采用异步方式,对于fpga内部的电路来说,CPU的信号是异步信号,不能直接让FPGA时钟域的电路来做处理吧,它们之间的接口该如何考虑呢?

回复

使用道具 举报

99

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2007-10-24 13:19 | 显示全部楼层

回复:cpu与fpga跨时钟域数据交换的实现问题

你说的是不是信号进入FPGA之后,用FPGA内部的时钟对它进行采样同步,变为与内部时钟同步的信号呢?

回复

使用道具 举报

93

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2007-10-24 13:22 | 显示全部楼层

回复:cpu与fpga跨时钟域数据交换的实现问题

差不多,原理上就是这样.

回复

使用道具 举报

93

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2007-10-24 13:27 | 显示全部楼层

回复: cpu与fpga跨时钟域数据交换的实现问题

先给出写同步接口。EX_WR_N上升沿的位置很适合作为采样触发信号,数据的建立和保持时间都很充裕,这是由接口时序保证的。把EX_WR_N进行标准的同步处理后就可以进行提取边沿脉冲的处理,得到的脉冲信号就可以作为同步时钟域的采样使能信号,此时先前被采样的数据的建立时间也得到了充分的保证。 也可以把EX_WR_N信号同步处理后提取边沿脉冲得到的信号作为同步时钟域的采样使能脉冲。这样处理,采样的时刻取决于同步时钟的周期。如果接口处数据的保持时间不是很充分,采样时就不一定能得到稳定的数据,需要调整接口时序保证足够长的保持时间。

回复

使用道具 举报

93

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2007-10-24 13:36 | 显示全部楼层

回复:cpu与fpga跨时钟域数据交换的实现问题

上图中右侧的dff_16可以用同步FIFO代替,采用lpm_fifo或scfifo就可以。如果CPU芯片与FPGA芯片之间的电路很复杂,该电路需要考虑外部信号的毛刺问题。

回复

使用道具 举报

93

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2007-10-24 13:37 | 显示全部楼层

回复:cpu与fpga跨时钟域数据交换的实现问题

在读取数据接口中可以看到,数据由FPGA驱动,驱动的时刻取决于FPGA内部的逻辑处理时间。数据的出现可以晚于EX_RD_N的下降沿,数据的撤销必须晚于EX_RD_N的上升沿。 所以,只要提取EX_RD_N下降沿对应的同步脉冲就可以触发同步时钟域的寄存器或FIFO读取操作,数据被读出。 同步和边沿提取的逻辑和写入操作采用的方法一样,写操作提取的是上升沿脉冲,读操作需要提取下降沿脉冲。 这些操作会引入一定的延时——2~3个同步时钟周期,需要你和软件开发人员密切配合,调整T3的时长。

回复

使用道具 举报

99

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2007-10-24 13:39 | 显示全部楼层

回复:cpu与fpga跨时钟域数据交换的实现问题

riple,你的图上应该是EX_WR_N的下降沿作为采样触发信号吧

回复

使用道具 举报

93

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2007-10-24 13:41 | 显示全部楼层

回复:cpu与fpga跨时钟域数据交换的实现问题

不知道你图中1cycle是多长时间,如果很短的话,还是用上升沿最好,数据的建立时间会很充裕。

回复

使用道具 举报

99

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2007-10-24 13:43 | 显示全部楼层

回复:cpu与fpga跨时钟域数据交换的实现问题

一个cycle是30ns

回复

使用道具 举报

99

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2007-10-24 13:44 | 显示全部楼层

回复: cpu与fpga跨时钟域数据交换的实现问题


回复

使用道具 举报

93

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2007-10-24 13:48 | 显示全部楼层

回复:cpu与fpga跨时钟域数据交换的实现问题

上面这个图比例上是不是有些问题?32MHz对应的时钟周期是31ns,和1cycle差不多。从CS下降沿到WR下降沿的周期是不是多了些?时序图上只给出了1-4cycle。 可能是激励或者时钟周期设置错了。 WR的上升沿或下降沿采样都行,时间上都有保证。这就是CPU接口设计得好啊,让人用起来也舒服。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /5 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-2-19 09:04 , Processed in 0.448998 second(s), 18 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表