四轴飞行器DIY活动征集报名中!更有现金奉送哦~→ 立即报名 ←
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » pcie深入理解

共20条 2/2 1 2 跳转至
助工
2013-11-27 14:45:39    评分
11楼
如果你直接用st流接口,那么接收到的TLP数据包中有写地址的.如果用QSYS,那么访问的是avalon地址了

助工
2013-11-28 15:42:06    评分
12楼
举个典型的例子吧,首先我不建议你在bar0空间里放数据,太浪费,bar0空间就放一些控制用的寄存器吧,相对数据而言,没多少的。

对FPGA地址的读写,假设FPG**内你设计了一个地址查找表,某寄存器byte地址为0x000055aa,那么你在PC端往bar0基址+0x000055aa写一个byte数0x1,那么这个寄存器的值就是0x1。

对大段的数据而言,你在内存中开辟一段存储空间,比如0xcc000000~0xdd000000,然后在FPGA里头做一个DMA控制器,通过PC往FPGA的寄存器里写DMA起始地址0xcc000000和dma的长度**x,然后你做的这个DMA控制器开始向PCIE IP发送读请求,读地址是0xcc000000+不停累加的偏址,当读到指定长度后,DMA控制器停止工作,并且发一个中断给PC。
上面这个是常用的方法

助工
2013-12-02 17:32:07    评分
13楼
如果你直接在BAR空间里头写,那你写的时候,这些数据已经被发送下来了

菜鸟
2013-12-03 16:44:34    评分
14楼
楼上的两位高手,我之前是搞SDH光通信网络产品的FPGA设计,现在换工作来搞IT了,对计算机系统不是很懂,对PCIe协议阅读后,虽然之前有一两年的经验,但还是有一两点设计担忧,给我留个QQ号,我加你好好指教我一下哈

菜鸟
2013-12-04 15:39:34    评分
15楼
刚没看见回复,看了你们的回复,没问题了

高工
2013-12-04 16:04:53    评分
16楼
不错,问的有水平,答得很明白,学习

菜鸟
2013-12-09 17:37:11    评分
17楼
SDH不是也得接SERDES或者phy到FPGA么,另一头是和谁通信的?原理应该是一样的

助工
2013-12-16 14:38:35    评分
18楼
学习中

助工
2013-12-17 17:45:21    评分
19楼
不是,协议规定PCIE设备最多有6个BAR,也就是说允许处理器为这个设备分配6段连续的存储空间。这样可以避免单一设备占用很大的存储空间,不利于内存利用。另外也便于下位机进行地址转换。一般是Bar0有类型0的CSR信息,Bar1放IO信息,BAR2,BAR3是基于查找表的地址配置,即给偏址,BAR4、5是直接地址,即给出来的地址为下面实际的地址。

不过如果是自己做,图简单的话,只用BAR0就可以了

助工
2013-12-18 14:15:59    评分
20楼
在单个BAR里头,处理器分配的内存实际上是到根节点存储空间的映射。对PC系统来说就是桥片了。以Intel的南北桥结构为例,操作系统将地址,数据打包以后,经过北桥的内存控制器,通过DMA总线发到南桥上。南桥上的root端(根据经验猜测,有一堆128Byte深度缓存),将每个包的数据放入一个独立的缓存中,然后根据这些包的VC号,事务号,以及对应通道的信用值来排列发送顺序。同时向端点汇报自己的信用值(缓存剩余量)。这里对操作系统内存而言,应该是FIFO式的,但是对root而言,应该是类似双口的结构。

我没写过驱动,具体请freefpga指正

共20条 2/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]