发 帖  
原厂入驻New
[问答] 如何实现两个处理器之间的通信
206 通信 处理器
分享
你好,
我打算建立通信以在两个处理器之间读写。
一方面是ASIC(MCimx6)上的四核ARM Cortex A9处理器,另一方面是FPGA(ZC7020)。
我在FPGA端没有任何PCIe硬端口。
因此,有两种方法可以在这两个处理器之间建立通信。
如果我打算保留ZC7020,我有2个选择
1)使用I2C或SPI等串行总线接口(数据传输速率非常低,约为10 Mb /秒
2)使用AMBA AXI互连在两个处理器之间使用共享内存并建立此连接。
我想知道第二种方法产生的速度以及如何在Vivado中执行这种共享内存概念?
请给我一个参考文章。
我需要两个处理器之间大约1.5 Gb / sec的速度。
否则,我可能不得不将设备更改为ZC7015并购买硬核PCIe IP并建立通信哪个非常昂贵。
如果我想在ZC7015上做一个软核PCIe,我需要遵循的步骤是什么。
0
2020-4-16 09:04:30   评论 分享淘帖 邀请回答

相关问题

4个回答
另一个不涉及serdes的选项是使用ddr lvds,如果你的asic支持源同步lvds链接。
1对时钟和2对ddr数据,你可以使用375 MHz时钟达到1.5 Gbps,这是一个非常合理的速度。
- 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。
2020-4-16 09:34:00 评论

举报

Avrumw,正如你所说。
要建立共享内存,我需要双方都有内存控制器访问权限。
由于我的处理器中只有一个一次以一种方式发送数据,因此当有传入数据并利用共享内存时,我不能使用i2c发送中断吗?
如果是,如何在vivado中实现这个共享内存概念?
或者我可以在两个处理器之间使用gpio电缆吗?
2020-4-16 09:56:46 评论

举报

@ sunayana.chskradhar-
您可以下载PCIe的目标参考设计。
看看UG963:
http://www.xilinx.com/support/documentation/boards_and_kits/zc706/2014_4/ug963-zc706-pcie-trd-ug.pdf
有一个关联的zip文件包含整个设计的Vivado项目。
这适用于ZC706板(XC7Z045器件),但您可以将其作为起点。
如果你寻找它们,那里有很多资源。
而且我相信AXI MM到PCIe IP是免费的(如果不是这样,请有人纠正我)。
2020-4-16 10:16:48 评论

举报

由于我的处理器中只有一个一次以一种方式发送数据,因此当有传入数据并利用共享内存时,我不能使用i2c发送中断吗?
你必须意识到“共享内存”是一个软件概念。
为了使两个处理器共享一些内存区域,物理架构需要落后于允许两个处理器与该内存的某些连接。
存在许多不同类型的存储器架构 - 实现两个处理器可以访问相同存储器的架构将根据所使用的存储器而有所不同。
对于DDRx-SDRAM,我上面说的是一个很难的事实。
无论谁想要访问内存,都必须有一个且只有一个内存控制器。
出于电气和逻辑原因,DDRx-SDRAM协议不允许多个控制器访问同一存储器。
在电气方面,虽然数据和DQS信号是双向的,但终端和驱动器不允许多个控制器。
此外,还有所有动态终止和校准功能,可以将内存和控制器相互调整 - 没有多个控制器的机制。
在逻辑层面上,DDRx-SDRAM具有状态,控制器必须跟踪该状态。
同样,没有机制让不同的控制器相互“切换”。
因此,对于DDR-SDRAM,它根本不可能。
您可以在FPGA上使用内存(Block RAM)。
这些是双端口的,因此可以共享。
但是,没有“正常”机制将外部处理器连接到这些RAM - 您需要某种外部总线来执行此操作。
单端口外部SRAM也是如此 - 它们只能由一个控制器驱动。
因此,在所有这些情况下,您需要一些外部总线,允许您的ASIC处理器将数据发送到FPGA - 以便它可以将其发送到其内部Block RAM或外部存储器(通过在
FPGA)。
有一些双端口的外部存储器。
最常见的是QDRx-SRAM。
在QDR RAM中,有一个写端口和一个读端口,它们或多或少是独立的。
理论上,两个处理器可以共享这个外部存储器 - 只要一个处理器只能写入而另一个只能读取。
但是,任何现成的处理器都不太可能支持QDR - 它使用自己的协议而不用于通用计算(它主要用于数据包处理 - 它也非常昂贵)。
可能还有其他存储器是双端口的。
但是您面临同样的问题 - 您需要找到ASIC支持的外部双端口内存。
这是不太可能的 - 大多数处理器仅支持主存储的DDRx-SDRAM和用于启动和非易失性存储的各种闪存。
因此,放弃“共享内存”的概念 - 它并没有真正满足您的需求。
您需要的是外部处理器和FPGA之间的高速总线。
同样,外部CPU支持使用并行传输的任何东西都可以容纳在FPGA中 - FPGA几乎可以支持所有I / O标准,并且可以支持相当快的传输速度。
一旦建立了这种连接,就可以为处理器设计一种软件机制,以便在它们之间传递信息 - 无论是由邮箱,信号量还是共享内存(软件概念)完成,都可以由您来设计 - 但所有
他们首先需要处理器之间的某种形式的物理连接。
Avrum
2020-4-16 10:30:05 评论

举报

只有小组成员才能发言,加入小组>>

98个成员聚集在这个小组

加入小组

创建小组步骤

关闭

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

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