在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8859|回复: 12

[求助] PCIE的地址如何映射到DDR3中

[复制链接]
发表于 2014-9-9 20:44:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
大家好,最近在研究如何把PCIE和DDR3连起来,产生了一些疑问,我的PCIE IP核产生的地址是11位的,而DDR3的地址是30位的。我想请问一下应该如何映射呢?
发表于 2014-9-10 07:16:16 | 显示全部楼层
1, 最简单地,你把BAR地址设大点就行了,BAR地址设大只是地址空间变大,在系统上挂载时有这么大的空间让你去访问,并不实质上增加什么资源。
2, 如果你的设置无法扩大,可以采用地址复用的方式,比如访问超过4G的DDR,但是你的地址只有32bit,那可以先发一个前多少bit的数值过来,保存在寄存器里,然后再发后面的地址段。如果是同一个前面的基地址,就只用后面的地址改变就行了,如果换了基地址,得先放前面的基地址值过来。在变化不是很频繁的情况下,这样的效率并不低。
 楼主| 发表于 2014-9-10 09:03:34 | 显示全部楼层
回复 2# eaglelsb

感谢您的回复!
 楼主| 发表于 2014-9-10 10:23:18 | 显示全部楼层
回复 2# eaglelsb


   还有个问题想请教你,我用ip核自带的demo仿真,发现EP_RX收到的TLP头标与文档中的标准结构不同,   例如数据是wr_data  <= #TCQ m_axis_rx_tdata[63:32];
   地址是wr_addr <= #TCQ {region_select[1:0], m_axis_rx_tdata[10:2]};
   我又查看了RP_TX中的TASK,发现其TLP头标是按照文档中的标准结构来的,我觉得十分疑惑,到底是怎么一回事呢?
发表于 2014-9-10 16:14:27 | 显示全部楼层
一个完整的package是由几个DW组成的,DW是32 bit你应该知道,如果总线上传来的是64位,是把两个32bit的拼在一起,先读低32位,再读高32位,如此而已。
 楼主| 发表于 2014-9-10 16:33:12 | 显示全部楼层
回复 5# eaglelsb


   谢谢你的回答!我刚才把EP_RX代码翻出来看了一下,上面有注释说这个TLP头标是从右端开始的,所以会和RP_TX发送的刚好相反。并且我还发现EP_RX解析头标的时候,地址是仅截取了发送过来的32位地址的第2到第10位,并且在高位增加2位片选位组成的。如果我想要将其与DDR3的30位地址空间映射,可以直接修改EP_RX,将发送来的32位地址截取30位,这样就刚刚好了。不知道这个想法是否正确?
发表于 2015-3-23 22:53:28 | 显示全部楼层
做个DMA控制器就不用映射了,收到的数据直接往FIFO里写就行了 映射累不累
发表于 2015-3-24 01:19:06 | 显示全部楼层
PCIe对你来说,其实是个点对点的东西,你这边怎么回应它,是你自己安排的
发表于 2016-2-21 17:48:33 | 显示全部楼层
用DMA吧
发表于 2018-3-13 14:24:14 | 显示全部楼层
坛子里搞PCIE的不多啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-19 11:52 , Processed in 0.028958 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表