281229961 发表于 2010-7-14 16:32:36

FPGA和ARM通信问题?

想利用FPGA对外部脉冲计数 不知道如何将数据送入ARM中 ?
有几个方法,不知道哪个可行?
1:用通信协议 比如SPI,IIC等等,担心速度!
2:使用DMA方式,在FPGA内建立一个8Kbit的RAM数据缓冲区,ARM使用总线访问FPGA内部RAM,高速!
3:其它。。。。

本人主要倾向于第二种方法,但是不知道如何操作,没有做过!请哪位大侠帮忙指导一下啊
1,用的2440,我知道2440存储控制器提供访问外部存储器,所以才有这想法的。。。
2,双口RAM如何构建 ARM读写数据地址线还有,读写时钟线,以及FPGA内部对RAM的读写数据地址线,时钟线 使能线 等等如何分配....
请大侠不吝赐教啊 小弟感激不尽!

oldtom 发表于 2010-7-14 18:28:27

我做过类似的,用cpld做高速脉冲的采集,主cpu用总线方式去访问,采用类似寄存器方式读取。

aureole 发表于 2010-7-14 22:12:25

主要看你数据量;大容量并行总线;小容量 spi或者 i2c;

脉冲计数的话,本来就传个结果 ,spi即可。

cfqxdgr 发表于 2010-7-14 22:28:03

速度的话就是外部总线,简便的话SPI就可以了,如果ARM 片子支持高速SPI的话,其实速度也很不错

yngufeng 发表于 2010-7-24 09:54:50

外部总线,编程简单方便。SPI编程相对复杂一点点,但是连线简单很多。
贴个最简单的。
always@(posedge clk)
begin
    if(cs_n==0)
    begin
      if(w_en==0)
      begin
         case(addr)
         ...xxx<=inbus;
         ........
         ........
      else if(r_en==0)
      begin
      case(addr)
      ...outbus<=xxx;
      ..........
      .........

rtems 发表于 2010-7-24 16:45:04

直接挂总线上,FPGA里面弄个ram块让ARM访问。或者用双口RAM也行。

281229961 发表于 2010-7-24 18:06:12

回复【5楼】rtems
直接挂总线上,fpga里面弄个ram块让arm访问。或者用双口ram也行。
-----------------------------------------------------------------------

不知怎么回事 用quartusII里自带的ip核构建的双口RAM总是编译报错
Error: M4K memory block WYSIWYG primitive "ram:u4|itu_r656_decoder:U1|dul_port_c1024:CRR
|RAM2:u2|altsyncram:altsyncram_component|altsyncram_nk12:auto_generated|ram_block1a0" utilizes
the dual-port dual-clock mode. However, this mode is not supported in Cyclone II device family
in this version of Quartus II software. Please refer to the Cyclone II FPGA Family Errata Sheet
for more information on this feature.

郁闷死了

sunnyhow 发表于 2010-7-28 13:47:04

也可以自己定义一个简单的8位总线协议就行了,定义个中断信号线,方便通信



---------------------------------------------
www.sunnyhow.com

40130064 发表于 2010-7-28 15:06:14

发实例啊 让大家学习下

wangbo19852008 发表于 2010-8-1 11:35:14

回复【6楼】281229961 小朱
哥们你用的CycloneII,你想做异步真实双口RAM,但是这个芯片是不支持的哦,你用CYcloneIII就编译过去了,哈哈

barryyan2007 发表于 2010-8-6 12:17:16

学习了,速度快用总线方式,不需要太快只要SPI即可

wang984 发表于 2010-8-10 04:18:32

楼主的数据流多大?先弄清楚这个才能选合适的方法

wanwzy 发表于 2010-8-10 08:25:49

mark

Juncoo 发表于 2011-9-7 17:44:18

我看的资料说可以用ARM 的APB总线和FPGA相连进行通信。但是APB和AHB总线不是在ARM单片机内部吗?怎么连出来?

changhui0222 发表于 2011-12-5 10:09:41

MK

mage99 发表于 2011-12-6 04:12:44

在fpga内部做个双口ram 和2440通信,或者用arm内部总线协议。就相当于把fpga作为存储器挂在arm的寄存器下。

chen36330105 发表于 2011-12-7 00:40:18

楼主需要传输的数据流大小如何

jwfjia_333 发表于 2012-1-4 11:12:19

马克

korgo 发表于 2012-1-4 11:18:13

把fpga挂到ram线上,当做ram读取fpga

gaoyukun 发表于 2012-1-28 13:42:36

回复【6楼】281229961 小朱
回复【5楼】rtems
直接挂总线上,fpga里面弄个ram块让arm访问。或者用双口ram也行。
-----------------------------------------------------------------------
不知怎么回事 用quartusii里自带的ip核构建的双口ram总是编译报错   
error: m4k memory block wysiwyg primitive "ram:u4|itu_r656_decoder:u1|dul_port_c1024:crr
|ram2:u2|altsyncram:altsyncram_component|altsyncram_nk12:auto_generated|ram_block1a0" utilizes
the dual-port dual-clock mode. however, t......
-----------------------------------------------------------------------

我记得在Quartues 编译器里面填上一句话,就可以正确的综合出来true DPRAM了,但是那句命令我也在找!上次就在CPLD这个版块看到过高人解答。望一同搜索,若找到,请贴到帖子里:)

gaoyukun 发表于 2012-1-28 13:42:39

回复【6楼】281229961 小朱
回复【5楼】rtems
直接挂总线上,fpga里面弄个ram块让arm访问。或者用双口ram也行。
-----------------------------------------------------------------------
不知怎么回事 用quartusii里自带的ip核构建的双口ram总是编译报错   
error: m4k memory block wysiwyg primitive "ram:u4|itu_r656_decoder:u1|dul_port_c1024:crr
|ram2:u2|altsyncram:altsyncram_component|altsyncram_nk12:auto_generated|ram_block1a0" utilizes
the dual-port dual-clock mode. however, t......
-----------------------------------------------------------------------

我记得在Quartues 编译器里面填上一句话,就可以正确的综合出来true DPRAM了,但是那句命令我也在找!上次就在CPLD这个版块看到过高人解答。望一同搜索,若找到,请贴到帖子里:)

coolee 发表于 2012-1-29 16:56:48

好的问题,同问

ihuanglong 发表于 2012-2-28 10:20:34

可以再FPGA里面做双口RAM,对外提供一组RAM总线。然后在ARM端使用外部SRAM,与FPGA进行通信。

这样做法的好处是ARM的型号不用太考虑,基本都支持外部SRAM,也可以使用大部分其他单片机

simpleh 发表于 2012-6-11 09:45:06

mark{:biggrin:}

wjfblack 发表于 2012-6-11 11:33:40

如果FPGA直接挂在ARM总线上,速度当然是快,不过也应该考虑一下总线占用的问题,就是说你ARM有没有外接其他外设。如果有,这些外设的总线占用应该权衡一下。速度一般,SPI就好了。
页: [1]
查看完整版本: FPGA和ARM通信问题?