搜索
bottom↓
回复: 24

FPGA和ARM通信问题?

[复制链接]

出0入0汤圆

发表于 2010-7-14 16:32:36 | 显示全部楼层 |阅读模式
想利用FPGA对外部脉冲计数 不知道如何将数据送入ARM中 ?
有几个方法,不知道哪个可行?
1:用通信协议 比如SPI,IIC等等,担心速度!
2:使用DMA方式,在FPGA内建立一个8Kbit的RAM数据缓冲区,ARM使用总线访问FPGA内部RAM,高速!
3:其它。。。。

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

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-7-14 18:28:27 | 显示全部楼层
我做过类似的,用cpld做高速脉冲的采集,主cpu用总线方式去访问,采用类似寄存器方式读取。

出0入0汤圆

发表于 2010-7-14 22:12:25 | 显示全部楼层
主要看你数据量;大容量并行总线;小容量 spi或者 i2c;

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

出0入0汤圆

发表于 2010-7-14 22:28:03 | 显示全部楼层
速度的话就是外部总线,简便的话SPI就可以了,如果ARM 片子支持高速SPI的话,其实速度也很不错

出0入0汤圆

发表于 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;
        ..........
        .........

出0入0汤圆

发表于 2010-7-24 16:45:04 | 显示全部楼层
直接挂总线上,FPGA里面弄个ram块让ARM访问。或者用双口RAM也行。

出0入0汤圆

 楼主| 发表于 2010-7-24 18:06:12 | 显示全部楼层
回复【5楼】rtems
直接挂总线上,fpga里面弄个ram块让arm访问。或者用双口ram也行。
-----------------------------------------------------------------------

不知怎么回事 用quartus  II  里自带的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.

郁闷死了

出0入0汤圆

发表于 2010-7-28 13:47:04 | 显示全部楼层
也可以自己定义一个简单的8位总线协议就行了,定义个中断信号线,方便通信



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

出0入0汤圆

发表于 2010-7-28 15:06:14 | 显示全部楼层
发实例啊 让大家学习下

出0入0汤圆

发表于 2010-8-1 11:35:14 | 显示全部楼层
回复【6楼】281229961 小朱
哥们你用的CycloneII,你想做异步真实双口RAM,但是这个芯片是不支持的哦,你用CYcloneIII就编译过去了,哈哈

出0入0汤圆

发表于 2010-8-6 12:17:16 | 显示全部楼层
学习了,速度快用总线方式,不需要太快只要SPI即可

出0入0汤圆

发表于 2010-8-10 04:18:32 | 显示全部楼层
楼主的数据流多大?先弄清楚这个才能选合适的方法

出0入0汤圆

发表于 2010-8-10 08:25:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-7 17:44:18 | 显示全部楼层
我看的资料说可以用ARM 的APB总线和FPGA相连进行通信。但是APB和AHB总线不是在ARM单片机内部吗?怎么连出来?

出0入0汤圆

发表于 2011-12-5 10:09:41 | 显示全部楼层
MK

出0入0汤圆

发表于 2011-12-6 04:12:44 | 显示全部楼层
在fpga内部做个双口ram 和2440通信,或者用arm内部总线协议。就相当于把fpga作为存储器挂在arm的寄存器下。

出0入0汤圆

发表于 2011-12-7 00:40:18 | 显示全部楼层
楼主需要传输的数据流大小如何

出0入0汤圆

发表于 2012-1-4 11:12:19 | 显示全部楼层
马克

出0入0汤圆

发表于 2012-1-4 11:18:13 | 显示全部楼层
把fpga挂到ram线上,当做ram读取fpga

出0入0汤圆

发表于 2012-1-28 13:42:36 | 显示全部楼层
回复【6楼】281229961 小朱
回复【5楼】rtems  
直接挂总线上,fpga里面弄个ram块让arm访问。或者用双口ram也行。
-----------------------------------------------------------------------
不知怎么回事 用quartus  ii  里自带的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这个版块看到过高人解答。望一同搜索,若找到,请贴到帖子里:)

出0入0汤圆

发表于 2012-1-28 13:42:39 | 显示全部楼层
回复【6楼】281229961 小朱
回复【5楼】rtems  
直接挂总线上,fpga里面弄个ram块让arm访问。或者用双口ram也行。
-----------------------------------------------------------------------
不知怎么回事 用quartus  ii  里自带的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这个版块看到过高人解答。望一同搜索,若找到,请贴到帖子里:)

出0入0汤圆

发表于 2012-1-29 16:56:48 | 显示全部楼层
好的问题,同问

出0入0汤圆

发表于 2012-2-28 10:20:34 | 显示全部楼层
可以再FPGA里面做双口RAM,对外提供一组RAM总线。然后在ARM端使用外部SRAM,与FPGA进行通信。

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

出0入0汤圆

发表于 2012-6-11 09:45:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-6-11 11:33:40 | 显示全部楼层
如果FPGA直接挂在ARM总线上,速度当然是快,不过也应该考虑一下总线占用的问题,就是说你ARM有没有外接其他外设。如果有,这些外设的总线占用应该权衡一下。速度一般,SPI就好了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 09:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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