microcreat 发表于 2009-10-25 22:20:40

fpga怎样采样arm的总线上的数据!

我现在想用9260和xc3s200连接!我把FPGA挂在9260的数据总线上,我fpga的时钟最大是200M,我想知道,这个速度能准确采样9260数据线上的数据吗.?
应该采用什么方式来实现呢!谢谢了!

ngzhang 发表于 2009-10-25 22:30:20

不能有一个数据时钟输入么?
如果没有的话,你的数据总线上数据变化速度最快是多少MHZ?

microcreat 发表于 2009-10-26 19:46:41

楼上的能说清楚点吗?

dr2001 发表于 2009-10-26 20:01:29

看你用什么接口。
异步接口按照普通SRAM的时序就行了,多加等待周期,稍微慢一点。
同步的话,从ARM的PCK取同步的时钟,根据SRAM外部总线时序锁数据。

就是在哪里跨时钟域,选择在总线上,还是FPGA内部。如果数量不大,可以用内部的BlockRAM做双口的,只要看清楚同时读写的后果就好用了。

microcreat 发表于 2009-10-26 22:15:07

楼上说的意思就是,异步接口就是把ARM接SDRAM的接口接到FPGA上,然后把FPGA里面做个SDRAM的接口
                  同步接口就是把ARM接SDRAM的接口接到FPGA上(除了SCK以外),然后把FPGA里面做个SDRAM的接口
这样子吗?

哪里跨时钟域,选择在总线上,还是FPGA内部 不是很明白!

如果在里面做个xK的双向RAM口!也可以解决问题哈!
还有做FIFO的,不知道该怎么下手!

ngzhang 发表于 2009-10-27 02:10:17

我建议用同步的方法。
就是把ARM的时钟导入到FPGA的时钟管理模块,经过全局时钟网络去驱动数据接口在时钟沿到来的时候采样,非常稳定。

dr2001 发表于 2009-10-27 08:26:57

做SRAM的接口。不要SDRAM的。SDRAM那么多控制逻辑,还不够麻烦的呢。

技术上的选择就是要么用PCK同步ARM的时钟,进行数据采样;然后在FPGA里边同步到FPGA的时钟上;
要么就是直接用FPGA时钟过采样数据和控制总线。
两个做法都很稳定。

具体就看你有多少资源,想怎么实现了。

ngzhang 发表于 2009-10-27 12:44:30

LS ,跨时钟域采样要做特殊处理,否则不稳定。

dr2001 发表于 2009-10-27 13:39:08

LS,
看LZ怎么计划了,如果用BlockRAM做双口RAM,跨时钟域,没有什么问题,FPGA上实现也不复杂。
否则,就要考虑过采样或者二级缓冲解决亚稳态。

microcreat 发表于 2009-10-27 15:00:26

哦,看起来不是很好搞哦!呵呵!谢谢大家了!

microcreat 发表于 2009-10-27 21:11:13

我现在假设我已经把数据传给ARM,ARM上是linux,那我怎么样读数据呢?

ngzhang 发表于 2009-10-27 21:59:45

to 【8楼】 dr2001
其实现在的问题就是LZ的问题不明确。要是各种触发信号齐备,那用blockram的双口ram搞没任何问题。要是啥也没有就想读那几根线上的数据,那就难。

to 【10楼】 microcreat
其实好搞,要是问题清楚明白,我帮你搞也就是1天的功夫。不过我ARM一窍不通,所以后面的问题就无能为力了

dr2001 发表于 2009-10-28 09:02:46

To 【11楼】 ngzhang
我感觉楼主是在设计阶段,先问好了可以怎么解决,然后画图?要不然不至于这么问吧。模棱两可的问题,大家讨论半天只会跑题。

To 【10楼】 microcreat
你最开始的问题是FPGA采样ARM的数据,现在怎么又成了FPGA传给ARM了。到底要干什么事情呢?我觉的提问的前后逻辑不明晰啊。
如果用的是MemoryMap的方式实现,Linux里边ReMap某个地址到物理地址,然后直接读地址就行了。需要一个Kernel Mode的驱动来干这个事情。

microcreat 发表于 2009-10-28 10:47:46

呵呵!是的啊!想着想着又有我问题出来了哦!呵呵!谢谢各位了!我有的不清楚,就看了下资料自己去理解,这样问题就多了,不好意思哈!各位!

qingzhou 发表于 2009-11-12 00:17:57

mark
页: [1]
查看完整版本: fpga怎样采样arm的总线上的数据!